github DeadActive/hortator drum-v0.24.0
Hortator 0.24.0

2 hours ago
  • Parameter locks (Elektron style; spec docs/superpowers/specs/2026-10-24-parameter-locks-design.md):
    • ENV: the white keys as the selected track's steps on every page. ENV (unused before) toggles STEPS / TRACKS on
      its release, its LED lit and a padlock in the top bar (left of the battery, every page) in STEPS; the mode is global, not saved (off at power-on). In STEPS the keys tap / hold
      steps as on SEQ on HOME, TRACKS (armed too), SOUND, LAYER, FX, LFO and COMP, and play no drum (REC ALL records no
      hits then); ENV held + OCT+ / OCT- changes the bank; OCT+ held + a step its accent, OCT+ alone and OCT- keep their
      page's job (SOUND to LAYER on OCT+'s release, LAYER back, the LFO's RATE MODE). ENV turns KEYS off and SCL STEPS
      off. ENV off (TRACKS) is the keys exactly as before. (Device test 2026-10-25: ENV, and OCT- clearing a held
      step's locks, sometimes needed a second press: the press time kept the clock's own bit 1, the "used" flag.)
    • Locks: in STEPS, hold a step and turn any knob MOTION can record, on HOME, TRACKS (LEVEL, PAN), SOUND, LAYER, FX,
      SLICER, RESON, FILTER, LFO and LFO DEST: that step gets its own value for that knob (LOCK STEP 5 on top, the
      cells show the step's values, a locked one inverted; the knob itself and its base untouched; a turn right after
      the press works, the release then toggles nothing; HOME's strip, too narrow for it, says LOCK 5). Knobs MOTION can't record do nothing while a step is held.
      Step held + OCT- tap: that step's locks on this page's knobs cleared (STEP 5 LOCKS CLEARED); OCT- held 0.6 s: all
      its locks (STEP 5 ALL CLEARED); OCT- with no step held keeps its job. LOCKS FULL at 1024 events. SEQ STEP
      keeps PROB / RATCH / ACC on a held step; a song's rows are not edited.
    • Playback (motion.c): a lock sets its knob for its own step only, on top of what the knob holds there (its value,
      or motion's held value; an LFO on it modulates round the locked value), and the knob snaps back on the next step.
      A step that is off keeps its locks dormant. Locks play whatever MOTION's PLAY says; MOTION CLEAR leaves them; CLEAR
      TRACK, TOOLS CLR* and INIT* remove them. A SONG row plays its own slot's locks and none leaks into the next row;
      STOP, a model change, a MIDI LEARN CC and a preset SAVE see the knob's own value, never a lock's. A/B renders:
      build/drum_renders/locks_off.wav, locks_on.wav (DECAY and CUT locked on steps 4 8 12 16).
    • Shown: in STEPS the footer's step strip underlines each locked step of the bank shown (a song's row: its slot's);
      SEQ > MOTION's KNOB 2 / 3 show the selected track's MOTION (recorded events, was EVENT) and LOCKS counts. Screens:
      build/ui_shots/locks/ (sound_held, foot_bank1, motion_counts).
    • MOTION: 1024 events per project (was 128), shared with the locks, kept in the project's lock bank (its own flash
      object, saved just before the project record, which links it: a save cut by a power loss keeps the last whole
      pair). Projects are now "FDRF"; FDRE and every older format load with their motion as before. 0.23.x reads a
      project saved now as an empty slot (LOAD FAILED at power-on; downgrade safe, not supported). A bank that can't be
      read (wrong inside, another slot's, not the one the record links) loads empty and the FM-1 says LOCKS LOST; it
      is never misread. A step's events are found by a binary search in the audio ISR (no scan of every event).
    • Lock banks: four new flash objects (OBJ_LOCKS0..3, two sectors each at 0xD4000..0xDBFFF, storage.c; user decision
      2026-10-24, frozen baseline moved to frozen-base-10 for that object-table change). They take the last 32 KiB of
      user sample slot 3: USR3 now holds up to 48 KiB (USR1 / USR2 80 KiB as before). A longer USR3 is shortened in
      flash once at power-on, before anything writes the banks (USR3 SHORTENED TO 48K; zones past 48 KiB dropped, one
      across it cut, its CRC new; a power cut during that one rewrite empties USR3, nothing else). If that rewrite fails
      (a flash error), nothing writes the lock banks that boot (USR3 CLAMP FAILED; SAVE and RENAME say so and keep the
      project in RAM), so an older Hortator never plays them as USR3's sound. A RENAME of a project whose bank is only in
      RAM (an older project converted at power-on, or after a SAVE ERROR) writes the bank before the record.

Install: https://deadactive.github.io/hortator/webapp/installer/ (Chrome or Edge, USB), or tools/fm1_install.py with the .fwsc below. The package holds JieLi SDK files under Apache-2.0: LICENSING.md, LICENSES.zip.

Two versions: hortator-0.24.0.fwsc, and hortator-0.24.0-bluetooth.fwsc, the same Hortator with Bluetooth MIDI (experimental; off at every power-on). The web installer offers both.

Don't miss a new hortator release

NewReleases is sending notifications on new releases.