Creating Chiptunes with SID-Wizard, Second Edition (summary)

author Mikael Norrgård (WitchMaster) and Mihaly Horvath (Hermit)
date 2014-02-11
source url http://www.witchmastercreations.com (author's site; first edition at https://csdb.dk/release/?id=112754)
created 2026-08-30 · updated 2026-08-31

A 75-page e-book (document version 1.0, 11 February 2014, written for sid-wizard 1.6) by witchmaster with chapters by hermit taken from the 1.2/1.4 manuals. Its stated purpose: explain "some stuff left out that SID gurus know but beginners don't" — so besides the tracker reference it explains the sid chip from the datasheet, walks through building a bass, a snare and an arpeggio instrument, gives a pattern tutorial, and adds reference tables (hex conversion, absolute-note values, ADSR timings, tempo→BPM for PAL and NTSC). Chapters: introduction and SID chip (1), running on real hardware (2), VICE setup (3), user interface (4), instrument editor (5), chord table (6), instrument examples (7), pattern editor (8), orderlist (9), tempos and multispeed (10), menu and files (11), MIDI (12), SID-Maker (13), SWMconvert and tools (14), player application note (15), appendices.

Key claims#

  • SID chip (ch. 1.4, quoting the 6581 datasheet): designed by bob-yannes in 1982; the 8580 has "more balanced filter-cutoff frequency control curve and less-distorted resonance, better mixed-waveform support, and maybe more predictable ADSR envelope-handling", yet "many consider the 6581 better"; the 6581 gives low volume on combined waveforms; noise cannot be combined. Datasheet characterisations: triangle "mellow, flute-like"; sawtooth "bright, brassy"; pulse from "bright, hollow square wave to a nasal, reedy pulse", sweeping it gives a "phasing" effect; noise for explosions, wind, snares, cymbals, sweeping its frequency a "rushing effect". Hard sync needs the modulating oscillator at a non-zero, preferably lower, frequency; ring mod replaces the triangle output and needs triangle selected; sync/ring modulator is the voice to the left (1→2, 2→3, 3→1). One filter shared by all voices, LP/HP/BP combinable.
  • Hardware (ch. 2): transfer options X1541 cables (~10–20 €), SD2IEC (~50 €), 1541 Ultimate (~130 €), Turbo Chameleon 64 (~200 €); test the SID with plgDavid's one-page BASIC benchmark; beware fake SIDs on eBay; C64 audio noise fixes — ground the audio-in (video-port pin 5 to pin 2 via ~100 Ω) or bend SID pin 26 out of the socket. "The sound quality (e.g. warmth and filter distortion) of the real thing is still unbeatable."
  • VICE (ch. 3): ReSID, interpolating sample method, PAL emulation for the UI; -autostart shortcuts; seamless folder integration saves .S00 files that SWMconvert turns into .sid; "8580 has more effective filters but a thinner sound than the 6581 (it's still phat though)"; "your music will sound different on different versions of the SID chip".
  • Instrument editor (ch. 5): the WF-ARP table needs at least one row; SHIFT+SPACE marks a row to be executed on note-off ("more control on the release phase … reverb-like effects by changing the waveform (or pulse and filter programs)"), in all three tables. WF column: $00–$0F repeat arp/detune only for 1–16 frames, $10–$FD waveform/control, $FE jump (≥ $40 = itself), $FF END. Waveform nibble $1 triangle, $2 saw, $4 pulse, $8 noise (add to combine, e.g. $6 saw+pulse; pulse needs a PULSE row); control nibble $1 gate, $2 sync, $4 ring, $8 test ("resets and locks the oscillator at zero until this value is cleared"). ARP column $00 prime, $01–$5F up, $7F jump to chord (chord speed override in the WF column), $80 no process, $81–$DF absolute pitch ($81 = C-1 … $D5 = C-8), $E0–$FF down. Detune $00–$FE sharper, $FF keep.
  • Pulse table: $8x..$Fx xx set width ($000/$FFF = constant DC = silence, $800 square), $00–$7F xx add signed xx that many times, $FE jump, $FF END; third column keyboard tracking, "signed value in exponential scale" ($00–$7F more width for higher notes, $FF–$80 weaker); C=+P toggles reset-on-note (bright header) vs reset-on-instrument-select (dark header).
  • ADSR: four nibbles; attack 2 ms–8 s, decay/release 6 ms–24 s (full table in appendix 10: 0 2/6 ms, 8 100/300 ms, A 500 ms/1.5 s, F 8/24 s); sustain 8 enables MIDI velocity.
  • Vibrato: four types — delayed up-down, delayed downwards, delayed upwards, incremental "violin style"; four hex digits = amplitude, frequency, delay (or increment speed).
  • Filter: a channel is filtered when its instrument's filter table has anything in row 1 at note start; $00 there = filtered but not controlling; the latest instrument takes control, simultaneous notes → leftmost track. Band nibble $8 off, $9 LP, $B LP+BP, $C HP, $D LP+HP, $E BP+HP, $F all (then resonance ≠ $F); cutoff $00–$FF ≈ 30 Hz–10 kHz; $00–$7F xx sweep; third column keyboard tracking; $80–$8F filter-switch override for GoatTracker imports ($81 ch 1, $82 ch 2, $84 ch 3 — printed "channel 4" in the book — $88 external input). C=+F toggles filter reset.
  • Other instrument settings: 1st-frame waveform (on by default) — Hermit: its function is "the same as in Goattracker, to test / reset the oscillators with waveform $09 (test-bit set) before the sound starts and get a short 'sexy' start of the sound"; hard-restart ADSR "gets loaded to ADSR registers 1-2 frames before a new note is triggered. SID provides quite bad accuracy on attack after releasing a note … Common values are '0F00' and 'F800'"; hard-restart timer (frames before the note) and type (normal, or staccato/aggregated: the test bit is also reset at hard restart, "adds 1-2 frames of gap between consequent notes"); default arp-table speed (> $40 runs the pulse table at multispeed, > $80 filter too); default chord; octave transpose; name; instruments save/load as .SWI and travel between tunes via the clipboard.
  • Instrument examples (ch. 7): Bazz — WF 41, pulse 82, octave −3, pulse row 2 40 20 (add $20 64 times), keyboard tracking 10 on both rows, ADSR 089A, vibrato 3720 delayed up-down, filter 9B 45 then 40 05. Snare — WF 81 CE, 41 AD, 41 AC, 80 C4, 80 C5 (gate off on the noise tail), pulse 88, decay D, sustain E, release 9 — "since we only used exact pitch values … all notes will sound the same". Arpeggio — WF 11 7F with chord 00 03 07 0C 07 03 + 7F, speed 02 in the instrument or in the WF column before 7F, attack 8, release B.
  • Pattern editor (ch. 8): RETURN note-off, Shift+RETURN note-on ++ (retriggers the gate, keeps slide and pulse), 1/A erase, SHIFT+A/Z auto-advance, C=+B track binding, Shift+1/2/3 mute, Shift+0 solo; note-column flags (Shift+P portamento, Shift+V vibrato, Shift+R/C=+R ring on/off, Shift+S/C=+S sync); instrument-column $01–$3E, $3F tied note, $4x waveform, $5x sustain, $6x release, $7x chord; small effects $2x attack … $Fx resonance (only one ADSR small effect per note outside the Extra player); big effects $01–$1F incl. $0F cutoff shift "Now notes don't reset it!", $1D track delay in 20 ms frames, $1E note delay. Pattern example: Bazz on rows 00/$10/$20/$30, 03 25 portamento, 02 20 slide down, note-off at $3C; move a slowly portamento'd note a few rows earlier so it does not sound late.
  • Orderlist (ch. 9): $80–$8F transpose down, $90 off, $91–$9F up, $A0–$AF volume, $B0–$FD track tempo ($00–$5D), $FE stop, $FF xx loop (xx > $80 = jump to that subtune's track); no orderlist effect directly before $FF; pattern 00 cannot be used; C=+E finds the first empty pattern.
  • Tempo and multispeed (ch. 10): funktempo alternates two tempos on even/odd rows (C=+T, Shift+:/;); tempo programs (C=+F7, Shift+T/Y) roll over automatically; multispeed up to 8× (400 Hz) — "2x speed (100Hz) can be quite enough … Rubicon's title music by Jeroen Tel is 2x, and has drums that are not possible in 1x" (jeroen-tel); in SID-Wizard (and X-SID) only the tables run at multispeed while tempo, vibrato and slides stay single-speed, unlike GoatTracker where the whole player is called. BPM: PAL ≈ 3007.4744 / (tempo × lines per beat) at 50.125 Hz, NTSC ≈ 3589.5659 / (…) at 59.826 Hz; funktempo uses the mean.
  • MIDI (ch. 12): HerMIDI (Hermit's serial-port interface, daisy-chainable behind a drive), Sequential, Passport/Syntech, JMS/Datel/Siel/CLAB, NameSoft, Maplin, Moog Song Producer; pitch wheel ±2 semitones, CC1 vibrato, aftertouch vibrato, CC74 brightness ≈ big-FX $1C, CC7 volume, program change, start/stop/continue; C=+D mono+legato vs polyphonic.
  • Export and tools (ch. 13–15): SID-Maker writes .C64.PRG, .BIN.SEQ, .EXE.PRG, .SID.SEQ (rename to .sid); : in the author field splits author/title; SWMconvert ↔ XM/MID (only 3 monophonic tracks convert; chords expand to extra tracks), .S00.sid, sng2swm for GoatTracker, SIDEdit for metadata. Player: saves/restores zeropage $FE/$FF, rastertime ≈ $1A–$1C lines (light $14–$19), init at load address (subtune in A), play +3, multispeed +6, volume +9, SFX +12 (X note, Y instrument, A length).
  • Version history (ch. 1.2): 1.2 NTSC, any 1st-frame value, colour themes, DMC layout, players normal/light/medium/extra; 1.4 sng2swm; 1.5 44 instruments (31 in 2SID), 6 subtunes, MIDI-in, 2SID .sws, Bare player, chord note-mode, Verdi/just tunings, SDI and Janko layouts, config file, undo, solo, SFX, 324 instruments; 1.6 MIDI start/stop, SWM→SWS conversion.

Practical takeaways#

For a SID-Wizard user this is the missing "why": which nibble is which, what the datasheet says each waveform is for, the exact ADSR times, and three worked instruments with every value spelled out. The Bazz recipe is a complete sourced answer to "how do I make a SID bass".

Notable quotes#

"SID provides quite bad accuracy on attack after releasing a note, resetting the ADSR registers before a note is played helps with this problem."

Frantic (CSDb, quoted in the book): "using hard restart is a scene sacrament that must be blown out of proportion if order is to be maintained."

Pages touched#

sid-wizard · witchmaster · hermit · sid · bob-yannes · instrument-design · wavetable-programming · pulse-width-modulation · filter-programming · adsr-envelope · hard-restart · vibrato · ring-modulation-and-sync · chord-arpeggio · instrument-tables · orderlist · shuffle-funktempo · multispeed · sid-player-routine · sid-format · sync · commodore-64 · vice · pitch-slide-and-portamento · tracking-workflow · goattracker · sound-effects

source file wiki/summaries/s-witchmaster-creating-chiptunes-with-sid-wizard.md · graph