Homeentitytool

Iseq (Steve Judd's C64 music editor, 2002)

Stephen L. Judd's C64 music editor and player of 2002 (version "01.0 1/2002", released at www.ffd2.com/fridge/iseq on 2002-05-31 and announced on comp.sys.cbm on 2002-06-09) — deliberately not a tracker: notes run left to right in voice rows, the tune is composed "by ear" by single-stepping, the player is driven from a CIA timer, and instruments are lists of raw register values compiled into the player instead of built-in effects. "Any music player can only write to SID every time it's called. In iseq, you specify exactly what gets written on each call." sidin #1 reprints the Usenet argument it caused and Judd's cover of commando written in it (source: s-sidin01-iseq).

Facts#

  • Written "totally from scratch (i.e. it isn't just a Tunesmith update)"; Judd's earlier players were blahtune and Tunesmith. About "70 blocks of code". Distributed as iseq10.zip (program, docs, examples), ISEQ1.D64.gz, iseq.docs and iseq.tutorial, with snood.tune (for the game Blockhead's Revenge) and examples.tune; source by e-mail (source: s-sidin01-iseq).
  • Multiple tunes per file; the status line shows the data's memory range, the octave and the rastertime (me: $1088-$166c oct: 03 raster: 60 max:00) (sid-player-routine) (source: s-sidin01-iseq).
  • Instruments "consist of sequence values or modulation schemes" — plain sequences written continuously or once, ramps "from A to B step C", adders — over every SID register, including the filter registers d415–d418 per instrument; arpeggios "of any speed or length, with both positive and negative values", continuous or one-shot (source: s-sidin01-iseq).
  • No built-in vibrato, slide, glide or tie: vibrato is a looped frq+ list, slides are frq+ lists or arpeggios, ties come from turning gate toggling and instrument restarts off, plus the special notes hold and rest (source: s-sidin01-iseq; vibrato, pitch-slide-and-portamento).
  • The play routine is JSR $1003 "at fixed intervals"; a tune whose first tempo value is the frame length sounds identical from a raster interrupt. Judd: "the only place where CIA timers are necessary is doing true tempo changes"; Agemixer: a CIA-timed tune cannot go into "a fullscreen FLI demo or raster timing stuff" (source: s-sidin01-iseq; multispeed).
  • Reception: Blackspawn ("too complicated and spartan", "I could never imagine using a system like yours"), Agemixer/SCL ("I wouldn't recommend Iseq for any serious music making", then a detailed feature and keyboard critique), Anders Carlsson (intrigued by the existence of documentation); Judd: "Who will use iseq? I will, of course!" — see tracker-scene-history (source: s-sidin01-iseq).
  • Known problems in 2002: the KERNAL LOAD from bank 2 failed under an Action Replay cartridge; repeated cbm + made "IRQs start happening faster than they can be acknowledged"; mixed waveforms such as $51 "didn't work on lots of SIDs" (source: s-sidin01-iseq).

Cheat sheet#

Everything from the posts and screenshots in s-sidin01-iseq; the full key list on the help screen is only partly legible there.

key / valuemeaning
ctrl-hhelp, on every screen
f1edit tune
ctrl-x / ctrl-c / ctrl-pcut / copy / paste
shift-ttranspose
ctrl-ttempo (CIA timer) values
ctrl-aarpeggio editor (from the instrument editor)
shift-clearclear tune; detects PAL/NTSC and sets the default timer
cbm + / cbm -double / halve playback speed
$4cc7first tempo value for a PAL frame ("behave just like a VIC interrupt")
$42c6NTSC frame
$417fold NTSC with the R56A VIC (64 cycles per line)
JSR $1003play call; SYS 4102 plays a tune from BASIC

Instrument fields (the editor's names): d415 d416 d417 d418 (filter and volume registers), atdk attack/decay, surl sustain/release, pwid pulse-width list, freq fixed-frequency list, creg control-register list, frq+ frequency-add list, fixf restore the note's frequency, gate gate/control byte.

Tune notation (as printed for the Commando cover): voice rows of pattern letters with trans=n (semitones, negative allowed), gate=n, hard+; patterns of inst=n(name), dur=1(6) / dur=3(12), arp=n, gate+ / gate-, notes a1 h a1 a2 (h = hold), rest (orderlist).

Recipes from Judd: vibrato frq+ 0100 0200 0100 0000 ff00 fe00 ff00 0000 looped ("not proportional"); drum = call 1 waveform $81 at frequency $a000, call 2 $11 at $a000, call 3 $41 at the note's frequency with fixf (wavetable-programming).

The Commando cover#

Judd's transcription of rob-hubbard's title tune (source: s-sidin01-iseq): arpeggios 0 <no arp> and 1 [+0 +12] (octave-bass); instruments 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 — two calls of noise at fixed frequencies), 2-crish-v1 (creg=15 81 81 15, triangle + ring modulation through noise), 3-crish-v2 (pwid=0200 creg=43 81 81 43), 4-hubharmo (pwid=0800 creg=41 81 81 41), 5-hublead (pwid=0900 09a8 0a50 0af8 0ba0 0c48, frq+=0000 0040 0080 00c0 00c0 0080), 6-beop (freq=0dd0 0100 0100 creg=41 81 81 40), 9-harmo2, three "scream" leads with pulse-width sweeps and frq+ lists, and f-hard. Pattern A puts inst=1(crash) between inst=0(hubbass) notes on one voice (channel-interleaving); see commando.

commando · rob-hubbard · goattracker · tracker · tracker-scene-history · sid-player-routine · vibrato · wavetable-programming · sidin · commodore-64

Sources#

s-sidin01-iseq

source file wiki/entities/iseq.md · graph