Help identifying music format used in classic Mac OS games

Solution 1:

I did some research and reverse-engineering on this recently. The library was called SoundMusicSys, and there's now an open-source version of it called miniBAE (Beatnik Audio Engine) which appears to be mostly based on the original code.

It turns out that csnd resources are just normal snd resources that were LZSS compressed and delta-encoded in a few different ways depending on whether they're mono/stereo or 8/16-bit. cmid resources (compressed MIDI) are just LZSS compressed and not delta-encoded. There also appear to be esnd (encrypted snd) and emid (encrypted MIDI) resources, but I couldn't find any examples of these to reverse-engineer. SoundMusicSys used a few other resource types to link the snd/csnd and MIDIs together; the most relevant of these are SONG and INST, which define the instruments and parameters for each tune.

I wrote a disassembler for classic Mac OS resource forks a while ago, and recently added support for extracting csnd/cmid, INST, and SONG resources in addition to all the normal stuff (snd, MIDI, etc.). Might be useful in playing around with these classic games' content.

Solution 2:

This isn't a full answer to your question, but...

Many of the classic Mac OS games used .sad files, but that's probably not the case with the games you've listed as examples.

Certainly in the case of Lemmings, it actually stored basic sounds as .snd resources. In many cases these .snd resources were part of the MIDI resource you're referring to, and these in turn were used to build the .song resources that produced the music. Users could also use tools like ResEdit to access the data directly. You can still download ResEdit 2.1.3 directly from Apple or from mac.org.

Other games actually included an Audio CD partition that would be available for the game to play music from, although this certainly isn't the answer to your question.

I'll do some digging as I still have classic Mac hardware and software. If I come across anything that may shed some light on the library you're looking for I'll be sure to update this.