Family 8 — "make it sound like a game." The SNES has a whole second processor for sound — the SPC700, with its own 64 KB of RAM, its own S-DSP, and its own instruction set, talking to the main CPU through just 4 I/O bytes. This family has two on-ramps — tracker music, and driving the DSP straight from C — then the DSP's party tricks.
Tracker music (SNESMOD) — compose in a tracker, smconv converts the .it, the lib plays it:
| Rung | Example | Developer question |
|---|---|---|
| 8.1 | snesmod_music | How do I play tracker music with transport controls? |
| 8.2 | snesmod_music_large | How do I play a >32 KB multi-bank soundbank? |
| 8.3 | snesmod_sfx | How do I mix SFX over music? |
Raw APU from C (audio v2) — the lib uploads its own resident SPC700 driver; everything else is plain C:
| Rung | Example | Developer question |
|---|---|---|
| 8.4 | soundboard | How do I drive the whole audio-v2 engine from C? |
| 8.5 | apu_switch | How do I hot-swap APU programs at runtime? |
| 8.6 | play_noise | How do I make drums from the S-DSP noise generator? |
| 8.7 | pitch_mod | How do I do hardware vibrato (pitch modulation)? |
| 8.8 | speech_synth | How do I play BRR speech? |
| 8.9 | echo | How do I add echo / reverb from the S-DSP? |
Sound is a co-processor problem: you never touch the DSP registers from the 65816 directly — you hand a driver a command over the 4 I/O ports and it runs on the SPC700. SNESMOD's driver plays a compiled tracker module; the audio-v2 driver exposes voices, ADSR, BRR samples and the echo unit as C calls (audioLoadSample, audioPlaySampleEx, audioSetEcho…). Both share the same 64 KB of ARAM, so samples, the echo ring and the driver all compete for it.
(Audio examples have no screenshot — the lesson is audible. Run them with sound.)
apu_switch — hot-swapping APU programs at runtime Echo / reverb pitch_mod — hardware vibrato via pitch modulation play_noise — a drum kit with zero samples SFX from WAV SNESMOD Music Example SNESMOD Large Soundbank Music SNESMOD Sound Effects soundboard — the audio v2 engine, driven entirely from C speech_synth — the SNES says "OPEN SNES"