DigiOrganizer cheat sheet
From DigiOrganizer · print · built 2026-08-31
Reference
Cheat sheet#
From s-sidin06-digiorganizer.
Keys: M,M load a sample module (e.g. MODULE/DEMO) · M,L load a 3-voice tune (e.g. MUSIC/DEMO) + its play address · F1 play · S sample menu, L load a sample by name / delete the last one · CTRL+2 sample definitions · SHIFT+A..I global tune speed.
Track (left): pairs pattern, repeats−1 — 01 04 = pattern 1 five times, 02 00 = pattern 2 once; $FF restart; $FE stop (orderlist).
Pattern (right): 32 steps; value = sample definition to trigger, 00 = let the previous sample continue, $FF = end early. 01 00 00 02 03 FF.
Sample definition (CTRL+2): nn: start end speed with start/end as address high bytes and speed = the CIA timer A low byte — 01: A7 AE A0 plays $A700–$ADFF; a definition may span several loaded samples (A0 A9 A0 = samples 1–3 in a row).
Making a sample: WAV → 8-bit mono 6 kHz — sox sample16.wav -c1 -b -v .8 -r 6000 sample8.wav (add a low-pass while downsampling) → 4-bit packed "low nibble, high nibble of 2 samples" with the DOS tool S64_ENG by Reiter/Apidya → load in the sample menu.
Your own 4-voice program:
init: JSR $1000 ; the 3-voice tune
JSR $9000 ; DigiOrganizer
play: JSR $1003
JSR $9003
Inside: init clears memory, sets CIA #2 timer A ($70) and timer B ($DD0E = $11, $DD0F = $51), enables the timer-B NMI ($DD0D = $82), writes $18 (low-pass, volume 8) to $D418 and points the NMI vector at nmi_null. Three NMI handlers: nmi_sx writes the high nibble (lsr ×4 / ora #$10 / sta $D418), nmi_dx the low nibble (and #$0F / ora #$10), then advances the pointer and compares the page with the sample's end page; nmi_null idles. The IRQ side steps the track/pattern every SPEED = $05 countdown and starts a sample by copying its start page, end page and speed into the NMI code. Layout: code $9000, track $9200, digiSound table $9300 (4 bytes per definition), patterns $9500 (32 bytes each), samples $A000 (sid-player-routine).
Techniques
Multisampling and drum-kit instruments › C64: Digi-Organizer #
The 1980s C64 equivalent, from the other direction: sample definitions are (start page, end page, rate) triples into one block of memory, so a single "instrument" can chain several raw blocks — a poor man's multisample of drum hits, with the map living in the sample table rather than in a note column (source: s-sidin06-digiorganizer).