Audio drivers: Difference between revisions
NovaSquirrel (talk | contribs) (More links) |
NovaSquirrel (talk | contribs) (Put the proper name for Kannagi's sound driver) |
||
Line 48: | Line 48: | ||
[https://github.com/snesdev0815/SNES-ProTrackerPlayer SNES-ProTrackerPlayer] is a MOD player by snesdev0815. | [https://github.com/snesdev0815/SNES-ProTrackerPlayer SNES-ProTrackerPlayer] is a MOD player by snesdev0815. | ||
=== Kannagi | === Super Kannagi Sound === | ||
Available as a part of Kannagi's SDK, [https://github.com/Kannagi/SNDK/tree/main/tools/RetroTracker SNDK] | Available as a part of Kannagi's SDK, [https://github.com/Kannagi/SNDK/tree/main/tools/RetroTracker SNDK] |
Revision as of 19:24, 5 September 2024
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.
Super Kannagi Sound
Available as a part of Kannagi's SDK, SNDK