64'er 10/1986 — Musik wie noch nie: the Soundmonitor article and manual

author Chris Hülsbeck (byline "Chris Hülsbeck/tr"); 64'er magazine, Markt & Technik
date 1986-10
article 64'er issue 10/1986, pp. 53–64, 'Listing des Monats': intro 'Musik wie noch nie' + 'Bedienungsanleitung' (the type-in hex listing itself is omitted). iDOC= etext #69, converted by Peter Hagemann, May 2001; scan at https://archive.org/details/64er_1986_10
created 2026-08-30 · updated 2026-08-30

The article with which 64er published chris-huelsbeck's soundmonitor as its "Listing des Monats" (listing of the month) in October 1986 — the editor that started the C64 tracker era and the first documentation of his Musicmaster play routine. The German text is a complete user manual: every key, the track/step table, bar addresses, arpeggios, recording, saving, and the 24 "registers" of a sound. The 11 KB hex listing itself is not in the etext.

Key claims#

  • Why it exists. Existing SID programs (score editors, "complete music studios") could only play music while the whole program was in memory, useless for "einem selbstgeschriebenen Basic-Spiel". So Hülsbeck wrote an independent play routine, Musicmaster, whose results "can even surpass the music of professional games". Entering its data with a machine-language monitor such as SMON was tedious — "Das Musikstück »Shades« wurde auf diese Art komponiert, was eine zeitraubende Arbeit war" (shades was composed that way) — hence a monitor specialised for music data: the Soundmonitor.
  • Design. The play routine "runs completely on its own in the interrupt", so the song can be heard at any time, also while editing; plus "Realtime-record" from the keyboard. X leaves the program, SYS 4096 restarts it.
  • Track/step table (the start screen): a step column SP $00–$FF ("compare a step to a BASIC line number"), TRK1–3 = the play order of bars for voices 1–3, and per track a transpose TR and a sound-transpose ST; an ARP/S column holds the address of the base settings + arpeggios. SHIFT+I (+Y) initialises. F3 marks FIRST STEP, F5 LAST STEP.
  • Bars ("Takte") are memory addresses. You type B000 under TRK1 at steps 00–03 and the bar at $B000 plays four times. Bars live best between $B000 and $BE00 (the BASIC ROM is banked out); "the routine has no memory management", but bars can be put anywhere. After initialise every step points to $BE00, an empty bar (for rests longer than a bar); a metronome bar sits at $BE80 (sound 00 is reserved for it; use with TR/ST = 00 while recording).
  • Bar length defaults to $20 = 32 notes; every note takes 2 bytes, so bars are $40 apart: $B000, $B040, $B080, $B0C0, $B100 …. $30 gives a 6/8 bar ($B000, $B030, $B060 …), $40 a double-length 4/4 ($B000, $B080, $B100 …).
  • Note display. RETURN on a bar address opens it; the bar reads top-left to bottom-right, four notes per row, e.g. B000 A-1 01 - 00 - 00 - 00. A note is C–H, #/-, octave 0–7; --- = rest ("the key is released"), +++ = hold. Each note carries a hex byte: low nibble = sound number, high nibble = sound options. A note typed normally shows inverse and is angeschlagen (retriggered); SHIFT+note enters it without a retrigger.
  • Transport. N starts at FIRST STEP and re-initialises the SID; P toggles play at CURRENT STEP.
  • Transpose adds the TR byte to every note of the bar: 00–7F up, FF–80 down. From C-2: 01C#2, 03D#2, 0CC-3, FFH-1, FBG-1. The tutorial's bass (A-1/A-2 octave jumps) becomes "ein einfaches A-Moll-Riff" with FC and FE on later steps.
  • Sound-transpose ST is added to every sound number in the bar, so one bar can be played with different sounds and sounds above $0F become reachable.
  • Play & realtime record. O (+SHIFT) octave, CLR sound, K key-transpose, , . / pick the voice, F7 plays (border turns red; CTRL = C, 1 = C#, …), F7/RETURN returns. Recording: R picks the track (header turns yellow), bar addresses must be filled in, Q sets quantize (1 = 16ths, 2 = 8ths, 3 = quarters, 0 = none — "not recommended"), then F7.
  • ARP/S page (RETURN under ARP/S, "very monitor-like"): the first 8-byte line holds the base settings: byte 0 CIA-timer low (fine tempo, e.g. to sync with a record player), 1 CIA-timer high ("35 to 50 if possible"), 2 coarse tempo 0–4 (smaller = faster), 3 bar length, 4 fade-out at the song's end (FF = none; 10 fast … 30 slow; needs a second ARP/S address at the end whose only difference is this byte), 5 volume 00–0F ("almost identical to SID register 24, but without the filter nibble"), 6–7 unused. SHIFT+@ on ARP/S writes default base settings and two arpeggios.
  • Arpeggios live on the following lines: always eight note-steps called in turn, each working like a transpose, "for example to simulate chords". A minor chord: 0c 07 03 00 0c 07 03 00 — "as if you played a chord with four fingers … A minor: first finger A (0C), second E' (07), third C' (03), fourth A (00)". To use one, set bit 3 of the note's sound options (the digit becomes 4), and choose the arpeggio with the byte after the last note of the bar (for the first note: the last byte of the bar): 08 = first arpeggio, 10 second, 18 third, 20 fourth …
  • Sound options (high nibble of the note byte): suppress transpose, suppress sound-transpose, arpeggio-play bit, portamento bit; the £ key inverts bits and shows the resulting digit.
  • Copy / edit. SHIFT+= copies the FIRST…LAST STEP block to the cursor; L then SHIFT+S copies a sound, a bar (in the note display) or an ARP/S line; SHIFT+INS/DEL inserts a step, DEL deletes one; SHIFT+@ on a bar address clears the bar.
  • Save/load. T picks the file type: Soundnumber (one or more sounds, Y/U set the range), Complete Song (with the play routine — N then plays it "exactly as if you had loaded it absolute and started it with SYS 49152"), Steps only (no routine, fewer blocks, for work in progress). SHIFT+S saves, SHIFT+L loads, $ shows the directory.
  • Synchronisation with a turntable or tape: FINE DETUNE in the sound page, then the CIA-timer bytes; N restarts the song each try.
  • Demo sounds (24 bytes each): Flute 11,09,99,00,00,00,00,00,10,00,00,00,10,06,10,00,FF,00,…; Basedrum 11,09,09,01,00,00,00,00,10,01,FF,00,00,00,00,00,FF,…; Snaredrum 81,09,09,01,00,00,00,00,80,01,10,30,00,00,00,00,FF,…; "Rambo theme sound" 41,08,7D,00,00,20,10,10,40,10,00,00,10,08,1D,00,FF,…; Ringmodulationeffect 15,08,7A,10,00,00,00,00,14,01,20,23,00,00,00,00,FF,…; Portamentosound 11,09,99,00,00,00,90,00,10,00,70,00,00,00,00,00,FF,… (needs the portamento bit in the sound options). The tutorial's bass is 41,09,99,00,20,10,10,10,40,10,00,00,00,00,00,00,FF,…, its melody 41,08,7C,00,60,10,10,10,40,10,00,00,10,07,1A,00,FF,….

The 24 sound registers#

regmeaning (as documented)
0waveform + control at key-on = SID registers 4/11/18: first digit 1 triangle, 2 sawtooth, 4 pulse, 8 noise; second digit bit 0 = "Anschlagsbit" (gate, must be 1), bit 1 sync, bit 2 ring mod, bit 3 test. Enter 11, 21, 41 or 81; "for effects also 15"
1attack/decay (SID 5/12/19)
2sustain/release (SID 6/13/20)
3portamento-effect byte, the target when the portamento is "overdriven" (with reg 9)
4pulse width 00–FF
5pulse-EG count up: how long reg 7 is added to the pulse width
6pulse-EG count down
7pulse-EG count byte ("above 30 the tone gets dirty")
8waveform at key-off: like reg 0 with the gate bit cleared (10, 20, 40, 80); normally the same waveform (21/20, 11/10, 41/40, 81/80), changing it "does not always give a good result"
9left digit 1 = restart the pulse EG constantly; right digit: bit 0 pull the tone up, bit 1 down (between the struck note and reg 3), bit 2 = only once instead of constantly ("hear it in BASEDRUM"); 0 for a normal portamento
10portamento speed low (00 = none; the note also needs the portamento bit in its sound options)
11portamento speed high (large values with bit 0 of reg 9 give "an interesting effect")
12vibrato level (depth)
13vibrato speed (00 very fast … 7F very slow; bit 7 = start downward or upward)
14vibrato delay after key-on
15fine detune (normally 00)
16high nibble of SID register 24 = filter type (bit 0 low-pass, bit 1 band-pass, "bit 3" high-pass as printed; 0 = none). FF = this sound touches no filter register, which avoids the SID's click when filters switch; a voice that was filtered stays filtered unless a later sound clears regs 16–23 to 00
17resonance / filter-to-voice = SID register 23 (left digit resonance, right digit bits 0–2 = voices 1–3)
18cutoff frequency 00–FF
19filter-EG count up (same principle as the pulse EG, regs 5–7)
20filter-EG count down
21filter-EG count level lo: left digit how much (0–F) is added going up, right digit going down (for effects with reg 23)
22filter-EG count level hi (02–20 recommended)
23filter-EG mode / trigger voice: left digit bit 0 = restart constantly, bit 1 = start with count-up or count-down; right digit = which voice starts the EG (bits 0–2 = voices 1–3, normally the filtered voice itself)

Practical takeaways#

  • The whole editor is a thin skin over a data format: bars are raw memory, the track/step table is a list of addresses, a sound is 24 bytes. That is why it could be typed in from a magazine and why its tunes run in anybody's game with SYS 49152 — the sid-player-routine idea made public.
  • Chords are arpeggios of eight steps written as semitone offsets (0c 07 03 00 …), the same idea as every later chord-arpeggio table; the "Rambo theme sound" and the drum recipes are usable instrument-design starting points for any editor with pulse and filter "EGs" (pulse-width-modulation, filter-programming).
  • The FF "don't touch the filter" convention and the warning about the SID clicking when filter bits change are early, practical filter advice.

Notable quotes#

"Der Hauptteil des Programms, die Abspielroutine, läuft völlig selbständig im Interrupt. Das bedeutet, daß der Song zu jeder Zeit, also auch während des Editierens angehört werden kann." — the main part of the program, the play routine, runs entirely on its own in the interrupt, so the song can be heard at any time, even while editing.

"Lesen Sie die Anleitung komplett und sorgfältig durch, bevor Sie eine größere Komposition starten." — read the manual completely and carefully before starting a larger composition.

Relevance to the wiki#

Primary source for soundmonitor (cheat sheet), for Musicmaster as the first published C64 driver on sid-player-routine, for shades and chris-huelsbeck, and for the pre-history of the tracker (tracker-scene-history).

Pages touched#

soundmonitor · chris-huelsbeck · shades · 64er · sid-player-routine · tracker · tracker-scene-history · chord-arpeggio · instrument-tables · instrument-design · pulse-width-modulation · filter-programming · vibrato · pitch-slide-and-portamento · sid

source file wiki/summaries/s-64er-soundmonitor-article.md · graph