Homeentitytool

SID-Wizard

SID-Wizard is a music tracker that runs on the commodore-64 itself and drives the sid chip. Written by hermit (Mihaly Horvath); version 1.8 is from 2018. It borrows the GoatTracker-like concept and keys and ideas from SDI, X-SID, SID-Factory and JCH Editor, and adds a long list of features not found in other C64 trackers (source: s-sid-wizard-manual).

Features (v1.8)#

  • 36 instruments (30 in the 2SID version, 26 in 3SID), 8 subtunes (2 in 2SID, 1 in 3SID), 100 patterns of 250 bytes (105 in 2SID/3SID).
  • Each instrument has its own instrument-tables (waveform-arpeggio-detune, pulse width, filter) and its own hard-restart settings.
  • Calculated vibrato (4 types) and calculated slides (pitch-slide-and-portamento).
  • Up to 8× framespeed (multispeed, 400 Hz SID control).
  • Chord table with direct note-entry mode (chord-arpeggio); keyboard tracking (note-dependent filter/pulse width); different tempos per track and FunkTempo (shuffle-funktempo); 3 simultaneous pattern effects per row; gate-off entries in instrument tables.
  • Scalable player routine from "Bare" to "Extra" (sid-player-routine); export to .SID (sid-format), executable, raw and relocatable SWP formats; sound-FX support.
  • 2SID (.sws) and 3SID (.swt) versions with selectable SID2/SID3 base addresses.
  • MIDI-in (poly/mono, velocity) via HerMIDI, Sequential, Passport/Syntech, JMS, Datel/Siel/CLAB, NameSoft, Maplin, Moog SP; MIDI-sync output (start/stop/clock).
  • Tunings: standard, Verdi (equal-tempered but A4 = 432 Hz) and just intonation (pure integer-ratio intervals, only in the key of C); NTSC and Drean machine support.
  • 324 example instruments; one-step undo for pattern/orderlist/instrument; oscilloscope and pulse-width/cutoff bars; preset colour themes; SDI-, DMC- and Janko-style key layouts.

Screen layout#

keypanel
F5Pattern editor — 3 tracks, row = Note/Fx · Instrument/Fx · Effect · Fx-value
F6 (Shift+F5)orderlist in the bottom border
F7Instrument panel (select with +/-)
F8 (Shift+F7)Menu and file operations
C=+F5 / C=+KChord table
C=+F7 / C=+F8Tempo-program table

All numbers are hexadecimal. The top border shows version, player type, octave, playback time, rastertime, auto-advance, pulse-width and cutoff bars and channel-3 waveform.

Note entry (default "SW" layout, two rows like SDI): upper octave 2 3 5 6 7 9 0 over Q W E R T Y U I O P @ *; lower octave S D G H J L over Z X C V B N M , .. DMC layout uses W E T Y U O P over A S D F G H J K L :; the Janko layout is chromatic.

Cheat sheet#

Most-used keys#

keyaction
F1 / F2 / F3 / F4play from start / from play-mark / selected patterns / stop-continue (C=+F1..F4 = same with follow-play)
fast-forward 6×
Shift+F / Shift+Gframespeed up / down
< > (Shift+,/.)subtune tempo up/down; [ ] second FunkTempo; C=+T toggle FunkTempo
C=+, / C=+.select subtune
RETURN / Shift+RETURNnote-on / note-off; go to instrument/chord
Shift+1..9/0mute/solo tracks
C=+1..8, C= +/-octave
C=+Z/X/C/Vundo / cut / copy / paste; Shift+C marks end of block
Shift+Q/W, C=+Q/Wtranspose from cursor by semitone / octave
Shift+V, Shift+P, Shift/C=+R, Shift/C=+Svibrato, portamento, ring-mod on/off, sync on/off in the note column
Shift+A/Z, Shift+H/Jauto-advance step, highlight step
C=+E (orderlist)find first empty pattern
Shift+N (instrument)name instrument; C=+P / C=+F toggle PW / filter reset; = negate table value
C=+N (chord table)toggle note-mode / number-mode

Instrument-column effects#

valueeffect
$01–$3Eselect instrument
$3Flegato / tied note (pitch only, no retrigger)
$40–$4Fset waveform (small fx)
$50–$5Fset sustain level (note volume)
$60–$6Fset release time
$70–$7Fset chord (overrides the instrument's default chord)

Effect-column "small" effects ($xy, y = value)#

rangeeffect
$2x / $3xattack / decay time of the note
$4x$7xsame as the instrument-column effects above
$8x / $9xvibrato amplitude / rate
$Axmain volume ($D418 low nybble)
$Bxfilter band nybble
$Cxchord (arpeggio) speed
$Dxdetune current note
$Excontrol nybble (test / ring / sync)
$Fxfilter resonance

Effect-column "big" effects ($xx + value byte)#

fxeffectfxeffect
$01pitch slide up$0Eset pulse width
$02pitch slide down$0Fset filter cutoff hi-byte
$03tone portamento (auto-portamento)$10set main single tempo
$04waveform/control register$11set main FunkTempo
$05attack/decay register$12launch main tempo program
$06sustain/release register$13set track's single tempo
$07select chord (overrides default)$14set track's FunkTempo
$08vibrato amplitude & rate$15launch tempo program for track
$09go to WF-ARP table position$16vibrato type (00/10/20/30)
$0Ago to pulse-width table position$1Cshift cutoff hi-byte (permanent)
$0Bgo to filter table position$1Ddelay track by $00–$FF frames
$0Cset chord / arpeggio speed$1Edelay note (max = tempo − 3 frames)
$0Ddetune current note upwards$1Fset filter-switch/resonance register ($D417)

Orderlist values#

$01–$7F pattern · $80–$8F transpose down ($8F = −1) · $90–$9F transpose up ($90 = original) · $A0–$AF main volume · $B0–$EF single track tempo · $F0–$FD separator NOP with section id (shown as ---D) · $FE end of tune · $FF xx jump to position xx (above $80: jump to subtune). The orderlist must not begin with $FE/$FF.

Chord table#

$00–$7D relative pitch up (semitones) · $80–$FF relative pitch down · $7E return from chord to the arp table · $7F loop the chord infinitely. Note-mode lets you set a root note outside the table and type the chord's notes as notes.

Tempo table#

$00–$7F = tempo (frames) for one pattern row; tempo programs can vary the tempo per row.

Table value schemes#

See instrument-tables for the WF-ARP-Detune, pulse-width and filter tables ($8x..$Fx = set, $00..$7F = add n times, $FE = jump).

Player types#

Normal · Medium · Light · Extra · Bare · Demo — selected in the startup menu; details and what each one drops on sid-player-routine. Custom builds via /sources/settings.cfg.

Files and add-ons#

  • .swm worktune, .swi instruments, .sws 2SID tune, .swt 3SID tune, @SWCONFIG.PRG saved editor settings (auto-loaded at startup; since 1.5 settings are no longer stored in the workfile).
  • SID-Maker (on the C64) exports Normal, Raw, Executable and .SID (sid-format) with selectable player type and relocation address; SID-Maker-SFX adds sound-FX support, SID-Maker-SWP exports relocatable music+player, SID-Maker-SWP-FX adds the tape-slowdown effect.
  • SWMconvert.exe (PC) converts to/from XM and MID with some precision, between .P00/.prg and .S00/.sid (for VICE saves), and .SWM.SWS.
  • sng2swm.exe imports goattracker .sng workfiles.

Tips from the manual#

  • Under vice: CONTROL = Tab, RUN/STOP = Esc, C= = Control, ← = Tilde/End, £ = Insert, ↑ = PageDown (Linux).
  • MIDI cartridges using $DE00–$DFFF clash with other cartridges on the expansion port; HerMIDI avoids this. MIDI IRQs cause harmless border flashing.
  • After a crash, warm reset and SYS 2061 restarts the editor safely.
  • Since 1.8 the save dialog does not read the directory automatically — press F1 (or set SAV.AUT.DIR).

From Creating Chiptunes with SID-Wizard (2nd edition, 2014)#

witchmaster's book (co-credited to Hermit, written for 1.6) explains the manual's settings and adds reference material (source: s-witchmaster-creating-chiptunes-with-sid-wizard):

  • Version history: 1.2 — NTSC support, any 1st-frame waveform value, colour themes, DMC layout, C=+E, = negation, normal/light/medium/extra players, instant-help cheat sheet; 1.4 — sng2swm, more effects; 1.5 — 44 instruments (31 in 2SID), 6 subtunes (2 in 2SID), MIDI-in, the 2SID .sws version, Bare player, chord note-mode, Verdi and just-intonation tunings, SDI and Janko layouts, @SWCONFIG.PRG, one-step undo, solo, sound-FX, 324 instruments; 1.6 — MIDI start/stop/reset, running status, SWM→SWS conversion. (The 1.8 manual's 36 instruments and 8 subtunes are the later limits.)
  • Player types (Bare/Light/Medium/Full/Extra) as a feature matrix — see sid-player-routine; rastertime ≈ $1A–$1C lines; player entry points at load address +0/+3/+6/+9/+12.
  • Tempo → BPM: PAL BPM ≈ 3007.4744 / (tempo × lines per beat) (50.125 frames/s), NTSC ≈ 3589.5659 / (…) (59.826 frames/s); funktempo uses the mean of the two tempos; full tables in the appendices.
  • Filter band values including combined modes ($B, $D, $E, $F), cutoff ≈ 30 Hz–10 kHz, and the $80–$8F filter-switch override for GoatTracker imports (filter-programming); ADSR timings (adsr-envelope); absolute-note values for the Arp column ($81 = C-1 … $D5 = C-8) (wavetable-programming).
  • Worked instruments Bazz, Snare and Arpeggio (instrument-design) and a pattern tutorial (pitch-slide-and-portamento).
  • Setup: transfer hardware and C64 audio-noise fixes (commodore-64), VICE configuration (vice), MIDI message table (sync), SID-Maker/SWMconvert/SIDEdit (sid-format).
  • The same 2014 distribution folder holds Charts and Tables for SID-Wizard 1.6 (document version 1.0, credited to Mikael Norrgård on its conversion-table page): the value schemes, every key with its VICE equivalent, the SDI layout, the arp note chart, the ADSR timings and tempo → BPM tables (source: s-sid-wizard-charts-and-tables; see below).

Relation to goattracker: SID-Wizard keeps GoatTracker's pattern-editing concept and keys, imports .sng via sng2swm, and its $01–$03 slide/portamento effects use "the same FX-number as Goattracker's"; the two differ in multispeed (tables only vs the whole player) and in tables (per-instrument vs shared) (sources: s-witchmaster-creating-chiptunes-with-sid-wizard, s-goattracker-readme).

Early versions: 1.0 (2012) and the 1.6 charts (2014)#

1.0, as a beginner met it in August 2012 (source: s-chipmusic-c64-music-for-dummies): "brand new, released in 2012", downloaded from SourceForge as a .d64 (a "SID-Wizard-extra" build existed) or a .prg; the .prg route saves .P00 files and needs SWMconvert (Windows and Linux) to turn .P00 into .swm and SID-Maker's .S00 into .sid; the .d64 route needs c1541 to extract files. Instruments had to set HRTY to 2 by hand so the gate resets between notes (hard-restart); files could not be overwritten — "you will lose any changes you have made if you try to do this", so every version got a new name; SID-Maker was loaded separately (LOAD"SID-MAKER",8 after a hard reset), its dialog asking for SID/SEQ, the relocation address, the SID model and a filename. The tutorial's author "abandoned gt2 since i found this"; questions in the thread about saving 1.7 tunes through an SD2IEC on a C64C with a SwinSID (2016) went unanswered.

1.6 vs 1.8 — differences visible in the 1.6 charts (source: s-sid-wizard-charts-and-tables; compare the cheat sheet above from the 1.8 manual):

item1.6 charts1.8 manual
jump to a WF-ARP table positionbig effect $04 with a value ≥ $F0big effect $09
big effect $09"select vibrato-type" (a duplicate of $16)WF-ARP table position
big effect $0Fcutoff hi-byte shift, "added to filter frequency. Now notes don't reset it!"set cutoff hi-byte ($1C = permanent shift in both)
fast-forward "4× the speed of normal"
arp-column absolute pitch range$81–$DF = C-1 … A-8same ($81 = C-1 … $D5 = C-8 in the note chart)

Keys the 1.6 charts list beyond the cheat sheet above (C64 key, VICE key in brackets; source: s-sid-wizard-charts-and-tables):

keyaction
/, Shift+/, , RESTORE (PageDown/PageUp)move the cursor 4 or 8 steps
Shift+F1 (F2), Shift+F3/STOP (F4/Esc)play from the marks · pause/continue
Shift+SPACEplay the selected patterns from the cursor (pattern editor) · set the play-start marker of all tracks (orderlist) · set/clear the gate-off index of a table row (instrument editor)
C=+SPACE (orderlist)set the play-start markers to the positions currently played
Shift+←, C=+←toggle follow-play · make it the default
Shift+I · Shift+D · C=+Binstrument auto-typing with notes · dovetailing · pattern/track binding (scroll patterns together or independently)
Shift+±select the jamming instrument, or the pattern in the pattern window
Shift+T/Y · Shift+K/Lselect tempo program · select chord
C=+CONTROL (Ctrl+Tab)switch SID1/SID2 in the 2SID version
C=+RETURNselect the patterns currently played
A, 1, C=+DEL (Q in DMC mode)empty note without moving the rest
C=+DEL · C=+Shift+DELdelete the note or the instrument+effect columns · delete the whole row
Shift+S · Shift+W · Shift+P (instrument editor)go to main settings · WF-ARP table · pulse table; RETURN cycles HR type, vibrato type and octave-shift sign
C=+C / C=+X / C=+V (instrument editor)copy / cut / paste the entire instrument
=negate a table value ($40$C0; in chord tables $04$FB)
F1 · F3/ · CONTROL · F7/STOP (file selector)re-read the directory · page down · switch filename/info/selector · quit

Follow-play modes disable the pattern-editor keys "to prevent accidental editing while playing the tune". In the SDI keyboard layout the differences are: Shift+L/Shift+S load/save, F1 play from the marks, F2 set a mark, F3 stop/continue, Z play the pattern from the current line and RETURN from the top, F4 edit/synth toggle, F7/F8 octave, STOP or / switch instrument/pattern editor, Shift+F filter table, Shift+T tempo table, C=+± subtune, C=+1…3 mute, S/K/L tab between tracks, ,/. jump 8/4 lines, SPACE delete downwards, G/Shift+G gate on/off, >/< transpose, M/C=+M copy/paste, Shift+M end of selection, C=+F clear pattern from the cursor, Shift+HOME start of song, H hunt the next unused pattern, N name an instrument, ? set the speed calls (framespeed 1–8). The charts also carry a decimal/signed/hex table, the arp-column note chart, the ADSR timing table and tempo → BPM tables for PAL and NTSC — e.g. PAL tempo 05 with 5 lines per beat = 120.30 BPM, tempo 06 with 4 = 125.31, tempo 08 with 3 = 125.31; NTSC tempo 06 with 5 = 119.65 (shuffle-funktempo).

Seen from the forums (2020–2021)#

Two Lemon64 threads (sources: s-lemon64-learning-sid-sound-design, s-lemon64-sid-wizard-instrument-recommendations): a returning user picked SID-Wizard because it "reminds me of ScreamTreacker/ImpulseTracker in terms of composition"; MeneerJansen, who prefers to "do things C64" on the machine rather than in goattracker on a PC, calls 1.8 "one of the most complicated [programs] for the C64 I've ever seen. It's like a DAW" and "Very complicated but brilliantly designed" — and recommends starting from the "excellent example instruments … included in the Zip file". Export troubleshooting from the second thread: SID-Maker-2sid is only for 2SID tunes — single-SID tunes need plain SID-Maker; a persistent "SAVING ERROR" under vice 3.1 disappeared with VICE 3.5 (2021; check the disk image's free space too); the binary/sequential export produces a binary file with a sequential extension that CBM prg Studio does not accept — chapter 13 of the book covers the formats (sid-format).

Newer versions and reimplementations#

m64's tracker duet reimplements SID-Wizard 1.97's player from Hermit's 6502 sources and reads/writes .swm, .sws, .swt, .swq and .swi — so a 1.97 release with an additional .swq format exists beyond the 1.8 manual summarised here; its player semantics are described as "generously documented and WTF-licensed" (source: s-duet-readme).

Two fork lines add external sync (sync): m64's user-port sync mod of 1.7, protocol-compatible with Scannerboy's defmon sync adapter (source: s-chipmusic-defmon-thread), and sid-wizard-vessel — 1.8.7 on anarkiwi's Vessel MIDI interface (base port by anarkiwi) with MIDI tempo sync IN via NMI and live-act controls: orderlist repositioning during playback, F3/F1 pattern hold/continue, mutes (live-tracking; source: s-sid-wizard-vessel-readme).

Inside the 1.97 formats and player (m64's DUET research)#

m64's research for duet validated the 1.97 file formats byte-exactly (324/324 example .swi, 143/143 modules) and modelled the whole player.asm runtime with line references — the details live on swm-format and in the two summaries; highlights (source: s-duet-research-sidwizard):

  • .swm/.sws/.swt/.swq are one container; the magic's fourth byte picks the chip count, track count and header layout. The caps shrink with chips: 37/30/27/23 instruments, 100/105/105/102 patterns, 8/2/1/1 subtunes — the C64 runs out of memory, not numbering.
  • Every subtune always exists: the subtune keys only select; an unused subtune is three orderlists that are nothing but their $FE END, and trailing empty subtunes are not saved. Orderlist $00 is the zero-fill after a track's end, not "pattern 0" — no key road can type one, and $FE/$FF can only be typed where a terminator already is.
  • The subtune jump ($FF $8x) is per track (SETSEQA, player.asm 2671) — the three tracks can sit in three different subtunes at once, but the editor always draws the selected subtune and never follows playback; selecting a subtune stops the transport. In the shipped corpus (102 modules) no tune ever splits its tracks.
  • Tick timeline: tick 0 fetches the row (and fires hard-restart for HR-timer-2 instruments), tick 1 advances pattern/orderlist one row early (seq FX apply via delay shadows), tick 2 starts the note — so a note's audible start is uniformly 2 frames after its row's tick 0, the lookahead that makes 2-frame hard restart possible; the Normal player therefore needs tempo ≥ 3.
  • Per frame the channels run 3→2→1 (leftmost wins the filter), then the registers are written in a deliberate order — SR, AD, freq, PW, waveform — "keeping distance" between the ADSR and waveform writes (COMMONREGS 1007–1141).
  • A quirk list for bit-exact reimplementation (detune carry jitter, sweep counters surviving note start, the WF table's missing self-jump guard, DETUNER never reset, big-FX $17–$1B aliasing $1C, …) is in s-duet-research-sidwizard; 6502-exact algorithms in s-duet-research-sidwizard-deep.
  • The 1.97 sources are WTF-licensed: "Do what the frick you want with this code, but mentioning me if you use it would still be nice" (hermit).

sid · commodore-64 · goattracker · hermit · sid-wizard-vessel · instrument-tables · sid-player-routine · chord-arpeggio · hard-restart · multispeed · sync · 037-lab (exports SID-Wizard clipboard text)

Sources#

s-sid-wizard-manual · s-witchmaster-creating-chiptunes-with-sid-wizard · s-goattracker-readme · s-chipmusic-c64-music-for-dummies · s-sid-wizard-charts-and-tables · s-lemon64-learning-sid-sound-design · s-lemon64-sid-wizard-instrument-recommendations · s-sid-wizard-vessel-readme · s-chipmusic-defmon-thread · s-duet-research-sidwizard · s-duet-research-sidwizard-deep · s-duet-readme

source file wiki/entities/sid-wizard.md · graph