Firmware

MC-1

Hype: warming · 71

Original groovebox with linear-arithmetic style tones, acid lines and synthesized drums.

forM-VAVE FM-1·by@dspaudio

Unclaimed. Is this yours? Sign in with GitHub as @dspaudio to claim it.

Download v1.2.0

mc-1-1.2.0.fwsc· 596 KB· +3 files

GPL-3.0· dspaudio/mc-1·downloads come from the creator’s GitHub releases

40 commits and 5 releases in the last year

MC-1 1.2.0 - rebuilt LA-PCM engine and sound bank

A rebuilt LA-PCM engine. All 112 LA sounds replaced.

MC-1 is an original four-part groovebox for the M-VAVE FM-1. This release replaces both the LA sound-generation path and its instrument data, rather than adding a few presets. Real recorded attacks restore piano, guitar and orchestral identity; phase-coherent synthesized sustain removes the old detuned beating.

Dual-core firmware for the FM-1: CPU0 handles sequencing, controls and five melodic DSP voices; CPU1 handles three melodic voices, six drums and four shared FX banks. Version 1.2.0 replaces all 112 LA sounds with a source-backed LA-PCM engine: real recorded attacks plus phase-coherent synthesized sustain. It corrects sustain beating, restores instrument-specific attacks and separates ROOM/HALL reverb character, within the previous PCM budget. The 16 Acid sounds, synthesized drums and eight melodic voices are retained. The installer also offers the unchanged 1.0.2 single-core release. See release notes, four-bank design and device validation.

Version 1.2.0 retains readable white 6x9 small text and flowing green playback underlines only below populated tracks/drum rows. All twelve menu buttons and both OCT buttons are lit; selected menus blink at 2 Hz, and running PLAY blinks green at the sequencer BPM. HOME remains steadily lit during playback. These controls replace 1.0.2's steady PLAY indication.

Build a pattern, play a chord and shape it with the panel. MC-1 combines three melodic parts with a sixteen-lane drum part, 128 melodic presets, eight drum kits, song arrangement, arpeggiation and recorded knob movement. Its sound, sequencer, display and project format come from the same C core on the device, native host and browser emulator.

Hear the rebuilt LA-PCM engine

These are current shared-C engine renders, not FM-1 recordings. The product page includes native players, downloads and the two updated full-groove demos. Sources and licenses are documented in NOTICE.md; export settings and hashes are in the audio manifest.

Explore MC-1 · Install firmware on an FM-1 · Play the web emulator

MC-1 takes workflow inspiration from 1990s grooveboxes. It is not a Roland emulation and is not affiliated with Roland or M-VAVE. No Roland ROMs, samples, patches, logos or compatibility formats are included.

See the instrument

These are fresh renders of the actual shared C display, not interface mockups or photographs of hardware. Orange marks selection; green follows playback.

MC-1 home: four pattern rows, note pitches and playback cursor MC-1 drum grid with the selected kit, lane and hits

Pattern and drums. Follow all four parts from HOME, then edit individual hits and lane levels in the sixteen-lane drum grid.

MC-1 preset browser with sound names and category MC-1 global mixer with four part levels

Sounds and balance. PRESETS browses the sound bank or drum kits; GLOBAL MIXER keeps all four part levels together.

MC-1 FX SENDS page with four independent bank sends MC-1 FX TYPES page selecting the four shared bank algorithms

Shared effects. Each part sends independently to R/D1, C/F1, R/D2 and C/F2. ENV switches between the selected part's four sends and the four global FX types.

MC-1 arpeggiator mode, rate, octave and gate controls MC-1 song arrangement with position, pattern, repeat and length

Performance and arrangement. Turn held chords into phrases, record them, and arrange patterns into a song.

MC-1 knob automation page with event capacity and recording state MC-1 MIDI page with channels, clock source and connection status

Movement and connections. Keep knob automation with the project and route notes, controllers and clock through the supported MIDI connections.

What is included

AreaMC-1 1.2.0
Melodic soundSource-backed LA hybrid PCM with real attacks and two same-phase spectral sustain frames, or a monophonic 303-inspired saw/square engine with accent and slide
Presets112 source-backed LA patches from 17 CC0 instrument families and 16 original Acid patches, in 14 categories
DrumsEight synthesized kits, each with 16 common lane roles
Patterns64 patterns, 16 steps and four parts; three-note melodic steps; 40-240 BPM, swing, gate, accent and slide
SongsUp to 128 ordered pattern/repeat entries, 1-16 repeats each, with end stop or looping
PerformanceLive playing, queued pattern changes, part mute, six ARP modes, note recording and 384 step-quantized automation events
EffectsFour global eight-type banks (R/D1, C/F1, R/D2, C/F2), four sends per part, melodic Analog variance; master volume and stereo-linked limiter
ConnectionsUSB MIDI input/output, TRS MIDI input and stereo USB Audio output at 44.1 kHz/16-bit
DisplayShared 240x240 RGB565 renderer; device rendering uses a 240x8 strip buffer
StorageVersion 8 projects, imports versions 1–7, CRC and commit-last A/B storage in two 36 KiB banks; explicit SAVE only

Eight melodic voices are shared across the three melodic parts, with oldest-voice stealing. Six drum voices are shared across the sixteen lanes. Each Acid part is monophonic. The two R/D banks each choose one of eight delay/reverb types; the two C/F banks each choose one of eight chorus/flanger types.

No sample streaming, SD support, flash expansion, onboard BLE MIDI, TRS MIDI output, computer-to-device USB audio or USB host mode is implemented. The browser can use BLE MIDI ports already exposed by its operating system; this does not enable the FM-1's radio. See MIDI and connection limits.

Install on an FM-1

The firmware web installer belongs to this repository's GitHub Pages site. mc-1-web is only the emulator.

  1. Connect the FM-1 directly by USB and stop playback. Close other MIDI applications.
  2. Open the installer in a secure browser with Web MIDI SysEx support, such as desktop Chrome or Edge. Choose Connect FM-1 to discover the instrument automatically and read its identity; no MIDI port selection is needed.
  3. Choose 1.2.0 dual-core or 1.0.2 single-core, check the verified package, then choose Install firmware. Keep the page, USB and power connected until restart verification finishes.

The page verifies the pinned package's SHA256, CRCs, product identity and update loader before installation. It handles the loader and application stages and checks the restarted protocol identity. FM-1_900 identifies the update protocol, not the MC-1 version. If interrupted during writing, reconnect the update-loader ports and retry the same package. The release also provides a desktop installer path for browsers without Web MIDI SysEx.

A raw .app.bin is not an installer. Updating does not reformat MC-1's project banks, but it is not a backup or a saved-data verification protocol. Electrical power-loss recovery remains unverified. See the package boundary.

Downgrading is not project conversion: 1.2.0 saves format 8; 1.0.2 cannot load those saves. The firmware switch retains the project banks, but saving after a downgrade can overwrite earlier projects. Keep a compatible backup where available and do not assume the older firmware will open a newer save. Even though 1.1.0 also uses format 8, it rejects projects containing 1.2.0's new nylon-guitar PCM source (ID 40).

Runtime faults and rebooting

A CPU1 job timeout or invalid result disables the worker and recomputes its work on CPU0; heavy loads can then miss audio deadlines. CPU1 is not automatically restarted. A fatal system exception stops audio and attempts UBOOT entry after holding CPU1; if that hold cannot be confirmed, it stops audio without forcing the transition. Power cycling runs the same installed app, not an automatic rollback. A recurring startup fault can therefore return to UBOOT again.

WL80UBOOT1.00 is the ROM USB mode, not the MIDI update loader. The web installer cannot recover that mode. It needs a separate, device-verified recovery procedure; do not try a generic whole-flash/factory erase. See the installer recovery guidance and the measured recovery record.

Restore official V15

The same installer can return a working MC-1 to M-VAVE's official V15 firmware, including existing 1.0.1 installations. No intermediate firmware update is required.

  1. Download and keep M-VAVE's original V15 FM-1.fwsc from M-VAVE downloads. Do not select V14 or a renamed custom firmware.
  2. Open Restore official V15, select that file, and wait for verification. The page checks its exact SHA256, byte size and package layout locally; it does not upload or redistribute M-VAVE's firmware.
  3. Connect the FM-1, read the data-compatibility notice and acknowledge it, then choose Restore official V15. Keep the page, power and USB connected.
  4. Wait for restart verification as FM-1_015. If writing is interrupted, reopen the page, select the same official file and retry from the update loader.

MC-1 projects and patches are not usable in V15. This is firmware restoration, not a backup, project conversion or factory reset; saved-data retention is not guaranteed. The separate factory USR patch bank is not rewritten. The browser preserves the official application image and pairs it with MC-1's verified RAM update loader, so the flash head is never rewritten and the recovery-record sector stays separate from the loader.

Version 1.0.2 changes

The installer adds verified official V15 restoration, progress, restart identity checks and retry guidance. The existing small RAM loader is reused rather than relaxing firmware staging limits or flash-write boundaries. The device firmware package is byte-identical to the pinned 1.0.1 diagnostic package; this release changes the installer and release metadata, not the audio engine or project format.

Version 1.0.1 changes

Shared reverb returns are stronger, with longer HALL and PLATE tails using the existing buffers and processing stages. PLAY uses its separate green LED during playback, including PLAY + REC; the REC indicator remains independent. The lower queued-pattern duplicate is removed while the upper destination stays visible. Flash, RAM and CPU acceptance budgets are documented in Architecture and budgets.

Project format 7, eight melodic voices, six drum voices and both eight-type FX banks are retained. Existing sends are preserved; a zero send still sounds dry. New projects start with ROOM2 reverb sends of 12 / 72 / 24 / 8, giving PART2 more ambience while the other parts stay subtle. Both built-in demos enable shared reverb and chorus, with PART2's reverb send at 112. The Pages MP3 is rendered from the same FX-enabled NEON SPIRAL demo. Candidate-specific checks and hardware limits are recorded in VALIDATION.md.

Measured 1.0.0 device performance

The accepted 1.0.0 package keeps eight melodic voices plus six drums and both full shared FX banks, including actual USB Audio cold PLAY and STOP/PLAY tests.

WorkloadMeasured maximumLimit
FX-only PLATE + FLANGER, frozen-valid repeats17,621 TIMER4 ticksApproximately 21,900 ticks
Eight LA voices + six drums + PLATE/FLANGER with real USB Audio66,718 TIMER4 ticks69,648 ticks per 128-frame block

All 21 final captures record zero deadline misses and zero DMA-half changes. All six USB captures contain real nonzero stereo PCM and zero USB underruns. Ten master-ADC-changing records remain excluded from formal paired performance comparisons; they have not been relabeled as frozen-valid measurements.

Exact fixed-point division and bounded voice preparation reduce cost without removing voices, effects or processing rate. Native differential checks match PCM, MIDI and all 77,168 engine-state bytes over 17,614,272 frames. Host execution time is not evidence of device timing. The tested hash, workloads, exclusions, raw evidence and remaining limits are in VALIDATION.md.

Try it without hardware

The web emulator runs the shared C engine in an AudioWorklet with its own IndexedDB project storage. It does not install firmware or emulate the FM-1 CPU, USB Audio device or hardware timing.

For the native host, use a C11 compiler, Make and Python 3. Checked-in PCM tables make ordinary builds independent of the SDK, plugins and Python packages.

make test
make render                    # Actual sequencer and DSP -> build/demo.wav
python3 host/serve.py           # http://127.0.0.1:8091

Choose ENABLE AUDIO and PLAY / STOP, then use the panel, mouse wheel or minus/plus controls. The host panel can export/import versioned, CRC-protected .mcf projects. It binds loopback only and has no hardware access. Browser buffering means preview latency is not device latency; pause audio before closing it.

make
build/mc1-host render build/demo.wav 16
build/mc1-host preset 104 build/glass-bell.wav
build/mc1-host screen build/drums.ppm 3
build/mc1-host                 # Interactive command help

Panel and pattern workflow

ControlAction
SELECT / SELSelect melodic part 1-3 or drums
ALGORITHMSelect pattern 1-64; queue a bar-boundary change while playing
PRESETSBrowse melodic presets or drum kits; the popup closes after 500 ms idle
PLAY / RECStart/stop transport; toggle quantized recording
HOMEReturn to performance controls
ENVEdit the melodic envelope; in FX, switch SENDS / TYPES; in MIXER, switch LEVEL / PAN
FXOpen the selected part's FX sends and global type choices
ARPOpen/close the melodic arpeggiator; in GLOBAL MIXER, mute the selected part
LFOAccent, or LATCH on the ARP page; LOOP in SONG
SEQ / EDITSwitch PATTERN / SONG; toggle step entry or song editing
GLOCycle GLOBAL MIXER, GROOVE, DEMO LIBRARY, KNOB AUTOMATION, MIDI and ANALOG
OCT- / OCT+Change keyboard octave; hold both five seconds while stopped for UBOOT
SAVE twice while stoppedExplicitly save the project to the A/B banks

Slow encoder turns move one step; rapid same-direction turns accelerate larger ranges. Small choices such as parts and kits remain precise. To jump across all 64 patterns, hold OCT- and use the first four black keys to select a bank (1-16, 17-32, 33-48 or 49-64), then choose a pattern with the white keys. These chords do not play or record notes. A normal OCT- tap lowers the octave on release. Leave SONG with SEQ before using this pattern shortcut.

HOME shows note-pitch marks for up to three notes per melodic step, using a consistent range across the part's patterns. PATTERN identifies the playing pattern; NEXT identifies a queued change. Save/load messages take priority. On drums, the knobs select SOUND / STEP / HIT / LEVEL. HIT adds or removes the selected hit; LEVEL changes that sound's kit level. Keys audition/select lanes and toggle hits during step entry or recording. Melodic panel step entry writes one note; factory chords remain playable but chord step entry is not exposed. Recording uses fixed default velocity and gate, quantized to the current step.

Press GLO once for GLOBAL MIXER: its four knobs always control PART1 / PART2 / PART3 / DRUMS, regardless of selection. ENV switches LEVEL / PAN; PAN shows left/center/right positions (0 / 64 / 127). ARP mutes the selected part in either view. Muted controls are dimmed and labeled MUTE. Levels and pans are saved with the project, and PLAY + REC records their knob changes as automation.

For Acid sounds, overlap keys for legato glide. HOME's GLIDE knob controls speed; zero disables live glide. Releasing the active key returns to the highest remaining held key. Overlapping recorded destinations receive SLIDE. PLAY blinks green at the sequencer BPM; HOME stays lit during playback. Held-key LEDs coexist with the playback cursor.

Song arrangement

Press SEQ, then EDIT. The four knobs control POS / PATT / REPT / LEN. Set a length above zero, choose patterns and repeats for the entries, then press PLAY. LFO switches whole-song looping; without it, playback stops after the final entry. SEQ returns to pattern mode and stops transport. Song entries reference patterns, so a pattern edit is heard at every position that uses it. HOME -> ENV still provides ATK / DEC / SUS / REL for melodic sounds.

Shared FX

Each part has four independent 0-127 sends: R/D1, C/F1, R/D2 and C/F2. From HOME press FX. SENDS edits the selected part; ENV switches to TYPES, which selects the four banks globally. Knobs 1-4 follow that order. Zero send is dry. Pressing FX again does not open a master-effects page.

TypeR/D bankC/F bank
0ROOM1CHORUS1
1ROOM2CHORUS2
2ROOM3CHORUS3
3HALL1CHORUS4
4HALL2FB CHORUS
5PLATEFLANGER
6DELAYSHORT DLY
7PANNING DLYFB SHORT DLY

All four banks return wet signal; dry parts are mixed separately. Changing a type resets only that bank. These are original compact fixed-point effects, not emulations of Roland algorithms or specific hardware. After the sum, the master stage contains only volume and the linked limiter.

Press GLO six times from HOME for ANALOG. Knob 1 sets the selected melodic part's variance from 0-127: zero retains the original sound; larger values add bounded voice tuning variation and slow drift. Drums are excluded. PLAY + REC records amount changes as automation.

Arpeggiator and knob recording

ARP opens the selected melodic part's MODE / RATE / OCT / GATE controls. Its six active modes are UP, DOWN, UP-DOWN, ORDER, RANDOM and CHORD; OFF restores ordinary playing. Rates are quarter/eighth/sixteenth notes, octave range 1-3 and gate 1-100%. LFO toggles latch. Changing mode or latch releases the ARP notes; play again to restart the phrase. Up to 32 held notes are tracked, and CHORD uses up to three notes per step within the eight-voice and monophonic-Acid limits. Drums display an explanation instead; ARP retains the mute function in GLOBAL MIXER.

PLAY + REC writes generated ARP notes, with continuation steps for long gates. Turn REC off and release the keys to audition the recorded phrase. Sound, envelope, part levels, drum-lane levels and FX send/type movements are recorded at the current sixteenth-note step. Changes to the same parameter on the same step replace its value. Note edits, tempo/swing and ARP setup are not knob automation.

GLO four times opens KNOB AUTOMATION, showing the shared 384-event capacity, current-pattern usage and REC state. EDIT clears only the current pattern's automation. At capacity, existing events can be overwritten, but unrelated data is not replaced. Explicit SAVE retains the performance in the version 7 project. Edited sounds retain their source preset name with *; custom imported sounds without a known source display IMPORTED SOUND.

Projects and compatibility

Version 7 imports project versions 1-6 and migrates their FX to shared sends and types. R/D takes each part's larger legacy delay/reverb amount; C/F takes its modulation amount. The dominant delay/reverb source selects the mapped R/D type; the first modulation source selects C/F. Amount automation migrates to sends, and the chosen source part's type automation migrates to the global types. Legacy drive, filter and master-FX fields remain inactive compatibility data. Projects using newer recorded PCM IDs cannot load in firmware that does not know them. Earlier development flash layouts are not automatically migrated.

Device projects occupy two dedicated 36 KiB banks at 0x99000..0xAAFFF. SAVE can overwrite data another firmware left there. Boot never formats flash, and there is no autosave. Earlier MC-1 sectors 0x97000..0x98FFF, calibration, global settings, sample regions and bootloader remain outside the application write allowlist. Calibration import is not implemented.

Built-in demos and listening

While stopped, press GLO three times, choose NEON SPIRAL with knob 1, turn LOAD (knob 4) clockwise, then PLAY. Loading replaces the current RAM project; export work first. Flash changes only after explicit SAVE. NIGHT CIRCUIT restores the original pattern bank. Reloading a demo restores its original mix.

NEON SPIRAL is an original 140 BPM, 32-bar psy-trance performance with rolling bass, acid, recorded marimba, mutes, pattern changes and filter movement. It stops with FX tails. Its broad style reference is the opening Psy Trance chapter of the MC-505 demo video, not a recreation or listening-match claim.

Listening files are host renders, not device recordings or relative-loudness comparisons. WAV examples use peak-only gain to -3.01 dBFS with no external instruments or effects. The kit comparison follows the kit table, eight seconds each: four seconds of individual lanes, three seconds of groove and one of tail. The recording comparison uses note 60 for three seconds per source in manifest order. These compact mono excerpts and sustain loops are not full multisamples. Rebuild with python3 tools/showcase.py; see metrics and hashes.

Build, validation and licensing

BUILDING.md covers the official target toolchain and package boundary. ARCHITECTURE.md describes memory and data flow; VALIDATION.md records tests and hardware evidence. The accepted build uses -Os for app/HAL/IRQ and -O2 for engine/effects; whole-app -O2 is not supported.

The product site's installer files live in site/. Its package is pinned by FIRMWARE.json; python3 tools/make_site.py --out build/site retrieves and checks that public release and assembles both product and installer pages. Use --package with the exact same package for offline assembly. Node.js 22+ is required for the installer checks. Firmware binaries are release assets, not source-tree files. Installer checks run without touching hardware:

node tests/firmware-ota.mjs
node tests/firmware-install.mjs
python3 tests/site_test.py build/site

Code, original patches, compositions and mathematical assets are GPL-3.0-only. The replacement LA-PCM bank derives from CC0-1.0 recordings: six piano and three nylon-guitar zones from Meta Open Sound, plus 15 other instrument families from VSCO 2 Community Edition. Its 24 zones cover 17 instrument families in 384,240 PCM bytes. Real attacks and synthesized harmonic sustain arrays are derived from those recordings, not Roland ROMs or a GM SoundFont. See NOTICE.md, the current source/processing manifest, retained VSCO source manifest, Meta license and VSCO license. Hardware and update support derive from dspaudio/orbit, tracing to SLOOP/Felucca by Leo Kuroshita and Hügelton Instruments. Required attribution is retained; restricted upstream artwork and sample packs are excluded.

Complete factory preset list

128 melodic presets: 112 source-backed LA hybrid PCM presets from 17 real instrument families and 16 original 303-inspired Acid presets, plus eight original synthesized drum kits with 16 lanes each. These are MC-1 presets, not Roland patch data.

The official MC-505 patch listing (MC505PTC.pdf) informed broad sound families such as acid sequences, house keys and organs, voice-like tones and percussion hits. MC-1 uses original patch names and parameters; no Roland patches, ROMs or samples are copied.

All 128 names, symbolic IDs and category positions are retained. All 112 LA patch definitions are replaced, including the 48 previously mathematical synthesis patches; the 64 previously recorded presets keep their intended instrument families. The 16 Acid definitions and their source metadata, and all eight drum kits, are unchanged. Earlier LA renders are historical audio, not bit-identical examples of this bank.

Each LA sound uses a real recorded attack and two same-phase spectral sustain frames from its source family. PCM mix 127 retains the full recorded attack; the hybrid engine does not blend generic saw or square oscillators at any mix. Plucked sources use their natural per-source decay; bowed strings, organ and winds retain held sustain. Natural, one-pole soft and two-pole rounded attack colours preserve each source while distinguishing felt keys, rounded basses, breath-led winds and clear percussion. Attack contribution and ADSR articulation are tuned per preset; natural pluck decay remains independent. Held-frame evolution is level-matched instead of adding an accent or fade. Approved representative presets remain fixed while the other 106 presets are audited by category. The PCM data budget remains at most 390,144 bytes globally; source generation and engine validation establish the actual allocation.

The 17 source families are Piano, Organ, Marimba, Glockenspiel, Xylophone, Harp, Solo violin, Viola section, Cello section, Contrabass, Flute, Oboe, Clarinet, Bassoon, Trumpet, French horn and Nylon guitar (PCM IDs 24–40 in that order). Voice presets are processed woodwinds, not human vocal recordings. The names describe register and performance intent; they do not add transpose parameters, new instruments or General MIDI protocol support. These compact source-derived sounds are not full multisampled instruments, and this table is not a listening-validation claim.

The Source column identifies the actual recorded instrument. See the recording manifest for source files and processing, and the licensing and provenance.

Category index

CategoryPresetsCount
Bass001–01212
Acid013–02816
Lead029–04012
Sequence041–05010
Keys051–06010
Organ061–0688
Brass/Reed069–0768
Strings077–0826
Pad083–09412
Pluck095–10410
Mallet/Bell105–1128
Voice113–1186
Hit/Percussion119–1235
Texture124–1285
#CategorySound enginePreset nameFamilySource
001BassLA-inspiredROUND BASSBassrecorded PCM: Contrabass
002BassLA-inspiredDEEP CELLBassrecorded PCM: Cello section
003BassLA-inspiredCLUB PULSEBassrecorded PCM: Organ
004BassLA-inspiredCLICK FLOORBassrecorded PCM: Xylophone
005BassLA-inspiredWIRE PICKBassrecorded PCM: Nylon guitar
006BassLA-inspiredDUB CHAMBERBassrecorded PCM: Contrabass
007BassLA-inspiredCONTRABASS ROOTBassrecorded PCM: Contrabass
008BassLA-inspiredCONTRABASS ROUNDBassrecorded PCM: Contrabass
009BassLA-inspiredCONTRABASS SNAPBassrecorded PCM: Contrabass
010BassLA-inspiredCELLO LOW BOWBassrecorded PCM: Cello section
011BassLA-inspiredCELLO BASS PULSEBassrecorded PCM: Cello section
012BassLA-inspiredBASSOON ROOTBassrecorded PCM: Bassoon
013Acid303-inspiredACID SAWBass / leadoriginal synthesis
014Acid303-inspiredSQUARE RUBBERBass / leadoriginal synthesis
015Acid303-inspiredHIGH VOLTAGELeadoriginal synthesis
016Acid303-inspiredSOFT STEPLeadoriginal synthesis
017Acid303-inspiredRESONA BASSBassoriginal synthesis
018Acid303-inspiredLIQUID STEPBassoriginal synthesis
019Acid303-inspiredBRIGHT COILLeadoriginal synthesis
020Acid303-inspiredHOLLOW REEDLeadoriginal synthesis
021Acid303-inspiredNEEDLE LINELeadoriginal synthesis
022Acid303-inspiredBUBBLE RUNSequenceoriginal synthesis
023Acid303-inspiredVELVET MONOLeadoriginal synthesis
024Acid303-inspiredRAZOR MONOLeadoriginal synthesis
025Acid303-inspiredACID RIBBONBass / leadoriginal synthesis
026Acid303-inspiredCOIL WALKAcid sequenceoriginal synthesis
027Acid303-inspiredSQUELCH GRIDAcid sequenceoriginal synthesis
028Acid303-inspiredRUBBER CHASEAcid sequenceoriginal synthesis
029LeadLA-inspiredVECTOR LEADLeadrecorded PCM: Trumpet
030LeadLA-inspiredWIDE SAWLeadrecorded PCM: Solo violin
031LeadLA-inspiredSOFT PIPELeadrecorded PCM: Flute
032LeadLA-inspiredPOLY CHROMEPoly synthrecorded PCM: Trumpet
033LeadLA-inspiredTRUMPET LEADLeadrecorded PCM: Trumpet
034LeadLA-inspiredHORN SOLOLeadrecorded PCM: French horn
035LeadLA-inspiredFLUTE LEADLeadrecorded PCM: Flute
036LeadLA-inspiredFLUTE SOFT ARCLeadrecorded PCM: Flute
037LeadLA-inspiredOBOE BRIGHTLeadrecorded PCM: Oboe
038LeadLA-inspiredOBOE SOLOLeadrecorded PCM: Oboe
039LeadLA-inspiredCLARINET ARCLeadrecorded PCM: Clarinet
040LeadLA-inspiredCLARINET BRIGHTLeadrecorded PCM: Clarinet
041SequenceLA-inspiredSEQUENCE KEYSequencerecorded PCM: Piano
042SequenceLA-inspiredSPARK SEQSequencerecorded PCM: Glockenspiel
043SequenceLA-inspiredRATCHET PLUCKSequencerecorded PCM: Nylon guitar
044SequenceLA-inspiredPIANO STEPSSequencerecorded PCM: Piano
045SequenceLA-inspiredMARIMBA RUNSequencerecorded PCM: Marimba
046SequenceLA-inspiredGLOCK GRIDSequencerecorded PCM: Glockenspiel
047SequenceLA-inspiredXYLO WALKSequencerecorded PCM: Xylophone
048SequenceLA-inspiredHARP PATTERNSequencerecorded PCM: Harp
049SequenceLA-inspiredCLARINET GATESequencerecorded PCM: Clarinet
050SequenceLA-inspiredVIOLIN PULSESequencerecorded PCM: Solo violin
051KeysLA-inspiredHAMMER KEYKeysrecorded PCM: Piano
052KeysLA-inspiredSOFT TINESKeysrecorded PCM: Glockenspiel
053KeysLA-inspiredCLAVI CLICKKeysrecorded PCM: Nylon guitar
054KeysLA-inspiredVELVET CHORDHouse keysrecorded PCM: Piano
055KeysLA-inspiredAMBER PIANOKeysrecorded PCM: Piano
056KeysLA-inspiredPRISM KEYKeysrecorded PCM: Glockenspiel
057KeysLA-inspiredPIANO FELTKeysrecorded PCM: Piano
058KeysLA-inspiredPIANO BRIGHTKeysrecorded PCM: Piano
059KeysLA-inspiredPIANO ROOMKeysrecorded PCM: Piano
060KeysLA-inspiredPIANO SHORTKeysrecorded PCM: Piano
061OrganLA-inspiredDRAWBAR KEYOrganrecorded PCM: Organ
062OrganLA-inspiredPERC ORGANOrganrecorded PCM: Organ
063OrganLA-inspiredCELLAR ORGANHouse organrecorded PCM: Organ
064OrganLA-inspiredORGAN MELLOWOrganrecorded PCM: Organ
065OrganLA-inspiredORGAN CHAPELOrganrecorded PCM: Organ
066OrganLA-inspiredORGAN PERCOrganrecorded PCM: Organ
067OrganLA-inspiredORGAN FULLOrganrecorded PCM: Organ
068OrganLA-inspiredORGAN BRIGHTOrganrecorded PCM: Organ
069Brass/ReedLA-inspiredREED STACKReedrecorded PCM: Oboe
070Brass/ReedLA-inspiredBRASS BLOCKBrassrecorded PCM: Trumpet
071Brass/ReedLA-inspiredSOFT HORNSBrassrecorded PCM: French horn
072Brass/ReedLA-inspiredTRUMPET SECTIONBrass/Reedrecorded PCM: Trumpet
073Brass/ReedLA-inspiredHORN MELLOWBrass/Reedrecorded PCM: French horn
074Brass/ReedLA-inspiredBASSOON REEDBrass/Reedrecorded PCM: Bassoon
075Brass/ReedLA-inspiredTRUMPET FANFAREBrass/Reedrecorded PCM: Trumpet
076Brass/ReedLA-inspiredHORN LOWBrass/Reedrecorded PCM: French horn
077StringsLA-inspiredSTRING VEILStringsrecorded PCM: Viola section
078StringsLA-inspiredVIOLIN BOWStringsrecorded PCM: Solo violin
079StringsLA-inspiredVIOLA CHAMBERStringsrecorded PCM: Viola section
080StringsLA-inspiredCELLO ENSEMBLEStringsrecorded PCM: Cello section
081StringsLA-inspiredVIOLIN SILVERStringsrecorded PCM: Solo violin
082StringsLA-inspiredCONTRABASS BOWStringsrecorded PCM: Contrabass
083PadLA-inspiredSILK PADPadrecorded PCM: Viola section
084PadLA-inspiredSLOW HALOPadrecorded PCM: French horn
085PadLA-inspiredBELL CLOUDPadrecorded PCM: Glockenspiel
086PadLA-inspiredDUSK SCREENPadrecorded PCM: Cello section
087PadLA-inspiredAIR CHAMBERPadrecorded PCM: Flute
088PadLA-inspiredPIANO CLOUDPadrecorded PCM: Piano
089PadLA-inspiredORGAN HORIZONPadrecorded PCM: Organ
090PadLA-inspiredVIOLIN HALOPadrecorded PCM: Solo violin
091PadLA-inspiredVIOLA VEILPadrecorded PCM: Viola section
092PadLA-inspiredCELLO WARM PADPadrecorded PCM: Cello section
093PadLA-inspiredFLUTE AURORAPadrecorded PCM: Flute
094PadLA-inspiredHORN SLOW PADPadrecorded PCM: French horn
095PluckLA-inspiredNYLON PLUCKPluckrecorded PCM: Nylon guitar
096PluckLA-inspiredTHUMB PLUCKPluckrecorded PCM: Nylon guitar
097PluckLA-inspiredWIRE ZITHERPluckrecorded PCM: Harp
098PluckLA-inspiredHARP BRIGHTPluckrecorded PCM: Harp
099PluckLA-inspiredHARP RAINPluckrecorded PCM: Harp
100PluckLA-inspiredHARP MELLOWPluckrecorded PCM: Harp
101PluckLA-inspiredHARP THREADPluckrecorded PCM: Harp
102PluckLA-inspiredPIANO PLUCKPluckrecorded PCM: Piano
103PluckLA-inspiredMARIMBA PLUCKPluckrecorded PCM: Marimba
104PluckLA-inspiredXYLO PLUCKPluckrecorded PCM: Xylophone
105Mallet/BellLA-inspiredGLASS BELLBellrecorded PCM: Glockenspiel
106Mallet/BellLA-inspiredWOOD MALLETMalletrecorded PCM: Marimba
107Mallet/BellLA-inspiredGLASS TINESMalletrecorded PCM: Glockenspiel
108Mallet/BellLA-inspiredGLOCK BELLMallet/Bellrecorded PCM: Glockenspiel
109Mallet/BellLA-inspiredMARIMBA HOLLOWMallet/Bellrecorded PCM: Marimba
110Mallet/BellLA-inspiredGLOCK DROPSMallet/Bellrecorded PCM: Glockenspiel
111Mallet/BellLA-inspiredXYLO BARMallet/Bellrecorded PCM: Xylophone
112Mallet/BellLA-inspiredMARIMBA ROUNDMallet/Bellrecorded PCM: Marimba
113VoiceLA-inspiredVOWEL CHIMEVoice-likerecorded PCM: Oboe
114VoiceLA-inspiredBREATH STACKVoice-likerecorded PCM: Flute
115VoiceLA-inspiredCHOIR FLICKVoice-likerecorded PCM: Clarinet
116VoiceLA-inspiredFLUTE CHOIRProcessed woodwindrecorded PCM: Flute
117VoiceLA-inspiredOBOE VOWELProcessed woodwindrecorded PCM: Oboe
118VoiceLA-inspiredCLARINET VOICEProcessed woodwindrecorded PCM: Clarinet
119Hit/PercussionLA-inspiredCHORD STABStabrecorded PCM: Piano
120Hit/PercussionLA-inspiredBRASS IMPACTHitrecorded PCM: Trumpet
121Hit/PercussionLA-inspiredTIMBER HITPercussionrecorded PCM: Xylophone
122Hit/PercussionLA-inspiredTUBE STRIKEPercussionrecorded PCM: Glockenspiel
123Hit/PercussionLA-inspiredTRUMPET HITHit/Percussionrecorded PCM: Trumpet
124TextureLA-inspiredORBITAL MTTexturerecorded PCM: French horn
125TextureLA-inspiredMETAL RAINTexturerecorded PCM: Glockenspiel
126TextureLA-inspiredSPACE SHARDTexturerecorded PCM: Glockenspiel
127TextureLA-inspiredDIGITAL MISTTexturerecorded PCM: Flute
128TextureLA-inspiredVIOLA DRIFTTexturerecorded PCM: Viola section

Drum kits

Each kit keeps the same 16 lane roles below and supplies its own original pitch, noise, sweep and decay recipe. Kits share six drum voices; 128 lane variations do not imply 128 simultaneous voices.

#Kit nameCharacter
01BASE 808Original default kit: deep kicks, noise snares, hats, cymbals and pitched percussion.
02CLUB 909Higher kick tuning, stronger pitch sweep and more noise in the snares for club grooves.
03TIGHT 606Higher tuning and shorter decays for compact, tight drum patterns.
04VINTAGELower tuning, gentler sweeps and reduced snare noise for a softer vintage character.
05HOUSELonger kick, open-hat and clap decays for house grooves.
06BREAK JUNGLEBright tuning, pronounced sweeps and noisy snares for breakbeat and jungle patterns.
07IRON WORKSLow tuning, long decays and strong pitch sweeps for heavy metallic textures.
08ELECTRO LATINHigh tom and percussion tuning with shorter clicks for electro and Latin patterns.

Listen to all eight kits: 64 seconds in the table order, eight seconds per kit. Each segment plays all 16 lanes during the first four seconds, then a three-second groove and one second of tail.

Drum laneSound enginePreset name
01Original drum synthesisKICK
02Original drum synthesisSNARE
03Original drum synthesisCLOSED HAT
04Original drum synthesisOPEN HAT
05Original drum synthesisCLAP
06Original drum synthesisLOW TOM
07Original drum synthesisKICK 2
08Original drum synthesisRIMSHOT
09Original drum synthesisSNARE 2
10Original drum synthesisHIGH TOM
11Original drum synthesisCRASH
12Original drum synthesisRIDE
13Original drum synthesisSHAKER
14Original drum synthesisCOWBELL
15Original drum synthesisCLAVES
16Original drum synthesisMID TOM

Release history

These notes describe earlier releases; 1.0.0 replaces their per-track/master FX with the shared banks documented above.

Added in 0.3.0

  • Separate PATTERN and SONG screens. Arrange up to 128 song entries, each selecting one of 64 patterns and 1–16 repeats, with optional whole-song looping.
  • Song order, repeats, loop and MIDI channel/clock settings are saved with the project.
  • USB MIDI input/output and TRS MIDI input connect external notes, controllers and transport to the shared engine. The web emulator provides Web MIDI input/output port selection.
  • Stereo USB Audio output sends the final master mix to a computer at 44.1 kHz, 16-bit, alongside USB MIDI. It follows the master volume; computer-to-device audio and USB host mode are not implemented.
  • FM-1 BLE radio support is not implemented. The official SDK requires Bluetooth controller/host, RTOS and RF integration absent from this bare-metal firmware. An OS-connected BLE MIDI port may be usable through the web emulator's ordinary Web MIDI selector; that does not enable the FM-1 radio.

See MIDI messages, connections and BLE integration limits.

To arrange a song, press SEQ, then EDIT. The four knobs select POS / PATT / REPT / LEN. Set LEN above zero, choose a pattern and repeat count for each entry, then press PLAY. LFO toggles whole-song looping; without looping, playback stops after the last entry. SEQ returns to pattern mode and stops transport. Song arrangement does not duplicate pattern notes: editing a pattern updates every song entry that references it. Melodic HOME → ENV still exposes ATK / DEC / SUS / REL.

Added in 0.2.0

  • Every project supports 64 patterns × 4 parts × 16 steps. ALGORITHM selects 1–64 and queues changes at the next bar during playback; fast turns accelerate pattern browsing.
  • Patterns 5–64 start empty. Both built-in demos keep their original four-pattern arrangements, sounds and relative mix.
  • Recording and the shared 384-event automation pool address all 64 patterns, including track and master FX on pattern 64.
  • Project format 5 stores the full bank. Device saves use two 36 KiB banks in 0x99000..0xAAFFF; the previous development version's flash saves are not automatically migrated.
  • Final output gain is six times the previous level (+15.56 dB) with a stereo-linked peak limiter. The web master starts at full level. Gain is applied after the effects, preserving their input levels and the track balance.
  • GLO → GROOVE exposes METRO OFF / ON on knob 4. When enabled, a quarter-note click with an accented downbeat plays only during PLAY + REC; the setting is saved in the project.

Added in 0.1.4

  • Four delay types, four reverb types, four drive types and three modulation types, plus independent HPF/LPF on every track and the master.
  • Six arpeggiator modes with rate, octave, gate and latch controls; PLAY + REC writes the generated notes into the sequencer.
  • PLAY + REC also records sound, level and FX knob motion as step automation (384 events per project). Modified patches retain their original preset name with *.
  • Bright green shows active playback and enabled ARP; orange remains the selection color.
  • Turn encoders slowly for single steps; rapid same-direction turns accelerate larger parameter ranges. Parts, kits and other small choices remain precise.
  • Turning PRESETS opens a seven-row sound or drum-kit list. The sound changes immediately; the list closes 500 ms after the last turn or when another control is used.

Added in 0.1.3

  • 128 melodic presets in 14 contiguous families: the previous 64 original synthesis patches plus 64 patches using 16 real instrument recordings from CC0 VSCO 2 Community Edition. The full list and source of each sound appear below.
  • The previous 64 names and sound parameters are preserved; their display numbers change with the new ordering. Existing saved projects contain the actual patch and keep their sounds.
  • The home screen shows the preset family and number. PRESETS browsing starts from an exact match to the current patch after loading; customized sounds retain the last browser position.
  • Both built-in demos and all existing listening files retain their exact audio. Version 3 project format, 24 original attack waveforms and eight drum kits remain unchanged. New recorded patches use PCM mix 127 by default; lowering it blends in the oscillator.
  • Earlier saved projects retain their sounds. Projects using new PCM IDs 24–39 cannot load in older firmware, whose validator rejects those IDs.

Added in 0.1.2

  • 64 melodic presets and 24 original mathematical PCM attacks, adding acid sequences, house organ and keys, voice-like tones and percussion hits. The first 48 preset definitions and first 12 attacks are preserved.
  • Eight original drum kits, each with 16 lanes. BASE 808 retains the original drum recipe; the other kits vary pitch, noise, sweep and decay.
  • Independent DELAY / REVERB / DRIVE / CHORUS amounts for each melodic part and the drum track, alongside the master effects.
  • ALGORITHM selects patterns on every part; PRESETS selects melodic sounds or drum kits. Project version 3 saves kits and track effects while importing version 1 and 2 projects.