Repository navigation
Releases: dspaudio/orbit
Release list
ORBIT 0.6.0
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.fwscThe 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.
ORBIT 0.5.0
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/1passthrough 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.fwscThe 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.
ORBIT 0.4.1
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.fwscThe 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.