WaveLoop Kit

Build and support details

Controls and setup · Editor settings

Choppa → FM-1 (front page)

The site root now opens the feature page, which leads with Choppa. Status on 2026-10-11: the App Store serves Choppa 1.12.0; SEND TO FM-1 is built in 1.13.0 (internal TestFlight) and its handoff still records no completed hardware pass. The page therefore says “coming in 1.13”. When 1.13 is live and proven on an FM-1, remove the COMING label in web/mod.html. Transport is USB MIDI only: the firmware never enables Bluetooth and DIN ignores SysEx. The send writes user slot 1 and points the chosen track’s SAMPLE engine at it. The store button carries campaign ct=fm1-kit with provider token 126554207 (App Store Connect → Analytics → Campaigns). The public installer still serves midi23; midi24 has no public release yet.

midi24 four-track HOME scope

Each track is tapped after its level (drum kits after the shared insert), every other sample, into a 256-sample buffer per track; silent tracks write zeros. HOME and the LARGE strip draw four lanes. A lane scales to its own peak, limited to 12 dB above the loudest lane’s scale, so relative loudness stays readable; below about −54 dBFS a lane is only its centre line. Pan, sends and master FX are not shown. Cost: 4096 bytes of audio/display pool (334304 / 344064 used); main RAM unchanged at 94384 / 98304; image 451432 bytes. All host tests, golden sound renders and target instruction budgets pass. Installed on the FM-1 over USB on 2026-10-11 (source 055c647, package SHA-256 37ac86ef497b682d52e6c76b6f40b9f08c4be845a179460151768448ba568352): INFO returns v1.0.5.2-midi24, all four track dumps, the selection and all 23 stored objects are unchanged, zero audio overruns and autosave errors at idle. The lanes themselves were not yet judged by eye on the device while playing.

midi23 Alt LFO shape

Alt + top knob 3 (CC22) selects the addressed synth track’s P_LWAVE: SIN, TRI, SAW, SQR or S&H (sine, triangle, saw, square, sample-and-hold). Existing MIDI enum scaling maps 0..127 to the five values 0..4. The popup uses the existing WAVE label. Rate and shape are shared with vibrato and other active LFO destinations.

Alt + top 1–2 retain midi22’s rate and cutoff/brightness mappings, including engine-specific destinations and WHEEL’s ignored FLT depth. DRUM ignores Alt knobs; only top knob 4 remains reserved on synth tracks. Releasing Alt restores top knob 3 to EDIT parameter 3 (selected-drum reverb on DRUM). Routing, motion capture and saved-sound paths are reused; DSP, controller preset assignments and storage formats are unchanged.

Validation: firmware build, MIDI integration, editor web checks and target instruction budgets pass. MIDI checks cover all five shapes, channel routing, WAVE popups, normal-knob restoration, project persistence and motion recording. All 369 sound regression renders remain unchanged. Image size is 450684 bytes; main RAM remains 94384 / 98304 bytes and the audio/display pool 330208 / 344064 bytes. These are host/build results; installation on the physical FM-1 is pending.

midi22 Alt cutoff LFO

With Alt (A-bank pad 1) held, top knob 1 (CC19) sets P_LRATE and top knob 2 (CC21) sets P_LD_FLT on the MIDI-addressed synth track, following ROUT. P_LD_FLT spans -64..63 with MIDI 64 = 0; negative values invert modulation polarity. The existing track LFO rate is shared with vibrato and other LFO destinations. Its waveform and fade also remain shared.

FM6 applies FLT depth to modulator level/brightness, rather than a literal filter cutoff. VOICE uses its vowel destination, PHASE its depth, and PHYS brightness. WHEEL ignores FLT, so amount has no audible effect there. DRUM leaves Alt knobs unassigned; Alt + top 3–4 remain reserved. Releasing Alt restores the master DJ filter and EDIT parameter 2 (selected-drum pan on DRUM). The popup uses the existing RATE and FLT labels. This uses existing parameters, motion capture and saved-sound paths. No new DSP buffers, controller preset assignments or storage formats are introduced.

Validation: firmware build and all available host tests passed, including Alt routing, signed depth endpoints and neutral, popups, normal-control restoration, motion recording and project restore. All 369 sound regression renders are unchanged. Image size is 450676 bytes; main RAM remains 94384 / 98304 bytes and the audio/display pool 330208 / 344064 bytes. Optional DaisySP reference and browser-emulator checks were unavailable. These are host/build results; physical-device checks are recorded separately.

midi21 patch-position line

The display’s final row (y = 239) shows the selected track’s position in its current engine bank. The theme-colored fill grows from left to right, reaching full width at the final sound. Its order matches MiniLab browsing: factory aliases are skipped and matching user presets follow the factory sounds. It redraws after every view and popup; the existing layout coordinates and content heights are unchanged. No new frame buffer is allocated.

Validation: all UI tests pass, including eight focused pixel checks for the exact row, first/middle/last positions, shorter-line clearing, all themes, skipped aliases, track switches, user presets and all view-return paths. The renderer checks 120 screens across ten palettes plus the page/value sweep, with zero layout, grayscale or alignment failures. Build size is 450632 bytes; main RAM remains 94384 / 98304 bytes and DSP pool 330208 / 344064 bytes. These are host-render and build checks; physical-screen verification follows installation.

midi20 Voice bank

VOICE now offers 26 factory patches. WOW BASS, ROUND BASS, RUBBER BASS, DEEP BASS, REED BASS and LOW PULSE are retired. Their stored IDs (2, 4, 5, 6, 7 and 28) resolve to CHOIR AAH and are hidden from the editor, device and MiniLab preset browsing. The table keeps 32 raw slots so remaining patches, favorites and saved projects retain their numbering. A saved project keeps its own parameter values; removing a factory choice does not rewrite an existing sound. Other banks are unchanged.

Validation: preset-bank, UI, USB/DIN control-path, editor protocol and web suites pass. All 369 audio regression renders pass against reviewed baselines; only the six retired slots now match CHOIR AAH. The 26 retained VOICE records match their prior ID-and-parameter fingerprint. Legacy project tests restore the original parameters, mix and sequence for each retired ID. midi20 builds at 450396 bytes, with main RAM 94384 / 98304 bytes and DSP pool 330208 / 344064 bytes. Physical-device installation is verified separately by the connected version readout.

midi19 Yama-bruh drums

DRUM presets 3–10 append YB STANDARD, YB ELECTRO, YB POWER, YB BRUSH, YB ORCH, YB SYNTH, YB LATIN and YB LOFI. Their KIT values are 10–17; prior IDs are retained. Nine core sounds share the existing eight lanes: cowbell and GM cymbal notes share the BELL lane. Per-drum controls and sends still apply.

The fixed-point port follows Yama-bruh’s drum worklet at commit 3eca861, including its bank overrides. TUNE moves both oscillators and the pitch sweep; TONE changes FM index; DECY changes amplitude decay; SNAP changes the sweep, click and clap burst width. These are synthesized adaptations, with no sample-slot use. The MIT notice is included in the release license files and Lucian Labs is credited on the device.

midi18 branding

Web Settings, the device menu and About now show WaveLoop FM-1. The device QR code opens this fork’s editor. Original Felucca credits remain visible.

Sound banks

midi12 appends 258 presets across ten synth banks, bringing each to 32. Original IDs and audio are retained. FM6 presets use the existing eight operator patches with new macro voicings. SAMPLE, SLICE and DRUM banks retain their existing entries. Preset renders are checked for clipping, DC, release tails and voice limits.

midi19 validation

The target scanner now checks whether a backward jump forms a reachable loop, fixing a false positive from cold code placed after a return. Predicated branches/returns and unresolved indirect branches remain conservative. Existing budgets pass: drum_render 77/86; new dv_yama_run measures 194. These weighted instruction estimates are not cycle counts.

AllocationUsed / capacity (bytes)Free
Firmware image450288 / 581564131276
Main RAM94384 / 983043920
Audio/display pool330208 / 34406413856

RAM allocations are unchanged.

Actual FM-1 USB MIDI verification confirmed midi19 and all 11 DRUM presets. Each Yama kit passed 24 eight-note bursts at 125 ms intervals: maximum CPU 46%, boot render peak 1667 µs, eight-voice cap, zero new audio overruns. All sampled MIDI-overflow flags were zero; the flag is transient, so it cannot prove a lifetime zero-drop count. Original KIT 0, track engines/presets/parameters and displayed track were verified restored. Drum focus ends on BELL. DIN and recorded audio were not tested.

Sequencer assessment: bounded compiled generators could fill existing 64-step patterns and reuse playback/autosave. Full JavaScript sequencing and per-sample noteAlgo need a dedicated port. No algorithmic sequencer ships in midi19.

Editor branding

The animated gold gem cursor is the local pointer from WaveLoop, by Lucian Labs. The two JavaScript source files are vendored unchanged from the live site on 2026-10-09: artifact-cursor.js (SHA-256 fb429e47064ad8384cf90147ce8c2b823ff9c4ca025fa9b43c568b07694eb5be) and ultra-cursor.js (07600fdf2a23ef2e6806f45c86714015c3bc0e47acf7a5f873d2e2c7296e2238). Only the local cursor is initialized; no presence service or remote tracking is started. All cursor assets ship with the editor.

The gem follows control type, including vertical mixer faders and sample trimming or panning. An active editor operation adds a delayed busy orb. Reduced motion uses static poses; touch and forced-colors keep native behavior. The native cursor returns when the page loses focus or the module cannot start. Cursor geometry, click animation, reduced motion, drawing bounds and busy timing are covered by six checks in web/test_cursor.mjs. Editor session tests verify busy feedback clears on completion or disconnection and ignores stale completions. Browser checks with the simulated device cover visible animation, fader dragging and native appearance selection; physical touch and forced-colors behavior are source-reviewed, not device-tested.

The editor uses WaveLoop’s navy surfaces, blue accents and gold connection control. Micro 5 is reserved for the wordmark; Finlandica handles controls and text, with Inconsolata for readouts. Dark is the default; Settings offers Light and System. That choice stays in this browser and never changes the FM-1 screen. Fonts and theme tokens are hosted with this site; no external font service is used.

The theme is UltraKit silver: brand/ultrakit.css is an unmodified copy of WaveLoop’s generated windows/ultrakit/web/ultrakit.css (SHA-256 fd2f2c7b65efa0c91571d09d2d0d1e1e467667b4d2136e1b32b8456bc4c5c921, WaveLoop commit eb6b60eb, 2026-10-09). The editor defines no colour, face or timing of its own; lit controls are silver blocks, state is a fill, red means recording, and panels dither in (off under reduced motion). To update, regenerate in the kit and re-copy. Font notices: Micro 5, Finlandica, Inconsolata.

The branding and cursor changes were editor-only updates, introduced with midi19. MIDI port discovery, raw firmware identity, saved file formats and browser-library storage keys remain compatible. The product is named WaveLoop Kit; FM-1 remains the hardware name. Browser exports use WaveLoop-Kit; existing firmware download names remain valid. Legacy mixer behavior: on firmware 0.8, changing pan may briefly select that track; newer firmware can address it directly.

Validation: editor protocol and backup suites pass. Desktop and 390-pixel previews were checked with the simulated device; all ten tabs fit without page-wide overflow. Light/Dark/System selection, reload persistence, English/Japanese labels and visible keyboard focus were checked. No physical-device MIDI test was needed for this visual update.

Firmware build

This installer uses the package recorded below. Compare the editor’s connected version with it after an update.

Reading build information…

MiniLab modifier

A-bank pad 1 is the Alt button, sending channel 16 note 36 as a momentary modifier. Notes 37–43 remember their press layer through release; note-on velocity zero releases. Panic/reset and MIDI overflow clear modifier and held layers. Alt + note 43 taps tempo; Alt + notes 37–42 and top knob 4 are unassigned; top knobs 1–3 control track LFO rate, cutoff/brightness depth and shape (rate/depth added in midi22, shape in midi23). Alt + faders set track delay + reverb together on fixed channels 1–4; existing per-drum send overrides remain independent.

midi17 maps Alt + bottom knobs 5–8 (CC28/29/30/76) to the addressed synth track’s attack, decay, sustain and release. FM6 instead uses its existing algorithm, feedback, modulator ratio and modulator envelope time macros (P_E0/P_E1/P_E3/P_E4). Higher time values make the modulator envelopes slower. DRUM knobs with Alt are unassigned. This is a mapping change using existing parameters; DSP and saved sound formats are unchanged. The controller preset is unchanged; updating the firmware enables the new layer. The editor MiniLab tab separates normal and Alt knob mappings and remains an offline reference page.

Drum kits

midi16 revoices the 808 and CR78 synthesis models introduced as DRUM presets 1 and 2 in midi14. Preset and lane IDs are unchanged. Existing songs and user sounds selecting KIT 80 or CR78 use the revised voices while retaining their saved per-drum settings. Other kit models are unchanged.

808 gains a longer bass-drum tail, stronger snare body and transient, a fuller clap tail and smoother metallic hats. CR78 uses shorter, drier kick and snare voices, broader maraca noise, woody conga, shorter claves and a rounded sine-based bell. These are original synthesized approximations, not circuit replicas or sampled instruments.

The CR78 adaptation uses maracas in lane 3, conga in lane 6, claves in lane 7 and bell in lane 8. Its longer open hat is an adaptation; this eight-lane bank does not reproduce all eleven instruments of the original machine. Per-drum editing, mixing, persistence and pattern paging retain their existing behavior.

Character references: Roland’s TR-808 overview and CR-78 overview. These describe the source instruments; they are not measurements or validation of this mod.

Developer readouts

The editor’s Dev tab polls read-only telemetry every two seconds while visible and idle. It shows linker RAM allocations, fixed audio/display buffers, firmware image headroom, encoded sample capacity, CPU load, audio overruns, MIDI/USB counters and autosave state. RAM is allocated capacity, not heap or stack usage; mapped flash span is not a chip-size measurement. Storage reservations remain fixed. Save readouts exports a local JSON snapshot; demo data is labeled.

Diagnostic field definitions

Persistence

The 12-song setlist uses original projects A–C and nine additional A/B flash pairs in the retired third sample slot. Project 4 remains the recovery journal. Order has its own A/B pair. Commits wait for stopped transport, no held notes, five seconds of rendered silence and settled edits.

Backup includes all 12 songs, order, recovery, settings, presets and two sample slots. Older archives remain readable. Archives containing a third sample must be migrated before restoring into this mod.

Support

Check MiniLab User 5 is active if knobs or faders target the wrong controls. Download a backup before changing firmware. Report issues with the connected version and a short description of the gesture; keep private backups private.

Mod source · Upstream source · Protocol and validation · Licensing