The return of the sound extension Damusix

Damusix is an Inform 6 extension that gives the author advanced sound capabilities, and it’s coming to Inform 7.

In my quest to include sounds into an upcoming text game, I ran into mentions of Damusix by Eliuk Blau (aka Nicolas Merino Quezada). I wanted to know more, so I tracked down Eliuk a couple weeks ago.

Apparently, Damusix for Inform 7 had been in the works for a while, but it fell by the wayside. The original Inform 6 extension was in Spanish, and Aaron Reed translated the documentation as they converted Damusix to Inform 7. (And @aaronius, if you are reading this, Eliuk sends his thanks and says you’re the best!)

So what’s the big deal with Damusix, anyway? Inform 7 can already play sounds! And we have some sound extensions already!

According to its documentation, Damusix does the following:

  • 10 normal channels with complete control over audio
  • 10 virtual channels for sounds without an assigned channel
  • Playlist (with space for 10 items)
  • Global volume control
  • Individual volume control for each sound
  • Abstract control by sound or by channel
  • Fade-in and fade-out effects in real-time or as simple fades
  • Enable or disable audio globally (without affecting any individual volumes)
  • Automatic verification of an interpreter’s audio support
  • A mechanism to protect sounds after UNDO/RESTORE
  • Much much more… =D

(Another feature I found intriguing is that Damusix allows you to use MOD files. However, it doesn’t work with other music tracker formats, like IT, XM, or S3M. But I got MOD files to play within the Windows version of Inform 7 and in Gargoyle. Not sure what other interpreters work with MODs.)

Eliuk has generously made the source code available to the community. But there are a couple caveats.

You can’t use the extension in your projects just yet, as Eliuk has only released it for beta testing. But he’s planning on releasing under a free software license soon. You are welcome to send pull requests.

Also, I wasn’t able to compile this for the latest version of Inform 7. I could get it to compile for Inform 9.3 by changing the extension’s version number to 4. Hopefully, getting this to work for Inform 10 is a simple matter of updating some syntax. Or maybe there’s something quirky with my Inform setup.

In Eliuk’s own words, here’s what’s in the repo:

- Damusix Sound Manager for I7 Extension
- A copy of Glulx Entry Points Extension (required, updated for I7 v10)
- Full Spanish Documentation for DamusixI7 (made for beta testing)
- Full Spanish Documentation for DamusixI6 (can be very useful)
- A simple I7 demo project called: “First Steps with Damusix”
- A full demo for DamusixI6 all features (to learn more about what it can do)

Also, in the I7 extension I have included Aaron Reed’s English translation of the Spanish documentation. It is a free and summarized translation. So if there are ambiguous or dubious parts, you can always go to the full version of the I7 documentation that I include in the repo as a TXT file. You can also use the IDE documentation in “Index → Phrasebook → From the Damusix Sound Manager” to learn about all the allowed sentences, their variants and syntax.

Eliuk had to refactor the old Inform 6 code to work with Inform 7, and he admits he’s not an Inform 7 expert, so any help would be appreciated.

This is a pretty big step in expanding sound support for Inform 7 projects, and I hope many of you try this out, make pull requests, and give Eliuk some feedback and encouragement! His email address can be found at the top of the extension.

11 Likes

That’s so cool! I’d never heard of this before but I’m definitely excited.

This is amazing news!

Would there be a way to support module playing in web interpreters? (I know dedicated mod-playing JS libraries already exist).

Sounds amazing :slight_smile: And the project name is great too.