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.docsandiseq.tutorial, withsnood.tune(for the game Blockhead's Revenge) andexamples.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–d418per 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 arefrq+lists or arpeggios, ties come from turning gate toggling and instrument restarts off, plus the special notesholdandrest(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
LOADfrom bank 2 failed under an Action Replay cartridge; repeatedcbm +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 / value | meaning |
|---|---|
ctrl-h | help, on every screen |
f1 | edit tune |
ctrl-x / ctrl-c / ctrl-p | cut / copy / paste |
shift-t | transpose |
ctrl-t | tempo (CIA timer) values |
ctrl-a | arpeggio editor (from the instrument editor) |
shift-clear | clear tune; detects PAL/NTSC and sets the default timer |
cbm + / cbm - | double / halve playback speed |
$4cc7 | first tempo value for a PAL frame ("behave just like a VIC interrupt") |
$42c6 | NTSC frame |
$417f | old NTSC with the R56A VIC (64 cycles per line) |
JSR $1003 | play 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.
Related#
commando · rob-hubbard · goattracker · tracker · tracker-scene-history · sid-player-routine · vibrato · wavetable-programming · sidin · commodore-64