Orderlist (sequence)
The list that tells a tracker which pattern plays next; in C64 trackers each track has its own orderlist, so tracks can loop patterns of different lengths independently. Besides pattern numbers it can carry song-level commands — transposition, volume, tempo, jumps — which is where cheap arrangement moves live: repeating a section transposed up, changing tempo per section, jumping between subtunes.
Why each voice gets its own orderlist#
The split between the C64 family (one orderlist per voice) and the Amiga/PC family (one order list for the whole song) is a design decision with a date and an author. JCH wanted "tracks to follow each other so that multiple voices could be compared easily", and disliked how Amiga SoundTracker's voices were "fused together in the same pattern": his voices should follow each other while having independent sequences of any size. Version 1 of the jch-editor (November 1988) shipped with the corner cut of "infinitely long voices"; version 2 (December 1988) recoded them into the flexible per-voice sequences — "a massive leap from composing directly in an assembler listing". He notes the difference again from the other side in 1995, when he moved to fasttracker-2: "much of the same principle as my own music editors of the past, except the channels did not use separate sequences" (source: s-chordian-my-computer-chronicles). This is the stacked-track view cheesecutter preserved.
In SID-Wizard (F6)#
| value | meaning |
|---|---|
$01–$7F | pattern number |
$80–$8F | transpose down ($8F = one semitone down) |
$90–$9F | transpose up ($90 = original key) |
$A0–$AF | main volume $0–$F |
$B0–$EF | single tempo for this track |
$F0–$FD | separator NOP with a section id (--…-D), visual only |
$FE | end of tune, stop |
$FF xx | jump to position xx; xx ≥ $80 jumps to a subtune |
The orderlist must not begin with $FE/$FF. Editing: RETURN goes to the pattern under the cursor, C=+E finds the first empty pattern, C=+DEL/Insert deletes/inserts an entire column, C=+SPACE sets an individual track play-mark, Shift+SPACE sets all play-marks (then F2 plays from them), C=+Z/C/V undo/copy/paste (source: s-sid-wizard-manual).
From a beginner's side: a fresh orderlist is three rows reading .1 FE, .2 FE, .3 FE. Insert a column, type the pattern numbers (04 05 06), and RETURN on one opens that pattern. The important gotcha is that FE and FF are per channel — a loop has to be typed on all three, or one voice stops while the others repeat (source: s-chipmusic-c64-music-for-dummies).
The 1.6-era book lists $B0–$FD as track tempo ($00–$5D), i.e. the separator range $F0–$FD of the 1.8 manual was still tempo then; it adds that an orderlist effect must not sit directly before a $FF loop (the loop would be ignored to prevent freezing), that pattern 00 cannot be used, and that a subtune jump has to be typed on every track (source: s-witchmaster-creating-chiptunes-with-sid-wizard).
What the source adds (SW 1.97, m64's DUET research)#
From the editor and player sources (source: s-duet-research-sidwizard):
$00is not a value a song can carry — it is the zero-fill after a track's end, drawn as dots. Typing0writes$01, INSERT writes$01, a$00cannot be overwritten, and the cursor snaps off one back to the track's terminator: you cannot park below the end.- A terminator can only be typed where one already is: there are no END/JUMP keys, and the editor accepts
$FE/$FFonly when the byte under the cursor is already ≥$FE. To move a track's end, delete rows above it. - Every subtune always exists. The subtune keys merely select; an unused subtune is three orderlists that are nothing but their
$FE, and trailing empty subtunes are not written to disk. The cap is per format: 8 subtunes in.swm, 2 in.sws, 1 in.swt/.swq(swm-format). - The subtune jump
$FF $8xmoves ONE track's orderlist pointer (SETSEQA, player.asm 2671) — the format allows the three tracks to sit in different subtunes at once. The editor never follows it: the display always shows the selected subtune, playback starts from it, and selecting a subtune stops the transport. Measured over the 102 shipped modules: 10 are multi-subtune, 9 chain subtunes with jumps, and none ever splits its tracks. - Orderlist effects run one row early (during the tick-1 look-ahead) through delay shadows: a transpose lands exactly on the new pattern's first note; volume and tempo apply at the next row boundary.
Live: moving through the orderlist while it plays (sid-wizard-vessel)#
m64's MIDI-sync fork turns the orderlist into a pattern launcher (source: s-sid-wizard-vessel-readme):
- Cursor UP/DOWN moves back and forward in the orderlist during playback without cutting anything off — "the currently playing pattern is not interrupted, playback will advance after end of pattern is reached".
- A virtual position −1 exists so the next pattern played can be the song start, i.e. you can go back to the top without breaking the movement logic.
- F3 holds (loops) the pattern now playing — the oscilloscope turns green. F1 releases the hold and playback advances to wherever the cursor has been moved — oscilloscope purple.
The whole performance grammar is four keys: cursor for "next up", F3 to hold, F1 to release, SHIFT+1–3 to mute; follow-play is forced on "for better orientation", and sync mode requires tempo 06 (live-tracking, sync).
In GoatTracker (F6)#
Each channel of each of up to 32 subtunes has an orderlist of up to 254 entries: pattern numbers, transpose (+ / - keys; up +0..14, down -1..15 semitones, reset only when the song starts, not on loop), repeat (SHIFT+R; R1–R16, R0 = 16) and the RST endmark followed by the restart position. Rules the editor enforces by stopping playback: with both, TRANSPOSE comes before REPEAT; the entry before RST must be a pattern number (reset a transpose at the start of the loop instead). SPACE/BACKSPACE set start/end positions for F2, RETURN goes to the pattern, SHIFT+1/2/3 swap a channel's orderlist with another channel's (source: s-goattracker-readme).
The Rxx pitfall. stefano-tognon, writing up a GT2 cover that leans hard on orderlist repeats and pattern transposes, then warns against the repeats: with "play from the current start position", moving the start across an Rxx moves one voice's position for all of the repeats at once and desynchronises the voices — "don't use the Rxx command or … only when the tune is finished" (source: s-sidin10-goattracker-2).
In defMON (seqLIST)#
The seqLIST is "a zoomed out view of the entire song" — one sequence number per voice per row, shown to the right of the note editor; RUN/STOP jumps between the two screens. Everything is hex, and the jump is the only command in the list (source: s-defmon-wiki-manual):
| entry | meaning |
|---|---|
00–7F | sequence number (128 sequences, $00–$7F) |
FF + xx + 00 | jump to position xx — the target is read from the next voice's column |
FF + xx + yy | jump back to xx, yy times, then carry on |
FF 00 03 therefore plays position 00 three extra times, four in all. Finite loops were at first the only difference between the normal build and the "deluxe (dx)" build (iLKke, 2014-06-14) (sources: s-defmon-wiki-manual, s-chipmusic-defmon-thread).
Practice from the support thread (iLKke 2015-08-01, frantic 2017–2020):
- No-op jumps as section markers —
FF 08 00on step 07 jumps to where playback was going anyway, and reads as a visual break in a long list. FF xx yywhile sketching, unfolded later: loop a section a fixed number of times, then write it out when the arrangement settles.- Keep every sequence referenced. Sequences that appear nowhere in the seqLIST are not saved to disk (F7sus4, 2020-07-31), so park unused ones below the end row rather than dropping them out of the list.
SHIFT+Nclones to the next empty sequence;SHIFT+Uto the next sequence unused in the list, "no matter if this sequence is actually empty or not!" — "SHIFT+U is a more dangerous operation" (frantic, 2017-10-26), and in 2SID mode it has to scan both lists.CTRL+Z CTRL+A= ZONE ALL edits every sequence at once — the border colour warns,CTRL+RETURNexits. It is frantic's way of changing the speed of a whole song, and equally good at destroying one.
Channels always sequence-break together even though each has its own speed column, so per-voice swing re-aligns at every break (frantic, 2020-10-29) (multispeed, shuffle-funktempo). Two list bugs were live for years: pattern breaks in unused sequences were lost on save/load (fixed in the 2017-10 builds, which also re-enabled SHIFT+N), and the loop-jump was not re-initialised on restart while SHIFT+U misread a jump's FF XX XX parameters as used sequence numbers (both fixed in "Packman", 2020-06-01) — old builds are worth avoiding for this reason alone (source: s-defmon-wiki-releases).
In CheeseCutter#
Sequences are the orderlist here: 128 sequences across up to 32 subtunes, three columns each (note · instrument · command), with signed track transposes in which A0 is zero "similarily to SDI" and 80 keeps the previous value (source: s-cheesecutter-guide). The guide's workflow tips are all orderlist habits:
- Keep sequence
00empty — it is a reserved dummy. - Develop parts as subtunes and combine them at the end. A subtune whose voices are all
A000counts as "unused" to the packer, so sketches left behind cost nothing in the exported tune. - Keep the three voices' lengths aligned while composing, then split and de-duplicate at the end — the opposite habit to the independent-length freedom the format allows, adopted because of the next point.
F1plays from the playback mark (blue bar,Backspace) and the tracks must be aligned at that mark or the sequencer misaligns (Ctrl-Lresets);F3plays from the cursor and the guide calls it "advisable to use it"; the wrap point is a purple bar onCtrl-Backspace.Ctrl-Tswitches the note display between absolute (JCH-style) and relative to the track transpose (SDI-style) — the same data, two readings of what a transposed sequence means.
In jitt64#
stefano-tognon's Java tracker keeps the track column deliberately small — four commands, right-clicked into a cell (source: s-sidin13-jitt64-tracker):
| command | meaning |
|---|---|
0..222 | pattern number |
REP | repeat the sequence of following commands; block size 16, repeat count 2–17 |
TR | transpose −15..+15 for all following patterns |
RST | restart index — always last, or let the voice simply end |
His own example has the three voices doing three different things at once: voice 1 plays patterns 0, 1, 2 and stops; voice 2 plays pattern 0 at pitch, a half step up, a half step down, forever; voice 3 plays 0, 1, 2 twice and ends.
In LSDj: song → chain → phrase#
LSDj replaces the single orderlist with a tree: the song screen has one column per channel listing chains; a chain lists phrases (16 steps each) with an optional transpose per phrase; phrases and chains are shared between channels. Transposition therefore lives in the chain, and a project-wide TRANSPOSE in the project screen shifts pulse and wave instruments (instruments with TRANSP. OFF ignore both — drums). Hxy hops: H00–H0F to the next phrase at step y, H10–HFE back within the phrase x times, HFF stops; H00 on step C of every phrase gives 3/4 time. Cloning (SELECT+(B,A)) copies a chain deep (new phrases) or slim (same phrases) (source: s-lsdj-manual). pain-perdu's rule of thumb for which: slim for a one-note variation or an octave change, since the phrases stay shared; deep when you mean to rework every phrase inside — "but be careful about not running out of phrases". His general form of it: "everything you can highlight you can copy, paste and cut, and every value you can select you can clone." The clipboard survives loading another song, but it carries values only, not what they refer to — chain 1B pasted into a second song points at that song's 1B, which works properly only when both songs come from the same template save (source: s-painperdu-05-shortcuts-and-workflow).
LSDj: the song screen as a live instrument#
Song mode advances every channel in step; live mode queues chains per channel, independently — "PU1 can be playing the chain at position 01 while PU2 plays the chain at position 2F" (Bit Shifter). The arrangement technique built on that is chain-loop islands: because the sequencer in live mode stops rewinding as soon as it hits an empty step, blocks of chains separated by empty rows each cycle on themselves — "you can be assured that a bassline will only cycle through the parts you want it to, rather than continuing on and advancing through the rest of the song. Until you TELL it to" (source: s-chipmusic-lsdj-live-performance).
pain-perdu reaches the same layout from the workflow side: empty rows between sections air the song screen out visually and make each block loop back on itself in live mode — "if I'm looking for the next section to jump to, I have time to decide" instead of triggering something unsynced. Pressing B three times in the song screen marks a block, so intro, break, riser and drop are identifiable at a glance mid-set ("it's in the manual but not a lot of people know about it"; the number of marks is limited). And paste blank space rather than cut when separating sections — cutting shifts everything after it and "can screw up your alignment" (source: s-painperdu-05-shortcuts-and-workflow).
Two things the song screen can do that no pattern edit can:
- Vamp on chains of mismatched lengths. Write several chains of different lengths over the same harmonic material on PU1, PU2 and WAV and let them cycle freely: "you can get amazing resultant harmonic/melodic textures that you never would have planned for … the mix of tones, melodies and registers can be quite beautiful, string quartet-like".
Hcommands turn the mismatch rhythmic, cycling against the song's straight 16ths — "(I suggest being subtle with this, otherwise it can sound like utter shite)" (BR1GHT PR1MATE) (rhythm-and-groove, arrangement). - Transpose instead of cloning. An eight-bar motif in Pain Perdu's Evasive Maneuvers is two phrases plus the chain's transpose column: "this is just a transposition of the same musical sentence, and so with only two phrases I do eight bars." Live, hold A and press the arrows in the project screen — the new project transpose applies only when A is released, so a key change lands exactly on a bar line ("now I have modulated my whole track one semitone up"). Caveat: "
Lcommands and other pitch bends can react differently, and low notes can wrap to the next octave if you're not careful" (source: s-painperdu-05-shortcuts-and-workflow).
LSDj phrase length#
A phrase is 16 steps, but H inside it loops (H71 = seven hops to line 1, H5A five hops to line A), so a 3-tick phrase can last as long as a 6-tick one — arpeggios and long lines from a single phrase (source: s-intense-tech-06-groove-and-tick-tricks-part-1).
In the 1980s drivers#
- soundmonitor (1986): the track/step table — steps
$00–$FF, per voice the memory address of a bar, plus a transpose (TR, semitones,FC= −4) and a sound-transpose (ST) column;F3/F5mark the first and last step,SHIFT+=copies a block of steps (source: s-64er-soundmonitor-article). The step table carries more than pattern numbers: per row a tempo, a length, a volume and a fade-out speed; per cell (one SID channel in that step) a bar, a transpose and an instrument set; per note an instrument plus flags to disable transpose or enable portamento and arpeggio — the three levels later trackers formalised as orderlist, pattern and note, already separated in 1986 (source: s-vgmpf-soundmonitor-tfmx). - Before any of that, the minimal form: the BASIC sound engine in Telengard (Avalon Hill, 1983) has no patterns at all, only a sequencer reading rows of four bytes — a duration in jiffies and one byte per voice, where
0leaves the voice alone and255gates it off. Hold and release, which is still what a tracker's empty row and note-off mean (source: s-sidin04-ripping-basic-rsid). - matt-gray-player: a song is three tracks, each a list of pattern numbers —
drillerMainTr1: .byte $01,$01,$07,$09,$09,$09,$01,$07— with$FF= restart the track and$FE= stop; Gray called this "a sequencer approach … a series of smaller sequences" (sources: s-sidin02-matt-gray-driller, s-matt-gray-dominator-source, s-c64com-matt-gray-interview). - musicfile: per song three sequences (
seq0a–c) of step-table numbers below$40with prefix bytes — verified in the code:$80–$fdtranspose upward bybyte & $1fsemitones for the following steps ($84,$01= +4, step 1),$40–$5frepeat the next step,$60–$7finstrument offset,$feend,$ffrestart (sources: s-realdmx-sid-players, s-realdmx-deenen-test-tunes). The 1990 successor adds an intro record and a loop record per song and a global transpose (source: s-realdmx-ouwehand-mon-tunes).
Two families: pattern lists and voice programs#
The drivers recovered as source in the realdmx collection fall into two families (details on the tool pages):
- Track = list of pattern numbers (the tracker's orderlist): hubbard-player — a track per voice of pattern numbers,
$ffrestart,$festop (source: s-realdmx-hubbard-player); bjerregaard-player — pattern numbers with transpose prefixes(byte & $7f) − $40,$ffrestarting all three voices (source: s-realdmx-bjerregaard-player); Audial Arts (1991) — block numbers with$40+nrepeat,$80+ntranspose,$c0+ninstrument offset,$ff,posloop to a track position; FAME (1988) — step numbers with transpose, instrument offset,$c0+nrepeat and an absolute$ff lo hijump (source: s-realdmx-audial-arts-fame-players); whittaker-player — tracks of pattern addresses of different lengths per voice,!wo 0to loop; Red's player — pattern words with$xx,$fftranspose markers (source: s-realdmx-fredgray-kimmel-whittaker). - Voice = program: galway-player and the ocean-music-driver have no patterns — each voice is a byte-code stream with
CALL/RET(an 8- or 5-deep stack),LOOP/NEXT,JUMP, and transposed calls (PLAYT/JSRT/CT) that play one phrase in several keys; Ocean'sRETresets the transpose so a phrase cannot leak it (sources: s-realdmx-galway-rambo-player, s-realdmx-ocean-dunn-hughes-driver). Tognon, reading Galway's Arkanoid: "there are not the division in tracks and patterns … there are other methods to take advantage of the use of patterns: subroutine call" — "programming a track is like creating a music program using a high level language", an approach "very powerful if it is compiled by hand, but too complicated by an editor program" (source: s-sidin04-galway-arkanoid). That last clause is why the family died out: the orderlist won because an editor can display it. Fred Gray's Mutants goes further: the song is 26 hand-written routines and a step table of their addresses (source: s-realdmx-fredgray-kimmel-whittaker).
In PC trackers#
ProTracker: a song table of up to 128 positions pointing at 64 patterns (100 with M!K!), edited with Pos / Pattern / Length and the I(nsert)/D(elete) gadgets or the Position Editor, where patterns can be named ("INTRO") without affecting the module; Bxx jumps to a hex position (source: s-protracker-23d-help). In the file itself the song length is 1–128 followed by 128 position bytes of pattern numbers 0–63 (0–99 with M!K!), and between them one byte that ProTracker deliberately wastes: it is "set to 127, so that old trackers will search through all patterns … Noisetracker uses this byte for restart, but we don't" — the one place the two Amiga trackers disagree about the orderlist (source: s-protracker-23-readme-and-docs; mod-format). ST3: 255 orders of 100 patterns, edited with the number keys on F1, G jumps into the pattern; in the file 255 = end (--) and 254 = a skipped marker (++) (sources: s-st3-manual, s-st3-tech-doc). FT2: song positions with Shift+Left/Right, pattern length up to $100 rows, Expand/Shrink to halve or double a pattern's speed (source: s-ft2-manual). IT: 256 orders (impulse-tracker); OpenMPT's MPTM allows several order lists (sequences) in one file (source: s-openmpt-manual-module-formats).
Pattern cloning (Zinc, source: s-tw096-studio-tracking-tips): "Try your best not to repeat patterns in your order list" — copy the pattern to a new number instead, so a later change in one section does not silently change every repeat; the cost is file size, which is why chip-style songs do the opposite (song-init-and-looping). His companion rule: if 64 rows are too few, make the pattern 128 rows and double the speed.
Length without repetition: basehead's Open Your Mind runs 208 orders over 99 patterns, and his Imajica is 189 orders from 94 patterns "with an ending thrown on" — almost no pattern reused (sources: s-tw027-interview-basehead-lotus-position, s-tw018-interview-basehead). The opposite complaint, from Sir Nick (1996): editing note data "in blocks of only few bars" shapes the music, and a progression that spans two patterns is painful to edit pattern by pattern — plan the phrases first, then cut patterns to fit them (source: s-tw072-composing-whole-modules; see arrangement).
Track and sector positions, and what they reveal#
- The 1980s C64 players kept, per voice, the current index into the track (the sequence of pattern numbers) and into the pattern; Lada Lostak's engine database (2004) records their addresses as
OrderPosandSecPos, three each —OrderPos=$0921,$0922,$0923,SecPos=$0924,$0924,$0926for Future Composer 1.0 — or the same address three times for players in which "all the tree voices use the same track". Tognon's illustration is a tracker song:Track v1: 01 02 03 01 01 00,Sector 01: ins1 dur3 C4 C5 D4 D5. Two uses: a player program can show live where the driver is in the song, and it can find the true length of a tune from the track end marks, "usually $FF and $FE" — one restarts the track, the other stops the voice; with restarts the tune has looped only when all three voices have wrapped (Track1: 01 02 03 FE / Track2: 05 05 06 07 07 07 FE / Track3: 08 08 FEloops when voice 2 does), with stops it has ended whenSecPosno longer changes (source: s-sidin05-pattern-searching-2; player-identification). - Whether note lengths sit in the pattern as a command (
DUR 03) or fall out of the number of rows between notes is the line Tognon draws between "editor" and "tracker" in hvmec (source: s-sidin05-hvmec; tracker).
Four more track formats from SIDin #6–#7#
- The modules driver (1988): a track entry is 4 bytes — pattern address high and low, the number of pattern bytes to play (
$FF= until an ending command) and the number of extra repeats —>pat00, <pat00, $3D, $02plays the first$3Dbytes ofpat00three times; the length field lets one pattern serve as several shorter ones (source: s-sidin07-inside-modules). - asterion-sid-tracker (2004): three track columns of pattern numbers
$01–$7F;$80–$FEtransposes the pattern that follows;$FF nloops the track to positionn(source: s-sidin06-asterion-sid-tracker). - digiorganizer: the digi track is a list of
pattern, repeats−1pairs (01 04= pattern 1 five times) ending in$FF(restart) or$FE(stop), over 32-step patterns of sample numbers (source: s-sidin06-digiorganizer). - xxlarge (under 256 bytes): a
pattern_listof eight pattern offsets read backwards through a 3-bit counter, patterns being nibble streams terminated by a0byte (source: s-sidin07-xxlarge).
Orderlists under 512 bytes (Tiny Sid, 2005–2006)#
The 2005 round already had the whole repertoire (source: s-sidin08-tiny-sid-512b):
- One-byte pattern pointers, a year before XL5's. Crue Gurl (Jaymz Julian / A Life in Hell) keeps three lists
orderList1–3terminated by$FF= repeat, holdingpatN-pat1offsets from the first pattern; with a zero-page pointer topat1the whole fetch islda orderList1,y / tay / lda (zp1),y. Tognon: "Using 1 byte instead of 2 for each pointer is a clear way for save lot of space." - No orderlist at all. laxity's Twone Five: "Only one sequence per channel. Channel two has a transpose table for the bass ostinate" — the orderlist collapses into a transpose table
tp: 0,0,0,0,5,7,0,0applied at each end mark, the same move as RM below. - Order commands cut to the bone. 4mat's winning Empty has song data of
≤ $7F= a position in the pattern data to start from,$80–$8Ftranspose,$FFend: "I removed the 'repeat pattern' command and made the maximum patterndata 128 bytes to save some memory". Voice 2 is two bytes of song data,$13,$FF. - One track shared by two voices. GRG's Plaster (512 b, 2006, the top-scoring entry) has two tracks — one for voice 1, one shared by voices 2 and 3 — a track byte indexing the pattern table, a negative byte's low five bits transposing the next pattern. The two voices on one track are kept apart by XORing voice 2's transpose with
$F0at each track step, XORing voice 3's instrument with$07at each pattern, and adding a fixed$1Eto voice 3's frequency low byte (source: s-sidin12-tiny-sid-2-part-3; detune).
The 2006 round (source below) pushes each of these one step further:
- One-byte relative offsets: XL5's track is
.byte (pat1-pat), (pat2-pat), …, $FF— a pattern number is its offset from the first pattern;$00ends a pattern, a negative track byte restarts the track. Eight bytes were then saved by deleting the$00of a pattern whose successor in memory is the pattern that follows it in the track anyway, so playback runs straight on. Resolution'spatTableworks the same way (13 one-byte entries) (sources: s-sidin10-tiny-sid-2-part-1, s-sidin11-tiny-sid-2-part-2). - Transpose lists instead of pattern lists: in RM voice 1 repeats one 10-note pattern and voice 2 one 16-note pattern, so their "tracks" are lists of transpositions (
trans1: 0,0,12,12,0,0,12,12, …, $FF) applied by a singleADCto an octave/base-note byte; only voice 3 has a pattern list as well (source: s-sidin10-tiny-sid-2-part-1). - No orderlist at all: BLOCK ACID DUB loops one 32-byte grid whose bytes carry a duration and a pointer to a 4-way choice of what to play next, resolved by a CIA timer read — "one stream of data for all channels … that just loops all the time to avoid seq-tables" (source: s-sidin11-tiny-sid-2-part-2).
- matt-gray-player V4.2:
$FEno longer just stops — it loads a fade counter (FADE = $5F) and the volume steps down until the tune ends; in the Serpent Demo build a fourth track (VOICE4LO/HI) sequences sample patterns with the same$FF/$FEconventions (sources: s-sidin14-dominator-player, s-sidin15-serpent-demo-player).
Related#
arrangement · tracker · sid-wizard · shuffle-funktempo · live-tracking · defmon · cheesecutter · jitt64 · jch-editor · song-init-and-looping
Sources#
s-sid-wizard-manual · s-037-lab · s-goattracker-readme · s-witchmaster-creating-chiptunes-with-sid-wizard · s-intense-tech-06-groove-and-tick-tricks-part-1 · s-protracker-23d-help · s-st3-manual · s-st3-tech-doc · s-ft2-manual · s-openmpt-manual-module-formats · s-tw096-studio-tracking-tips · s-lsdj-manual · s-tw027-interview-basehead-lotus-position · s-tw018-interview-basehead · s-tw072-composing-whole-modules · s-64er-soundmonitor-article · s-sidin02-matt-gray-driller · s-matt-gray-dominator-source · s-realdmx-sid-players · s-c64com-matt-gray-interview · s-realdmx-hubbard-player · s-realdmx-galway-rambo-player · s-realdmx-ocean-dunn-hughes-driver · s-realdmx-bjerregaard-player · s-realdmx-fredgray-kimmel-whittaker · s-realdmx-audial-arts-fame-players · s-sidin05-pattern-searching-2 · s-sidin05-hvmec · s-sidin06-asterion-sid-tracker · s-sidin07-inside-modules · s-sidin06-digiorganizer · s-sidin07-xxlarge · s-sidin10-tiny-sid-2-part-1 · s-sidin11-tiny-sid-2-part-2 · s-sidin14-dominator-player · s-sidin15-serpent-demo-player · s-duet-research-sidwizard · s-duet-research-sidwizard-deep · s-chordian-my-computer-chronicles · s-chipmusic-c64-music-for-dummies · s-sid-wizard-vessel-readme · s-sidin10-goattracker-2 · s-defmon-wiki-manual · s-defmon-wiki-releases · s-chipmusic-defmon-thread · s-cheesecutter-guide · s-sidin13-jitt64-tracker · s-painperdu-05-shortcuts-and-workflow · s-chipmusic-lsdj-live-performance · s-vgmpf-soundmonitor-tfmx · s-sidin04-ripping-basic-rsid · s-sidin04-galway-arkanoid · s-protracker-23-readme-and-docs · s-sidin08-tiny-sid-512b · s-sidin12-tiny-sid-2-part-3