Audio
Audio is the machine's sound hardware: its channels, its chip and how it makes a sound. The formats MIDI and MOD stand beside the machines, one a protocol and one a sample tracker. Each name links to its audio page. The tables further down compare what each machine can do beyond forced sample playback, and whether a sequencer sets a thing once or has to drive it every tick.
Machines
| Machine | Channels | Type | Notes |
|---|---|---|---|
| ZX Spectrum | 1 or 3 | Beeper, AY-3-8912 | 48K beeper, 128K AY chip |
| Commodore 64 | 3 | SID | Four waveforms, ADSR, filter |
| NES | 5 | APU | Two pulse, triangle, noise, DMC |
| SNES | 8 | S-DSP | BRR samples, ADSR |
| Game Boy | 4 | Custom | Two square, wave, noise |
| Amiga | 4 | Paula | 8-bit PCM by DMA |
| BBC | 4 | SN76489 | Three tone, one noise |
| Oric | 3 | AY-3-8912 | Square, noise, envelope |
| PC | 9, plus speaker | OPL2, PC speaker | FM synthesis, or 1-bit speaker |
| MIDI | 16 | Protocol | Synth dependent |
| MOD | 4 | Samples | 8-bit PCM tracker |
Sequencing model
Two kinds of command matter to a sequencer. A latched command is written once and the hardware holds or evolves it on its own; a driven command must be refreshed every tick by the CPU or the player routine. The tables below use A for automatic (latched) and D for driven, with a dash where the machine has no such feature. Most register chips latch their tone, volume and envelope; the 1-bit outputs, and any effect a chip has no hardware for, must be driven. This split decides whether the editor emits a single event or a per-tick automation lane.
| Mark | Meaning |
|---|---|
| A | Automatic: set once, the chip holds or evolves it. |
| D | Driven: the CPU or player must update it every tick. |
| – | Not available on that machine. |
Channel capabilities
Each capability below is a setting a channel can expose. The section gives what it is, then a table with a column for each of the capability's parameters and a row for each machine that supports it, showing that machine's range. A machine that lacks the capability is left out of the table. The per-machine hardware detail (registers, bit widths, addresses) lives on each platform's own audio page.
Pitch
Sets the fundamental frequency of the voice; the one control every tonal channel has.
| Machine | Resolution | Fine tune |
|---|---|---|
| Spectrum (beeper) | CPU-timed loop count | By loop count |
| AY (Spectrum 128K, Oric) | 12-bit period | None |
| C64 (SID) | 16-bit frequency | Continuous |
| NES (APU) | 11-bit timer | None |
| SNES (S-DSP) | 14-bit rate | Continuous |
| Game Boy (APU) | 11-bit period | None |
| Amiga (Paula) | 16-bit period (min ~124) | By period |
| BBC (SN76489) | 10-bit divider | None |
| PC (speaker) | 16-bit timer count | By count |
| PC (OPL2) | 10-bit F-number + 3-bit block | By F-number |
| MIDI | Note 0–127 | 14-bit pitch bend |
| MOD | 12-bit period | Per-sample finetune (−8 to +7) |
Volume
Sets channel loudness, for dynamics and mix balance.
| Machine | Levels | Scope |
|---|---|---|
| AY (Spectrum 128K, Oric) | 4-bit (0–15) | Per channel |
| C64 (SID) | 4-bit master | Global; per voice via envelope |
| NES (APU) | 4-bit (0–15) | Per channel; none on triangle |
| SNES (S-DSP) | Two 8-bit signed (L, R) | Per voice |
| Game Boy (APU) | 4-bit env; wave 0/25/50/100% | Per channel |
| Amiga (Paula) | 0–64 | Per channel |
| BBC (SN76489) | 4-bit attenuation (0–15) | Per channel |
| PC (OPL2) | 6-bit level (0–63) | Per operator |
| MIDI | 7-bit velocity + 7-bit CC7 | Per note and channel |
| MOD | 0–64 | Per cell and channel |
Waveform
Chooses the tone shape of the voice; where more than one shape or a drawable shape is offered.
| Machine | Shapes | Selection |
|---|---|---|
| C64 (SID) | Triangle, sawtooth, pulse, noise | Select, combinable (AND) |
| NES (APU) | Pulse, triangle, noise | Fixed per channel type |
| Game Boy (APU) | Pulse, 32-step wavetable | Wave loaded as a table |
| PC (OPL2) | Sine, half-sine, abs-sine, quarter-sine | Per operator |
Duty (pulse width)
The high-to-low ratio of a pulse wave; narrow duty is thin and nasal, 50% is hollow.
| Machine | Widths | Resolution |
|---|---|---|
| C64 (SID) | Continuous | 12-bit |
| NES (APU) | 12.5, 25, 50, 75% | 2-bit (4 values) |
| Game Boy (APU) | 12.5, 25, 50, 75% | 2-bit (4 values) |
Amplitude envelope
Shapes a note's volume over time, from a hard pluck to a slow swell.
| Machine | Type | Parameters | Scope |
|---|---|---|---|
| AY (Spectrum 128K, Oric) | Shape generator | 8 shapes, 16-bit period | One generator, shared |
| C64 (SID) | ADSR | Attack, decay, sustain, release (4-bit each) | Per voice |
| NES (APU) | Decay + length | 4-bit rate, length counter | Per channel |
| SNES (S-DSP) | ADSR or GAIN | A/D/S/R, or manual GAIN ramp | Per voice |
| Game Boy (APU) | Volume envelope | Start (4-bit), direction, period (3-bit) | Per channel (not wave) |
| PC (OPL2) | ADSR | Attack, decay, sustain, release (4-bit each) | Per operator |
| Amiga (Paula) | Software (player) | Any shape, driven | Per channel |
| BBC (SN76489) | Software (OS ENVELOPE) | Up to 4 phases, amplitude and pitch | Per channel, driven |
Hardware pitch sweep
The chip slides the pitch on its own once armed; used for zaps, whoops and rising alarms.
| Machine | Rate | Direction | Depth |
|---|---|---|---|
| NES (APU) | 3-bit period | Up or down | 3-bit shift |
| Game Boy (APU) | 3-bit period | Up or down | 3-bit shift (channel 1) |
Noise
A pseudo-random source for drums, cymbals, wind and explosions.
| Machine | Rate control | Modes |
|---|---|---|
| AY (Spectrum 128K, Oric) | 5-bit period, one generator | Single |
| C64 (SID) | 16-bit frequency (pitched) | LFSR noise waveform |
| NES (APU) | 16 period values | White or periodic |
| SNES (S-DSP) | 5-bit clock, per-voice enable | LFSR |
| Game Boy (APU) | Divisor + 3-bit shift | 15-bit or 7-bit LFSR |
| BBC (SN76489) | 3 fixed rates, or track tone 3 | White or periodic |
Ring modulation
Multiplies two oscillators for clangorous, bell-like, inharmonic tones.
| Machine | Source |
|---|---|
| C64 (SID) | A voice's triangle ring-modulated by the previous voice's oscillator |
Hard sync
One oscillator resets another for an aggressive, tearing sync lead.
| Machine | Source |
|---|---|
| C64 (SID) | A voice's oscillator hard-synced to the previous voice's oscillator |
Filter
Shapes the harmonics for muffling, wah and squelchy resonant sweeps.
| Machine | Modes | Cutoff | Resonance | Routing |
|---|---|---|---|---|
| C64 (SID) | Low, band, high-pass (combinable) | 11-bit | 4-bit | One shared, per-voice enable |
| Amiga (Paula) | Fixed low-pass (LED) | On/off only | None | Global |
Wavetable
Plays a short user-drawn cyclic waveform, for any static timbre you draw.
| Machine | Table size | Sample depth |
|---|---|---|
| Game Boy (APU) | 32 steps (channel 3) | 4-bit |
Sample / PCM playback
Replays recorded audio as the voice; the native sample voices, distinct from forced playback.
| Machine | Format | Max rate | Loop |
|---|---|---|---|
| NES (DMC) | 1-bit DPCM, 7-bit output | 33.1 kHz | Yes |
| SNES (S-DSP) | BRR 4-bit, 16-bit output | 32 kHz | Loop point |
| Amiga (Paula) | 8-bit signed PCM | ~28 kHz | Loop region |
| MOD | 8-bit signed PCM | Player rate | Loop + offset |
FM synthesis
One operator modulates another's frequency for rich, evolving, metallic tones.
| Machine | Voices | Operators | Waveforms | Routing |
|---|---|---|---|---|
| PC (OPL2) | 9 (or 6 + rhythm) | 2 per voice | 4 per operator | Feedback + 2 algorithms |
Panning
Places the voice in the stereo field for width and movement.
| Machine | Positions | Scope |
|---|---|---|
| SNES (S-DSP) | Continuous (8-bit L, 8-bit R) | Per voice |
| Game Boy (APU) | Left, right or both (hard) | Per channel |
| MIDI | 7-bit (CC10) | Per channel |
Pitch modulation
A voice frequency-modulates the next for gritty, FM-flavoured sample textures.
| Machine | Source | Scope |
|---|---|---|
| SNES (S-DSP) | Previous voice modulates this voice's pitch (PMON) | Per voice enable |
Echo and reverb
A delayed, filtered feedback for space and ambience.
| Machine | Delay | Feedback | Filter |
|---|---|---|---|
| SNES (S-DSP) | Up to ~240 ms (audio-RAM buffer) | 8-bit | 8-tap FIR |
Player effects (software)
These have no dedicated hardware: the player produces them by updating a channel every tick, so they are available on any driven channel (the volume-based ones need a volume control). They are the portable effect core the sequencer can offer everywhere.
| Effect | Parameters | Sound |
|---|---|---|
| Arpeggio | Note offsets, speed | Fast bubbling chord from one voice |
| Portamento | Rate, target note | Smooth glide between notes |
| Vibrato | Speed, depth | Expressive pitch shimmer |
| Tremolo | Speed, depth | Pulsing loudness (needs volume) |
| Volume slide | Rate | Fades and crescendos (needs volume) |
Command layers
A sequencer can lean on a small core that every target shares, then add capability-gated commands per machine. The core is what makes one editor drive them all; the extensions are what make each machine sound like itself.
| Layer | Commands | Where |
|---|---|---|
| Universal core | Note on, note off, set level, select instrument or timbre | Every machine, and MIDI and MOD |
| Common (register chips) | Trigger amplitude envelope, enable noise | SID, AY, SN76489, NES, Game Boy, OPL2, SNES; driven ramps on BBC and Amiga |
| Duty | Choose pulse width | SID, NES, Game Boy |
| Pitch sweep | Hardware slide | NES, Game Boy |
| Filter | Cutoff, resonance, mode | SID; global on/off on Amiga |
| Ring-mod / sync / mod | Cross-voice modulation | SID (ring-mod, sync), SNES (PMON), OPL2 (FM) |
| Pan | Left and right placement | SNES, Game Boy |
| Echo | Delay with FIR filter | SNES |
| Upload | Wavetable or sample data | Game Boy, SNES, Amiga |
| Shared envelope | One envelope shape and period | AY (Spectrum 128K, Oric) |
MIDI and MOD sit on top of this model. MIDI is the core in protocol form: the sequence sends events and controller streams, and the target synth realises the envelopes. A MOD maps a note-and-sample trigger, a one-shot, against an effect column driven every tick, which is the same latched-versus-driven split the machines show, expressed in one portable file.