SIDin #1 — Iseq music composition program: the comp.sys.cbm threads and Steve Judd's Commando cover (2002)

author Stefano Tognon (ice00), SIDin magazine; Usenet posts by Robert Bernardo, Steve Judd, Blackspawn, Agemixer/SCL and Anders Carlsson
date 2002-09
article SIDin issue 1 (version 1.00, September 2002), pp. 11–29: 'Iseq music composition program' — sections Comp.sys.cbm Iseq threads (posts of 2002-06-09 to 2002-06-17, with two screenshots), ''Commando' tune in Iseq' (Steve Judd's cover written out as voice tracks, patterns, arpeggios and instruments). Prose from the OCR text; the Commando transcription from the PDFKit text
created 2026-08-30 · updated 2026-08-30

Tognon reprints the June 2002 comp.sys.cbm/alt.c64 argument over Steve Judd's iseq — "a new kind of music player for the C64", "very different respect all the other players around" — and then Judd's own cover of rob-hubbard's commando as it appears in the editor, instruments included. The thread is the best short statement in the wiki of two opposed editor philosophies: the register-level "you control the SID" tool versus the tracker with built-in effects.

Key claims#

The program#

  • Announced on comp.sys.cbm and alt.c64 by Robert Bernardo (Fresno Commodore User Group) on 2002-06-09; the page at www.ffd2.com/fridge/iseq went online on 2002-05-31. "Written totally from scratch (i.e. it isn't just a Tunesmith update)"; the screens read "iseq 01.0 1/2002 -- ctrl-h for help". Author Stephen L. Judd (sjudd at ffd2.com); his earlier players were "blahtune/tunesmith".
  • Files: iseq10.zip (program, docs, examples), ISEQ1.D64.gz, iseq.docs, iseq.tutorial; tunes snood.tune (written for the game Blockhead's Revenge) and examples.tune (instruments partly adapted from daBlondie's Tunesmith instruments); a tune plays from BASIC with SYS 4102; the source is "pretty big" and available by e-mail.
  • Screens: the main editor's status line shows the memory range, octave and rastertime (me: $1088-$166c oct: 03 raster: 60 max:00); voices are rows of pattern letters with markers such as gate, trans, hard+, sync, wait; "Iseq allows multiple tunes" (current tune: 0-snood numtunes=2). The instrument editor (Inst 1-bassthi voice=1 oct: 2 note: f) lists the fields d415 d416 d417 d418 atdk surl pwid freq creg frq+ fixf gate — "Instruments consist of sequence values or modulation schemes, and are compiled into the player." The arpeggio editor (speed=8): "Arpeggios can be of any speed or length, with both positive and negative values".
  • Keys named in the article: ctrl-h help on every screen, f1 edit tune, ctrl-x/c/p cut/copy/paste, shift-t transpose, ctrl-t tempo values, ctrl-a the arpeggio editor from the instrument editor, shift-clear clear tune (detects PAL/NTSC and sets the timer), cbm + / cbm - double / halve playback speed; notes and durations are single keys on a "musical keyboard layout", cursor keys move, "CTRL-letter keys for editor commands".
  • Playing and tempo: the play routine is called with JSR $1003 "at fixed intervals" — from a CIA timer by default, but "if you set the CIA timer to the frame rate, the tune will sound exactly the same when called from a VIC interrupt"; "the only place where CIA timers are necessary is doing true tempo changes". The first tempo value $4cc7 makes it "behave just like a VIC interrupt" on PAL; $42c6 is "the normal NTSC setting, and $417f is for old NTSC R56A VICs (64 cycles per line)". Timers also bring PAL and NTSC tempos "much closer". Pressing cbm+ too often makes "IRQs start happening faster than they can be acknowledged".
  • Philosophy: "Any music player can only write to SID every time it's called. In iseq, you specify exactly what gets written on each call … all registers are available to each instrument." Building blocks: plain sequences "written continuously or just once", and "modulators" — ramps "from A to B step C" and adders. "It's not 1990 anymore; why should I limit myself to yet another clone of a 10-15 year old music program/system?" The interface is meant for composing "by ear" — "you compose by single-stepping through your notes, instead of staring at the screen".
  • No built-in effects: vibrato is a frq+ list added to the frequency each call — frq+ 0100 0200 0100 0000 ff00 fe00 ff00 0000, looped — "not 'proportional'" but combinable with "a rising frequency … little ornaments … an 'asymmetric' vibrato" (vibrato); slides and glides are built the same way or in the arpeggio editor ("kind-of a crappy way", so "philosophical purity … may be abandoned in a future release"); ties come from switches — "You can turn gate toggling on/off, restarts on/off" — plus two special notes, "hold" (continue the previous note) and "rest" (zero frequency) (pitch-slide-and-portamento).
  • The drum recipe: "1st player call: waveform=$81 freq=$a000 (or whatever) / 2nd player call: waveform=$11 freq=$a000 / 3rd player call: waveform=$41 freq=original value — fix restores the frequency, that's all" (wavetable-programming). Mixed waveforms such as $51 "didn't work on lots of SIDS".
  • Layout: notes run left to right "like sheet music"; "Iseq fits, what, 12 'tracks' on the screen at a time by using rows"; the octave is shown at the top and in the "long description" of the note under the cursor because A B C# B C# A D reads better than A-4 B-4 C#-4 …. The program is "something like 70 blocks of code". Known bug: loading fails under an Action Replay cartridge (the KERNAL LOAD called from bank 2).

The debate#

  • Blackspawn (from the screenshots): "much too complicated and spartan … there are already much better tools for making music for the C64, like GoatTracker or OdinTracker"; later "Impractical … because it's spartan", "I'm very used to the typical tracker interface, like Goat- oder OdinTracker have (or FT2/IT2 etc on PC) and I could never imagine using a system like yours", and "Why didn't you implement one?" (goattracker).
  • Agemixer/SCL (after testing): "too far from the common 'standards'"; it hangs on speed changes; the loader fails with Action Replay; CIA-timer tempo "makes a lot of restrictions in demo and game needs" — a tune with CIA timing cannot go into "a fullscreen FLI demo or raster timing stuff"; "I wouldn't recommend Iseq for any serious music making." Reading the docs: no flexible wave list or arpeggio (only the fixf feature) and not a word about "slide", "glide", "tie" or "vibrato"; his test case is a continuous bass wave list — Wave trp+: 51, 41 0c, 41, 41(0) 00 ×4, 40 00 ×3. Keyboard advice: single keys for the common actions, F1/F3/F5/F7 = play/stop/cont/f.forward (DMC-styled), destructive commands behind SHIFT/CBM/CTRL, "different keysets (DMC-like, JCH-like)"; Voicetracker once made you type "C#4.1f" for a note and its duration. The horizontal note rows are "very strange for music"; the octave and a sequence position are missing on screen. His own "Ultimate Tracker" project — flexible player, "'variable speed' like iseq", "SLTS samples", "free IRQ/NMI for possible sample addition", "cleverly optimizing tune packer" — was "too large a project". He challenges Judd to cover Hubbard's Commando; his own cover, made in DMC 4.0B ("easy but one of hardest ones for covering anything well"), is HVSC's /VARIOUS/A-F/Agemixer/Commando_Remix.sid (hvsc).
  • Anders Carlsson: "Something that very many of the music editors for the C64 lacks is well-written documentation. Not strange, as they often were hacks by demo groups"; "I only know one music editor which comes with decent docs, and that is SIDwinder."
  • Judd's answers: "Heh, which is it: too complicated, or too spartan?"; "all you've said is, 'It's not what I'm used to.' But the question is: what doesn't it do that you are looking for?"; "most sceners don't like to step out of the comfort zone"; "Who will use iseq? I will, of course!"; to Agemixer's abandoned project: "I totally think you should write your own player … That's what keeps the C= going". He takes the Commando challenge — "I can do the notes from memory but I don't know how to make his instruments" — and asks for the instrument descriptions by e-mail.

'Commando' tune in Iseq#

Judd's cover "with the hidden numbers in the editor added here for more reliability":

  • Voice tracks are strings of pattern letters with in-line settings — V0: hard+ gate=3 DDDDG trans=3 G trans=0 HIJIJKKLLMM trans=2 M trans=0 NPPPPTULL …, V1: hard+ gate=3 EEEEEE trans=3 EE trans=0 …, V2: hard+ gate=0 AAA trans=3 A trans=0 BAAC trans=5 C trans=-3 C …trans=n a transpose in semitones (negative allowed), gate=n a gate setting, hard+ a per-voice switch (orderlist).
  • Patterns A–X: inst=n(name), dur=1(6) / dur=3(12) (duration index and its length in calls), arp=1(octave), gate+ / gate-, notes as a1 h a1 a2 where h is hold, plus rest. Pattern A: inst=0(hubbass) dur=1(6) a1 h a1 a2 inst=1(crash) a1 h inst=0(hubbass) a1 h a1 h h a2 inst=1(crash) a1 h … — the crash sits on the bass voice between bass notes (channel-interleaving).
  • Arpeggios: 0 <no arp>, 1 [+0 +12] (octave-bass, chord-arpeggio).
  • Instruments (fields as printed; atdk = attack/decay, surl = sustain/release, pwid = pulse-width list, freq = fixed-frequency list, creg = control-register list, frq+ = frequency-add list, gate = gate/control byte): 0-hubbass atdk=09 surl=d0 pwid=0102 01ff 0016 creg=41 gate=40 · 1-crash atdk=0a surl=09 freq=0f82 1f04 creg=81 80 gate=88 · 2-crish-v1 atdk=0d surl=f1 creg=15 81 81 15 gate=14 · 3-crish-v2 atdk=0f surl=b4 pwid=0200 creg=43 81 81 43 gate=42 · 4-hubharmo atdk=06 surl=ea pwid=0800 creg=41 81 81 41 gate=40 · 5-hublead atdk=29 surl=99 pwid=0900 09a8 0a50 0af8 0ba0 0c48 creg=41 frq+=0000 0040 0080 00c0 00c0 0080 gate=40 · 6-beop atdk=0a freq=0dd0 0100 0100 creg=41 81 81 40 gate=40 · 9-harmo2 atdk=06 surl=c9 pwid=0800 0006 creg=41 81 81 40 · three "scream" leads a-scream-, b-scream+, c-scream (atdk 38 / 29 / 38, surl 9a / 99 / 7a, pulse lists such as 0b20 0c00 0ce0 0dc0 0ea0 0dc0 and 0900 09c0 0a80 0c00 0cc0, frq+ lists 0000 0028 and 0000 0094 0094 0094 0000 ff6c, creg=41) · f-hard. The bass is a pulse with a three-step pulse-width list, the crash two calls of noise at fixed frequencies, the "crish" drums triangle+ring or triangle+pulse+ring switched through noise, the leads pulse sweeps under additive vibrato (instrument-design, pulse-width-modulation, ring-modulation-and-sync).

Practical takeaways#

  • Judd's three-call drum is the generic table drum: two calls of noise (or noise then triangle) at a fixed high frequency, then the real waveform at the note's frequency — compare Hubbard's and MoN's drums on wavetable-programming.
  • An additive vibrato list (frq+) is cheap and precise but not proportional; a tracker's calculated vibrato (sid-wizard, goattracker) is the same idea scaled by pitch (vibrato).
  • The three CIA timer values are the frame lengths in cycles: $4cc7 PAL, $42c6 NTSC, $417f for the old 64-cycle NTSC VIC — useful whenever a player is driven from a timer (sid-player-routine, commodore-64).
  • The ergonomic points Agemixer makes — one key per common action, destructive commands behind a modifier, selectable keysets, an on-screen octave and position — are the checklist trackers settled on (tracker).

Notable quotes#

"Any music player can only write to SID every time it's called. In iseq, you specify exactly what gets written on each call."

"It's not 1990 anymore; why should I limit myself to yet another clone of a 10-15 year old music program/system?"

"I only know one music editor which comes with decent docs, and that is SIDwinder." (Anders Carlsson)

Relevance to the wiki#

Creates iseq; a sourced instrument-by-instrument reading of the commando sounds as rebuilt in 2002; the C64 editor scene of 2002 for tracker-scene-history and goattracker; concrete additive-vibrato and three-call-drum examples for vibrato and wavetable-programming; the CIA-timer frame constants for sid-player-routine.

Pages touched#

iseq · commando · rob-hubbard · goattracker · tracker-scene-history · vibrato · wavetable-programming · sid-player-routine · octave-bass · hvsc · sidin

To verify#

  • (unverified) The instrument block is printed in three columns; the field-to-instrument assignment of the three "scream" leads above is my reading of the column order and may be shifted. The text extraction prints hubharmo's pulse width as 01800, read here as 0800.
  • (unverified) The screenshot's key list (shift-r ritard, shift-g gate delay, shift-w wait, shift-z, shift 1-8, ctrl-d) is only partly legible in the OCR and is not carried into the wiki.
source file wiki/summaries/s-sidin01-iseq.md · 2 unverified · graph