Audio drivers

From SNESdev Wiki
Revision as of 19:17, 5 September 2024 by NovaSquirrel (talk | contribs) (Update TAD, and add links to two more homebrew drivers)
Jump to navigationJump to search

An 'audio driver is a program that handles playing music and sound effects for a game running on a game console. In a SNES game, music is normally encoded into a sequence of notes that an audio driver then interprets, keeping track of timers in order to start and stop notes at the right times. The SNES has a dedicated processor for running audio drivers (the S-SMP) and the main program running on the 65c816 has to communicate with the audio driver on the S-SMP in order to ask it to play sound effects, switch which song is currently being played, and other tasks.

Audio drivers vary in what features they support and the way composers are intended to write music for them. Some audio drivers have streaming features, where the main program can provide new sample data or music sequence data during gameplay. Nintendo provided licensed developers with an audio driver named Kankichi-kun (known as N-SPC) that many game studios customized to their needs, but using it without a license would be copyright infringement. Thankfully there are several audio drivers that are licensed for homebrew game use.

SNESGSS

SNESGSS uses its own custom tracker, which can show how much audio RAM is in use as the composer works on the song.

  • Arbitrary number of music and sound effects, but cannot share channels between music and sound effects at the same time
  • Supports the SNES's ADSR envelopes
  • Audio RAM holds the driver, instrument data, sound effect sequences, and a single song. The main program uploads the data for a new song whenever it wants to play a different one.
  • Sequenced sound effect support
  • Audio streaming feature

See https://nesdoug.com/2020/06/14/snes-music/ for a guide, as well as https://github.com/NovaSquirrel/snesgss-extended which is a fork that adds new features (but has unresolved bugs in its exporter). There is a known bug which can cause the console to lock up[1] but there are patched versions which fix this.

SNESMOD

SNESMOD plays Impulse Tracker files, with limitations on what effects are supported. See snesmod_music.txt for more details.

  • Sound effects are just samples, but sequenced sound effect support is available in a patched version
  • Audio streaming feature

See https://nesdoug.com/2022/03/02/snesmod/ for a guide.

Terrific Audio Driver

Terrific Audio Driver plays songs written with MML, and it provides its own MML editor which allows composers to preview the music while working on it.

  • Can play music on all 8 music channels, with 2 channels interrupted as needed for sound effects
  • Elaborate sound effect support
    • Can be played with different panning
    • Sequenced sound effect support
    • Each sound effect can be limited to playing on one channel at a time
    • Each sound effect can be marked as "interruptible"
    • Priority system
  • Sound effects can be played with different panning, and
  • Supports the SNES's ADSR envelopes
  • Vibrato and portamento
  • Has a custom audio loader that is faster than the built-in loader
  • Can load audio data across several frames, allowing the game to do it in the background while it does other tasks
  • ca65 and pvsneslib APIs

qSPC

qSPC plays songs written with MML. It was used in Nekotako and Dottie dreads nought.

XMSNES

XMSNES was made by the same person as SNESMOD and seems to be an older driver.

SNES-ProTrackerPlayer

SNES-ProTrackerPlayer is a MOD player by snesdev0815.