CHANGELOG
V1.3 — Release version update (2026-11-03)
- Updated the BEETLE BLUE release number to V1.3 in the native FM1 application and HELP, the
.fwsc container, web tools and current documentation.
- Kept product identity
FM-1_2224, project format BDR1 V33, Storage V2, audio, Live Mode, and the V1.2 OTA return-to-stock V15 safeguards unchanged.
- Rebuilt writable and read-only firmware, synchronized embedded firmware/hashes and regenerated HELP screen captures; tests and packaging checks recorded separately in
validation/V1.3-VALIDATION.md.
- This is a version-only update. It does not claim that the exact new binary has been separately field-tested or that all stock transitions are universally guaranteed.
V1.2 identity update (FM-1_2224)
- Changed only the BEETLE BLUE device/package identity from FM-1_2124 to FM-1_2224 so The Firmware Hub can identify this release independently.
- Preserved V1.2 stock-V15 OTA acceptance, USB OTA priority, firmware boot bytes, OTA loader, storage format BDR1 V33, and Live Mode behavior.
- Updated source build script, firmware manifest, WebInstaller/Manager identity and SHA-256 checks; exact installation and stock-return tests remain a device-side validation step.
V1.2 — Firmware Hub stock-return handling
- Explicit firmware-update requests now take priority over incomplete project transfers; staged project and sample uploads are safely aborted before OTA starts.
- Official M-VAVE stock V15 acceptance remains limited to its known image SHA-256 and original updater loader metadata. No generic foreign-loader bypass was introduced.
- Increased the bounded OTA session budget for slower USB-MIDI hosts receiving the complete stock V15 image.
- Kept firmware identity, protected bootheader, inherited OTA loader, storage layout, drum features and project schema unchanged.
- Added offline tests and an optional byte-for-byte compatibility check with a user-provided original M-VAVE V15 firmware file; an on-device return-through-Hub test is still needed for this exact binary.
V1.1 — Stable release naming and package consistency (2026-11-02)
- Adopted BEETLE BLUE V1.1 as the current release name across on-device HELP, firmware application, webtools, current documentation, packaging and checksums.
- Preserved firmware hardware identity
FM-1_2124, project file schema BDR1 V33, storage layout and protected bootloader/OTA bytes.
- Rebuilt the application with the V1.1 display version and generated a matching full
.fwsc firmware container.
- Updated embedded WebInstaller, nested All-in-One Manager, verification manifest and integrity checks to agree on the exact new firmware bytes.
- Restored missing
fm1_lz4.py package-verification dependency to the active project tools. Archived historical validation and earlier release history remain untouched.
- The developer reports extensive BEETLE BLUE hardware testing on two FM1 units; separately documented installation/recovery tests for the exact V1.1 package are not provided.
V1.0.0 RC12 — Readable, paginated on-device HELP (development)
- Replaced dense HELP paragraphs with 66 concise two-line action cards in ten topics, showing a maximum of three separated cards per page.
- K2 selects a topic, K1 pages through its cards. HOME and SEQ retain prior navigation. No project or storage format changes.
- Updated native HELP and README controls; native builds and reference rendering remain software-only validation. An additional development RC12
.fwsc and synchronized WebInstaller/Manager are provided after package/app/hash checks. Formal R0 recovery proof and physical flash/OTA validation are not available; no production certification is claimed.
- Current project root contains no historical release binaries. Older histories remain in CHANGELOG and
validation/archive/.
Documentation maintenance — RC11 operator guide / HELP source sync
- Replaced the accumulated RC4–RC10 paragraphs in README with a single up-to-date, English user guide. Historical release notes remain in CHANGELOG and validation/archive.
- Corrected native FM1 HELP for SEQ+K4 independent lane length (01–16), six lengths per pattern, V33 project compatibility and the Live Mode Setlist/Perform workflow.
- Recompiled writable/read-only native APP binaries and passed fixed-width HELP, lane-length and V32→V33 regression tests. Original RC11 flashable WebInstaller has not been modified; rebuilt image is distributed as a non-flashable lab container because the project’s release gate lacks verified recovery proof.
- Removed obsolete firmware/installer/manager duplicates and old manifests from the current project root. Added a reusable release-hygiene script and operating rules.
V1.0.0 RC11 | Per-pattern six-lane loop length (development)
- Added independent 1–16 step length for CH1–CH6 in each of the 48 patterns; default 16. Hold SEQ and rotate K4 on the tracker to set the selected lane’s length.
LEN xx shows its length. K1 step navigation respects the selected lane.
- Each lane independently loops modulo its own length, including the additional CH6 drum hits, drum FX, groove/microtiming, ratchets and Song Mode source lanes. The overall pattern advances on the longest active lane; no >16-step transport added.
- Updated clipboard/block operations and undo/redo to retain the selected lane-length metadata stored in reserved row-0 bits. No increase in step (6 B) or pattern (625 B) RAM footprint.
- New BDR1 V33 serialized project format: three packed lane-length bytes per pattern, along with a version 6 standalone pattern file. V32 projects and other supported older versions continue to load. Downgrading to earlier BEETLE BLUE firmware after saving V33 is unsupported; back up before update.
- Validated native writable/read-only builds; BDR1 V33 project save/load, authentic RC10 V32 migration, independent 1/7/12/16 loops, drum FX, groove, Song Mode, block editing, original BEETLE Song Chain regression, and existing physical-workspace storage tests on host. Real FM1 hardware timing and installation are not tested.
- Original RC10 credits and upstream licence headers, RC9 Live Mode warm audio changes and Storage V2 policy are preserved. No auto-format or destructive migration.
V1.0.0 RC10 | Credits and battery attribution
- Explicitly credit Leo Kuroshita / Hügelton Instruments (Felucca, GPL-3.0-only) for the 531/561/591 battery-voltage ADC thresholds used by the BLUE indicator. BLUE’s filtering, fallback/invalid-read behavior and pixel presentation are SikkenWorks additions.
- Update the on-device CREDITS page, README, full source credit documents, browser Manager, Project Manager and WebInstaller. Preserve BEETLE, ETCH, Felucca, JieLi, reSID/Nes_Snd_Emu reference distinctions and all required upstream copyright/licence notices.
- No change to the RC9 audio, persistence, DSP, project schema or Live Mode algorithms. Firmware recompiled only for on-device credit text and version. development: hardware testing still required.
V1.0 RC9 — BATTERY HUD / SILENT LIVE PROJECT LOADING / USER KIT SELECTION
- PB1 battery indicator now follows Felucca’s FM1 raw ADC thresholds 531 / 561 / 591, has an invalid-reading guard and keeps USB connection separate from verified charger state; no invented percentage.
- Live Perform and Setlist autosave now use an in-place warm DMA quiesce with a 256-sample fade, DAC buffer drain, digital zero during flash operations and fade-in on resume, instead of switching PC6 off/on at every transition. Existing realtime progress overlay retained.
- Fixed the unsent stereo PCM buffer tail on end-of-pattern playback when Live Mode has no per-project Song Chain.
- After Kit Designer stores a global User Kit successfully, that kit is automatically selected for the current lane (save your project to persist the lane reference). Existing BBK1 format, 12 global kit slots and 14 timbre components are unchanged.
- No changes to Storage V2 allocation, project schemas, USB protocol, protected header or OTA-loader. Physical FM1 charging indication, analog pop-free switching and sustained USB recording are not certified.
BEETLE BLUE V1.0.0 RC8 — PROJECT DATA ERROR fix
Gebruik BEETLE-BLUE-Manager.html of BEETLE-BLUE-V1.0.0-RC8-WebInstaller.html.
De nieuwe firmware is BEETLE-BLUE-V1.0.0-RC8-PROJECT-SAVE-FIX.fwsc.
Oudere bestanden zijn behouden als referentie; gebruik voor deze fix RC8.
Oorzaak en correctie
De samplecache en het te bewaren project delen hetzelfde RAM. RC7 riep na
project-capture/decoding beetle_bd4_live_invalidate() aan. Die functie schrijft
cacheflags en wist chunks/attack-snapshots via de oude pointer. Daarmee werd de
klaargezette song beschadigd voordat de encoder hem controleerde. De fout is
op de originele RC7 SAVE-wrapper gereproduceerd: TRACK_JOURNAL_INVALID,
diagnose 4 (PATTERN / NOTES), bij de eerste opslag op lege legacy-opslag.
Hetzelfde gedeelde pad wordt gebruikt voor Storage V2 en projectimports.
RC8 ontkoppelt de cache met beetle_bd4_live_bind(0,0u) zonder projectbytes te
wijzigen. Na de transactie wordt de cache opnieuw opgebouwd. Capture ontkoppelt
eerst; eerste opslag na initialisatie maakt een verse capture na de bevestiging
in plaats van oude scratchdata te vertrouwen. Validatie, capaciteitcontroles,
CRC, schrijfautorisatie en opslagformaat blijven behouden. Geen extra grote
RAM-buffer; geen automatische wipe, migratie of projectnormalisatie toegevoegd.
Zie RC8-VALIDATION.md voor tests en gebruik.
V1.0.0 RC7 — Fix Legacy-to-V2 wipe and invalid V2 index creation
- Root cause: previously Wipe All Storage chose its output layout from the existing marker. Legacy devices remained on 12K TRKJ even after wipe.
- Root cause: invalid B2SB header bytes left as FF made newly formatted V2 storage unreadable; a host flash test reproduced the failure.
- Double-confirmed wipe now creates and verifies a clean V2 index and V2 owner marker. Existing BEETLE legacy projects/samples/setlists are all erased; NO automatic migration or default formatting.
- V2 status is independently checked before showing STORAGE READY. Flash bus reads remain outside realtime audio.
- Real V2 writer save and subsequent readback tested on simulated flash. Real FM1 hardware not validated. Other DATA ERROR causes remain possible.
V1.0.0 RC6 - Legacy storage error and new-session state fixes
- Fixed legacy TRKJ invalid data being mislabeled as PROJECT TOO FULL.
- Reset all transient serialization staging memory on NEW project.
- Report active legacy/V2 backend and differentiate actual capacity from invalid project data, with no flash writes on refusal.
- Added real journal save/overwrite/load regression test for slots 1 and 2.
- development hardware status unchanged. No silent formatting, migration or erasure.
BEETLE BLUE V1.0 RC5 — Project capacity / kit source routing
- New V32 BDR1 sparse step codec eliminates 42-bit fixed cost per populated note when properties are defaults, while retaining V31 and older decode support. Older firmware cannot open V32 projects.
- Drums: switching KIT from DRUM MIXER changes the currently selected channel, and all stopped preview paths honor that channel source.
- Added host tests for dense 48-pattern projects, original V31-to-V32 migration, and distinct native PCM from all 14 BEETLE/MONOLITH components.
- Verified native writable/read-only builds and V2 writer regression tests. Real device flashing, savings and DAC audio remain unverified.
- Reset BLUE sample trims, sample ADSR, MASTER settings and palettes on NEW.
- Allow explicitly confirmed Wipe All Storage to reformat recognized Storage V2 volumes; fully verify erases and CRC-checked empty index.
- Refresh ownership after wipe; preserve flash boundary protections.
- Real V2 read-progress overlay in Perform; right-aligned tracker PAT label.
- Existing RC3 FX validation/repair kept. Hardware flash/OTA recovery and DMA stability unverified.
BEETLE BLUE V1.0 RC2 — safer project save, V2 orphan cleanup and exact error reasons
- Distinguishes PROJECT DATA TOO LARGE (BDR1 buffer), PROJECT PACK TOO LARGE (12-KiB flash record) and FLASH SPACE LOW (physical page/guard capacity). Empty slots do not bypass per-project bounds.
- On confirmed Storage V2 physical capacity failure, attempts a CRC/A/B-audited orphan-sector cleanup, then retries exactly once. Does not erase referenced projects/samples, reformat, drop data or change the BDR1 V31 schema.
- Invalid BDR1 input is no longer mislabeled as an ordinary storage-capacity error.
- Native writable and read-only builds, V2 writer/reader, power-loss, Song Chain and project format regressions passed in software. Hardware, DMA stress, OTA/recovery remain unverified.
- This is not an unlimited-storage fix. A project over the 12-KiB serialization limit still cannot be saved on the FM1; no save success is falsely reported.
BEETLE BLUE CHANGELOG
V1.0.0 RC1 — Setlist HOME fix, non-destructive Song Chain insertion, safety audit
- Fixed HOME from empty Setlist by prioritizing HOME input, scanning project ownership before permitting insert/selection and refusing placeholder project slots. On an unsaved write error, no data is mislabelled as saved; deliberate second HOME can leave the editor with a visible UNSAVED warning.
- Fixed Song Chain clipboard: SEQ+OP2 inserts after the current row, moves existing rows down, keeps all lane assignments/repeats/auto/silent references, selects the first inserted row and refuses overflow without modifying the chain. A short on-screen warning appears on failure.
- Fixed non-BLUE host regression compilation: a reversed drum-voice field was incorrectly referenced in a build where that field is excluded. BLUE’s own reverse behavior is unaffected.
- Rebased one legacy PCM fingerprint test to the independently verified unchanged V0.99.8 output (
dd0f3681) rather than keeping a stale V1.2 fingerprint; this is test maintenance, not DSP retuning.
- Added unit regressions for no saved projects, clipboard insertion/tail preservation, end-of-chain appends, full-chain atomic refusal and user-facing screen capture for no projects. Native writable / read-only JieLi firmware builds and selected storage, audio and song-chain host tests were run.
- Source audio timing and DMA scheduling are NOT changed. Outstanding RC blocker: user-observed
DMA DEADLINE / AUDIO STOP under heavy FM1 playback, physical USB capture/OTA and safe stage playback have NOT been proven. This is a candidate for device acceptance testing, not a certified stable V1.0 release.
V0.99.8 — HOME menu Live Mode entry and nested HOME navigation (development)
- Added LIVE MODE as a selectable entry in the normal HOME / PROJECTS menu, between SETTINGS and DIAGNOSTICS, without changing the boot NEW/LOAD/LIVE chooser.
- Repaired Live Mode HOME routing: SETLIST → LIVE MODE → HOME/PROJECTS with one HOME press per level. The PERFORM and PERFORMANCE STOP HOME routes also lead first to LIVE MODE, not immediately to the main menu.
- Preserved V0.99.7 silent SETLIST autosave on leaving via HOME or SEL, and its fail-closed behaviour on flash write errors.
- Reflowed all 10 HOME menu items with 14-pixel line pitch and separate bottom status/footers on the native 240×240 LCD. Saved native C-rendered 1920×1920 UI captures, 8× nearest-neighbour.
- Added dedicated C navigation/autosave regression, rebuilt native writable and read-only JieLi images, and reverified development
.fwsc protected loader identity and byte-matched WebInstaller.
- No changes to drum DSP, patterns, song transport, samples, BDR1 V31 project codec, V2 setlist record, kit engines or DMA scheduling. No physical FM1 validation. DMA DEADLINE/AUDIO STOP under heavy use remains unresolved.
- Silent automatic Setlist save: leaving Setlist via HOME or the SEL navigation path commits changes to Storage V2’s existing versioned/CRC32 A/B metadata footer. Unchanged entries do not write flash; success shows no toast. A failed commit blocks the exit, keeps the full in-RAM setlist and displays a clear retry error rather than losing changes. SAVE remains an optional retry. New failure-injection unit tests verify all five state paths.
- Perform safety: PLAY is ignored unless an actual CRC-verified project is ready, Live Mode is active, the audio subsystem is healthy and there is no pending song-completion flag. A manual stop confirmation is accepted only for an actual paused transport. The interface explicitly reports an AUDIO STOP condition instead of claiming PLAYING/READY. Full project loads remain foreground-only; no flash I/O is introduced into the DMA callback.
- Battery indicator: native 240×240 pixel HUD in TRACKER above the PAT counter and in LIVE / PERFORM above the setlist count. Four coarse ADC-derived bars, no fake battery percentage. A small blue bolt denotes a USB data link, not verified charging. No real charger-status/charging-current sensor is exposed by the available FM1 source. Actual charging detection and percentage accuracy remain unverified.
- Layout: reserved non-overlapping HUD rectangles; regenerated actual-source C Live Mode captures at 1920×1920 with 8× nearest-neighbor scaling. Broader complete-device UI regression and physical display confirmation remain outstanding.
- Tests: writable/read-only JieLi builds, complete
.fwsc checksum/payload/bootloader verification, A/B footer torn-write isolation, autosave fail/retry, battery policy thresholds, and existing user-sample/PCM regressions. No physical FM1 verification or guarantee of stage safety. The older DMA DEADLINE / AUDIO STOP failure under heavy playback remains an active hardware regression risk.
V0.99.6 — LIVE MODE: project setlists and stage transport (development)
- Startup menu now presents NEW PROJECT, LOAD PROJECT and a separate LIVE MODE entry. LIVE MODE has SETLIST and PERFORM pages, all implemented in native FM1 C with 240×240 screen renders.
- A global 24-position setlist chains references to 12 independently saved projects. K1 selects row, K2 assigns project, K4 moves row, OCT+ inserts, OCT− removes. Each project retains its own BPM, kits, effects and Song Chain. Repeat slots are allowed.
- PERFORM loads the next entire CRC-checked project only after the previous project transport has stopped; the audio ISR merely flags completion. The next project is READY but never auto-started. Existing SONG arrangement plays once in Live Mode; SONG OFF plays one pattern cycle.
- Pressing PLAY/STOP while performing opens CONTINUE CURRENT TRACK or START CURRENT TRACK AGAIN. Continue resumes the saved step and Song Chain position; restart returns to the beginning. The existing ordinary Song Chain mode is untouched.
- V2 persistence: explicit SAVE from Setlist stores a 64-byte versioned/CRC32-protected independent setlist footer in the existing 4096-byte Storage V2 metadata A/B transaction, outside the bounded project/sample indexes and global kit bank. All other V2 writes preserve the footer. No new NOR sector or new project version is required. Legacy storage remains RAM-only and reports save failure.
- Added host state-machine, CRC rejection, metadata torn-write recovery and project-isolation tests; native JieLi lab build and exact native LCD C captures. Physical FM1 stability, storage writes, OTA and live audio safety remain unverified. This is not stage-certified.
V0.99.5 — Per-slot self-choke and faster BD4S audio ISR (development)
- User-sample default self-choke: all global U01–U13 Storage V2 samples and project-local user samples are now monophonic per sample slot, even when CHOKE=0. Retriggering the same slot from any lane applies the existing 48-frame voice fade. Other U slots are still independent; explicit shared choke groups retain their original behavior. Project format stays BDR1 V31.
- Cross-kit hi-hat priority: BEETLE closed/open and MONOLITH closed/open/alternate hats share unconditional 48-frame choke, independent of kit/lane and configurable group setting. The existing cross-kit logic was retained and given an additional regression.
- Pending stream retirement: when a choked Storage V2 voice has no resident PCM frame, retire that pending voice/request without waiting for the flash refill. Avoids stranded decoder work and unbounded stale prefetch after rapid retriggers.
- Reduced DMA ISR work: replace two sequential 128-frame window scans (
ready_now then render(1)) with a single-pass beetle_bd4_stream_read_one_ready. At even frames locate the source pair once; at odd frames reuse it. Never advance source clock, age or envelope on a missing PCM frame; no flash read, decode, dynamic allocation or blocking in audio ISR.
- Tests: exact per-frame PCM and full stream voice state matched the previous renderer for a 768-frame sample with 15 artificially delayed polls. Tested independent/global user-slot choke, 13 warm BD4S attacks / 1000 fast retriggers / 96,000 rendered PCM frames, hot-cache flash read absence, cross-ROM hats, compiled writable + no-write native firmware.
- Known RC blocker: physical M-VAVE FM1 still exhibited
DMA DEADLINE / AUDIO STOP with rapid user samples on V0.99.4. V0.99.5 reduces ISR and decoder pressure but its fix cannot be certified without a new physical FM1 stress run. Long sample tails remain flash-streamed; complete glitch elimination is NOT claimed.
- README remains a concise operational guide; CHANGELOG contains development details. Two-tool Manager retains only WebInstaller and Project Manager; WebSimulator stays removed. Protected boot header/OTA loader are unchanged.
V0.99.4 — Prewarmed user-sample attacks / bounded flash bursts (development)
- Usersample latency: prewarm the first 256 source frames of every installed Storage V2 sample into immutable per-slot PCM/ADPCM attack snapshots while the transport is stopped and no key is held. Cache uses the existing project staging workspace, no extra permanently allocated audio-RAM section.
- Hot retrigger: any of six drumvoices can restore a cached attack and the exact ADPCM continuation state from RAM, instead of re-reading and re-decoding the first two PCM windows. Preserves the selected sample generation and START/END trim; changed trim falls back to the normal path and learns a matching attack cache.
- DMA/flash latency: restrict IRQ-masked SPI NOR transactions for active sample prefetch to 32 bytes (formerly 256 bytes per call), with each transaction independently interruptible. No flash read, storage write, PCM decoding or memory allocation is introduced into the audio ISR. Project/installer flash operations remain on the existing separate path.
- Idle warming: one 128-frame decode window per foreground poll, only with stopped transport and no held physical notes; no bulk decoding inside a single DMA frame. The initial 13-slot cache scan is discarded on sample-bank refresh, metadata mutation or rebind.
- Correctness: 13 real Storage V2 ADPCM sample fixtures, 1,000 quick cross-slot retriggers over six voices, 96,000 PCM frames, zero read during audio callback, zero warm-trigger flash reads and zero decoder underruns (host test). Existing six-voice streaming, PCM exactness, rev/FX, project V31 and kit-regression tests repeated.
- Limitations: only first 256 source frames are resident; long sample tails still stream from flash. Cache warms when idle, so a sample struck immediately after boot may still need its first foreground prefetch. Physical hardware DMA DEADLINE and true simultaneous flash/LCD/audio behavior are not yet measured. Do not claim never-glitch or hardware-certified stability.
- README kept a concise product guide; detailed version changes belong here. The WebSimulator remains excluded.
V0.99.3 — Deterministic per-lane kits and sample handoff audit (development)
- Fixed kit confusion on CH1–CH6: previously
s->instrument == lane gated whether the lane’s selected kit played; any other saved INST value silently selected a source from the project palette. Playback now consistently uses the lane’s selected kit for NOTE1, NOTE2 and NOTE3, including Song Mode. All existing INST/palette bytes remain stored, but per-step source overrides are intentionally suspended until a distinct user-editable override flag exists.
- Corrected a rapid-user-sample lost-request race: main-loop
pending acknowledgement now snapshots voice serial/slot while briefly holding the IRQ lock. The lock is never held across flash I/O, sector CRC or DPCM decoding. A superseding request cannot be overwritten by a stale prepare/start.
- Moved DPCM decoder stop/choke out of the audio ISR. The ISR only invalidates the active voice request; the main-loop performs stream cleanup. Prevents an IRQ from interrupting producer-side decoder/window changes during a fast retrigger.
- Verified 14 of 14 corresponding BEETLE and MONOLITH components render different actual native PCM sequences (20×256 stereo frames each), with nonzero peaks. MONOLITH’s two additional alternate sounds remain present. Digital difference is not a subjective listening or DAC hardware validation.
- Added 672 lane/source/legacy-step combinations and the full V0.99.2 host regression suite. Native JieLi writable-image build and independent read-only build passed. Protected boot header and OTA loader remain inherited unchanged, BDR1 V31 unchanged.
- The All-in-One Manager still contains only Project Manager and WebInstaller; no simulator. README remains a guide; all implementation changes are documented here.
- RC blocker: the reported FM1
DMA DEADLINE / AUDIO STOP from rapid user samples has not been physically reproduced or eliminated. No guarantee of zero glitches, underruns, slowdowns, or reboot-free recovery is possible from software-host tests alone. Check actual FM1 flash bandwidth, ISR deadlines, DAC output and USB multi-stem operation before claiming V1.0 RC.
- Fixed the LANE 0 / REC FX Punch-In recording mixer: the horizontal page-header rule intersected
STEP, FX and ON/OFF labels (line y=42 versus 5×7 glyphs y=38–44). Placed divider at native LCD y=37, column labels at y=43 and first event at y=54.
- Audited all 16 Punch-In event rows: last entry ends at y=195, leaving clearance before the footer at y=201; no removal of recorded Punch-In events or changed navigation semantics.
- Fixed the same header-rule-over-label condition on the existing read-only RC diagnostic page (divider y=36, subheading remains at y=40).
- Added a native-source-extracted framebuffer regression verifying the actual pixels, line/column/header spacing, all 16 rows and the bottom instructions. Captures use 240×240 native RGB565 followed by exactly 8× nearest-neighbor to 1920×1920.
- No change to audio callbacks, DMA, storage, BDR1 V31, step FX, user samples, USB, OTA loader, kits or WebInstaller workflows; no WebSimulator reintroduced. Native JieLi and read-only binaries rebuilt from the modified source.
- Not V1.0 RC: physical FM1 screen, DMA DEADLINE, flashed update/recovery and analogue audio still require hardware verification.
V0.99.1 — FM1 user-reported bugs, Punch-In routing and pre-RC stability (development)
- LOAD PROJECT individual delete: use EDIT on selected occupied project; opens NO-default confirmation with explicit YES/NO. Legacy EDIT+SEL chord remains, but no longer required.
- FX double short press opens Punch-In FX menu; single FX press on step FX column opens its three-slot parameter editor. Long FX hold remains the live Punch-In modifier.
- Live Punch-In overlay: suppress partial playhead redraw while live Punch FX is active; permit SEQ + white-key overlay and use current BLEND/PITCH names.
- Punch-In: replace OCT UP with BLEND 0–100% dry/wet applied to all Punch-In audio processing, replace OCT DOWN with PITCH K1 ±24 semitones. ROM / procedural / local PCM drum voices retune. BD4S streamed user samples still play at fixed rate, so this is not yet universal pitch support.
- Reduce Punch-In per-sample work: compute Q8 global blend coefficient once per DMA block rather than repeated divides per stereo sample.
- CH6: rename tracker KIT field to RAT, whose K3 controls 1–4 drum ratchets; retain existing per-step kit route for backward compatibility. Song Mode now labels it CH6, not DR.
- CH6 NOTE3 mode no longer disables the otherwise saved per-step FX for NOTE1 and NOTE2. Step FX playback uses per-lane identifiers, independent of which lane is displayed.
- Primary FX VOLUME 0–200%: widened runtime field to 8 bits and new BDR1 V31 packed project codec (42 bits per populated step). Updated project validator, encoder, decoder and Project Manager V31 compatibility. Older V26–V30 decodes remain supported; V30 firmware will not understand V31 saves. New regression round-trips FX value 200 with groove/dynamics intact.
- MONOLITH synthesizer: additional distinct harmonic shapes for hats, snares, toms, cymbals, percussion/rim while BEETLE µ-law drum ROM remains unchanged. Both kits still require subjective FM1 listening validation.
- User-sample repeated retrigger: preserve previously CRC-verified, immutable, pinned BD4S sector metadata across repeat triggers of the same slot/generation; avoid unnecessary 4 KiB re-verification and flash I/O in foreground prefetch. PCM ISR remains flash-free. DMA DEADLINE is NOT confirmed fixed on physical hardware.
- Replaced obsolete synthesizer/Scale Guide native HELP chapters with BLUE drum, kit, FX, Punch-In, load/delete, safety controls.
- Preserved existing 6 lanes, 48 patterns, 12 project slots, kits, storage/OTA loader, USB code and two-tool Manager. No WebSimulator.
- Tests: full retained host FX/ROM/retrigger/project suite PASS, BDR1 V31 200% serialization PASS, native JieLi release and read-only symbol-audited builds PASS, protected header and OTA container verified. Physical DMA/DAC/flash/recovery/USB and streamed pitch remain unvalidated; NOT V1.0 RC.
V0.99 — Stereo overload protection and lightweight per-voice math (development)
- Fixed a mix-headroom weakness in the BLUE six-drum-lane output: individually soft-limited lanes could still sum to a hard-clipped stereo peak. The final stereo sample now uses a symmetric bounded soft knee above +/-24,000, capped at +/-31,500, with unchanged values throughout the linear region. This is a deterministic software safeguard, not an analogue SPL or hardware-clip certification.
- Simplified the 73-value pitch lookup algebra to remove software-emulated 64-bit multiplication on every drum trigger / retune. Added an exact equivalence test to the old Q16 formula for every tuning value.
- Replaced two additional 64-bit per-sample multiplications with 32-bit fixed-point equivalents where input ranges prove the products fit; retained wide arithmetic for actual PCM sample interpolation where it is required.
- New host test runs 3,900 mixed BEETLE/MONOLITH triggers across six lanes and 166,400 rendered audio frames, with changing pan, simultaneous FX and a maximum stereo magnitude below 31,500; all V0.98 regression suites re-run successfully.
- Preserved BDR1 V30, 48 patterns, 12 project slots, six lane kit selections, BBK1 saved kits, all existing FX identifiers and the protected OTA loader. No change to non-audio control semantics, NOR storage layout, DMA memory buffers or USB configuration.
- Rebuilt actual JieLi image and matching WebInstaller; regenerated 17 native-C LCD captures at 1920x1920, 8x nearest-neighbor. Manager embeds only Project Manager and WebInstaller; no WebSimulator.
- RC blockers remain: physical FM1 DMA DEADLINE behavior, analogue output peak measurements, physical flash/recovery, streamed user-sample REV/delay, USB stems, and BBK1 kit-bank backup/restore. V0.99 is development, not verified V1.0 RC.
V0.98 — Drum trigger correctness and CPU cleanup (development)
- Fixed hi-hat choke across both built-in drum kits: BEETLE PCM HHC/HHO and MONOLITH ROM closed/open/alternate hats now share the correct release interaction. Previously MONOLITH’s voices used IDs 66/67/79, which were not recognized when checking existing voices for a choke.
- Fixed CH6 note-column assignment for MONOLITH: mapped procedural voice IDs 64–79 no longer masquerade as missing NOTE1 hits and inherit NOTE2 FX or STOP state. A small pure NOTE1/NOTE2 classifier uses the voice’s actual source ID (MONOLITH) or logical component ID (BEETLE’s randomized PCM variations).
- Fixed the MONOLITH PITCH step effect: changes the actual
kit_phase oscillator increment rather than merely altering an unrelated PCM cursor or note duration. Implemented with a bounded modular 32-bit multiplication rather than a 64-bit multiply inside the audio callback.
- Reduced drum render work for inactive voices by skipping EQ, FX, ROM-pointer and trim preparation for unused polyphony slots.
- Added host regression for both-kit choke, CH6 NOTE1/NOTE2 effect routing, 4,096 rapid retriggers and procedural PITCH frequency. Re-ran existing PCM, MONOLITH, FX1–FX3, REV, trim, V29→V30 migration and PCM-initialization tests.
- Firmware remains BDR1 V30, with 48 patterns, 12 project slots, 6 drum lanes, 12 BBK1 User Kits and no WebSimulator. Project/Storage V2 layouts are unchanged. Updated two-tool WebInstaller/Manager and regenerated 17 native LCD renders using 8× nearest-neighbor scaling.
- Hardware limitations: no physical FM1 DMA timing, output-peak measurement, USB audio, flash/recovery or long-run flash journal verification has been performed. This is development and must not be advertised as V1.0 RC ready.
V0.97 — Drum step-FX engine, FX cursor editing and realtime optimization (development)
-
Release packaging cleanup: removed the WebSimulator, its README button and all emulator UI/payloads from the All-in-One Manager. The Manager now contains only the Project Manager and WebInstaller. Updated the two-tool Manager build script. This is a web/documentation-only repack; the native V0.97 .fwsc is unchanged.
- Audited the six-lane drum audio callbacks: V0.96 only applied step VOLUME, PITCH and REV to many BLUE drum voices, leaving FILTER, DRIVE, DELAY, REVERB, CHORUS, VIB, ARP, CUT and TREMOLO absent from the drum DSP path.
- Introduced a fixed 3-slot transient per-voice FX state. FX1, FX2 and FX3 are dispatched in slot order, never allocated or saved during the audio interrupt. No V30 project-format change, no FX ID renumbering.
- Added native drum effect processing: FILTER as low-pass blend; DRIVE bounded saturation; PCM ROM short-tap DELAY, REVERB and CHORUS; oscillator/pitch LFO VIB and CHORUS; 3-tone ARP; gate-based CUT; amplitude TREMOLO; plus existing VOLUME, PITCH and REV. MONOLITH’s procedural oscillator now responds to its own ARP/VIB/CHORUS modulation (separate from PCM cursor rate).
- Avoids heavy long-delay buffers or flash reads in the audio callback. Effects use bounded arithmetic, the existing PCM ROM data, a small 36-byte transient state and power-of-two LFO timing. The dry/no-FX path bypasses extra processing.
- Short FX release on a focused FX cell opens PER STEP FX for that selected step and lane. Repeated short FX while editing preserves editor focus; long FX still controls Punch-In. REV displays ON rather than a misleading numeric parameter.
- Host tests: 12 effects alter BEETLE and MONOLITH audio relative to dry; 3-FX combinations differ from their component effects; 2,500 overlapping retriggers; FX 12 storage codec and V30 compatibility retained. Application build and container tests in validation/V0.97-RESULTS.md.
- Current limitations: short ROM taps and MONOLITH tonal approximations are not equivalent to long buffered echo/convolution. Streaming Storage V2 samples have no backwards/PCM-history read for REV/DELAY/REVERB/CHORUS. Hardware FM1 DMA deadlines, real output peaks, and OTA recovery remain unverified, so V0.97 is NOT a V1.0 Release Candidate.
V0.96 — Project-sample REV trim correction and CH6 consistency (development)
- Corrected project-local µ-law sample START/END in the native drum renderer. Previously the output age was treated as an absolute source endpoint and REV could read the wrong interval. Both directions now address the same source-frame window.
- Applied the local sample window to all three CH6 hits (NOTE1, NOTE2 and NOTE3) as well as the other five drum lanes. The existing Storage V2 streaming trim request remains separate and forward-only.
- Added a bounded 32-frame release ramp to reversed PCM hits, limiting clicks where reversed audio ends on the original transient. Mono procedural REV continues to be reverse-style synthesis, not a time-reversed waveform.
- Used existing per-block voice metadata to pack local window start/span without enlarging the critical FM1 RAM pool or reducing DMA/USB buffers. Never allocates in the audio interrupt.
- Native JieLi build and readonly build PASS. Host tests: 14 BEETLE/16 MONOLITH REV variants, 3,000 repeated reverse triggers, local sample cropping and a one-frame sample, V30 REV step codec.
- Preserved existing 48 patterns, 12 project slots, 12 global User Kits, BDR1 V30 format, ROM engines, native mixers and protected update components.
- WebInstaller updated with SHA-pinned V0.96 firmware; Manager regenerated from the exact separate tools. Simulator remains an approximation and does not yet fully reproduce native per-step REV/trim.
- Unverified: physical FM1 DMA deadlines, real analogue peaks, USB six-stem timing, persistent NOR wear, OTA write/recovery. Not an RC-certified firmware.
V0.95 — Reverse step FX implementation and 1.0 RC preparation (development)
- Audited native step-FX definitions: V0.94 had no
REV step effect; reverse key detection and Punch-In reverse were unrelated.
- Added FX code 12 = REV to the existing 4-bit FX field; old effect codes 0–11 and BDR1 V30 binary layout are unchanged.
- Implemented literal reversed per-voice PCM indexing for the BEETLE factory ROM kit and project-local PCM one-shots, including NOTE2 and sparse step FX where supported.
- Implemented a bounded reverse-inspired rising envelope and descending oscillator phase for procedural MONOLITH. This is not literal time-reversed PCM.
- Guarded Storage V2’s streaming BD4S path against pretending to reverse: it still only supports forward reads.
- Added native host tests covering BEETLE and MONOLITH output differences, 3,000 reverse retriggers and REV pattern serialization. Existing MONOLITH/BEETLE and PCM-clear contract tests remain passing.
- Retained project V30, 48 patterns, 12 project slots, 12 global kits, user samples, native mixer, USB routing and protected OTA components.
- Next RC blockers: FM1 real-hardware DMA and output-level validation; streamed sample reverse; synth/legacy dependency audit; simulator equivalence for per-step REV; backup of global user-kit presets.
- Not a hardware-verified Release Candidate.
V0.94 — Audio PCM initialization fix and MONOLITH procedural ROM kit (development)
- Fixed the missing
native_stereo zero-initialization introduced when BLUE disabled synth render, preventing stale PCM from being re-added by the drum mixer every ALNK0 block.
- MONOLITH: replaced the built-in 50,800-byte, 8 kHz ADPCM bank with 16 fixed-patch 44.1 kHz ROM drum synthesis models. BEETLE original 14-pad PCM ROM remains unchanged.
- Optimized inactive-drum render, precomputed EQ coefficient gains per block, and reduced repeated wide-integer operations in the per-sample drum loop.
- Kept BDR1 V30 project storage, BBK1 global kits, 48 patterns, 12 project slots, user samples and six drum lanes.
- Refreshed WebSimulator using 16 previews rendered by the real C drum engine; WebInstaller packages exact rebuilt V0.94
.fwsc; all-in-one embeds matching tools.
- Added 16 source-derived 1920x1920 LCD renders including tracker, nearest-neighbor 8x.
- FM1 actual flashing, DMA deadlines, acoustic quality and output peak safety NOT physically verified.
BEETLE BLUE Changelog
V1.0.0 RC3 — Save DATA ERROR when switching STEP FX types (development)
- Reproduced
PROJECT DATA ERROR when an FX TYPE change retained a VOLUME value of 200 on an effect whose maximum is 100. Native host test reproduced serializer rejection and confirms clean encoding after correction.
- Fix FX1, NOTE2 FX, FX2/FX3 type-change values at edit time, with a strictly limited compatibility repair of invalid FX value/type pairs in the staged SAVE copy. No mutation to the active song, notes, effect IDs or audio, and no changed flash layout or project schema.
- If another invalid project field exists, save fails closed and reports a diagnostic field group. This repair cannot prove the specific unsaved hardware project has no additional invalid data.
- Preserve RC2 safe Storage V2 reclamation, RC1 Setlist/Song fixes, protected header and OTA-loader, all 12 project slots and sample banks.
- Native writable JieLi app build / audit,
.fwsc integrity and embedded installer identity, user-data regressions and UBSAN test for FX transitions passed. Physical hardware, DMA and recovery not tested.
- Do not reboot, power off or flash the FM1 while its current project is unsaved.
V0.93 — MONOLITH built directly into firmware
- Integrated all 16 supplied MONOLITH WAV drum sounds as compiled, read-only FM1 application ROM data. No external sample-bank upload or U01–U13 allocation is needed to play them.
- Implemented 8 kHz mono 4-bit IMA ADPCM sample packing (50,800 compressed bytes) with bounded per-voice on-demand decoding and PCM interpolation. Explicit audio quality/trim disclosure in README and generated manifest.
- Kit source
MONOLITH now routes KIK..RIM to real embedded samples, with U01 / U02 serving secondary SNR2 and HHT2 while in MONOLITH mode. Other U03–U13 retain their independent user-bank handling. CH6 pair playback updated for embedded kit identifiers.
- Updated Drum Mixer to list MONOLITH’s sixteen entries, not thirteen uploaded sample slots.
- Project format BDR1 V30, 48 patterns, 12 project slots and original BEETLE ROM kit are unchanged.
- Rebuilt firmware
.fwsc with preserved OTA loader / 16 KiB boot header; verified native app round-trip.
- Rebuilt WebInstaller with V0.93 firmware hash, simulator with decoded embedded audio source buffers, Project Manager without MONOLITH upload requirement, and All-in-One Manager with byte-identical embeds.
- Generated UI renders from extracted native C drawing paths and 8× nearest neighbor scaling, including tracker and MONOLITH mixer.
- Host test: all 16 embedded sounds distinct and audible, 2000 kick retriggers and CH6 dual-sample pair pass. Hardware DMA / audio and OTA safety remain unverified.
Older development
See docs/BLUE-V0.92-CHANGELOG-ARCHIVE.md for the previous release history. No previous firmware release is overwritten by these changes.