
Melodee
Peaking97/100Custom synth and sequencer firmware.
forM-VAVE FM-1·by@keremimo
Unclaimed. Is this yours? Sign in with GitHub as @keremimo to claim it.
melodee-1.5.1.fwsc· 596 KB· +8 files
GPL-3.0· keremimo/melodee·keremimo.github.io/melodee/·downloads come from the creator’s GitHub releases
v1.6.0-rc.7Melodee 1.6.0-rc.7Beta10 files
Melodee 1.6.0-rc.7
Seventh release candidate for 1.6. Stable remains 1.5.1. This candidate fixes two bugs from earlier candidates: a song started from a later row played a burst of earlier recorded notes, and the dim key lights shimmered. Everything else is as in rc.6; see the rc.6 notes for its features and the rc.5 notes for the baseline.
Fixes
- Song playback from a later row. Starting a song from any row but the first fired every recorded note of the rows before it at once, heard as a burst of random notes. Recorded notes that ended before the starting point now stay silent; a note still held at the starting point plays from there. Starting from the first row, loop wraps and the step grid were not affected.
- Dim key lights. The dim LEDs shimmered from boot on, at every LIGHTS level. Since timed punch FX grew the song's data, the song's change check held the LED timer back on every UI pass; it now runs with interrupts on.
Compatibility and limits
- Export projects before downgrading. As in rc.6, a project saved with a pattern preset uses the FBKQ format, which rc.5 and earlier cannot load. Projects from rc.6 load unchanged.
- The storage, resource-region and backup notes of rc.5 still apply.
Validation and downloads
The release uses the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication; the song test now covers starting from a later row. The LED fix was measured on one FM-1: late LED timer ticks fell from about 86 a second to one in 16 seconds. Song playback from a later row still needs a listen on hardware, as do rc.6's pending checks: the CR78 and FM kits' levels by ear, pattern-preset switching during playback and song sections, and note-length edits while playing.Downloads include dual-core firmware, application binary, the resource file (
melodee-1.6.0-rc.7-res.bin), native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS.gh attestation verify melodee-1.6.0-rc.7.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.7See licensing for retained third-party notices and attribution.
v1.6.0-rc.6Melodee 1.6.0-rc.6Beta10 files
Melodee 1.6.0-rc.6
Sixth release candidate for 1.6. Stable remains 1.5.1. This candidate adds two drum kits, a preset for each pattern, note editing while the sequence plays, range and copy PITCH edits, pattern copy to another track, nearest-degree SNAP for microtonal scales and OCTAVE as a SELECT choice. MASTER now sets the final output level and CLICK LEVEL its own. USB HOST finds audio+MIDI devices and the second chip of two-chip hubs. Earlier 1.6 features remain included; see the rc.5 notes for that baseline.
CR-78 and FM drum kits
- KIT CR78: a late-1970s preset rhythm box after the CompuRhythm CR-78's voice list, built from the 808's circuit pieces. A round low kick, a papery snare, a noise hi-hat, tambourine, cowbell, conga, bongos, claves, maracas and its METAL BEAT (HATS METAL plays it on the two hat lanes). The sounds are designed after the box, not measured from a unit; the box had no toms or clap, so TOMS are the conga tuned down and CLAP is the tambourine.
- KIT FM: two-operator FM drums with noise, the clap as noise bursts.
- Both play all eight lanes on one voice, like the SID kit. Their levels are balanced by measurement and may still be tuned by ear.
A preset for each pattern
- PATTERNS' sheet has Set preset and Remove preset: a pattern can carry its own sound. Playback resolves Song section preset > Pattern preset > the track's sound; switching patterns, queued switches included, changes the sound with them, and STOP returns to the track's sound.
- Pattern copy, delete and undo keep each pattern's preset with it.
Note editing while playing
- On SEQ > NOTES, KNOB 3 edits a grid note's length (quarter steps, sixteenths with ENV held) while the sequence plays instead of asking to stop. The first turn on a grid note while playing cannot be undone; later turns can.
- While the sequence plays and the track is not armed, the keys and MIDI on NOTES only play: nothing is entered into the cursor step. Arm REC to record live; stop to enter notes step by step.
PITCH edits on NOTES
- KNOB 2 PITCH on an empty step only says SELECT A NOTE; it no longer places a note. Each PITCH turn previews the new pitch (a range only when its notes share one step).
- PITCH works on a selected range, in the range's Move or Copy mode: the shift keeps the intervals and stops at the first note that reaches the edge. With Copy armed, the copy is made in place and the copy is pitched. One run of turns is one undo.
Pattern copy to another track
- PATTERNS > Copy to: a track's KNOB moves the target to that track's row, and ALGORITHM picks any track, past the four shown. OCT+ pastes. Steps, timing and recorded notes are copied; motion only between tracks of the same engine. The target keeps its own sound.
- PATTERNS shows its sixteen patterns as two pages of eight, with the old cells.
Microtonal SNAP
- QNT SNAP now picks the nearest scale degree (a tie takes the lower one) instead of the one below. In EDOs almost no key lands on a degree, so most keys used to come out flat: in 19EDO, F played the 442-cent E# instead of the 505-cent fourth. Contributed by gabo_tor (PR #93). 12-tone SNAP is unchanged and recordings keep their stored degrees.
OCTAVE on SELECT
- Settings > HOME SELECT and GLO SELECT offer OCTAVE: SELECT moves the keys' octave one per detent (−3…+3, as OCT−/OCT+ on Stage), said in the header. On an MPC track it moves that track's own octave. Saved choices keep their meaning.
USB HOST
- Devices that are more than MIDI, such as an audio interface or a sampler with MIDI (tested with an Akai MPC Sample), are found: the whole USB configuration is read as it arrives instead of its first 320 bytes.
- A device on a hub that sits on another hub's port is found. Many hubs are two hub chips in one case, with most sockets on the second.
- A hub that answers late after a bus reset gets longer resets, up to 1.6 s of recovery, while nothing answers at all.
- The FM-1 cannot put 5 V on the USB-C cable: a direct USB-C link to a self-powered device does not connect. Use a powered hub or a powered OTG adapter.
MASTER, CLICK and other fixes
- MASTER is applied once, to the finished output after punch FX and the limiter, so a sounding tail follows the knob too.
- CLICK LEVEL is set in percent and no longer follows MASTER. The default, 12 %, matches the old MID at the default MASTER.
- GLO mute cuts sounding notes with the same short ramp as solo.
- The codec stays muted until boot is done, so a cold boot no longer clicks.
- The web installer shows the resource file's result and adds Finish setup.
- The web site keeps a channel's resource file when it re-reads the channel.
- The host test runner calls Python through
$PYTHON, asbuild.shdoes (Charles Vestal, PR #81). - A web emulator build (David Konsumer, PR #53) is published from nightly to the
site's
emu/; it is a development preview, not part of the release downloads.
Compatibility and limits
- Export projects before downgrading. A project saved with a pattern preset uses the new FBKQ format, which earlier firmware (rc.5 included) cannot load. Projects without pattern presets still save as FBKP. Every earlier format loads here.
- The storage, resource-region and backup notes of rc.5 still apply.
Validation and downloads
The release uses the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication. Physical validation is pending for the CR78 and FM kits' levels by ear, pattern-preset switching during playback and song sections, and note-length edits while playing on hardware. USB HOST was checked on one FM-1 with an MPC Sample on a two-chip powered hub; other hubs and devices are untested.Downloads include dual-core firmware, application binary, the resource file (
melodee-1.6.0-rc.6-res.bin), native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS.gh attestation verify melodee-1.6.0-rc.6.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.6See licensing for retained third-party notices and attribution.
v1.6.0-rc.5Melodee 1.6.0-rc.5Beta10 files
Melodee 1.6.0-rc.5
Fifth release candidate for 1.6. Stable remains 1.5.1. This candidate adds 16 patterns on the synth tracks, replaces the four fixed project slots with a shared storage pool of 32 projects, restores the Rubik font, and lets the Bluetooth radio calibrate itself. Earlier 1.6 features remain included; see the rc.4 notes for that baseline.
16 patterns on the synth tracks
- Tracks 1–4 have 16 patterns; the MIDI-only tracks 5–8 keep 8.
- With PATTERNS open or SEQ held, all 16 white keys (F3–G5) select patterns 1–16 directly: no pages. On a MIDI-only track the first eight white keys are active. The black keys keep track selection and the half/double dialog.
- PATTERNS shows all 16 on each synth track's row (narrower cells, numbered every fourth), 8 on each MIDI-only track's row. The Stage, dialogs, song blocks and knobs count to 16 (or 8) as well.
- SONG sections can use patterns 9–16 on the synth tracks.
- A project can hold what its save can: an edit that would not fit is refused with PATTERN STORAGE FULL, so the music can always be saved. About 1,450 set steps fit across all of a project's patterns (a 16-hit drum pattern uses 136 bytes of the room).
Projects: one shared storage pool
- 32 projects instead of four fixed slots. An empty slot occupies nothing; a project occupies what it holds: empty 256-byte pages are not stored, so a typical project takes about two sectors instead of eight.
- Project and preset storage share one pool of 79 sectors. Each preset bank is stored once, with one shared spare sector, instead of twice. An unused bank frees its space for projects. A save writes the new copy into free sectors and commits its header last, so an interrupted save leaves the previous version.
- The project list numbers its slots 01–32; the card shows the room left in KB. BOOT offers slots 1–32; hold SAVE, autosave and the template work as before.
- Erase frees the slot's space: every saved copy is removed, the oldest first.
- When the pool is full a save says STORAGE FULL; erase a project to make room. Projects saved by earlier firmware keep their full size until saved again.
Rubik, factory sounds and the radio program as resources
- The Rubik font and the FONT choice are back.
- Rubik, the Prophet, CZ and FM6 factory sounds and the Bluetooth radio program
move out of the application into a resource region in data flash. The web
installer (and
tools/fm1_install.py) writes it right after the firmware. This leaves room in the application for future synths and kits. - Until the resources are written the FM-1 uses Melodee Pixel, INIT sounds for factory presets, and refuses to start the radio with FINISH SETUP IN WEB APP. A code-only update keeps resources whose content has not changed.
Bluetooth radio calibration
- When no stored radio calibration exists, the radio now measures its own at
start (JieLi's AC79 SDK calibration rewritten in C by Charles Vestal, PR #90),
instead of showing NO CAL. A calibration restored from the unit's own backup
(
tools/ble_calibration.py) still replaces the measurement. - The separate SDK calibration helper and its web recovery page are removed.
Compatibility and limits
- Export projects before downgrading. Older firmware cannot read the shared pool, compact project records or the new FBKP project format, and may overwrite their sectors. Projects of every earlier format still load here, songs included; patterns 9–16 start empty. A dense older project that does not fit the new format is saved in its earlier format while patterns 9–16 stay unused.
- Backups now list 57 objects (32 projects). Older archives restore; archives from this candidate are refused by older firmware before anything is written.
- The resource region must be written after updating; returning to stock firmware erases it.
- Audio working memory is 92.4 KB (was 114.3 KB): every stored pattern keeps room to be completely full in RAM. Very heavy setups may now find less room.
- The web editor's pattern view still shows eight patterns; its project command still addresses slots 1–4.
Validation and downloads
The release uses the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication. Physical validation is pending for the shared storage pool (power cuts, flash latency), the resource region install, 16-pattern editing and playback, and the radio's self-calibration on more units.Downloads include dual-core firmware, application binary, the resource file (
melodee-1.6.0-rc.5-res.bin), native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS.gh attestation verify melodee-1.6.0-rc.5.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.5See licensing for retained third-party notices and attribution.
v1.6.0-rc.4Melodee 1.6.0-rc.4Beta10 files
Melodee 1.6.0-rc.4
Fourth release candidate for 1.6. RC.3 was stopped as an unpublished draft. Stable remains 1.5.1. This candidate adds section-local sound copies, improves song punch editing, and changes project storage and the firmware font. Earlier 1.6 arrangement and Bluetooth features remain included; see the rc.2 notes for that baseline.
A different preset for one complete pattern block
- While stopped in SONG, select the section with KNOB 1 and track with KNOB 2, then OCT+ > Set preset. Use the normal preset browser to audition sounds. OCT+ saves a sound copy across the whole selected block; OCT− cancels. Leaving the browser also restores the normal track sound.
- Each assignment saves an independent copy of the sound, including its native FM6, CZ, Prophet or drum patch. Later edits or overwrites in the preset library do not change the song. Remove preset clears the whole block.
- The sound follows the complete selected pattern occurrence, including its continued sections and repeats. A 64-step block spanning four 16-step sections keeps the preset for all 64 steps. Selecting inside a block changes that whole block; another occurrence of the same note pattern stays independent.
- Unassigned blocks and STOP restore the track's normal sound. Growing a block extends its sound assignment; trimming clears it from the removed sections. Earlier assignments stored only at a block start inherit through continuations.
- Continued sections keep held notes and automation without reloading the preset at each section edge. Changing between block sounds releases the old sequence notes. Mix, FX routing, scale, arp, notes and timing remain track-owned.
- Cell and section copy/move, duplication, deletion, undo, project saves and backups preserve sound assignments. The shared header names the selected assignment, with transport and LOOP statuses retaining priority.
- Up to 64 distinct sound copies can be retained in project/edit memory, subject to available RAM and the existing project-save size limit. Tracks 5–8 remain MIDI-only. Section changes copy prepared RAM; they do not read preset storage.
Visual song punch FX editing
- Tap FX on SONG to open the selected section's punches directly, or use OCT+ > Punch FX. Holding FX keeps the live punch layer.
- Keys choose effects silently. KNOB 1 follows the same physical key order, KNOB 2 selects one of four punch slots, KNOB 3 moves START, and KNOB 4 sets END. Both positions are one-based step numbers: START 5 / END 8 includes steps 5 through 8. OFF removes the selected punch; EDIT also removes it.
- Four lanes show effect names, timing and selection, with a playhead during audition. SELECT browses sections; OCT+ selects the next free punch slot.
- SONG draws effect-coloured spans within the pattern blocks. Pattern labels and selection outlines remain visible. The footer keeps song position/progress, and the shared header keeps its normal transport context during saved punches.
- Punch timing, section repeats, overlap priority, live-key overrides and song undo retain the earlier candidate's behavior. Edits remain stopped-only.
Project-save storage and firmware headroom
- The existing 56 project sectors form a shared pool. Each of the four project slots owns one committed record; common free sectors provide save workspace. A save writes and verifies the complete replacement before publishing its commit header and making the old record's sectors reusable.
- Maximum storage payload per project grows from 27,904 to 41,888 bytes. This provides storage headroom; musical/project-format limits are unchanged: eight patterns per track, 64 steps per pattern and 1,024 shared recorded notes.
- Legacy fixed A/B project records remain readable. The first save migrates only that slot. Settings and preset banks keep their existing A/B protection. App, boot, loader, settings, preset and key/MAC boundaries remain unchanged.
- Firmware now uses Melodee Pixel throughout, including icon numerals. The FONT menu is removed and old font preference bits are ignored. Historical Rubik design sources and their licence notices remain in the repository.
Compatibility and limits
- Export projects before downgrading. Older firmware understands only fixed A/B project locations and cannot read project saves migrated into the pool. A stock firmware round trip does not guarantee project preservation.
- Songs with sound assignments use the versioned FBKO container. Older firmware cannot read it. Projects without assignments retain the applicable earlier container; existing supported projects load without sound overrides.
- FBKO includes immutable sound copies alongside the arrangement and punch data. Copying a sound assignment shares its immutable song copy; replacing one cell leaves other cells unchanged. Oversized saves report PROJECT FULL before replacing the previous committed save; notes are never truncated to fit.
- The web editor can back up and restore FBKO. Sound assignments and timed punches are edited on the device; replacing the whole arrangement through the existing web arrangement command clears this section-local metadata.
- The nightly Bluetooth test launcher accepts compiler commands with flags; all 19 sanitizer fixtures were checked with the nightly optimization switches.
- MIDI port discovery also includes the FM-1 naming and truncated engine-name handling fixes delivered after the rc.2 tag.
Validation and downloads
The release uses the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication. Firmware/app attestations, source tag/commit, matching application bytes, all four native recovery archives and checksums must pass before the draft is published. Only the candidate installer channel changes; stable 1.5.1 and its manual remain available.Automated coverage includes section sound selection/cancellation, native patches, library overwrite independence, 64-step block playback/interior starts, resize/undo and STOP restoration, motion bases, undo, project/flash-stream/backup round trips, malformed sound references, punch editing and playback, shared-pool save interruption/migration and region guards, reference audio, resource/stack budgets and screen layouts. Focused section-preset tests also run with address/undefined-behavior sanitizers.
Physical validation remains pending for section sound transitions, sustained audio/MIDI timing and the shared storage pool's power-cut/flash-latency behavior. Bluetooth interoperability limits from the earlier candidate still apply. Build provenance and automated checks do not establish those hardware behaviors.
Downloads include dual-core firmware, application binary, Bluetooth calibration helper, native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,
BUILD_INFO.jsonandSHA256SUMS.gh attestation verify melodee-1.6.0-rc.4.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.4See licensing for retained third-party notices and attribution.
v1.6.0-rc.2Melodee 1.6.0-rc.2Beta10 files
Melodee 1.6.0-rc.2
Second release candidate for 1.6, adding timed master punch FX to song sections alongside the song-arrangement and Bluetooth work since 1.5.1. This is a prerelease; stable remains 1.5.1.
New since rc.1: timed punch FX
- SONG > OCT+ > Punch FX opens the selected section's master FX lane. Add up to four punches per section, choosing any of the 27 SLOOP effects, a start step and a length. KNOB 2 selects the field; KNOB 1 changes its value. Effect Off removes a punch; Clear section FX removes all four and can be undone.
- Place punches at whole-step positions. Timing follows track 1's pattern division and swing; resting and continued sections use 16 straight sixteenth steps. Every section repeat replays the punches, including a full-section punch. Placement between steps and live recording of FX keys are not included.
- Punches affect the complete master mix and are saved per song section. Using the same note pattern in another section leaves that section's FX independent. Section copy, duplicate, move, delete and undo include the punches; a single track's cell copy/move changes only its note-pattern reference.
- Overlapping punches use the latest start; the later punch slot breaks ties. An earlier punch resumes if its duration remains. Holding a live FX key temporarily overrides the song lane until that key is released.
- The footer shows the section's saved punch count. The shared header names the active effect through its fade, or shows FX MEMORY if a buffered effect cannot allocate. Buffered song punches capture history from PLAY until STOP or song end; filter-only songs do not allocate history.
- Timed punch songs save in FBKN. Earlier firmware cannot load them; see the compatibility section below. Physical playback of this feature remains untested.
Arrange longer songs
- 64 sections, with an elapsed minutes:seconds ruler above the patterns.
- Per-track rests leave room for parts to drop out. Releases, delay and reverb tails decay naturally; sequenced notes, recorded notes and motion stay silent.
- KNOB 4 resizes the selected block into following sections on that track. Continued sections retain note and automation phase. Trimming leaves rests; extending stops at another occupied block and can add empty sections at the end.
- PLAY starts at the selected section, including the position within a spanning block. It resumes held/recorded notes and motion there, continues through later sections, and stops at the end. Moving the cursor while playing does not seek.
- Loop song in the tapped or held OCT+ menu is saved per project, defaults Off, and is set while stopped. Enabled songs return from the final section to section one with fractional boundary time preserved. This loops the complete song even when PLAY began at a later cursor section. PLAY still stops and restores the patterns selected before song playback. The shared header shows LOOP / SONG LOOP.
KNOB 1 selects the section, KNOB 2 the track, KNOB 3 REST or P1–P8, and KNOB 4 the selected block's span. Track 1 pattern starts retain the existing section timing; track 1 rests and continuations use a straight four-beat bar per retained section repeat. Resizing a block preserves the following sections' times.
Edit on the arrangement grid
- OCT+ edits: Set rest, Copy to…, Move to…, Add empty section, and Loop song. Added empty sections contain rests on every track at the cursor. Punch FX is available in both the tapped and held OCT+ menus.
- Pick a copy/move destination on the visible grid, OCT+ to apply, OCT− to cancel. Copy/move acts on a whole block and keeps the underlying note pattern shared. Editing that pattern's notes changes every occurrence. Occupied destinations must be cleared before placing another block there.
- Hold OCT+ for section insertion, duplication, copy, move, deletion, Take jam and Clear song. Hold OCT+ and turn KNOB 1 to select a phrase; tap OCT+ for its actions.
- EDIT held undoes arrangement edits; EDIT + OCT− / OCT+ undo/redo. Up to eight snapshots are acquired on demand and may be reclaimed for sounding audio.
- The web editor understands rests, block continuations, 64 sections and the saved loop option while retaining compatibility with earlier protocol versions.
Bluetooth MIDI and radio recovery
- Bluetooth MIDI input/output supports one connection in either role. Settings expose discovery, connection, disconnect/reconnect and pairing controls. Radio starts Off at boot; USB MIDI/audio and TRS input remain available while it runs.
- Pairing, passkey and connection/setup state use the shared header. Successful bonds and the device's own radio identity/calibration are retained in settings. Pairing keys and calibration are excluded from musical backup archives.
- The web editor's Bluetooth recovery page bundles the matching calibration helper and Melodee firmware. It supports this FM-1's saved calibration or a bounded SDK helper, with progress, interruption recovery and return-to-Melodee handling.
See Bluetooth MIDI and radio recovery for setup and limits. The calibration-generation/return cycle has been checked on one FM-1; radio interoperability with regenerated trims remains unverified. Bluetooth audio and simultaneous central/peripheral links are not included.
Compatibility and limits
- Existing FUN and FBKK/FBKL records retain their fixed legacy layouts and load through the existing compatibility paths. Older songs default to Loop Off.
- Longer songs, rests, spanning blocks or Loop On save in the new FBKM container. Earlier firmware cannot read this format. Ordinary short songs without these features continue to save in their earlier format.
- Songs with timed punches use FBKN, which adds 768 bytes for the song FX lane to the FBKM arrangement data. Earlier firmware rejects FBKN. Projects without punches retain their existing format. The web editor can back up and restore FBKN, but timed punches are edited on the device; replacing the whole arrangement through the web editor clears its punch lane.
- FBKM and FBKN use sparse pattern storage in the existing slot extent. Very dense projects may reach PROJECT FULL sooner. An oversized save is refused before replacing the saved copy; patterns are never truncated to make an arrangement fit.
- Eight patterns per track, 64 steps per pattern and 1,024 shared recorded notes remain the limits. The web editor retains its four-track arrangement interface.
- The 1.5.1 web favorites connection fix is included; MIDI Track's unsupported factory-favorite control remains disabled.
Validation and downloads
The release workflow builds and attests firmware through the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication. Firmware/app provenance, matching application bytes, all four native recovery archives and checksums must pass before the draft is published. Only the candidate installer channel is updated; stable remains 1.5.1 and its manual is retained.Automated checks cover reference audio/state, CPU/resource/stack budgets, song loop timing and STOP restoration, timed punch playback/repeats/live overrides, section FX edits and persistence, cursor playback, rests/continuations, recorded notes, motion, menu gestures, undo, project/stream/backup codecs, old-format imports, web protocol, screen layouts, Bluetooth models, installers and recovery. These checks do not establish sustained physical audio/MIDI deadlines or Bluetooth interoperability across devices. The loop option and timed song punches have host/model coverage; they have not been physically validated on the FM-1.
Downloads include the dual-core firmware, application binary, Bluetooth calibration helper, native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices, BUILD_INFO.json and SHA256SUMS. Verify the firmware:
gh attestation verify melodee-1.6.0-rc.2.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.2Retained third-party notices and the distributed licence archive document attribution; see licensing.
v1.6.0-rc.1Melodee 1.6.0-rc.1Beta10 files
Melodee 1.6.0-rc.1
First release candidate for 1.6, including the accumulated song-arrangement and Bluetooth work since 1.5.1. This is a prerelease; stable remains 1.5.1.
Arrange longer songs
- 64 sections, with an elapsed minutes:seconds ruler above the patterns.
- Per-track rests leave room for parts to drop out. Releases, delay and reverb tails decay naturally; sequenced notes, recorded notes and motion stay silent.
- KNOB 4 resizes the selected block into following sections on that track. Continued sections retain note and automation phase. Trimming leaves rests; extending stops at another occupied block and can add empty sections at the end.
- PLAY starts at the selected section, including the position within a spanning block. It resumes held/recorded notes and motion there, continues through later sections, and stops at the end. Moving the cursor while playing does not seek.
- Loop song in the tapped or held OCT+ menu is saved per project, defaults Off, and is set while stopped. Enabled songs return from the final section to section one with fractional boundary time preserved. This loops the complete song even when PLAY began at a later cursor section. PLAY still stops and restores the patterns selected before song playback. The shared header shows LOOP / SONG LOOP.
KNOB 1 selects the section, KNOB 2 the track, KNOB 3 REST or P1–P8, and KNOB 4 the selected block's span. Track 1 pattern starts retain the existing section timing; track 1 rests and continuations use a straight four-beat bar per retained section repeat. Resizing a block preserves the following sections' times.
Edit on the arrangement grid
- OCT+ edits: Set rest, Copy to…, Move to…, Add empty section, and Loop song. Added empty sections contain rests on every track at the cursor.
- Pick a copy/move destination on the visible grid, OCT+ to apply, OCT− to cancel. Copy/move acts on a whole block and keeps the underlying note pattern shared. Editing that pattern's notes changes every occurrence. Occupied destinations must be cleared before placing another block there.
- Hold OCT+ for section insertion, duplication, copy, move, deletion, Take jam and Clear song. Hold OCT+ and turn KNOB 1 to select a phrase; tap OCT+ for its actions.
- EDIT held undoes arrangement edits; EDIT + OCT− / OCT+ undo/redo. Up to eight snapshots are acquired on demand and may be reclaimed for sounding audio.
- The web editor understands rests, block continuations, 64 sections and the saved loop option while retaining compatibility with earlier protocol versions.
Bluetooth MIDI and radio recovery
- Bluetooth MIDI input/output supports one connection in either role. Settings expose discovery, connection, disconnect/reconnect and pairing controls. Radio starts Off at boot; USB MIDI/audio and TRS input remain available while it runs.
- Pairing, passkey and connection/setup state use the shared header. Successful bonds and the device's own radio identity/calibration are retained in settings. Pairing keys and calibration are excluded from musical backup archives.
- The web editor's Bluetooth recovery page bundles the matching calibration helper and Melodee firmware. It supports this FM-1's saved calibration or a bounded SDK helper, with progress, interruption recovery and return-to-Melodee handling.
See Bluetooth MIDI and radio recovery for setup and limits. The calibration-generation/return cycle has been checked on one FM-1; radio interoperability with regenerated trims remains unverified. Bluetooth audio and simultaneous central/peripheral links are not included.
Compatibility and limits
- Existing FUN and FBKK/FBKL records retain their fixed legacy layouts and load through the existing compatibility paths. Older songs default to Loop Off.
- Longer songs, rests, spanning blocks or Loop On save in the new FBKM container. Earlier firmware cannot read this format. Ordinary short songs without these features continue to save in their earlier format.
- FBKM uses sparse pattern storage in the existing slot extent. Very dense projects may reach PROJECT FULL sooner. An oversized save is refused before replacing the saved copy; patterns are never truncated to make an arrangement fit.
- Eight patterns per track, 64 steps per pattern and 1,024 shared recorded notes remain the limits. The web editor retains its four-track arrangement interface.
- The 1.5.1 web favorites connection fix is included; MIDI Track's unsupported factory-favorite control remains disabled.
Validation and downloads
The release workflow builds and attests firmware through the reviewed
zvenson/fm1-buildworkflow atv1. Host/web tests block publication. Firmware/app provenance, matching application bytes, all four native recovery archives and checksums must pass before the draft is published. Only the candidate installer channel is updated; stable remains 1.5.1 and its manual is retained.Automated checks cover reference audio/state, CPU/resource/stack budgets, song loop timing and STOP restoration, cursor playback, rests/continuations, recorded notes, motion, menu gestures, undo, project/stream/backup codecs, old-format imports, web protocol, screen layouts, Bluetooth models, installers and recovery. These checks do not establish sustained physical audio/MIDI deadlines or Bluetooth interoperability across devices. The loop option in this RC has host/model coverage; it has not been physically validated on the FM-1.
Downloads include the dual-core firmware, application binary, Bluetooth calibration helper, native recovery archives for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices, BUILD_INFO.json and SHA256SUMS. Verify the firmware:
gh attestation verify melodee-1.6.0-rc.1.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.6.0-rc.1Retained third-party notices and the distributed licence archive document attribution; see licensing.
v1.5.1Melodee 1.5.19 files
Melodee 1.5.1
Hotfix for the web editor connection error introduced with Melodee 1.5.
Web editor connection
- Fixes “Error: Invalid favorites reply” when opening the web editor with 1.5 firmware. The editor no longer requests factory favorites for MIDI Track, which has no favorite storage and rejects that request.
- MIDI Track remains selectable. Its unsupported star control is disabled; factory sound favorites and favorites in the shared user library still sync.
- Adds a regression check covering startup with the complete factory lists and all 384 shared user slots. The simulated device now enforces the released firmware's favorite namespace limits.
The updated web editor also works with 1.5.0 firmware. Refresh the editor to receive the fix; reflashing is not required. The 1.5.1 firmware and recovery packages carry the new version; audio processing, device controls and stored project formats are unchanged. See the 1.5.0 release notes for features and compatibility.
Release validation and downloads
Firmware is built and attested by the reviewed
zvenson/fm1-buildworkflow atv1, with host and web tests blocking publication. The release pipeline verifies firmware/application provenance, matching application bytes, all four native recovery archives and their checksums before publishing the complete release. Automated checks do not establish physical audio, timing or USB interoperability.Downloads include the dual-core firmware, application binary, recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,
BUILD_INFO.jsonandSHA256SUMS. Verify the firmware with:gh attestation verify melodee-1.5.1.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.1v1.5.0Melodee 1.5.09 files
Melodee 1.5.0
Melodee 1.5 turns the FM-1 into a more capable MIDI sequencer and performance instrument: four additional MIDI tracks, USB Host input and output, two automatic chord modes, master punch effects, and quicker sound selection on PATTERNS. This changelog covers the changes since stable 1.4.5, including the four 1.5 release candidates and the final recording and navigation improvements.
Eight tracks, including external instruments
- Tracks 5–8 are dedicated MIDI tracks. Tracks 1–4 can use Melodee's synth engines or the MIDI Track engine. Each MIDI track has its own output channel from 1–16 and uses the same scales, chords, arpeggiator, patterns, recorded takes and SONG arrangement as an internal part. MIDI tracks consume no synth voices or audio-effect working memory.
- USB Host receives and sends MIDI. Connect a supported USB-MIDI keyboard or instrument directly, or through one powered hub. The selected device can provide input, output or both; output-only instruments are supported. Sequence an external synth alongside the FM-1's internal parts, or play them from a larger keyboard. TRS remains a MIDI input; a MIDI track's TRS setting admits additional routed TRS input while USB input is selected.
- Direct track selection. The first eight black keys select tracks 1–8 on PATTERNS while unarmed, or with SEQ held. The screen follows the selected group of four, including the actual track numbers. Press an unused track key on PATTERNS to create and select it immediately; any missing intermediate tracks are created too.
- MIDI cleanup and clock recovery. Channel changes, mute/solo, stop and USB reconnects release outgoing notes. Disconnect handling retains local and TRS input ownership. Clock-overflow recovery and overdue ARP-step handling retain musical phase instead of accumulating lost pulses.
USB Host temporarily uses the USB-C port as a host: computer-facing USB MIDI, audio and firmware updates are unavailable until HOST is off. HOST is not saved and resets off at boot. Use an externally powered hub or a suitable powered adapter; the firmware does not supply USB bus power. One full-speed MIDI 1.0 device/interface is selected, directly or behind one hub. Nested hubs, low-speed devices and attached-device SysEx/editor traffic are not supported. See USB Host setup and limits.
Play melodies with automatic harmony
- AUTO chooses scale-based chords using recent harmony and melody from other eligible tracks. CLOSE voicing connects them with nearby inversions.
- AUTO2 keeps the key you play as the highest note and adds harmony below it. The same mapped key produces the same harmony regardless of backing notes or previous presses. During a strum, the melody sounds immediately and the accompaniment follows.
- Try SCL → CHORD → CHRD AUTO2, VOIC CLOSE for a melody with accompaniment; OPEN spreads the lower voices. Recording captures the actual resulting notes, so playback reproduces the performance.
- Both modes cover the 16 Western scales. Microtonal selections and kits keep their bypass behavior; existing fixed and diatonic chord modes remain available.
Performance effects and a shared audio rack
- 27 master punch choices adapted from SLOOP. Hold FX and press a key for loops, stutter, reverse, tape stop, half speed, filters, crush, gate, echo, rewind, octave up, flanger, auto-pan, freeze and more. They process the master mix, including shared returns and stereo USB capture. Double-tap FX to lock the performance layer; release an effect key to return to dry sound.
- Three shared audio-effect slots. Use CHAIN for a serial rack or SPLIT for separate sends to each slot. Send several internal tracks into the same space or processor. The rack includes SLOOP Reverb, drive with Soft/Hard/Fold/Fuzz shapes, crush and swept pedals alongside the existing audio processors.
- One shared REVERB. Selecting REVERB in another shared slot moves it there; imported duplicate REVERB slots keep the first. Per-track NOTE TAIL and NOTE ECHO remain available, with note-based echo timing and velocity decay.
Effects migration: older per-track audio processors load OFF; they are not automatically moved to SHARED. Recreate those processors and their track sends in the shared rack when adapting an older project. Existing shared settings load through their compatibility paths. NOTE TAIL and NOTE ECHO remain track effects. This is a routing change even though stored parameter IDs and project layouts remain readable.
The optional PUNCH buffer uses 32 KiB, providing about 372 ms of mono history at 44.1 kHz. Replay spans cap at 348 ms and echo delay at about 370 ms; long beat divisions at slower tempos use a shorter captured span. Rack reverb and stereo dry output retain their own processing paths.
Faster PATTERNS and recording workflow
- Browse sounds without leaving PATTERNS. PRESET changes the active audio track's sound and immediately displays its name and engine. Keys audition the sound while the card is open. Each turn or held live input extends the preview; two idle seconds after release restore track/pattern selection. SEQ explicitly restores selection during preview. MIDI-only tracks 5–8 keep their settings.
- Repeat half/double without reopening the dialog. After a resize, the pattern action dialog stays open while its original pattern key or SEQ is held. Release both to close it. Existing pattern delete/copy shortcuts remain.
- One recording grid for the project. TEMPO → QNT applies to every audio and MIDI track and is saved in projects and templates. OFF retains performed timing. Quantization commits when a take ends; note lengths and velocities remain. Existing takes are not re-quantized by changing the setting. Older projects adopt the saved selected track's recording grid.
- Focused recording and Take Taker. Arming a track finishes and disarms the previous track's take. Retroactive capture follows only the selected track; changing tracks starts a fresh capture history. First-note recording and the existing one-pass pattern shortcuts remain available.
- MIDI controller knobs. Optional GENERAL and MiniLab 3 profiles operate the eight panel controls using absolute or supported relative encoder modes. Profile and mode are remembered; the feature defaults OFF.
Memory, display and fixes
- LZMA-compressed SRAM startup images expand before audio and the second core start. Compact inactive patterns, packed recording data, shared temporary buffers and on-demand histories reduce fixed memory reservations.
- Synth and mixer optimizations retain the automated reference audio/state checks. Display transfers use bounded DMA tiles and send changed pixels.
- Idle USB Host handling avoids repeatedly resetting empty hubs or unsupported devices. Reconnect or toggle HOST to retry a failed detection.
- The metronome follows master volume, including silence at zero. Extended DX7 voice dumps, including the supported MainStage wrapper, import correctly.
- Installer safeguards and TransitFM1 0.1.3 support remain included. The USB identity retains FM-1, and the recovery tools include their required runtime dependencies.
Project compatibility and limits
- Every track has eight patterns of up to 64 steps. The project shares 1,024 recorded notes; this release does not add 16 banks or 128-step patterns.
- Projects using at most four tracks retain FBKK records. Tracks 5–8 use the sparse FBKL format in the same flash slots; older firmware cannot read FBKL. A fully dense eight-track project may exceed a saved slot's capacity. PROJECT FULL refuses an oversized save before replacing the saved copy.
- Recognized earlier Melodee projects, presets and templates retain their migration paths; unknown projects remain protected as OLD FORMAT. Templates keep the track count and first four parts' settings; extra MIDI tracks start with default MIDI settings. Projects save all eight tracks.
- The web editor retains its four-track interface. A DX7 dump received while another operation owns the transfer buffer must be resent after that operation.
- Bluetooth MIDI is not included.
Release validation and downloads
The release pipeline uses the reviewed
zvenson/fm1-buildworkflow atv1for firmware builds, blocking host/web tests and signed build attestations. Publication requires verified firmware/app provenance, matching application bytes, all four native recovery archives and their checksums. The stable installer and manual are updated only by the final publication step.Automated checks cover reference audio, CPU/resource and stack budgets, startup decoding, recording and project roundtrips, MIDI timing/ownership, USB models, controller profiles, UI layouts, installation and recovery. This release preparation does not measure physical stack watermarks, sustained hardware audio deadlines or compatibility with every USB instrument; build provenance does not establish those hardware results.
Downloads comprise the dual-core firmware, application binary, UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,
BUILD_INFO.jsonandSHA256SUMS. Verify the firmware with:gh attestation verify melodee-1.5.0.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.0Thanks to the Felucca and SLOOP authors and FM-1 contributors. Retained source notices and the distributed licence archive document their work; see licensing and attribution and SLOOP effect provenance.
v1.5.0-rc.4Melodee 1.5.0-rc.4Beta9 files
Melodee 1.5.0-rc.4 brings the current nightly changes to the release-candidate channel: LZMA startup compression, MIDI clock recovery, shared audio effects, synth optimizations, and quieter idle USB host handling. It includes the features in RC3. Stable 1.4.5 remains the default installer channel.
Startup compression and memory
- All five SRAM startup sections use LZMA compression by default. They expand once before SRAM code or the second core runs. The decoder uses the unused audio working arena for its probability tables, with no heap allocation.
- The development build's startup images compress from 157,868 to 105,580 bytes. Its application image is 516,828 bytes; the fixed-slot installation package retains its usual size. These figures describe the development build before the release version is applied.
- Malformed compressed records enter ROM recovery. The build checks that the decoder and its dependencies execute from flash during SRAM initialization.
- Recorder bookkeeping reclaims working memory without changing stored note pitch or project layouts. Synth kernel changes retain reference PCM and state across the automated comparisons.
MIDI, recording and USB host
- Recover clock pulses discarded during input overflow and consume overdue ARP steps while retaining residual phase and gate timing.
- Arm one recording track at a time and reset retroactive capture when the selected track changes.
- Idle USB host detection no longer repeatedly resets or reprobes an empty hub or an unsupported direct device. A connection change or HOST toggle retries detection.
- Firmware installation build dependencies include the flash helper's required Python packages.
Shared audio effects
Audio processors now run in the three-slot shared rack. Tracks retain NOTE TAIL and NOTE ECHO, plus their sends to the shared rack. The shared rack permits one REVERB: selecting it in another slot moves it there; imported duplicate REVERB slots keep the first.
Migration: historical per-track audio effect types load OFF. They are not automatically moved into the shared rack. Set those processors and track sends in SHARED when adapting an older project. NOTE TAIL and NOTE ECHO remain track effects. Stored parameter IDs and project layouts remain readable.
Absolute MIDI controller knobs select the valid note-effect choices correctly. The editor retains existing library keys, and the small device cards show the note-effect label without clipping.
Validation and hardware status
The combined development source passed the firmware build and full host/web suite, including reference sound renders, MIDI timing recovery, shared effects, recording, storage, UI layout, USB, installation and recovery. The LZMA decoder and USB host fixtures also passed address/undefined-behavior sanitizers on Linux. The release workflow repeats blocking host/web checks on the tagged source.
Cold/soft boot, LZMA startup time, physical stack watermarks, sustained audio deadlines and device interoperability still need hardware acceptance for this exact candidate. No device installation is implied by this release. Bluetooth MIDI remains outside this candidate. Earlier RC project-format and migration limits continue to apply.
Firmware and application binaries are built and attested by the reviewed
zvenson/fm1-build/.github/workflows/build.yml@v1workflow. Downloads include native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS. The workflow verifies attestations, application bytes and the complete recovery set before publication. Verify the firmware with:gh attestation verify melodee-1.5.0-rc.4.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.0-rc.4v1.5.0-rc.3Melodee 1.5.0-rc.3Beta9 files
Melodee 1.5.0-rc.3 reduces RAM, firmware size and dry-mixer CPU work, improves display transfers, and fixes metronome volume and FM6 SysEx reception. It includes the automatic chords, controller profiles and other features in RC2. Stable 1.4.5 remains the default installer channel.
Memory and performance
- Recovers about 25 KiB of general audio working memory through shared FX coefficients, exact FM6 ROM symmetry, smaller resident control code and reduced stack reservations checked against linked call paths.
- Compresses the resident-code load image in flash and expands the identical instructions once at startup, before audio and the second core start. The measured development image shrinks by about 35 KiB. The fixed-slot installation package retains its usual size.
- Avoids unused wet-return work and adds a centered-dry mixer path. The complete four-track dry fixture uses 5.3% fewer host instructions, including 4.3% from the second optimization pass. These are host measurements, not measured FM-1 CPU percentages or deadline guarantees.
- Preset saving avoids large whole-bank stack copies while retaining the same serialized bytes, failure rollback, favorites, opaque records and migrations.
PUNCH history tradeoff
The optional PUNCH history now uses 32 KiB instead of 64 KiB while armed. History lasts about 372 ms instead of 743 ms at 44.1 kHz. Replay spans cap at 348 ms and echo delays at 370 ms, so long beat divisions at slower tempos use a shorter capture. All 27 choices, FREEZE and existing transitions remain available. Engine stereo placement and rack reverb tank lengths are retained.
Bluetooth MIDI is not included. The BLE-only HCI specialization is a separate experimental size probe; this RC does not establish that a BLE port fits.
Display and musical fixes
- Display updates send changed tiles through bounded DMA buffers, reducing redundant transfers while preserving buffer ownership during drawing.
- The metronome follows master volume, including silence at master zero.
- Extended DX7 voice dumps recover correctly in the FM6 SysEx receiver.
- The default MIDI-only preset is named MIDI Track.
- Restores the runnable nightly workflow so development builds no longer enter a recursive scheduler wrapper.
Validation and hardware status
Blocking checks cover reference sound renders, mixer parity and CPU budgets, FM6 lookup parity, storage migrations and every preset-write failure stage, PUNCH capture wraps and transitions, dual-core/reference behavior, UI, MIDI, USB, web installation and recovery. Independent boot-decoder fixtures include malformed streams and exact expansion of the packaged resident-code image under address/undefined-behavior sanitizers.
This candidate changes startup decompression and stack reservations. Their linked bounds and recovery paths are checked automatically; cold/soft boot, physical stack watermarks, sustained audio deadlines and device interoperability still need hardware acceptance for this exact candidate. Automated checks do not establish those measurements. RC1's project-format and migration limits continue to apply.
Firmware and application binaries are built and attested by the reviewed
zvenson/fm1-build/.github/workflows/build.yml@v1workflow. Downloads include native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS. The release workflow verifies attestations, application bytes and the complete recovery set before publication. Verify the firmware with:gh attestation verify melodee-1.5.0-rc.3.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.0-rc.3v1.5.0-rc.2Melodee 1.5.0-rc.2Beta9 files
Melodee 1.5.0-rc.2 adds two automatic chord modes and MIDI controller profiles to the 1.5 release candidate. It includes the MIDI tracks, USB Host, effects and memory work described in RC1. Stable 1.4.5 remains the default installer channel.
Automatic chords
- AUTO chooses chords inside the selected Western scale using recent harmony and melody from other eligible tracks. With VOIC CLOSE it connects chords with nearby inversions. Held chords keep their captured notes through release, sustain and strumming.
- AUTO2 is a separate option for playing a tune with harmony underneath. The mapped key stays the highest note, and the same key selects the same harmony regardless of backing notes, earlier presses or timing. During a strum the melody sounds immediately; the lower accompaniment follows.
- Start with SCL → CHORD → CHRD AUTO2, VOIC CLOSE. OPEN widens the lower accompaniment; INV1, INV2 and +OCT also keep the melody fixed at the top.
- Both modes support the 16 Western scales, including pentatonic, blues, whole-tone and diminished. Out-of-scale inputs follow the existing downward mapping policy. Microtonal selections play the input note alone in these new modes; the existing DIA3/DIA7 and fixed chord modes remain available there.
- Existing chord mode IDs retain their meaning. Recording stores the actual notes played, so playback reproduces the take rather than choosing new chords.
MIDI controller knobs
- MIDI KNOBS offers OFF, GENERAL and MINILAB profiles for operating the eight panel controls from a MIDI controller. The MiniLab profile supports the MiniLab 3 factory Arturia/User CC assignments.
- Absolute and supported relative encoder modes are available; profile and mode are remembered. The feature defaults OFF to preserve conventional synth CC behavior. USB and TRS use the same mapping rules.
Validation and compatibility
Automated checks cover both chord modes, Western scale/root/transpose combinations, melody placement, strum attacks, note ownership, recording, project roundtrips, controller profiles and UI layout. Reference sound renders and CPU budgets remain blocking. These checks do not establish hands-on musical suitability, hardware interoperability or sustained audio timing for this exact release candidate. RC1's project-format and migration limits continue to apply.
Firmware and application binaries are built and attested by the reviewed
zvenson/fm1-build/.github/workflows/build.yml@v1workflow. Downloads include native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, licence notices,BUILD_INFO.jsonandSHA256SUMS. The release workflow verifies firmware attestations, application bytes and the complete recovery set before publication. Verify the firmware with:gh attestation verify melodee-1.5.0-rc.2.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.0-rc.2v1.5.0-rc.1Melodee 1.5.0-rc.1Beta9 files
Melodee 1.5.0-rc.1 is the first release candidate for 1.5, based on
nextafter merging the currentnightlyand stable 1.4.5 fixes. It brings the MIDI, effects and memory changes developed since stable 1.4.5 into a candidate for testing. Stable 1.4.5 remains the default installer channel.MIDI tracks and USB Host
- MIDI Track engine: use any of tracks 1–4 to sequence an external USB MIDI instrument. CH selects output channel 1–16. Keys, scales, chords, arpeggios, patterns, recorded takes and SONG use the same musical paths as synth parts. MIDI Track uses no audio voices or engine/FX working memory.
- Four additional MIDI-only tracks: Stage's Add track continues to tracks 5–8, initially on output channels 5–8. They open on CH/TRS controls and always remain MIDI Track. Tracks 1–4 retain their choice of instruments.
- Groups of four: ALGORITHM selects every track. Stage, MIXER, PATTERNS, SONG and GLO show the group containing the selected track. With SEQ held, D# switches groups and the four track keys select within the group. GLO retains mute/solo and shows MIDI channels instead of audio levels.
- USB Host input and output: Menu > USB HOST connects a class-compliant USB-MIDI device directly or through one externally powered hub. Controllers feed the existing MIDI input paths; MIDI tracks send to the attached device, including output-only USB instruments. Host mode resets to device mode at boot. Low-speed devices and nested hubs are not supported.
- Input and note cleanup: TRS THRU optionally admits routed TRS input to a MIDI track while USB is selected. Channel controls follow its output channel. Mute, solo, stop, channel changes and USB loss release outgoing notes; queued releases take priority after reconnection. Disconnect detection is debounced.
Effects, audio memory and installation
- Revised master punch: the SLOOP punch controls, hold/lock behavior and buffered effects run on the master output, with state shown in the header.
- Expanded insert effects: the current effect rack includes the SLOOP reverb, drive, fold, fuzz, crush, phaser, chorus and flanger additions. Each slot has its own wet-input TONE control. Effects and routing save with projects.
- More audio memory available on demand: compressed inactive patterns, packed recording data, shared scratch buffers and demand-allocated histories reduce fixed reservations. MIDI-only tracks have no synth patch or motion working state. Production fast paths remain enabled.
- Installer and recovery: includes the TransitFM1 0.1.3 switching flow, installer safeguards and the pinned m-bootloader package. Firmware retains the FM-1 family name in its USB identification.
Compatibility and candidate limits
- Eight patterns of 64 steps remain available on every track; the recording store remains shared at 1,024 notes. This candidate does not enable sixteen pattern banks or 128-step patterns.
- Songs with at most four tracks retain FBKK project records. Songs using tracks 5–8 use the new sparse FBKL format in the existing flash slots. PROJECT FULL refuses an oversized save before replacing the saved copy. All banks can be filled in working memory, but a fully dense eight-track song exceeds a saved project's capacity. Older firmware cannot read FBKL.
- Recognized earlier Melodee projects, templates and presets retain their existing compatibility paths. Unknown projects remain protected as OLD FORMAT. See startup and compatibility and boot protection for migration and recovery limits.
- The web editor retains its four-track interface. Templates retain the track count and the first four parts' settings; tracks 5–8 start with default MIDI settings. Projects save all eight tracks' settings and patterns.
- A DX7 dump arriving while save/load or another main-loop job owns the shared transfer buffer is dropped; resend the dump after that operation.
Automated validation covers firmware resource limits, unchanged reference audio renders, CPU budgets, MIDI input/output and cleanup, step entry on tracks 5–8, all 64 recording-bank owners, project flash roundtrips and track removal, and UI layout across palettes and fonts. These checks do not establish hands-on audio, controls, USB-device interoperability or update behavior for this exact candidate.
Downloads include the dual-core firmware, application binary, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.json,SHA256SUMSand GitHub attestations record the source and build provenance. Verify firmware with:gh attestation verify melodee-1.5.0-rc.1.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.5.0-rc.1v1.4.5Melodee 1.4.59 files
Melodee 1.4.5 is a hotfix release following 1.4.4.
- USB identification: the USB product name is
Melodee FM-1, and the update loader isMelodee FM-1 Update. Keeping FM-1 in the name helps other installers recognise the hardware family when macOS retains a MIDI port name after a firmware switch. USB vendor and product IDs are unchanged. - External MIDI tempo: smooths clock jitter and stabilises the displayed BPM for USB and TRS clock, while retaining exact pulse-driven sequencer timing and quickly following larger tempo changes.
- Live arpeggiation: physically held notes keep arpeggiating at the local tempo while the selected external sync master is stopped. A released HOLD chord still waits for external transport, and a running master takes over timing as before.
- Shared project root: ROOT is shared across tracks with SCL, QNT and MPC degree. Older projects with differing roots use the saved selected track's root when loaded; each track's TRN remains independent. The saved project layout is unchanged.
- Page navigation: removes the repeated HOLD GLO / SCL shortcut hints after ordinary taps. Hold and double-tap shortcuts remain available.
- Installer and recovery: uses TransitFM1 0.1.3 for switching firmware and documents direct entry to ROM UBOOT for recovery. For Baud Girl, install official V15 first and then use Baud Girl's installer.
Projects, templates and presets remain compatible with 1.4.3 and 1.4.4. Their compatibility limits with older releases still apply. This release retains eight pattern banks and the established effects; the nightly RAM and FX development changes are outside this patch.
Downloads include firmware, the application binary, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.json,SHA256SUMSand signed GitHub attestations record the release's source and build provenance.gh attestation verify melodee-1.4.5.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.4.5Automated build and test results do not establish hands-on audio, control or MIDI validation.
- USB identification: the USB product name is
v1.4.4Melodee 1.4.49 files
Melodee 1.4.4 adds signed build provenance to the 1.4.3 release. The synthesizer, controls, audio configuration and project format are unchanged from 1.4.3.
- Shared FM-1 builder: release firmware is built and tested by
zvenson/fm1-build at its reviewed
v1tag. GitHub signs an attestation for the firmware package and application binary, tying their hashes to this release's public source commit and builder. - Verified publication: host/web tests block the build. The complete release stays in draft until the firmware attestations and all four native recovery archives pass validation. Stable installer and manual publication are retained.
- Compatibility: use the same projects, templates and presets as 1.4.3. The compatibility limits described in the 1.4.3 notes still apply.
Verify the downloaded firmware with the GitHub CLI:
gh attestation verify melodee-1.4.4.fwsc --repo keremimo/melodee \ --signer-workflow zvenson/fm1-build/.github/workflows/build.yml \ --source-ref refs/tags/v1.4.4Downloads include firmware, the application binary, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.jsonandSHA256SUMSremain available alongside the signed GitHub attestations. Build provenance does not establish physical audio, control or hardware safety validation.- Shared FM-1 builder: release firmware is built and tested by
zvenson/fm1-build at its reviewed
v1.4.3Melodee 1.4.39 files
Melodee 1.4.3 is the stable release that follows 1.4.1 and the 1.4.2-rc.1 candidate. It includes everything in both, plus the latest
nightlychanges:- Four tracks to start: new songs open with four tracks (Prophet, FM6 bass, CZ lead and 808 drums), and unused tracks are listed so they can be added back.
- Chord strums: voiced chords can be spread over a beat division with down, up or alternating strokes (STRUM/STROKE). Recording keeps the played onsets; release, stop and panic cancel pending tones. Existing projects, templates and presets load with strumming off.
- Pattern halve and double: SEQ's pattern dialog halves (C#) or doubles (D#) the pattern, and stays open for further steps until SEQ is released.
- Voice weights: GLO > WEIGHTS sets budget points per voice for each engine, with an optional overload SAFETY (off by default).
- MPC pads: MPC Sample program banks E-H route to tracks 1-4 (Bank F wraps through MIDI note zero), with a finger-drum pad layout that follows the selected track. Each bank keeps its own octave; Stage octave buttons, lights and the header follow the selected track. Older projects load neutral bank octaves.
- Audio performance: modulation caching, faster control, mixing, panel, recording index and capture paths, idle FX sleeping, and engine-specific fast paths for Prophet, FM6, CZ, drums and SID. Parts and drums are balanced across both cores, eligible adjacent reverbs overlap, and part of the data cache is used as audio RAM.
- Memory: inactive pattern banks are stored compressed, FM6 SysEx dumps reuse project RAM, and recording release queues share storage. Save formats for recordings and projects are otherwise unchanged.
- Fixes: local PLAY runs while an external MIDI sync master is stopped; each track keeps its own preset list in the browser; Stage drum cards no longer flicker under the knobs; the SCL cycle skips the scale picker.
- CPU1 hold: holding CPU1 masks the delayed bus traps it can raise on CPU0, adapted from Leo Kuroshita's Felucca 1.6.1 safe-hold sequence (also used by SLOOP 2.7.1). This package does not fall back to single-core rendering: if CPU1 fails, the firmware waits for the watchdog restart; the boot-loop guard is retained.
Projects, templates and presets saved by 1.4.3 carry the two strum parameters, which 1.4.1 does not read: back up before installing if you may return to 1.4.1.
Downloads include the firmware package and application binary, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.jsonrecords the source commit, build switches and native smoke tests;SHA256SUMScovers every asset.v1.4.2-rc.1Melodee 1.4.2-rc.1Beta9 files
Melodee 1.4.2-rc.1 is the first release candidate for 1.4.2, built from the
nightlybranch. It includes everything in 1.4.1, plus:- Four tracks to start: new songs open with four tracks (Prophet, FM6 bass, CZ lead and 808 drums), and unused tracks are listed so they can be added back.
- Chord strums: voiced chords can be spread over a beat division with down, up or alternating strokes (STRUM/STROKE). Recording keeps the played onsets; release, stop and panic cancel pending tones. Existing projects, templates and presets load with strumming off.
- Pattern halve and double: SEQ's pattern dialog halves (C#) or doubles (D#) the pattern, and stays open for further steps until SEQ is released.
- Voice weights: GLO > WEIGHTS sets budget points per voice for each engine, with an optional overload SAFETY (off by default).
- Audio performance: the CPU optimizations from nightly are now the default in every build: modulation caching, faster control, mixing, panel, recording index and capture paths, idle FX sleeping, and engine-specific fast paths for Prophet, FM6, CZ, drums and SID. Parts and drums are balanced across both cores, eligible adjacent reverbs overlap, and part of the data cache is used as audio RAM.
- Memory: inactive pattern banks are stored compressed, FM6 SysEx dumps reuse project RAM, and recording release queues share storage. Save formats for recordings and projects are otherwise unchanged.
- Fixes: each track keeps its own preset list in the browser; Stage drum cards no longer flicker under the knobs; the SCL cycle skips the scale picker.
- CPU1 failure: this package does not fall back to single-core rendering. If CPU1 fails, the firmware waits for the watchdog restart; the boot-loop guard is retained.
This is a prerelease for testing, with the same build configuration as the nightly channel. The full host suite runs against that configuration; physical testing of this exact package is pending. Projects, templates and presets saved by this candidate carry the two strum parameters, which 1.4.1 does not read: back up before installing if you may return to 1.4.1.
Downloads include the firmware package and application binary, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.jsonrecords the source commit, build switches and native smoke tests;SHA256SUMScovers every asset. The web installer offers this candidate alongside stable and nightly; stable remains the default.v1.4.1Melodee 1.4.19 files
Melodee 1.4.1 fixes Return to official V15 in the web installer. It includes the features and compatibility rules of 1.4.0.
- Stock restore accepts Melodee 1.4 backups. The installer incorrectly required the older motion-protocol version before starting a full backup. Melodee 1.4 reports motion v2 while retaining the same supported backup protocol, so the default stock-restore flow stopped before flashing. The installer now checks the backup capability independently of motion and UI versions.
- Existing 1.4.0 users can restore stock directly. Refresh the web installer,
open Return to official V15, and select the unmodified official M-VAVE
FM-1.fwsc. Installing 1.4.1 first is unnecessary. The installer saves a complete backup before asking to flash; the existing explicit Skip backup option remains available. Stock firmware may overwrite Melodee music, sounds and settings. - Device identifiers remain compatible. Automated update tests cover stock
restore from development, 1.4.0 and 1.4.1 identities, USB port-name changes, and
resuming an interrupted update. The returned stock identity is verified as
FM-1_015.
The 1.4.1 firmware and native recovery downloads carry the updated release version. There are no synthesis, sequencing, storage-format or device-identifier scheme changes.
Validation includes the firmware build and full host suite, the installer regression that reproduces the 1.4 failure, and the firmware's staging path with the original SHA-256-verified official V15 package. Stock-loader corruption and mismatched device flash heads remain rejected. A read-only check of a connected 1.4.0 device confirmed that the old page rejects its backup capability and the fixed page accepts it. A physical flash to stock and back was not performed for this release.
Install: https://keremimo.github.io/melodee/
v1.4.0Melodee 1.4.09 files
Melodee 1.4.0 is the new stable release for the M-VAVE FM-1. These are the main changes since 1.3.6, including the features tested in the 1.4 release candidates.
- A redesigned interface: larger text throughout, Rubik and Melodee Pixel fonts, clearer lists and dialogs, coloured track rows, and pattern dots sized to show the whole loop. New palettes give each track its own colour. Turning a Stage knob updates its cell without covering the performance display.
- FX racks and tone shaping: navigate three track inserts and the shared effects through rack views, open only the slots in use, and switch between chained and separate sends. ECHO, ROOM and REVERB gain a per-slot TONE control, from DARK through FULL to THIN, with low-frequency buildup reduced in their repeats and tails. Existing project effects and routing are retained.
- C64 instruments and drums: SID gains C64 6581/8580 models with one voice per track and register updates at PAL frame rate. POLY turns held chords into fast chip arpeggios. New SID KIT and SID DIGI drum presets use one 6581's three voices; SID DIGI plays synthesized kick and snare through the four-bit volume register. Retriggers, voice stealing and kit output levels are improved.
- Recording and pattern performance: explicit REC stays active across loops until disarmed or stopped. Selecting an empty pattern, or double-tapping a used pattern key, arms one pass instead. Undo/redo restores a whole take, including notes, motion and timing. Destructive pattern operations wait for the loop end during playback. SEQ's black keys select tracks, armed tracks have a REC border, and WAIT LOOP stays visible in the header while recording waits.
- One to four tracks and a chord view: start with one track, add or remove tracks from Stage, and retain that count in projects and templates. Tap HOME for a circle-of-fifths view with sounding notes, chords and waveform. The last complete voicing remains visible after staggered note releases.
- One shared preset bank: U001–U384 stores Prophet, FM6, CZ-1, SID and Drum sounds in any mix, including their native voice data. Supported legacy banks migrate at startup. The editor and on-device USER/STORE pages share the same slots; librarian imports route by manufacturer.
- Simpler USB audio: one duplex device named Melodee replaces the separate playback and recording devices. Host volume and mute control computer playback without changing USB recordings. Stereo master capture and four isolated mono track stems remain selectable.
- An online user manual: the illustrated guide covers the device, engines, effects, recording, editor, installation and recovery. Thanks to @relyt29 for writing it. Stable and nightly guides are published separately with their firmware version and generated screenshots.
- Faster navigation: KNOB 2 picks an EDIT-map category, KNOB 1 or SELECT picks its page, and each category remembers its page. Encoder detents arriving during a redraw are retained. HOME SELECT and GLO SELECT offer assignable performance controls; modulation destinations use their engine's names.
- Audio and resource improvements: synthesis, mixing and dual-core scheduling optimizations reduce work, and unused RAM is reclaimed for audio. A saved shared voice BUDGET controls the workload; idle tracks reserve no voices. Current packages use both cores; single-core downloads are retired. The stock V15 supply startup and existing boot, settings, preset and MIDI safeguards remain included.
Before upgrading, export projects and user sounds you want to keep. Leave power connected during installation and preset migration. Older firmware cannot read the unified preset bank; keep a backup made before migration if you may downgrade. Unsupported preset contents can be reset at startup; projects retain OLD FORMAT protection. The firmware leaves the system clock at the boot loader's setting.
Downloads include the dual-core firmware package and application binary, licences, checksums and native USB recovery tools for Windows x64, Linux x64, macOS Intel and Apple Silicon. BUILD_INFO.json records source and native recovery-test provenance. Automated validation is reported separately from physical-device audio, control and recovery testing; this release is not flashed during publication.
Install: https://keremimo.github.io/melodee/
v1.3.6Melodee 1.3.611 files
Melodee 1.3.6 backports the stock V15 power startup to the 1.3.5 stable line. Both Standard and Single core apply the stock analog-register sequence, the LDO-to-DCDC handover and original settling loops, then select SYSVDD 15 (nominal 1.38 V) and VDC14 7 (nominal 1.60 V). This happens before peripherals and CPU1 start. Transfer failures or incorrect read-back keep CPU1 off; existing boot guards and worker retirement remain. The system PLL is not changed. Matching stock's supply setup does not yet establish that all instability is resolved: physical rail measurements, cold/soft boot and loaded audio/CPU1 validation remain pending.
The release also retains the prepared stable backports:
- Hold EDIT to undo; EDIT+OCT−/OCT+ performs undo/redo. Hold SAVE saves the current project, stopping playback first and opening the project chooser when the project has no saved slot.
- MIDI channel selection is clamped to the supported range.
Melodee 1.3.6 resets unsupported user preset banks at startup instead of leaving them as OLD FORMAT. This intentionally discards unreadable preset-bank contents. Keep a backup before upgrading if those bytes may be needed by another firmware.
- The four native FM6 and eight native CZ banks initialize to the same empty defaults as a fresh installation when their format is unsupported or damaged. Factory sounds remain available separately.
- Unsupported general user-preset banks reset to empty. In a readable bank, only unsupported entries are cleared; compatible presets survive.
- Startup shows progress before writes. Each reset uses the existing A/B commit: failure retains the previous committed copy and an error remains visible; restart retries unfinished resets. Successful resets are not repeated.
- Projects retain OLD FORMAT protection. Compatible settings and preset banks are kept. The firmware does not change the system PLL.
The 1.3.5 boot stub, early display and first-boot settings cleanup remain included. On first installation from stock or Melodee through 1.3.4, interruption before the boot sector is complete can still require hardware recovery. Keep power connected throughout installation and startup maintenance.
Automated checks cover bank validation, interrupted resets, compatible presets, project preservation, both firmware variants and the existing regression suite. Physical stock-to-Melodee startup and recovery validation remains pending.
v1.4.0-rc.4Melodee 1.4.0-rc.4Beta11 files
Melodee 1.4.0-rc.4 is the fourth release candidate for 1.4, based on
next. It includes everything in 1.4.0-rc.3, plus:- Larger text throughout: labels, text, values and large readouts use four consistent sizes. Settings > FONT selects Rubik or Melodee Pixel. Lists, menus, dialogs, the browser and editing pages fit the larger type.
- HOME and pattern display: tracks appear as coloured rows. Every pattern step is shown as a dot, sized to fit the track's row. Knob pages show a large value while turning a knob.
- Colours and Stage light: five new palettes, knob colour shades, and optional screen-edge lighting that follows the playing sound. List values and scale status remain readable in the larger UI.
- Recording undo: undo or redo a whole recorded take, including its motion, while retaining other tracks and pattern banks. Recording popup cleanup is fixed.
- MIDI channel filtering: GLOBAL > SYSTEM > ROUT now limits USB and TRS notes to the selected four-channel range: 1–4, 5–8, 9–12 or 13–16, mapped to tracks 1–4. Other channels cannot trigger the selected track, and the DRUM override respects the range. SEL still accepts all channels. Note-offs and sustain release follow their original notes when routing changes; saved CH1-4 and SEL values retain their identities. The web editor exposes the same choices.
- Audio memory: reclaim unused RAM for audio resources while keeping project, preset and recording layouts compatible with the preceding candidate.
- Chord-wheel retention: releasing chord keys one by one keeps the full last voicing and its connecting lines after the final release. New notes replace the retained voicing. Sounding-note display and voice modes are unchanged.
- 384 shared user slots: all engines share U001–U384, including complete native FM6, CZ-1 and Prophet voices. The device and web editor use the same library. Recognized preceding preset banks convert on first boot, with visible progress and restartable writes. Unreadable banks reset to empty defaults; readable banks retain compatible entries and discard unsupported entries.
- USB audio: one duplex Melodee device supports computer playback volume and mute, stereo master recording, and optional four-track mono recording. Hosts may need to reselect the combined device. Reported intermittent computer playback crackling remains unresolved.
- Startup and update protection: an interrupted application write can return to the retained USB update loader. Startup displays maintenance before flash writes, resets foreign settings safely, and protects incompatible projects as OLD FORMAT. The first installation of boot protection still requires uninterrupted power while its boot sector is written.
- Source credits: corrected authorship notices distinguish Melodee work from retained Felucca code and preserve third-party notices.
This is a prerelease for testing. Standard (dual-core) and Single core firmware packages are built from the same source commit. The full host suite validates routing, recording, persistence, rendering and resource limits; physical testing of these exact RC4 packages is pending. The shared preset format requires a pre-conversion backup when downgrading to older firmware; see startup and compatibility and boot protection for compatibility and validation limits.
Downloads include both firmware variants and application binaries, native UBOOT recovery tools for Windows x64, macOS Apple Silicon, macOS Intel and Linux x64, and licence notices.
BUILD_INFO.jsonrecords the source commit and native smoke tests;SHA256SUMScovers every asset. The web installer offers RC4 alongside stable and nightly; stable remains the default.