Independent, not affiliated with M-VAVE.
doombox-0.1.fwsc (609,657 bytes), built from AMB-1 at upstream commit 60dfbec4602497616d6a196be78e9288dc7c615a plus doombox-0.1.diff.
SHA-256: e0c7399cc0220c7eea75167eefa089542fef331d3e3462061a8de38705d4b531
To install it you still need the upstream repo's tools/fm1_install.py (see section 4). Clone charlesvestal/fm1-amb, then run python3 tools/fm1_install.py /path/to/doombox-0.1.fwsc.
This is a .fwsc package, not a raw .bin. The build did produce amb.bin inside it, but the installer takes the .fwsc.
Do not use the web installer's "Return to official V15" box for this. That box only accepts M-VAVE's own FM-1 V15 file (it checks a hash and rejects anything else, including DoomBox). The upstream web installer has no field for your own firmware files, so DoomBox installs with the command-line script instead.
pip install mido python-rtmidipython fm1_install.py --infopython fm1_install.py doombox-0.1.fwsc Answer the prompt, and do not unplug until it says it is done.Tested here only on macOS with the upstream test suite; the Windows route is untested. Keep M-VAVE's official FM-1 V15 file so you can go back.
DoomBox is the AMB-1 generative ambient firmware (github.com/charlesvestal/fm1-amb, GPL-3.0) with a dark red screen, a pentagram sigil behind the garden, and tape-style saturation on the output.
It is firmware for the M-VAVE FM-1 (JieLi chip).
The AI Studio DoomBox page's Makefile targets an ARM Cortex-M4 with arm-none-eabi-gcc and flashes with dfu-util. The FM-1 is a JieLi chip, built with JieLi's pi32v2 clang toolchain and installed over MIDI as a .fwsc package.
That page also says the browser cannot produce a real .bin.
Python is only used by the build/install helper scripts. You do not write Python.
First get the source: git clone https://github.com/charlesvestal/fm1-amb.git && cd fm1-amb && git checkout 60dfbec && git apply /path/to/doombox-0.1.diff. Run every command below from inside that folder.
Prerequisites: Python 3 with Pillow, and Docker Desktop. The JieLi toolchain is Linux x86-64 only; the build runs each tool in a linux/amd64 debian:bookworm-slim container (Rosetta on Apple silicon). Keep the source tree in a folder Docker can share, e.g. under /Users.
pip3 install Pillow
tools/get_toolchain.sh
Installs to ~/.jieli/toolchain.
AC79NN_SDK_V1.2.1_2023-12-13:
git clone --depth 1 --branch AC79NN_SDK_V1.2.1_2023-12-13 \
https://gitee.com/Jieli-Tech/fw-AC79_AIoT_SDK.git ~/fw-AC79_AIoT_SDK
The package uses three of its files: cpu/wl82/tools/uboot.boot, cfg_tool.bin, cfg/eq_cfg_hw.bin.
./build.sh
The build makes three files in build/: amb.bin (the firmware app), loader/ota.bin (the update loader), and amb.fwsc (the installable package: app + loader).
On Linux x86-64 the toolchain runs natively and Docker is not needed.
Windows is not covered by BUILDING.md. WSL2 Ubuntu may work, but it is untested.
Install the Python helper dependencies:
pip3 install mido python-rtmidi
Install the package:
python3 tools/fm1_install.py build/amb.fwsc
To check the connected FM-1 identity:
python3 tools/fm1_install.py --info
Hold OCT− and OCT+ for 5 seconds for Felucca's update mode.
At your own risk. Back up or keep the stock firmware first (M-VAVE's site).
If the FM-1 no longer starts but reaches the chip's update mode (4C4A:8057 on USB), tools/fm1_rescue.sh restores stock firmware from a Mac; otherwise recovery needs FM-1-transporter.
DoomBox 0.1 is compiled, passes the upstream test suite and simulator scenarios (one test, update-loader, was skipped because it needs the SDK path exported), but has NOT been tested on real hardware. Nobody has flashed it on a real FM-1 yet. Treat the first flash as an experiment.
DoomBox is GPL-3.0-only. Source: upstream github.com/charlesvestal/fm1-amb at commit 60dfbec plus the patch doombox-0.1.diff (palette, sigil and saturation changes only).
Derived firmware must ship source.