Some of my games contain music composed by Poison in SDCMC (Stereo Double Chaos Music Composer) created by Datri. These are Quarrion and Nemezyro.
Poison composes only in CMC and SDCMC is his long time favorite CMC mod. I do not own Atari with stereo pokey and my goal is to create games for as wide Atari audience as possible… so I tend to not utilize any HW extension.
Yes, Quarrion and Nemezyro use Stereo Pokey, but those tunes are really great. This is due to Double modification which Poison’s favorite and it is exclusively used only in SDCMC. I realized there is no CMC modification that can play Double sound in classic mono CMC… so I decided to do it on my own.
I took CMC player source from ASAP:
Compared it to SDCMC player source that I got from Xuel (this has some adjustments for mono playback, but not what I was looking for)… and after couple hours, I was able to find the main difference that caused the Double sound mod and updated the original CMC player with my own extension:
What is special about this double mode is that the replay routine is executed only once per frame (in VBI) and there is no requirement to run the replay routine again in DLI (compared to DoublePlay CMC – DMC) to get richer drum sounds. Even the double replay routine takes more cycles than the regular one, it is quite convenient to integrate it into game without limitations in graphics area due to fact that DLI is not used to play the music.
I have also taken classic CMC 2.0 editor and modified its replay routine to double mode so it is not only possible to play final music in double mode using my modified cmc player, but it is also possible to actually compose the cmc module in editor that plays double mode.
- do not use player generated within MDCMC editor, use the source in the repository instead
- this CMC player can load and play regular CMC files, but requires instrument adjustments to leverage the Double mode
Cmc player routine already had two parameters for two existing mods, so I added third parameter for Double.
These parameters are required to be present to compile the player, they are:
|enable Mono Double cmc replay routine
|enable Rzog modified bass table
|switch 3/4 pattern size
See example code to understand the parameters usage (from line 58 to 64).