chipmusic.org — sid music hints'n'tips (2013)
4mat opens by pointing at a CSDb thread of SID tips "with contributions from Jammer, Jeff and many others" (link not preserved) and at "a really good article" on the waveform differences between 6581 and 8580 (link not preserved). What follows is scattered but useful: how to dissect tunes with siddump, 4mat's reading of a 5× multispeed tune, the "metal noise" control-byte list, and hi-hat talk.
Key claims#
- Magic numbers (iLKke): "after a while everyone finds a set of magic numbers that seems to always work for them" — his ProTracker vibrato is always
4A1or4A2. If you like the hi-hats in some SID tune, "it's pretty easy to peek into how they did it". - Tools: siddump (4mat, iLKke) or "jsid player"; 4mat once tried to write a siddump-log → goattracker-instrument converter "but didn't get it working". Awol's instructions for beginners: put
siddumpand the.sidin one folder, open a command prompt there,SIDDUMP sidfilename.sid -tX >textfilename.txtwhereXis the song's approximate length in seconds; open the file in Notepad, not WordPad (the columns break); "Every row in the txt stands for a video frame. PAL is 50 frames per second, so … every 50 rows corresponds to 1 second in the song's play time. 60 for NTSC." He ripped "a nice kick drum sound from a Mortimer Twang tune" with it. - Multispeed limits: siddump on Gallefoss's Electronic Transfer (5×) failed with "CPU executed abnormally high amount of instructions" (Awol, 2013-07-04). Awol e-mailed the author; the reply: supporting multispeed "may require emulating the full CPU + CIA timer + IRQ environment, which SidDump doesn't really do", but "there may be a simple option of just breaking out when/if the init routine gets stuck into a loop, and executing the code pointed to the interrupt vector as each frame's play call". SIDDump 1.05 followed on 2013-07-06 "with partial support for multispeed tunes" — "not entirely foolproof (depends on how complicated code the player interrupt runs)".
- 4mat's analysis of the Electronic Transfer lead (the sound at 2:10): the pitch rise "sounds like it's an instrument table effect to do the pitching rather than portamento. It's just pitching up from a lower note over a few frames. (you could use an un-looped arpeggio to do the same thing)"; "He's got the whole instrument preset looping (with the gate off so it fades out) which gives the echo effect"; "The rapid pulsewidth modulation on there is down to the multispeed. He's probably got it adding about $40 on each player tick"; "The bass tone is a sample loop. (like how chip modules do it)"; the "noise slide" sound "is probably a really tight instrument preset switching from noise to triangle(?) every couple of frames, would explain the thickness to it". Awol's conclusion: the brassy lead "is mostly just a square wave pitched up. For some reason I thought it was more complicated."
- Hi-hats and noise: Jellica is "still not happy with my hi-hats" — many good ones "are combined with the bass instrument or other sounds", which he does not want to do; breakphase finds the SID noise "not as raspy as I like" — "I think it's 4 bit or something" (he later admits "I don't even know if I'm right about c64 being 4-bit"; he means the grit of 1-bit NES/Atari noise) and says "a highpass filter helps with hihats, for me"; 4mat: "it's the most versatile noise osc on 8-bit hardware. I remember when the 8-bit consoles came in it was such a disappointment how limited the Nintendo and Sega ones were to work on in comparison"; chunter: the SID noise "imitating cymbals in the Racing Destruction Set loading song" was "the first home computer music that truly surprised me".
- The "metal noise" waveform list (4mat, from "this guide", link not preserved) — control-byte values with the noise bit set:
| value | effect (4mat's list, quoted) |
|---|---|
$81, $80 | "noise waveform. NATIVE WAVEFORM." |
$82–$83, $86–$87 | "a slight SYNC effect" |
$88–$8F | "reset noise" |
$90–$BF | "not used (do not use: the noise dies)" |
$C0–$CF | "rare extras(*)" |
$D0–$EF | "not used (do not use: the noise dies)" |
$F0–$F7 | "(*) rare extas: resets the internal pseudo random generator" |
$F8–$FF | "resets the internal pseudo random generator, so the noise waveform play different, on some sids the selected noise sounds more 'metallic' depending on the value and running SID cycles and other status. Usage: first $f9, then $81" |
Practical takeaways#
Dissect tunes with siddump tune.sid -t<seconds> > out.txt, one row per frame; expect trouble with multispeed players even after 1.05. Read drums and leads as frame sequences: a pitch-up attack from an un-looped arp, echo from a gate-off loop inside the instrument, thickness from noise ↔ triangle alternation every couple of frames, multispeed PWM of about $40 per tick. For hi-hats: a high-pass filter, or combine them with the bass instrument (channel-interleaving). For a metallic noise: write $F9 for a frame, then $81 — a test-bit reset of the noise generator (ring-modulation-and-sync).
Notable quotes#
4mat: "it's the most versatile noise osc on 8-bit hardware."
iLKke: "everyone finds a set of magic numbers that seems to always work for them."
Relevance#
Gives siddump its usage and version history, multispeed a 5× example with an analysis of what the extra speed is spent on, wavetable-programming two more frame-level idioms and the noise-reset trick, sid the control-byte list for noise combinations, and filter-programming the high-pass hi-hat tip.
Pages touched#
siddump · multispeed · wavetable-programming · pulse-width-modulation · fake-echo · pitch-slide-and-portamento · filter-programming · instrument-design · sid · ring-modulation-and-sync · tracking-workflow · chipmusic-org · chip-samples