o1nk: eight parts, each a whole o1nk, and a MIDI page mapping them #10
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/multitimbral"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
o1nk is now eight instruments. Each part has its own copy of every
parameter (bank, voice, filter, effects, all of it) and a MIDI map:
channel (Omni or 1-16), key range low/high, transpose (+/-48) and on/off.
A note plays every part that is on and takes its channel and key, moved
by that part's transpose, so parts split, layer, or listen on channels
of their own. Parts are monophonic, as o1nk was.
Ids and addresses are part x 128 + the parameter's own, so part 1 keeps
every id and name it had: existing presets, automation and saved state
load as part 1 with parts 2-8 off. State stays version 1. Parts 2-8 are
named "P2 Cutoff" in modules "Part N/
all automatable.
bit-identical by parity.sh, with new scenarios and two controls
(transpose dropped, channel ignored). Part 1 alone renders exactly what
o1nk rendered; silent parts cost nothing. Switching a part on or off is
settled on the audio thread, so a state load can't reset a kernel
mid-render.
72 remote pages (each part's UDG pages plus MIDI). The handheld screen
has PART n in its title, L2/R2 to change part, and a ninth page: the
MIDI table, a row per part.
part (factory presets still set part 1's voice, and the
o1nk.lgptVoice state key still restores it by path); MIDI channel
from the status byte; scheduled parameter events applied. The view
gets a part picker and the MIDI page as an 8-row table.
O1NKBanks.
Tests: parity.sh 13 scenarios + 4 controls; o1nk-parts-test 54 checks;
tests/lgpt/run.sh with new AU part checks (wavetable engine still
byte-identical to origin/main); lgpt.sh; controls-test; udg_parity and
opsl_parity; clapcheck conformant on linux arm64; Xcode simulator build.
On the RG35XX SP, 8 parts layered with every effect: 206 us a 256-frame
block, 3.9% of a core.
Wish 04408ee8.
o1nk is now eight instruments. Each part has its own copy of every parameter (bank, voice, filter, effects, all of it) and a MIDI map: channel (Omni or 1-16), key range low/high, transpose (+/-48) and on/off. A note plays every part that is on and takes its channel and key, moved by that part's transpose, so parts split, layer, or listen on channels of their own. Parts are monophonic, as o1nk was. Ids and addresses are part x 128 + the parameter's own, so part 1 keeps every id and name it had: existing presets, automation and saved state load as part 1 with parts 2-8 off. State stays version 1. Parts 2-8 are named "P2 Cutoff" in modules "Part N/<section>" (AU groups part2-part8), all automatable. - core/o1nk_parts.{h,cpp} and O1NKParts (Swift): the router, kept bit-identical by parity.sh, with new scenarios and two controls (transpose dropped, channel ignored). Part 1 alone renders exactly what o1nk rendered; silent parts cost nothing. Switching a part on or off is settled on the audio thread, so a state load can't reset a kernel mid-render. - CLAP: 264 params, banks shared across parts, per-part voice hand-off, 72 remote pages (each part's UDG pages plus MIDI). The handheld screen has PART n in its title, L2/R2 to change part, and a ninth page: the MIDI table, a row per part. - AU: the tree holds all eight parts; bank and voice are parameters per part (factory presets still set part 1's voice, and the o1nk.lgptVoice state key still restores it by path); MIDI channel from the status byte; scheduled parameter events applied. The view gets a part picker and the MIDI page as an 8-row table. - UDG parity checks the MIDI page, the part count, and the bank list in O1NKBanks. Tests: parity.sh 13 scenarios + 4 controls; o1nk-parts-test 54 checks; tests/lgpt/run.sh with new AU part checks (wavetable engine still byte-identical to origin/main); lgpt.sh; controls-test; udg_parity and opsl_parity; clapcheck conformant on linux arm64; Xcode simulator build. On the RG35XX SP, 8 parts layered with every effect: 206 us a 256-frame block, 3.9% of a core. Wish 04408ee8.