From GameBrew - a wiki dedicated to Video Game Homebrew.
A MIDI file player. It is written in ASM and ported to both the GBA and NDS. Each mirrored file link below comes complete with the source.
Sonic AS has 16 channels polyphony for the DS, and variable polyphony on the GBA.
It has support for variable music players, and the DS version can handle PCM8/16 and ADPCM data, as it uses the hardware channels. The GBA version can also have either nearest neighbour interpolation (that is, no interpolation; this is fast), or linear interpolation, with .23 fixed point accuracy, which can be toggled by changing the variables in sasInternal.inc.
Since it's written in all assembler, the memory footprint is rather low. All processing is done on the ARM7 side, with the ARM9 simply signaling to play/stop, etc.
- DS runs with variable channel count (to allow stuff like libnds sound)
- GBA mixer code has been heavily optimized
- Music code has been revised
- Fixed pitch bend stuff
- Added SFX code