ORBIT, image 1 from its README
1/2
Firmware

ORBIT

Hype: hot · 91

Groovebox derived from SLOOP with sample tools and event tape editing.

forM-VAVE FM-1·by@dspaudio

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

Download v0.9.B

orbit-ble.fwsc· 596 KB· +1 file

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

52 commits and 10 releases in the last year
10 releases
  1. v0.9.BORBIT 0.9.B — Bluetooth MIDILatest2 files

    ORBIT 0.9.B — Bluetooth MIDI sound variant

    Download orbit-ble.fwsc for the M-VAVE FM-1. This is the separate Bluetooth MIDI variant of ORBIT 0.9.0, not a replacement for the default sample-based build. Both use the FM-1_900 installation identity.

    • Turn the radio on with MENU > SYSTEM > BLUETOOTH. It starts off after reboot and advertises as ORBIT FM-1.
    • To follow an external BLE MIDI clock, choose GLO > SYSTEM > SYNC = USB; BLE input shares the USB clock-input route.
    • Hold ENV + LFO for 2 seconds for controller mode. Keys send notes, knobs send assignable CCs, and the sequencer keeps playing.
    • Melodic built-in samples become same-named FM voices. The original PERC drum samples and user-sample playback remain available. See the complete sound list.
    • The delay line is shorter: about 0.74 seconds, or 0.37 seconds per side in PING mode.
    • Writes to FM6/USR4 sectors containing stock radio calibration are refused. Radio startup needs valid original calibration or its retained device-local copy.
    • MIDI clock generation and outgoing SysEx over BLE are not implemented.

    The installed device reported FELUCCA ORBIT 0.9.B. The device owner confirmed BLE pairing and external-clock synchronization. Hardware timing, worst-case radio/audio load and stack high-water remain unmeasured. The default SAMPLE/GRAIN static-cost baselines are exceeded by this variant; the measured values and host checks are recorded in VALIDATION.

    Compare the two sound builds in the web emulator. Browser audio uses the firmware C engine, not a JavaScript approximation. The browser does not emulate Bluetooth.

    Bluetooth integration is ported from Hortator 4e40f27 by DEADACTIVE, with felucca-ble/Felucca credits and SHA-256-pinned JieLi SDK inputs. See LICENSING. The SLOOP 2.8.4 fixes and unchanged ORP8/OPB3 storage contracts are described in the shared notes.

    Show all 2 files
  2. v0.9.0ORBIT 0.9.02 files

    ORBIT 0.9.0 and 0.9.B

    A MIDI controller mode, SLOOP 2.8.4 fixes and a separate Bluetooth MIDI build.

    Both packages were installed on an FM-1 on 2026-10-30. Each update reached 100%, rebooted, returned FM-1_900 and answered INFO with its respective ORBIT 0.9.B or ORBIT 0.9.0 version. The device owner confirmed Bluetooth pairing and synchronization with SYNC set to USB in 0.9.B. Worst-case radio latency, stack high-water and audio under radio load remain unmeasured. Product introduction · User guide

    BuildPackageVersion shown
    Defaultorbit.fwscORBIT 0.9.0
    Bluetooth MIDIorbit-ble.fwscORBIT 0.9.B

    Both keep the install identity FM-1_900.

    Try both sound builds in the web emulator. The selector switches between original melodic samples and the FM replacements; the browser does not emulate a Bluetooth radio.

    MIDI controller mode

    Hold ENV + LFO for 2 seconds, or set MENU > AUDIO > CONTROLLER to ON, and the panel becomes a MIDI controller:

    • Keys send notes on the controller channel (default 1) without playing the internal sound.
    • KNOB 1-4 send CC 7, 74, 71 and 64; FX, SEL, ENV and LFO send momentary CC 80-83 (127 / 0).
    • EDIT + KNOB changes a knob's CC, EDIT + SELECT changes the channel. Both are saved with the device settings.
    • PLAY, REC and OCT keep working and the sequencer keeps playing. Held notes are released when you leave the mode.

    Output goes to USB MIDI, and also to Bluetooth in 0.9.B. Details are in the guide.

    0.9.B: Bluetooth MIDI build

    A separate package with Bluetooth LE MIDI. Turn it on from MENU > SYSTEM > BLUETOOTH; it is never on after a restart. The FM-1 advertises as ORBIT FM-1, mirrors its USB MIDI output (no outgoing SysEx) and treats received Bluetooth MIDI like USB MIDI.

    To make room, 0.9.B:

    • replaces the melodic built-in samples with light FM voices (list);
    • halves the FX delay line, to about 0.74 s (about 0.37 s per side with PING); longer settings are held at the maximum;
    • refuses FM6 bank or USR4 writes that would overwrite the FM-1's stock Bluetooth calibration. If both the original calibration and its retained device-local copy are unavailable, Bluetooth startup shows FAILED.

    See the guide for statuses and connection steps, and BUILDING.md to build it. The default orbit.fwsc contains no Bluetooth code and never enables the radio.

    Credit: the Bluetooth unit is ported from Hortator 4e40f27 by DEADACTIVE (felucca-ble ble-kit), built on Felucca by Leo Kuroshita. It links the JieLi AC79 SDK Bluetooth libraries (Apache-2.0), pinned by SHA-256 to SDK snapshot 64afb30. See LICENSING.md.

    SLOOP 2.8.4 fixes

    Ported from SLOOP 2.8.4 (isod89/sloop-fm1 91f3018), with credit and thanks to the SLOOP authors:

    • Clean fades: the mix is rounded for cleaner fades.
    • UNISON spreads the actual oscillator state in affected engines, including ORBIT's own SWARM, PULSE and FM4. CLUSTER and CLOUD retained their existing behavior and passed the host level checks.
    • PHYS string tuning is corrected.
    • NOISE high keys work with its LFSR, and its colour states stay bounded.
    • SAMPLE and GRAIN play the right pitch on high keys.
    • GRAIN no longer starves after notes are released.
    • Layer pages: a firm layer press opens its page (up to 1 s).
    • REC READY: knobs edit only their own value.
    • SONG confirmations ask again after a long idle.
    • User kit playback pitch exponents are bounded, and project step velocities are masked to seven bits when applied.

    New host tests cover these fixes, and the editor protocol gets a fuzz test under ASan and UBSan.

    Not ported:

    • Bank 8 Program Change: ORBIT doesn't have that feature.
    • FUN6 foreign engines: ORBIT rejects FUN6 projects.
    • dsyn test buffer fix: doesn't apply to ORBIT's test.

    Storage

    ORP8 projects, OPB3 USER banks and the step_t layout are unchanged. The device settings object grows by 16 bytes for the controller settings (104 bytes). Settings saved by older versions load with controller defaults. The web editor accepts the 104-byte settings in backups, as well as the older sizes.

    Older ORBIT firmware can't read the new settings object's SYN kits and MIDI map, and resets them to defaults until saved again. Back up before updating.

    Validation

    Sizes, test counts and golden render results are recorded in the validation record. Installation is not a Bluetooth or audio-performance acceptance test.

    Show all 2 files
  3. v0.8.2ORBIT 0.8.22 files

    ORBIT 0.8.2

    A stereo delay TYPE, and about 19 KB of static RAM back from SLOOP 2.7 memory changes and the removed visualizer. Project and preset formats are unchanged.

    Stereo delay

    FX > DLY 2 > TYPE:

    • MONO: the original centred echo (default; earlier projects open with it).
    • WIDE: the right echo 13 ms after the left.
    • PING: echoes alternate left and right, each bounce lowered by FDBK. The longest PING time is 0.74 s.

    Changing TYPE silences the delay for about 25 ms while the line is cleared. TYPE uses no extra delay memory and is saved with projects and song sections.

    Memory

    • Static RAM headroom grows from 760 B to 19,720 B (.data + .bss 78,584 / 98,304 B); pool use drops by 5,504 B.
    • The full-screen visualizer is removed: HOME on Tape stays on Tape.
    • USER preset banks are read in place from flash. An OPB2/UPB1 bank is converted once to OPB3 at the first start, keeping sound values and macro assignments.
    • Ported from SLOOP 2.7 (the sloop-lab RAM branch by Andre Rezemini), with thanks to the SLOOP authors: packed MIDI note routing, a shared scratch buffer, USER banks read via XIP, DRAWBAR state in the engine arena.

    Validation

    Full host suite, native preview, web tests and pi32v2 target build/budgets passed; all 218 audio renders match the goldens unchanged. Installed on an FM-1 on 2026-10-29 (write 100%, restart, FM-1_900); the device owner confirmed normal operation and the three delay types. Measured audio/timing and physical OCT- rescue were not tested.

    Assets: orbit.fwsc (FM-1 only) and SHA256SUMS.

    Package SHA-256: 45f43de713e9c03ee9b5d130eb7793cbd7f9e2b85206288e4f5cfde10e5be3da

    Release notes · Validation record · User guide

    Show all 2 files
  4. v0.8.1ORBIT 0.8.12 files

    ORBIT 0.8.1

    Priority fixes ported from SLOOP 2.8 / 2.8.3, adapted to ORBIT without changing its project or preset formats.

    Fixes

    • SAMPLE retriggers: fade the old voice before restarting from silence, so ATK applies consistently in POLY, MONO, LEGATO and UNISON. Reused fading voices respect the shared eight-voice budget.
    • Drum allocation: free voice first, then the same sound's voice, then the oldest non-kick; kicks are stolen last.
    • Live-held POLY notes: sequencer gates, steps, ratchets and outgoing slides do not interrupt the player's held pitch.
    • MIDI input: recover MIDI-held notes after a USB/TRS input-queue overflow loses a note message.
    • External MIDI clock: average eight beat durations for steadier tempo readings while following large tempo changes on the next completed beat.
    • Layer pages: appear after a 0.35-second hold, or immediately when a layer control is used.
    • USB rescue: power the FM-1 key matrix before the early OCT- boot scan.

    Compatibility and installation

    The official firmware assets are FM-1 only: orbit.fwsc and SHA256SUMS. Back up before updating.

    ORP8 projects, OPB3 USER banks and editor protocol 13 are unchanged. Install identity remains FM-1_900; the firmware embeds FELUCCA ORBIT 0.8.1. Build with sh build.sh, without --release.

    The exact release package was installed on an FM-1 on October 28, 2026. The updater completed the write, reboot and identity check, and the device owner confirmed normal screen and basic playing operation.

    Verification and limits

    The full host suite, native preview, pi32v2 build and target budgets, and web tests passed. The separate orbit_check.py run had 34 passes and the existing macOS irq_init_test compilation failure. All 218 renders match the reviewed goldens; six intentional audio changes were isolated to the SAMPLE and drum fixes.

    Static .data/.bss headroom is 760 bytes; this is not total runtime free RAM. The separate pool has 10,116 bytes free, and stacks are reserved separately. Physical OCT- rescue, measured audio/timing and stack high-water usage remain unverified.

    This release protects live-held notes; it does not add stored per-note continuation. The optional SLICE engine is disabled in the default build and was not validated.

    Assets

    orbit.fwsc: 610,032 bytes

    77fd12eefc0c2e156a5bea73c0856b2279166068452d2b30a76d358c11b1149c  orbit.fwsc
    

    Full release notes · Validation record · Web installer

    Thanks to the SLOOP/Felucca authors and contributors. Existing source credits, GPL notices, exceptions and asset licenses are preserved.

    Show all 2 files
  5. v0.8.0ORBIT 0.8.02 files

    ORBIT 0.8.0

    Track-filter resonance and band-pass mode, plus merged SMK-37 support.

    ORBIT 0.8.0 adds track-filter controls, preserves their values and macro assignments in the new storage formats, and removes the built-in demo-song loader. Official firmware binaries are FM-1 only. SMK-37 support is included in the source, not as published model binaries. Product introduction · User guide

    Track filter, issue #5

    The FX > FILTER page now has three controls on every synth track and the drum track:

    • FILT, KNOB 1: the existing -64..63 range. Zero remains OFF/bypass.
    • RES, KNOB 2: adjustable resonance, 0..127. The default is 40 out of 127, shown as about 31%, matching the previous fixed resonance.
    • TYPE, KNOB 3: LP/HP or BP. LP/HP retains the original signed behavior: negative FILT closes the low-pass filter, positive FILT opens the high-pass filter. BP sweeps the band's centre from low to high across the same range, with zero still reserved for bypass.

    The track filter is separate from ANALOG's engine filter and the master filter. FILT and RES support step locks; TYPE is not a lock destination. Synth macros can target RES and TYPE. Project/section saves retain both values and their macro assignments.

    For parameter-ID consumers, P_TRES is 63, P_TFTYPE is 64 (0 = LP/HP, 1 = BP), and P_E0 moves to 65. The track parameter count is 73. Engine-control IDs in older saved locks and macros must be migrated, not interpreted as the new filter controls.

    Demo loader removed

    The built-in FIRST LIGHT loader and DEMO SONG menu are removed. The historical host-rendered audio example remains available in the docs. The native preview's separate demo pattern is not a firmware boot pattern.

    Updating does not erase an earlier working autosave. If old demo patterns return, back up any wanted work, stop playback and confirm SAVE > TOOLS > NEW. The screen shows NEW PROJECT; stopped autosave then keeps the empty working project. See the guide.

    Merged SMK-37 source support

    The SMK-37 board port is now in the source tree. It adds velocity keys and pads, fader banks, pitch/mod wheels and a pad sound picker while retaining ORBIT's shared workflow. Model-specific default builds are available for SMK-37 Pro, SMK-37 Elite and MKE-P37; FM-1 remains the default target.

    SMK-37 has sample flash for USR1/USR2 only and no TRS MIDI IN. Its FELUCCA_UART must remain 0. Build and install the package for the matching model, not the FM-1 package. See build commands and SMK-37 controls and safety.

    The v0.8.0 release does not include SMK-37 binaries. These model commands remain available for source builds.

    Projects, USER sounds and downgrades

    Back up before updating. Keep that pre-update backup separate from new 0.8.0 exports.

    Format written by 0.8.0Stored dataOlder data read by 0.8.0
    ORP8 project3840 bytes, including each track's RES and TYPEORP7 and legacy ORBIT FUN1-FUN5 projects
    OPB3 USER bank16 records per bank, 198 bytes each; 3176 bytes per bankFrozen OPB2 and UPB1 bank layouts

    ORP8 uses the previous project's reserved track byte for RES and TYPE, so project size stays unchanged. ORP7 imports preserve the existing sound and sequence data, shift engine-control lock and macro IDs by two, and initialize RES = 40, TYPE = LP/HP.

    New OPB3 records store all 73 parameter values and four macro assignments, including custom RES/TYPE destinations. OPB2 values and macro destinations are mapped by their stored parameter count. UPB1 imports use engine-default macros because that format did not store custom assignments. Missing controls take their defaults.

    Stored values and sound recall are different: a USER bank retains the captured filter values for backup/export, but loading a USER sound keeps the destination track's live FILT, RES and TYPE, along with its other mix and sequence context. The saved macro map is restored and addresses those live values. Use a project/section to recall the whole track state.

    Older firmware, including 0.7.0 and 0.7.1, cannot read ORP8 or OPB3. It may treat new saves as empty and overwrite them through autosave. Return to the matching pre-update backup when downgrading. Raw SLOOP 2.6 FUN6 remains unsupported; ORBIT's engine registry and layout differ.

    Build and installation

    Use the default build:

    sh build.sh
    

    The source version is ORBIT 0.8.0 and the default install identity stays FM-1_900. Don't pass --release: its upstream single-digit version scheme changes identity, appends BETA and does not accept 0.8.0. SMK-37 source builds also use the default version path.

    The official v0.8.0 firmware assets are the FM-1 orbit.fwsc and SHA256SUMS. The public installer uses the FM-1 package; check that it shows 0.8.0 before writing. Local site generation uses --version 0.8.0 with the actual 0.8.0 package. See BUILDING.md for the site commands and CLI installation.

    Validation and hardware evidence

    The final no-demo firmware passed the full host suite, native-preview checks and pi32v2 target build and budget checks. All 218 audio goldens remained unchanged.

    On 2026-10-27, the no-demo 0.8 hardware candidate was installed on an FM-1. The write reached 100%, reboot completed and the FM-1_900 identity returned. The device owner confirmed a normal screen, cleared the earlier working autosave with NEW PROJECT and accepted the hardware for release.

    INFO/PING requests timed out, so no successful firmware-version query is claimed. The version-only 0.8.0 rebuild has not been separately hardware-tested.

    Final package hashes, resource measurements and detailed results belong in the validation record. Earlier evidence stays explicitly historical:

    • 2026-10-15, ORBIT 0.7.1: software checks and package measurements.
    • 2026-10-12, ORBIT 0.7.0: FM-1 installation, reboot, version and PING.
    • 2026-10-10, ORBIT 0.6.0: installation and a short USB audio recording.

    Those earlier results are not new 0.8.0 checks. Host tests and static target-cost checks cannot establish hardware timing.

    Source credits, GPL-3.0-only notices and the existing exceptions and asset rights remain in place. See LICENSING.md and CLUSTER asset provenance.

    Show all 2 files
  6. v0.7.1ORBIT 0.7.12 files

    ORBIT 0.7.1

    A clearer drum grid, more precise controls and a smaller firmware image.

    Changes

    • Drum GRID now shows sixteen instrument rows and sixteen time columns, with voice labels, selected row, cursor, playhead, levels and ratchets. Black keys silently select voices, white keys toggle steps, and OCT-/OCT+ change pages. KIT retains live pads.
    • Slow ENV/LFO turns move one value index per detent; fast turns remain accelerated.
    • During playback with REC on the selected track, supported sound knobs write locks to the playing step, including mapped PERFORM controls. The existing 24-lock limit applies; this is discrete step automation, not continuous motion recording.
    • Tape capture/drop uses SEL + OCT-/OCT+. Plain OCT buttons retain synth octave control. DROP supports Undo/Redo for notes and drums.
    • Pattern SHIFT and LENGTH x2 preserve nudge/fill/lock metadata. Lock-capacity failures preserve the pattern and previous Undo. GRID recording/key routing, last-hit cleanup, SYSTEM layout, SONG labels and recording/FX headers are corrected.
    • Lossless binary font packing, shared glyphs and unused-section removal reduce the app to 563,992 B, 15,768 B smaller than 0.7.0, with 17,572 B free in the app slot. Audio samples and factory sounds are retained.

    Install and compatibility

    Back up first. Download orbit.fwsc and verify it against SHA256SUMS, or use the Web MIDI installer once it shows 0.7.1.

    The install identity remains FM-1_900. The default bank remains 17 engines / 189 sounds, editor protocol 12, and the same ORP7/OPB2 storage formats as 0.7.0. Firmware older than 0.7.0 cannot read these saves; raw SLOOP FUN6 remains unsupported. The package still pads the fixed app slot, so the download remains 610,019 B.

    Package SHA-256: 842a69569eaedd0e063e8caa13e7de5f6fb0412bed5b6fccbf11ed3dbdd8c68d

    Verification

    The actual pi32v2 build and 35 unchanged target-cost budgets pass. Full host regression passes with 218 unchanged audio renders, no health/voice/routing failures or CPU overruns, plus storage/update/web tests, soak and ASan/UBSan checks using the working LLVM sanitizer runtime.

    0.7.1 has not been installed or tested on an FM-1. Previous 0.7.0 installation checks and the 0.6.0 USB recording are historical, not evidence of this release's hardware behavior.

    Full release notes · User guide · Validation record

    Show all 2 files
  7. v0.7.0ORBIT 0.7.02 files

    ORBIT 0.7.0

    New ways to shape a loop, with the original Event Tape workflow intact.

    ORBIT 0.7.0 adds oscillator-source CLOUD, sound-owned user macros, faster envelope/modulation editing and immediate preset browsing to the FM-1's three-synth-plus-drum workflow. It also integrates the functional SLOOP 2.6 improvements. Product introduction · User guide

    Musical changes

    • CLOUD: an original oscillator-source granular engine with WAVE, SIZE, DENS, SPRD, DTUN, CHRP, STCK and TONE. Eight appended sounds: CIRRUS, SILVER MIST, GLASS RAIN, EMBER, SKY FIFTHS, COMET TAIL, DUST PULSE and LOW STRATUS. GRAIN remains the separate sample-source granular engine.
    • User macros: four synth-sound assignments on MACROS; their mapped values on the adjacent PERFORM page through EDIT/SELECT. USER sounds, project/section snapshots, autosave and backups retain the map. HOME remains Event Tape / Visualizer with its original Tape knobs.
    • ENV/LFO travel: wide numeric ranges use larger detents; named choices remain discrete. An instant PRESETS list on Tape/Mixer auditions each sound, then dismisses on edits/navigation or timeout.
    • SLOOP 2.6 effects: eight INSERT types plus dry/wet per track, 27 punch-in effects including eleven black-key effects, REV/ECHO THROW, 1/4D delay, live drum mutes and a separate TEXTURE bed.
    • Modulation and sequencing: ENV SYNC, LFO SYNC/TRIG/POL, ANALOG LP/BP/HP filter type, note LEN, step velocity, MIDI keyboard step entry, project erase and the latched-arp correction.
    • MIDI: per-track channels, single-channel input mode, sustain, pitch bend, Program Change and 16 persistent CC-learn slots. See controller instructions, including MiniLab routing and absolute-CC requirements.
    • Output and editing paths: look-ahead limiting, filter-state seeding, sound-change fades, SYN kick ramp and editor same-value resend. The web editor transports maps and signed16 values with protocol 12, migrates older ORBIT data and preflights full backups.
    • Installation: a product introduction and native screen captures lead the new Web MIDI installer. It automatically validates the latest stable release before Connect, then separately preflights Install. CLI fallback and reproducible site generation are documented.

    The default bank is 17 engines / 189 factory sounds. Existing engine IDs and factory order are preserved; CLOUD appends at ID 16. CLUSTER remains ID 15 with its original 16 raw presets. Optional SLICE changes the subsequent numeric IDs and is not part of the default build.

    The three synth parts share eight global voices. CLUSTER is at most four per part, CLOUD at most three; engine mode, other parts and CPU shedding can reduce sounding voices. MONO/LEGATO are intentionally one voice. CLUSTER's bit-identical arithmetic optimization and the new limiter address measured cost/headroom concerns, not a proven physical crackle fix.

    Install and back up first

    The release target is 0.7.0 and install identity FM-1_900. Use the default build; do not pass --release, which changes product identity. The browser installer address is https://dspaudio.github.io/orbit/. Check its displayed package version before writing.

    Open the site in Chrome/Edge, connect with a USB data cable, grant SysEx through Connect and use Install only after package/device checks. Keep USB and power connected through reboot. For a checked local package:

    python3 tools/fm1_install.py --info
    python3 tools/fm1_install.py build/orbit.fwsc
    

    Dependencies, target build and local site instructions: BUILDING.md. No package hash, image size or target budget is asserted in these notes; final measurements belong to the validation record.

    BACKUP before updating. Stop and export the editor's full Projects / Backup file. Keep the pre-update backup separately from 0.7.0 backups.

    Data0.7.0 contract
    Projects/working autosaveNew ORP7, 3840-byte object, preserving sound values, new controls and four macro IDs per track
    USER preset banksNew OPB2 with maps; frozen UPB1 reader for older ORBIT banks
    Legacy ORBIT projectsFrozen FUN1-FUN5 import with parameter-count migration and signed16 values retained
    Raw SLOOP 2.6 FUN6Rejected; a different registry/layout is not interchangeable
    MIDI learn/routingDevice settings, separate from sound maps, included in full backup
    DowngradeOld firmware cannot read ORP7/OPB2; restore the matching pre-update backup on matching old firmware

    An older autosave can overwrite unreadable new work. Do not assume new MIDI settings or SYN kits survive an old settings reader. Engine/format identity must be checked; a legacy magic alone does not establish SLOOP-to-ORBIT compatibility. Backup and recovery guide.

    Evidence and limits

    Focused host evidence covers the port's storage migration, effects/modulation, MIDI settings and macro persistence, CLOUD/CLUSTER coexistence and the corrected Tape/PERFORM navigation. Native preview and simulated installer checks are software evidence, not hardware tests. Final integrated regression, package and target measurements are recorded separately in VALIDATION.md.

    The current CLUSTER health probe rendered 624 conditions, including 576 full mixes and 48 isolated-track conditions. Requested POLY voices remained present in the tested full-mix cases and endpoint clipping counts were zero. This does not prove target ISR deadlines, DMA behavior or subjective quality. CLUSTER scope.

    Physical 0.6.0 installation and a short 48 kHz USB recording on 2026-10-10 remain historical. 0.7.0 hardware timing, power-loss tests and resolution of the reported physical crackle are not yet verified. The 0.7.0 package was installed on an FM-1: transfer reached 100%, automatic reboot completed, and actual INFO reported FELUCCA ORBIT 0.7.0 with protocol 12, 17 engines and 45 globals; PING passed. Complete pre/post backups passed CRC checks, with the working project's musical data preserved through the FUN5-to-ORP7 conversion. This is installation evidence, not an audio test.

    Origin and rights

    ORBIT originated from the SLOOP v2.3 source snapshot d691ba7b2d922f1a1f41a3622cffe29ce41c5506. This port uses immutable SLOOP v2.6 commit d30d6553353373cf5506b9ed285fc4a2aa0c30ef, retaining ORBIT's product identity, engine order, Event Tape and storage. Upstream bold-font/branding choices do not replace ORBIT's interface.

    SLOOP/Felucca author credits and GPL-3.0-only notices are retained, including Copyright (C) 2026 Leo Kuroshita (@kurogedelic), Hügelton Instruments. Original CLUSTER tables/factory data retain Teenage Engineering's rights and are not relicensed as CC0 or new GPL assets. See LICENSING.md and CLUSTER asset provenance.

    Show all 2 files
  8. v0.6.0ORBIT 0.6.02 files

    ORBIT 0.6.0

    This release adds CLUSTER with 16 original factory presets and signed16 editor transport, and replaces FLUTE/SCRCH with small synthesized waveforms. The package was installed on a physical FM-1; data preservation and a short 48 kHz stereo USB output recording were verified.

    Changes

    • CLUSTER connects a verified C translation of the official original OP-1 #246 cluster oscillator. It is not a renamed SWARM/PULSE/FM4 engine. It is appended as ID 15, preserving existing engine IDs 0..14. The default build has 16 engines and 181 factory sounds.
    • Added 16 presets preserving their original names and eight signed16 raw knobs: bass face, caterpillar, cstrings, dissolver, dub bass, grit drive, kids show, love chords, mr legato, newday, serious bass, so lonely, sqeek bend, streengs, trans4m, xyz files.
    • A per-voice cache connects the original 128-sample kernel to ORBIT's 32-sample control blocks. It uses the existing shared engine arena and flash const tables. Pitch, ADSR, velocity and FX remain ORBIT's, so this is not a complete reproduction of the original OP-1 patches. Some presets with identical raw values can sound the same under the common ORBIT envelope.
    • Editor protocol v11 / WIDE command 77 transfers signed16 values. Parameters, descriptors, user presets, tracks, locks, WATCH and web library files preserve raw values; legacy v14 commands are retained.
    • LOFI FLUTE, SCRATCH and FLUTE DUST use synthesized replacement waveforms. FLUTE provides fundamental/weak-harmonic loops; SCRCH provides deterministic noise and a bidirectional frequency-sweep one-shot. They are synthesized at build time, stored as ADPCM and played by the existing SAMPLE/GRAIN engines, not moved to a new real-time synth engine.
    • Replacing 54,284 B of recordings with 9,244 B of replacement data reclaims 45,040 B. Original set/zone/preset/USR IDs, roots, key zones and all other sample data are preserved.
    • Original provenance, addresses, hashes and rights are documented. Extracted Teenage Engineering waveform/table/factory data is not relicensed as CC0 or as new GPL assets. New code and existing license notices are preserved.

    Installation and compatibility

    Download the attached orbit.fwsc and SHA256SUMS into the same directory and verify them.

    shasum -a 256 -c SHA256SUMS
    python3 tools/fm1_install.py orbit.fwsc
    

    The package is 610,019 B, with install identity FM-1_900. The device reports FELUCCA ORBIT 0.6.0 in INFO.

    SHA256: 460042548a8b915ee11063c9f0df67d9c6c1a79a73c48b6cefac1eb91180b11e.

    FUN5 stays at 3,840 B, preserving existing projects, settings, user data and engine IDs. Legacy editor commands work, but v14 alone cannot preserve CLUSTER's full raw range. Use this release's web/editor.html to edit CLUSTER. Older firmware has no CLUSTER engine, so do not assume projects using it will retain their sound after a downgrade. Raw SLOOP projects/backups use a different engine registry, and ORBIT 0.3/SLOOP 2.3 cannot read FUN5. Back up before downgrading.

    Validation

    • Hardware transfer reached 100%, followed by automatic reboot and working USB INFO/PING. Protocol 11, 16 engines and 33 globals were confirmed. All 14/14 backup objects were bit-identical before installation, after installation and after the sound checks.
    • The actual device's 16 CLUSTER names and eight raw values per preset matched the factory JSON. 19 MIDI phrases were sent to the 16 CLUSTER presets and three sample replacements, with a working PING after each phrase. Original track engine/preset/parameters and selection were restored.
    • QuickTime was explicitly set to Felucca USB to record 38.164 seconds of 48 kHz stereo output. Decoded PCM contains 1,831,872 frames, left/right peaks 2,574 / 2,574 and 0 full-scale clipped samples. Personal backups and recordings are not published.
    • pi32v2 image 548,960/581,564 B, RAM 85,908/98,304 B, pool 333,948/344,064 B. All 33 static cost checks passed, retaining existing baselines and tolerances.
    • Strict macOS regression: 210 renders, 0 changed/missing references, health failures, voice/routing failures, CPU overruns or crashes. Only the three intentionally replaced sounds had their existing hashes updated; new CLUSTER entries were added.
    • Linux amd64 host checks passed 24/24, along with web, native C preview and package installer checks. The macOS IRQ test retains its existing Mach-O/MMIO platform limitation. The full Linux runner and core oracle/UBSan passed during integration; the validation record distinguishes them from checks rerun after the version bump.
    • The product core matched the strict oracle over 729 cases / 5,103 blocks / 653,184 samples: PCM, state, return values and tables were byte-for-byte identical.

    Still unverified: subjective listening, headphone/line output, actual ISR timing, worst-case audio underruns, long-term stability, power-cycling, flash power loss and recovery. The short USB recording and host/static cost checks do not establish those properties. Optional SLICE target resources and real Windows/WSL installation are also unverified.

    The separate web emulator is not updated automatically by this firmware release. Native preview saving is nonpersistent and does not support sample uploads. Event Tape is a sequencer event view/edit layer, not audio recording.

    CLUSTER scope | Provenance and assets | Validation record

    Show all 2 files
  9. v0.5.0ORBIT 0.5.02 files

    ORBIT 0.5.0

    This release brings the SLOOP v2.5 features into ORBIT while keeping ORBIT's existing engines, Event Tape, controls and storage contract. The comparison runs from v2.4.1 a1c5d68767ae10fafb6821dc63b9b1fc490342d2 to v2.5 fa9ce5742f4aea9484e7c129dd81079d07e7321f.

    Changes

    • Added the PHYS and NOISE engines and 77 new factory sounds. The default bank now holds 165 sounds, and the existing ORBIT engine IDs 0-12 and first 12 sounds are unchanged.
    • Added SYN1-SYN4 user synth drum kits with sound editing, audition, storage and backup/restore. The metronome/count-in now works independently of drum kit, mute and solo, and there's a drum delay send and MIDI CC control.
    • USB audio supports 44.1/48 kHz host streams. The synth engine stays at 44.1 kHz, and the 48 kHz stream uses a fixed FIR table.
    • FIR reads stay within each channel's history array. Restored SYN values are sanitized in staging before the live bank is published with interrupts briefly masked.
    • The web Sequencer gained LEN 1-64, a piano roll and MIDI file import/export, plus Song arrangement editing and batch bank storage of up to 27 DX7 cartridge voices.
    • STEP now records the real CHORD/CHORD+/VLEAD result. Swing shows 0-100, and the old SCL button and page are labeled SEL. The scale parameter is still named SCL.
    • A shared engine arena, a small pitch LUT and generated GM cymbal tails reclaim flash. No full framebuffer, PCM tape or Bluetooth was added.
    • Fixed --slice 0/1 passthrough in the Windows build. GPL, asset, Apache and DaisySP/Rings MIT notices are kept.

    Installation and compatibility

    Download the attached orbit.fwsc and SHA256SUMS, then check the checksum.

    shasum -a 256 -c SHA256SUMS
    python3 tools/fm1_install.py orbit.fwsc
    

    The package is 610,019 B. The install identity is still FM-1_900, and the firmware reports FELUCCA ORBIT 0.5.0 in INFO.

    SHA-256: 11d52a4adbe312af0eded335483628f72072cb5699ffadced56219e6d1eba3cf.

    FUN5 stays at 3,840 B and keeps earlier ORBIT projects, settings and engine IDs. The file globals array has 32 entries and the runtime has 33; drum delay is stored in a reserved byte. The editor protocol is v10, and SYN backup is object 9. The web editor checks the capabilities of v9 devices and limits features they don't support. Raw SLOOP projects/backups use a different engine registry, so don't assume they work with ORBIT. Back up before going down to ORBIT 0.3 or SLOOP 2.3, since neither can read FUN5.

    Validation

    • The final package was installed on a real FM-1: the write reached 100%, it rebooted on its own, USB reconnected and INFO/PING worked, reporting protocol 10, engines 15 and globals 33. All 14 backup objects, including SYN, were bit-identical before and after the final install; all 13 original objects from 0.4.1 also remain unchanged. The user confirmed normal operation after the initial 0.5.0 install. Personal backup files aren't published.
    • pi32v2 image 571,856/581,564 B, RAM 85,892/98,304 B and pool 333,948/344,064 B are all within limits. The 31 static target CPU items pass with the existing baselines and tolerances.
    • Passed 21 host checks, web, native C preview, real package format and installer checks, the full Linux host runner, ASan/UBSan and the default stress/soak. The strict macOS instruction-counted regression covers 194 renders with zero health, voice, CPU or crash failures.
    • The 12 existing ORBIT sounds are bit-identical to the pre-integration binary. Only the intended GM KIT tail change and the new sound and mix entries were reviewed into the baselines, and no existing CPU baseline was raised.

    Still unverified on hardware: audio quality, real USB 48 kHz transfer, underruns, ISR cycles, long-term stability, flash power loss and recovery, and power-cycling after persistent SYN storage. Real Windows/WSL runs and optional SLICE target resources are also unverified. Host and static cost checks aren't a guarantee of hardware timing.

    The separate web emulator is deployed from its own repository and isn't updated automatically by this firmware release. Native preview saving is a non-persistent host double and doesn't support sample upload. Event Tape edits sequencer events and isn't audio recording.

    Full integration notes and usage · Validation record

    Show all 2 files
  10. v0.4.1ORBIT 0.4.12 files

    ORBIT 0.4.1

    Changes

    • Brought the original OP-1's Synth / Drum / Event Tape / Mixer workflow and T1 engine / T2 envelope / T3 effect / T4 LFO controls to the FM-1 hardware controls and web editing interface. The default encoder colors are blue / green / white / orange.
    • Mixer KNOB 1–4 controls LEVEL or PAN for the four tracks. SELECT also provides access to the existing SWING / LEVEL / LEN / PAN controls for the selected track.
    • Added the Orbit wordmark and boot screen, English as the default web language, preview input and stereo visualizer taps, and recovery from interrupted editor restores.
    • Reduced PHASE resonance window calculations and overload voice searches to resolve the existing host CPU and ALNK0 static budget failures. Golden references, budget baselines, and tolerances were not changed.
    • Rebuilt the web emulator from the same C firmware while preserving the SLOOP and Felucca comparison binaries.

    Installation and compatibility

    Download the attached orbit.fwsc and verify it using SHA256SUMS. The installation identity remains FM-1_900; the firmware version is ORBIT 0.4.1.

    python3 tools/fm1_install.py orbit.fwsc
    

    The FUN5 save format, support for reading older FUN1–FUN4 projects, ORBIT engine IDs, and editor protocol v9 are preserved. Back up your data before downgrading to ORBIT 0.3 / SLOOP 2.3, which cannot read FUN5 files.

    The web emulator runs the actual C engine and stores projects and settings in the browser's IndexedDB. Event Tape edits sequencer events; it is not PCM audio recording. USB, SysEx, sample uploads, and Bluetooth are not supported in the emulator.

    Validation scope

    The pi32v2 build, memory and static budget checks, 19 Linux host programs and the full test runner, fresh macOS instruction-counted golden/CPU checks, and the latest native HTTP/PCM and actual package format checks passed. orbit.fwsc is 610,019 B, with SHA-256 31afad04333e6593e0333039c53f26b53ccab032b665cdc8e4aa3ec82bb53253. Golden and CPU baselines for the 12 existing independent-engine presets remain unavailable.

    Results are recorded in the validation log. At the time of this release's validation, no physical FM-1 was connected, so flashing, boot, USB transfers, IRQ cycles, audio underruns, and latency were unverified. Passing the target build and browser checks does not establish hardware stability.

    Show all 2 files