Skip to the content.

BEETLE

V1.01d

Install BEETLE (Chrome/Edge) Launch BEETLE Web Simulator Launch BEETLE Project Manager

WHAT IS IT?

Open-source six-lane tracker and digital drum machine for the M-VAVE FM1.
SikkenWorks · Joppe Sikken · Born out of passion.

Current development version: 1.01d RC1 · Changelog

BEETLE public beta builds are tested on a physical FM1 by the project maintainer before GitHub publication. Particular new features still require verification as part of that release process.

BEETLE 1.01 RC1: performance controls

The complete version-by-version history is in CHANGELOG.md. The experimental hardware/storage build still requires maintainer testing before publishing this candidate as a final 1.0 release.

Performance, instruments and controls

Mixer and channel volume

Tracker keyboard and octave controls

Release history

All release notes and version-by-version changes are kept exclusively in CHANGELOG.md.

Current workflow

Performance Snapshots

From MIXER (GLO), hold SEQ + SEL to open PERFORMANCE. Four independent snapshots store the six channels’ mute configuration. K1 selects a slot; turning K2 saves the current mute state; K3 or SEL recalls; HOME/GLO returns to MIXER and SEQ to TRACKER. With Quantized Mutes ON during playback, recalls wait for the next pattern boundary; when OFF, they apply immediately. Snapshots persist in the V14 project format, and older V13 projects load with empty slots.

V0.71 added SHA-256-verified WebSimulator project backups and a read-only native A/B bank audit utility; these do not provide or guarantee physical FM1 recovery. See CHANGELOG.md.

What you can make

Professional editing

In the tracker while transport is stopped, hold SEQ and press the physical black OP keys: OP1 copies a lane, OP2 pastes a lane, OP3 copies the entire six-lane pattern plus recorded Punch-In FX, OP4 pastes it, OP5 Undo, OP6 Redo. SEQ + SEL opens Block Editing (K4 start, K1 end, K2 action, K3 amount, SEL apply; HOME/SEQ exit). Native Undo/Redo stores six edit actions in RAM, not on flash. A new edit after Undo discards the redo branch. The WebSimulator provides explicit buttons for the same actions. The Block Editor uses the same black/white/magenta 1-bit BEETLE styling as the tracker.

Live Mute Groups

Controls and workflow

Where Control Function
Tracker SELECT rotary Select CH1–CH6. Scrolling left from CH1 opens the recorded Punch-In-event lane; scrolling right past CH6 stops.
Tracker ALGORITHM rotary Choose from the 48 patterns when no Punch-In key is held.
Tracker K1 / K2 / K3 Select step, select cell/column, change selected value respectively.
Tracker SEL button Clear the currently selected step.
Tracker PRESET rotary Cycle the selected note cell through its note, [—] (empty), and [STP].
Tracker ENV Insert [STP] directly.
Tracker OCT− / OCT+ With the cursor on an instrument cell, decrease/increase the instrument number (0–3). Otherwise use the normal synth octave controls.
Tracker SEQ + OP1 Copy the current pattern’s entire selected lane.
Tracker SEQ + OP2 Paste that lane, including notes, instruments and step FX, into the current lane/pattern. The clipboard survives changing lanes/patterns.
Mixer GLO Open/close the mixer. Six black OP keys can mute CH1–CH6; their LEDs indicate mute.
Instrument Edit EDIT Open instrument parameters; on the next EDIT page access the drum component editor.
Song ARP Open Song Mode (not GLO double-click).
Master LFO Open the master EQ/compressor/reverb chain.
Punch-In REC / Punch-In screen Hold a Punch-In key for an effect; ALGORITHM adjusts that effect’s stored setting.
Projects SAVE / LOAD menus Work with 12 slots. A project stores patterns, instruments, mixer, drums, MASTER settings, song data and five Punch-In ALGORITHM parameters.

Keyboard octave: TRACKER and EDIT share the same octave range (−4 to +3). OCT−/OCT+ shift the live keyboard octave without transposing existing pattern notes. In EDIT, pressing both octave buttons together toggles MONO/POLY without shifting octave.

TYPE selection in EDIT: the encoders step through all nine instrument types with wraparound.

Some controls are context-sensitive. Screen labels and FM1 button names take precedence over this overview.

Punch-In FX

Each effect retains its own ALGORITHM value when released. SAVE/LOAD stores all five adjustable Punch-In settings; supported older projects open with default values where fields are missing.

Standard digital drum kit

BEETLE boots with a preconfigured digital kit, not fourteen identical generic parameter sets. Kick emphasizes low body; snare uses a brighter wire texture; closed hats have shorter tails than open hats; toms have separate tuning; crash and ride have different envelopes; clap and rim are individually shaped. You can change each component in Drum Edit and save those changes with a project. The sounds are generated in software and must still be judged through the real FM1 output.

Projects, compatibility and storage safety

Build and test

The target is the M-VAVE FM1 JieLi pi32v2 environment. The JieLi cross-toolchain is a separate prerequisite; the toolchain is not bundled.

export JIELI_TOOLCHAIN=/path/to/jieli-linux-toolchain
cd source
python firmware/fm1-native/build.py --hardware-test
python firmware/fm1-native/build.py --pilot
# Destructive storage-capable variant, experimental only:
python firmware/fm1-native/build.py --beetle-storage-lab --updater
bash tests/track/run_v085.sh

Use a known-good version of Python, a C compiler with ASan/UBSan support for host tests, and the JieLi toolchain for the target. Source releases include an audited baseline of the hardware layer and package-integrity test scripts. None of these tests substitute for physical device validation.

The documented release contains a standalone WebInstaller and .fwsc package; use a desktop browser with Web MIDI, a direct data cable, and the correct FM1 device identity. Never bypass the installer identity or hash checks.

Open-source origins, credits and licences

BEETLE is not a clean-room firmware. Parts of its low-level architecture and update pathway came from earlier open-source projects. These contributions are important and must remain credited:

  1. Felucca, by Leo Kuroshita (@kurogedelic), Hügelton Instruments — original M-VAVE FM1 hardware abstraction, startup and linker foundations, LCD, input scanning, audio and boot/OTA infrastructure used or carried forward in the ETCH/BEETLE native tree. Felucca is distributed under GPL-3.0-only. BEETLE includes a recorded SHA-256 audit for 19 preserved critical Felucca/HAL/bootstrap files in source/reference/felucca-hal-sha256.json; this proves equivalence only for the enumerated files, not that the entire application is unchanged upstream code.
  2. ETCH, by SikkenWorks — the prior SikkenWorks FM1 firmware and working ETCH V1.37 firmware container/bootloader reference on which BEETLE’s device startup and .fwsc packaging workflow were based. Some native_*, flash/OTA, UI and shared hardware support modules retain ETCH lineage; the tracker, new digital drum instruments and project workflow are BEETLE-specific additions. The protected bootloader is intentionally kept unchanged for compatibility; the loader may still display older branding. ETCH.
  3. JieLi Technology — manufacturer of the AC79-series chip, target architecture, and tooling used to compile and package firmware. The released container inherits necessary device/SDK-format material from the verified reference package. Refer to original JieLi licensing terms and the upstream Felucca licence notices; third-party toolchain binaries are not part of this repository.
  4. reSID, originally developed by Dag Lem — acknowledged for its historical and technical contribution to SID chip emulation and as an inspiration for BEETLE’s SID-style instruments. Not included as a compiled or linked dependency. reSID repository. See source/CREDITS-AND-LICENSES.md for further detail.
  5. Nes_Snd_Emu, originally developed by Shay Green (blargg), with the linked fork maintained by James Athey — NES APU emulator and technical reference for BEETLE’s three NES-style instruments: NES PULSE, NES TRIANGLE and NES NOISE. Nes_Snd_Emu is distributed under LGPL-2.1. The original Nes_Snd_Emu C++ library is not copied, compiled or linked into BEETLE; the BEETLE engine is an independent lightweight C implementation. See source/CREDITS-AND-LICENSES.md and source/LICENSES/NES-SND-EMU-LGPL-2.1.txt for reference and licence details.

Felucca’s own attribution document, preserved at source/LICENSES/FELUCCA-LICENSING.txt, identifies additional third-party projects in the broader upstream repository: DaisySP (Electrosmith / Emilie Gillet, MIT), Rings (Emilie Gillet, MIT), msfa/Dexed (Google / Pascal Gauthier, Apache-2.0), CrispyZebra, Fukiai, Inter Tight, DotGothic16, Versilian Studios VSCO-2, klattsch, and X0X. Those are upstream acknowledgments: this BEETLE target build does not claim to embed all of those engines, fonts, or audio assets. See Felucca’s corresponding source and notices for the actual upstream file-level relationships.

The enlarged two-frame pink loading artwork is derived from an image provided by the BEETLE project user. The firmware draws it in nearest-neighbour pixel scaling without an external icon-font dependency.

reSID credits and acknowledgment

reSID — original author: Dag Lem. reSID is a reverse-engineered emulation of the MOS6581 SID (Sound Interface Device), developed for Commodore 64 audio. See the original project: libsidplayfp/reSID (a mirror of VICE’s reSID), including its AUTHORS and licensing notices.

BEETLE acknowledges Dag Lem and the reSID project as an influence on its SID-inspired instrument design. BEETLE includes five SID-style instruments (SID 6581, SID 8580, SID DIRTY, SID BASS, and SID NOISE), implemented in BEETLE’s separate lightweight synth engine. BEETLE does not bundle, compile, link, or run the original reSID C++ source code. It is not cycle-accurate reSID emulation.

NES APU credits and acknowledgment

Nes_Snd_Emu — original author Shay Green (blargg); linked fork maintained by James Athey. Project and source. Its upstream licence is GNU LGPL 2.1 and a reference copy is included in source/LICENSES/NES-SND-EMU-LGPL-2.1.txt.

BEETLE’s NES PULSE, NES TRIANGLE and NES NOISE types use an independent, lightweight fixed-point C implementation in source/firmware/fm1-native/beetle_nes_apu.h, informed by NES APU behavior and the Nes_Snd_Emu technical reference. No original Nes_Snd_Emu source is embedded, copied, compiled or linked. This is a NES-inspired synthesizer, not the full original Nes_Snd_Emu emulator and not a cycle-accurate NES APU. BEETLE’s source remains GPL-3.0-only.

The full attribution and distinction between incorporated code and inspirations are documented in source/CREDITS-AND-LICENSES.md.

Source licence and distribution obligations

The included native firmware and derivatives are distributed under GNU GPL v3 only (GPL-3.0-only), preserving the licence of Felucca-derived source. The full GPL text is at source/LICENSE. If you distribute a modified BEETLE firmware, provide its complete corresponding source and all applicable copyright notices, including relevant Felucca notices. The presence of a working binary, WebInstaller or bootloader does not by itself satisfy source-offer requirements.

See source/LICENSES/FELUCCA-LICENSING.txt and copyright/SPDX headers in individual source files. For code with unclear lineage, retain the upstream notices rather than claiming exclusive SikkenWorks authorship.

Known limitations

Support

If you find a bug, include the firmware version, what you pressed, your exact project state, and (when safe) a diagnostic log. Do not share a flash image containing private material publicly. Contributions that preserve realtime audio safety, backward compatibility and upstream copyright attribution are welcome.

BEETLE — SikkenWorks. Born out of passion.

Fixes 1.01 RC1

Project Manager V1.1 · Password-free BEETLE files

The included project manager now exports and imports AES-GCM encrypted .beetle project files without requiring passwords. A shared key is bundled with the open-source web tools; protection is against casual text inspection and accidental corruption, not against determined decryption. BEETLE 1.01 RC1 WebSimulator can import native TRK1 V12–V17 files as well as its old JSON backup files and export native V17 .beetle files. Device transfer requires the experimental Project Transfer firmware, and remains physically unverified. See BEETLE-PROJECT-FORMAT-V2.md.