Linus Walleij
Member of the C64 group Triad and author of MIDIslave, "the MIDI program for C64", through which he "learned how SIDplayers worked"; he wrote "A SID player routine", pseudo-code for a MIDI-driven sid player, at the request of Michael Kleps — the "M.K." of the extended Soundtracker module signature and author of the QuadraSID VST instrument. He lists the editors he learned from: SoundMonitor (Chris Hülsbeck), Future Composer (Finnish Gold), Rockmonitor, Pro-Drum and Music Assembler (the Dutch USA-team), the JCH Editor, Soundtracker 64 (Mechanix) and the Soedesoft Editor (Jeroen Soede). His 95-entry SID note table is marked "Public Domain — Linus Walleij 2001" (source: s-walleij-sid-player-routine). This page has a single source, that document.
Positions recorded in the wiki#
- hard-restart: write
$00to$D400–$D406two frames before the next attack (Dag Lem's minimum: 33 ms = 2^15 cycles); it fixes attacks, "not the ever-present problem with release"; and it "only affects the 6581 version … (or so I am told...)" — a claim the wiki's other sources do not share, recorded as a contradiction on that page. - A MIDI-driven player cannot see two frames ahead, so it must hard-restart on key press (delaying every note a frame) or on key release (losing the release phase), as the SIDstation does — see sync and sid-player-routine.
- Player design: macros for waveform, arpeggio ("0x00 0x03 0x07 creates a minor chord" — chord-arpeggio), pulse width (high byte only, "most c64 players don't" write the low byte) and filter (mask the resonance register's low nybble); delayed LFO vibrato and pulse-width vibrato; a process rate of ~400 Hz against the C64's usual 50 Hz macro rate.
- "The numbers in the C64 hardware reference manual are simply WRONG" — his reason for publishing his own note table (c64-programmers-reference-guide).
Related#
sid-player-routine · hard-restart · sync · sid · chord-arpeggio