SID Factory II cheat sheet

From SID Factory II · print · built 2026-08-31

Reference

Cheat sheet (from the tutorial)#

whathow
load / file selectorF10
play songF1; toggle tracks Ctrl+1/2/3
instrument table / wave table / pulse tableAlt+i / Alt+w / Alt+p (or Tab around)
play the current instrumentShift+q (Shift+w, Shift+e … for other notes)
jump from an instrument's table index to that table rowCtrl+Enter
edit a flag byte bit by bitShift+Enter opens a box; Space toggles a bit
old / new SID chipclick the field in the top bar (defaults to 8580)

Instrument bytes: byte 1 = attack/decay, byte 2 = sustain/release, byte 3 = flags — $80 hard restart on, $10 set the test bit at note start; second nibble points to the HR table (default pair 0F 00); last byte = wave table start index. Example rows: 00 c9 00 00 00 00 sawtooth, 04 69 90 00 00 00 "support" with hard restart + test bit, 00 c8 80 00 00 05 snare drum.

Wave table: waveform note per tick; 7f xx loops to row xx; waveform bytes 11 triangle, 21 saw, 41 pulse, 81 noise (+ 51, 61, 31, 71 combinations); the note byte is a semitone offset (0c = octave) or a static frequency-table note 80–df. Pulse table minimal entry 84 00 00 / 7f 00 00.

Techniques

Hard restart › SID Factory II #

Set bit $80 of the instrument's third flag byte; the second nibble points into the HR table, whose default pair 0F 00 is the ADSR used for the last two ticks — "I have never had to change it" (source: s-chordian-sf2-instruments).

Instrument design beats note count › SID Factory II #

Instrument bytes = ADSR pair + flags ($80 hard restart, $10 test bit) + wave-table index; the tutorial's examples are a sawtooth (00 c9), a "support" instrument (04 69, HR + test bit) and the static snare 81 ca / 41 a8 / 41 a4 / 80 ca / 7f 08; ADSR feel: 04 69 bump-then-sustain, 00 a0 instant, 9b 2a slow pad (source: s-chordian-sf2-instruments).

Multispeed (framespeed) › SID Factory's multispeed driver (2007) #

laxity's SID Factory shipped two drivers: v5.0x, "standard music driver with calculated vibrato and no aim at execution speed (multispeed allowed)", and v6.0x, a "fast" driver without calculated vibrato that caps its rastertime spike at about $18 lines. Tognon: "Multispeed in a natural way with a specific player. I can say that this is the first editor I try that has this features (in other, if you add multispeed to a tune, you have to adjust instruments to the new mode)" — ninjatracker V2, released the same day, could not make multispeed tunes at all (source: s-sidin11-sid-factory-vs-ninjatracker).

Octave bass › SID Factory II #

Same shape, and the manual-level warning that goes with it. In the wave table the second byte is a semitone offset, 0c = +1 octave, and the table runs one row per tick until a 7f xx loop row; repeating a row slows the alternation ("Repeating lines in the wave table can often make instruments sound more pleasant"). Two constraints: slide, portamento and vibrato only work while the offset is 00, so the sustained rows must stay at 00 and the octave belongs on the short rows; and offsets that push the note outside the 8-octave frequency table sound "somewhat random". Values 80df are static notes read straight from the frequency table regardless of the note played — the documented use is "a static hi-hat before a bass note" (source: s-chordian-sf2-instruments).

Pulse width modulation (PWM) › SID Factory II #

A pulse waveform (41) "doesn't say anything at all" until the pulse table sets a width; the minimal table is 84 00 00 / 7f 00 00 (source: s-chordian-sf2-instruments).

Ring modulation and oscillator sync › SID Factory II #

Test bit at note start: flag $10 in the instrument's third byte (Shift+Enter opens a bit editor). It also unlocks the noise generator after a "forbidden" noise combination (source: s-chordian-sf2-instruments).

Wavetable programming (waveform / arp tables) › SID Factory II #

Rows are waveform note, one per tick, until a 7f xx loop row; repeating a row slows the change ("Repeating lines in the wave table can often make instruments sound more pleasant"); the note byte is a semitone offset (0c = octave) — but slides, portamento and vibrato only work while it is 00, so keep offsets on the short attack rows; 80–df are static frequency-table notes that ignore the played note. The tutorial's oldskool snare: 81 ca / 41 a8 / 41 a4 / 80 ca / 7f 08 — one tick of high noise, two of pulse at descending medium pitches ("a 'thunk'"), then gated-off noise looped so the drum goes into release however long the sequence holds it. Keep rows gated on until the loop; toggling the gate row by row gives "a wobbling volume that you can't always trust" (source: s-chordian-sf2-instruments).