Where OType stands
- languagesyntax, checker, editor support, this reference
- simulatorrun a script on a copy of your bank and card, see the pattern before and after
- compiled tablethe form scripts take on the unit, and a reference machine that runs it
- firmware studyhow the unit writes trigs, locks and slots, read only
- first scripts on the unitmilestone M1, below: passed on a real machine
- the SCRIPT pageM2: a script on a page of six encoders, a layer you print or discard; works in the emulator, being built into the firmware
- p-locks, the part, the trig wordM3: p-locks and trigless locks, LFOs, effects, scenes, track init, trig conditions, micro timing, retrigs, velocity curves; done on the computer and in the unit's machine code, firmware side next
- thentempo, a slot for a track, messages on screen
Milestone M1
From the function menu, run a script that picks precise files on the card, fills the sample pool with them, places trigs and sets sample locks. Everything else comes after.
Each stage ends on a proof: the unit's result must equal the simulator's, byte for byte, before the next one starts.
| stage | what | state | proof |
|---|---|---|---|
| E0 | the M1 profile on the computer | done | the three scripts below run in the simulator on a copy of a real card |
| E1 | the OType machine on the unit | done | built into the firmware module: same results as the reference machine on 27,192 runs, in the emulator |
| E2 | trigs and sample locks | done | the bank's bytes equal the simulator's, on the emulated machine, committed the way the unit's own keys do |
| E3 | files on the card and sample slots | done | same file lists and slots as the simulator, on a FAT32 card |
| E3x | the compiler on the unit | done | scripts are read as text from the card and compiled by the unit: same tables and same error report as the computer on 16,537 cases |
| E4 | a SCRIPTS row in the function menu | done | the three scripts below ran on a real machine |
the three M1 scripts
def kicks
menu "POOL" >> "KICKS"
confirm "fill free slots?"
dir "AUDIO" deep
ext wav
match "bd*" "kick*"
l 1 8:
a slot.firstfree
if a: slot.load a file.pick
def kit_lock
menu "TRIGS" >> "KIT LOCK"
dir "AUDIO/DRUMS/ELKA"
match "*hat*"
slots.none
l 1 4:
a slot.firstfree
slot.load a file.pick
slots.add a
steps has.trig:
each: smp.set i slots.rnd
def four
menu "TRIGS" >> "FOUR"
tr.clr
l 1 16: if eq mod i 4 1: tr.add i
prob 30: tr.add 15
Decided
- scripts are plain text on the card — the unit compiles them itself: write a script on your computer, copy it, run it
- one SCRIPTS row in the function menu — the arrows choose the script, a press runs it, YES/NO before anything destructive
- file lists hold up to 4096 names — enough for a full sample library; names longer than 127 characters are skipped with a warning
- paths start at the set —
dir "AUDIO/DRUMS"reads the AUDIO folder of the current set - same result everywhere — the simulator, the reference machine and the unit give the same pattern for the same seed
- the question asked before a destructive script is yours —
confirm "CLEAR ALL?"is kept in the compiled table and shown by the confirmation box (else the function's name) - velocity curves —
dr.v c s: eight curves of 16 steps (flat, beats, off-beats, ramps, eighths, tresillo, swell) - the sample pool in one press —
pool.rndfills every free slot with a random file of the list, never the same twice
Operations
131 operations are defined; 128 of them are in the unit's profile (M1, on the unit today, has 86; the rest arrives with M2 and M3). Each one needs either nothing from the firmware (the language itself) or a firmware routine, found or still to find.
| family | ops | firmware | language | found | to find | unit profile |
|---|---|---|---|---|---|---|
| lang | 5 | 5 | 0 | 0 | 5 / 5 | |
| math | 11 | 11 | 0 | 0 | 11 / 11 | |
| logic | 12 | 12 | 0 | 0 | 12 / 12 | |
| random | 5 | 5 | 0 | 0 | 5 / 5 | |
| rhythm | 3 | 3 | 0 | 0 | 3 / 3 | |
| state | 10 | 10 | 0 | 0 | 10 / 10 | |
| context | 11 | 10 | 1 | 0 | 11 / 11 | |
| trigs | 9 | 0 | 6 | 3 | 9 / 9 | |
| locks | 30 | 17 | 12 | 1 | 30 / 30 | |
| trigword | 5 | 0 | 2 | 3 | 5 / 5 | |
| part | 11 | 0 | 9 | 2 | 9 / 11 | |
| card | 7 | 6 | 1 | 0 | 7 / 7 | |
| slots | 11 | 3 | 8 | 0 | 11 / 11 | |
| ui | 1 | 0 | 1 | 0 | – | |
| total | 131 | 82 | 40 | 9 | 128 / 131 |