MUSICFILE — the Maniacs of Noise driver cheat sheet
From MUSICFILE — the Maniacs of Noise driver · print · built 2026-08-31
Reference
Cheat sheet#
From the Cybernoid II source (MUSICFILE V01-07-1988), all via s-realdmx-sid-players; the names are Deenen's Dutch/English labels, the semantics read from the code where noted.
- Tune-wide constants at the top of the file:
volume = $0f,vibtotzover = $30,pulserunspeed = $63,dubvoice = $0c(double voice),noisehitone = $fa,pulsearpwait = $01,gitarwait = $0f,spacelength = $00,spacewait = $60,wavearpwait = 2. - Routines (the driver's feature list): Tonearpeggio · Vibrato · Tone glide · pulse handling ("pulsegedoe") · Wavearpeggio · Pulsearpeggio · Tonesweep up · filter handling ("Filterklooi") · Strangefilter · Pulserun · Double voices · Space effect · Drumroutine · noisetik.
- Song → sequences → steps:
snelheid(speed) per song;seqtabelgives three sequences per song (seq0a–ctitle,seq1a–cgame over); a sequence is a list of step-table numbers below$40with prefix bytes — verified in the code:$80–$fd= transpose,toneadd = byte & $1f, added to every note and glide target of the following steps, upward only (0–31 semitones;$84,$01= +4 then step 1,$8c= +12);$40–$5f= repeat the next step& $3fmore times;$60–$7f= an instrument-number offset& $0f;$fe= end;$ff= restart the sequence without resetting the transpose (source: s-realdmx-deenen-test-tunes); 33 step tablesst00–st20hold the notes (orderlist). - Instruments: 8-byte rows with the columns
pulsehi, waveform, attdec, susrel, filcount, fx1, fx2, fx3(instrument-tables, instrument-design):
| name (Deenen's label) | pulsehi | waveform | attdec | susrel | filcount | fx1 | fx2 | fx3 |
|---|---|---|---|---|---|---|---|---|
| leeg (empty) | $00 | $00 | $00 | $00 | $00 | $00 | $00 | $00 |
| bass | $05 | $41 | $08 | $89 | $00 | $53 | $64 | $80 |
| bassdrm | $08 | $11 | $00 | $a8 | $f0 | $00 | $00 | $10 |
| snardrm | $08 | $11 | $00 | $a9 | $f0 | $01 | $00 | $10 |
| arp+filt | $04 | $21 | $00 | $c8 | $01 | $00 | $81 | $85 |
| melo-1 | $0c | $41 | $00 | $b8 | $00 | $52 | $22 | $01 |
| melo-2 | $06 | $41 | $00 | $e8 | $02 | $53 | $74 | $01 |
| $17zooi | $00 | $17 | $00 | $88 | $f0 | $00 | $00 | $80 |
| arp-filt | $04 | $21 | $00 | $88 | $00 | $00 | $81 | $84 |
| $55 | $00 | $55 | $00 | $b8 | $00 | $00 | $00 | $20 |
| bassfilt | $03 | $41 | $07 | $69 | $00 | $00 | $51 | $80 |
| melo-3 | $05 | $41 | $00 | $b8 | $03 | $53 | $83 | $01 |
| tingel | $01 | $41 | $00 | $89 | $f0 | $00 | $00 | $02 |
| omhoogt (upwards) | $06 | $41 | $00 | $c8 | $08 | $00 | $41 | $00 |
| $81lang | $07 | $81 | $08 | $fd | $f0 | $00 | $00 | $00 |
| solo | $05 | $41 | $00 | $b8 | $03 | $c5 | $24 | $01 |
| melo-1 (2nd) | $0c | $41 | $00 | $b8 | $00 | $c6 | $22 | $00 |
| basso | $07 | $41 | $08 | $89 | $00 | $00 | $31 | $00 |
| solo2 | $05 | $41 | $00 | $a7 | $00 | $c5 | $22 | $00 |
- Per-instrument start ("noisetik",
fx3bit 7):starttabel($81,$81,$81,$81, $41,$11,$11,$81, $41,$81,$81,$81) andstartlen($02 … $05, $06) — verified in the code of Deenen's own test tune: while the note's frame counter is belowstartlen, the waveform written is thestarttabelvalue; a value of$7for more forces the frequency high byte tonoisehitone = $faand the waveform to$81. Effects skip the note's first frame, sostartlen = $02is exactly one frame of high noise on the second frame of the note, and$41/$11with$05/$06swap in that waveform at the note's own pitch for four or five frames; for two frames afterwards pitch and waveform are restored explicitly (source: s-realdmx-deenen-test-tunes; hard-restart, wavetable-programming).vibtabwaitholds vibrato delays per instrument ($0c,$18). - Drums:
drumtabel→dwa(waveform per frame, length byte first:$0b; $81,$81,$20,$20,$10,$10,$10,$10,$10,$10,$10,$10) anddto(pitch per frame:$34,$0a,$08,$06,$04,$05,$06,$05,$04,$05,$06,$05) — two frames of noise, then sawtooth and triangle sliding down (wavetable-programming). - Chords:
arp0–arp7= length byte + semitone offsets:$02,$00,$03,$07(minor),$02,$00,$04,$07(major),$02,$00,$05,$08,$02,$00,$05,$09,$02,$00,$03,$08,$02,$00,$04,$09,$02,$00,$03,$06;arp6 = $17+ a 24-step descending run$e9 … $00;wavearp $80,$10,$80,$10alternates noise and triangle (chord-arpeggio). - Filter:
filterbytes→ four 10-byte programsfb0–fb3, e.g.$a0,$fe,$02,$ff,$80, fp0,$02,$22,$42,$62wherefp0 = $10 + volumeis the$D418byte (mode nibble + volume);strafilterandaftrekspeedfor the "strange filter" (filter-programming). - Pulse:
pulsetabel, four 8-byte programs such as$04,$0c,$02,$30, $04,$30,$06,$30(pulse-width-modulation). - The driver shadows the SID registers per voice (
d400 … d403,stod404) and keeps glide, vibrato, arpeggio, pulse-run and filter counters in 3-byte tables — the state a sid-player-routine needs.