
eurorack-organic-modulation-firmware
Hype14/100Eurorack firmware for Free Modular Drift: organic and random CV modulation on Arduino Nano / ATmega328P with Perlin noise, Brownian motion, Bézier modulation and skewable LFO. Modern C++17/PlatformIO
eurorack-organic-modulation-firmware is a mod for the Free Modular Drift, by @napolitano. Open source under GPL-3.0, latest release v0.3.0 (August 2026), 3 stars on GitHub.
forFree Modular Drift·by@napolitano
Unclaimed. Is this yours? Sign in with GitHub as @napolitano to claim it.
drift-user-manual.0.3.0.pdf· 901 KB· +56 files
GPL-3.0· napolitano/eurorack-organic-modulation-firmware·ko-fi.com/southsignallab·downloads come from the creator’s GitHub releases
v0.3.0Latest57 files
Version 0.3.0 expands Free Modular Drift to seven banks and twenty-eight algorithms by adding the Dubstep / Bass bank with Wobble, Growl, Chop and Build. The release also introduces named single-algorithm developer targets for direct on-device qualification, extracts the proven Percussion clock detector into a shared clock source used by both rhythm-oriented banks, and extends CI, coverage, release packaging and the user manual to the complete seven-bank platform.
Changelog
Added
- Dubstep / Bass bank: Wobble, Growl, Chop and Build, implementing tempo-quantised bass-motion phrases, compound timbral CV, deterministic syncopated articulation and phrase-scale escalation from the previously documented engineering contracts.
- Named PlatformIO developer targets for all 28 algorithms: a complete bank can still be built/flashed with normal rear-DIP selection, while
FMD_FORCE_ALGORITHM=<name>orscripts/flash_drift.py algorithm <name>locks an on-device test image directly to a named algorithm and rejects bank/name mismatches at compile time. - Dedicated Dubstep/Bass Native, sanitizer, bank-owned coverage, AVR and timing environments, plus named developer targets
wobble,growl,chopandbuild. - Dubstep/Bass implementation verification adds 26 native cases across four dedicated algorithm suites and raises the 0.3.0 traceability set to 64 acceptance criteria / 236 native cases / 39 suites.
- Expanded the maintained user manual and dedicated Dubstep/Bass bank guide to all 28 current algorithms, including four DIP SVGs, four algorithm-explanation SVGs, seven-bank cover artwork and the verified bank-owned coverage result.
Changed
- Extracted Percussion's proven Speed-CV clock detector into a shared
ClockSourcedomain component and reused the identical two-edge-lock / 2.5-period-fallback contract for Dubstep/Bass rather than maintaining a second clock implementation. - Release tooling now detects and qualifies the seventh bank and knows its two Nano images, provenance files and artifact names, while an explicit frozen-manual guard prevents publishing the bank before Wobble/Growl/Chop/Build are added to the maintained user manual.
Fixed
- Corrected the 0.3.0 coverage scope after extracting the shared
ClockSource: Classic now uses an explicit positive source allow-list, the shared clock has its own 97%/90% coverage gate, and Percussion/Dubstep bank-owned reports no longer test-but-ignore that shared file. Structural policy tests prevent a future root-level shared component from silently diluting Classic coverage.
Artifact integrity
Release assets include versioned Classic, Organic, Generative, Ambient, Electronica, Percussion and Dubstep firmware images for both Nano bootloaders for the published banks, the frozen versioned user-manual ODT plus its generated PDF,
FIRMWARE-ARTIFACTS.X.Y.Z.md, per-image build provenance, andSHA256SUMS.txt/MD5SUMS.txtcovering every generated release file. Use the SHA-256 manifest for normal integrity verification; the MD5 manifest is provided only as an additional compatibility checksum.Diff
- drift-user-manual.0.3.0.pdf901 KB4↓
- drift-user-manual.0.3.0.odt678 KB1↓
- fm-drift-percussion-nano-new-bootloader.0.3.0.hex33 KB1↓
- fm-drift-percussion-nano-old-bootloader.0.3.0.hex33 KB1↓
- fm-drift-dubstep-nano-new-bootloader.0.3.0.hex31 KB1↓
Show all 57 filesHide 52 files
- fm-drift-dubstep-nano-old-bootloader.0.3.0.hex31 KB1↓
- fm-drift-classic-nano-new-bootloader.0.3.0.elf29 KB1↓
- fm-drift-classic-nano-old-bootloader.0.3.0.elf29 KB1↓
- fm-drift-percussion-nano-new-bootloader.0.3.0.elf29 KB1↓
- fm-drift-percussion-nano-old-bootloader.0.3.0.elf29 KB1↓
- fm-drift-organic-nano-new-bootloader.0.3.0.elf29 KB1↓
- fm-drift-organic-nano-old-bootloader.0.3.0.elf29 KB1↓
- fm-drift-dubstep-nano-new-bootloader.0.3.0.elf29 KB1↓
- fm-drift-dubstep-nano-old-bootloader.0.3.0.elf29 KB1↓
- fm-drift-classic-nano-new-bootloader.0.3.0.hex29 KB1↓
- fm-drift-classic-nano-old-bootloader.0.3.0.hex29 KB1↓
- fm-drift-ambient-nano-new-bootloader.0.3.0.hex29 KB1↓
- fm-drift-ambient-nano-old-bootloader.0.3.0.hex29 KB1↓
- fm-drift-ambient-nano-new-bootloader.0.3.0.elf28 KB1↓
- fm-drift-ambient-nano-old-bootloader.0.3.0.elf28 KB1↓
- fm-drift-organic-nano-new-bootloader.0.3.0.hex27 KB1↓
- fm-drift-organic-nano-old-bootloader.0.3.0.hex27 KB1↓
- fm-drift-electronica-nano-new-bootloader.0.3.0.elf25 KB1↓
- fm-drift-electronica-nano-old-bootloader.0.3.0.elf25 KB1↓
- README.md25 KB1↓
- fm-drift-electronica-nano-new-bootloader.0.3.0.hex25 KB1↓
- fm-drift-electronica-nano-old-bootloader.0.3.0.hex25 KB1↓
- fm-drift-generative-nano-new-bootloader.0.3.0.elf24 KB1↓
- fm-drift-generative-nano-old-bootloader.0.3.0.elf24 KB1↓
- fm-drift-generative-nano-new-bootloader.0.3.0.hex24 KB1↓
- fm-drift-generative-nano-old-bootloader.0.3.0.hex24 KB1↓
- MD5SUMS.txt4.0 KB1↓
- BUILD-INFO-electronica-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-generative-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-percussion-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-electronica-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-generative-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-percussion-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-ambient-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-dubstep-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-organic-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-ambient-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-dubstep-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-organic-nano-old.0.3.0.txt1.4 KB1↓
- BUILD-INFO-classic-nano-new.0.3.0.txt1.4 KB1↓
- BUILD-INFO-classic-nano-old.0.3.0.txt1.3 KB1↓
Other files- LICENSE34 KB0↓
- CHANGELOG.md20 KB0↓
- README-BANK-ORGANIC.md18 KB0↓
- README-BANK-PERCUSSION.md16 KB0↓
- README-BANK-DUBSTEP.md15 KB0↓
- README-BANK-CLASSIC.md14 KB0↓
- README-BANK-GENERATIVE.md14 KB0↓
- README-BANK-AMBIENT.md12 KB0↓
- README-BANK-ELECTRONICA.md12 KB0↓
- SHA256SUMS.txt5.7 KB0↓
- FIRMWARE-ARTIFACTS.0.3.0.md5.2 KB0↓
v0.2.050 files
Version 0.2.0 expands Free Modular Drift from the four-algorithm Classic baseline into a six-bank, twenty-four-algorithm modulation platform for the original ATmega328P hardware. Organic, Generative, Ambient, Electronica and Percussion add distinct continuous, memory-based, long-form and rhythm-oriented behaviors; Percussion also supports an optional 0–5 V quarter-note clock on Speed CV with automatic Speed-knob fallback. The release adds bank-organized domain code, mathematical and system verification across all six banks, a substantially expanded user manual, immutable release-manual snapshots, and bank-aware release packaging for both supported Nano bootloaders.
Changelog
Added
- End-user firmware installation and bank-switching documentation modelled on the proven Quantizer update flow, including explicit bank/bootloader asset selection, USB-only flashing safety, rear-DIP algorithm selection, AVRDUDE/AVRDUDESS procedures, troubleshooting and bootloader recovery.
- Numbered AVRDUDESS 2.20 / AVRDUDE 8.1 reference screenshot reused from the companion Quantizer documentation for the Windows 11 flashing guide.
- Organic bank: Fractal, Vector, Rain and Attractor, with fixed-point implementations, bank-specific mathematical tests, engineering analyses, documentation and dedicated native/AVR qualification environments.
- Generative bank: Turing, Markov, Motif and Urn, providing mutating-loop, finite-state, phrase-transformation and leaky-reinforcement behaviors with deterministic/statistical verification.
- Ambient bank: Current, Anchor, Breath and Fog, covering quasiperiodic long-form motion, mean reversion, recurrent macro-gestures and smooth stochastic cloudlets on an intentionally slower musical time scale.
- Electronica bank: Pump, Acid, Shuffle and Polymeter, using an internal 30–240 BPM scheduler for rhythmically legible CV aimed at house, acid, techno and related electronic styles.
- Percussion bank: Euclid, Repeat, Probability and Humanize, with a shared 16-step bar model, 4/8/12/16-bar phrase structure and phrase-aware fills where appropriate.
- Percussion external clock mode: Speed CV is repurposed in this bank as an optional 0–5 V quarter-note clock input. Two valid rising edges acquire external timing; clock loss after 2.5 periods automatically falls back to the Speed-knob 30–240 BPM source without resetting the running bar/phrase counters.
- Explicit current-hardware safety warnings in the main README, Percussion guide and user manual: 10 V Eurorack clocks/triggers are unsupported on Speed CV until the input hardware is revised.
- Dedicated bank-level design documents and per-algorithm engineering analyses for all twenty newly added algorithms, including mathematical contracts, duplication audits, ATmega328P feasibility, verification strategy and musical assessment.
- Dedicated root-level bank guides for Organic, Generative, Ambient, Electronica and Percussion, alongside the Classic guide.
- Expanded native verification to 210 test cases across 35 suites and 59 acceptance criteria, with bank-specific mathematical, integration, property, system, sanitizer, coverage, AVR resource-budget and timing paths.
- Expanded the maintained user manual to all six banks and twenty-four algorithms, including bank-specific DIP diagrams, mathematical foundations, origin/musical-value overviews, Percussion clock guidance and 59 maintained SVG assets.
- Release-preparation manual freezing under
docs/manual/releases/X.Y.Z/, with immutable byte-for-byte ODT snapshots and historical tag-based backfill support for releases predating the mechanism. - Bank-aware release packaging for every bank present in a tag. A current six-bank release publishes both Nano bootloader variants as HEX and ELF, yielding 24 firmware files, plus 12 per-image BUILD-INFO provenance files, the frozen ODT/PDF manual pair, firmware manifest and checksum manifests.
- Manual
refreshandrecreatemaintenance modes for rebuilding an existing release tag without moving or rewriting the Git tag. - CI/release structural contract tests that fail if a bank silently drops out of native tests, coverage, sanitizers, AVR builds, timing qualification, manual coverage or release packaging.
Changed
- Reworked the root README around end-user discovery and accessibility: musical bank positioning, clearer first-patch guidance, prominent installation/bank-switching entry points, explicit project/community stance and a cleaner separation between user-facing and developer-facing material.
- Refactored the portable domain tree into bank-owned subdirectories under
domain/classic,domain/organic,domain/generative,domain/ambient,domain/electronicaanddomain/percussion; shared engine, fixed-point, frequency and RNG support remains at the domain root. DriftEnginenow owns and dispatches only the compile-time-selected bank, so inactive-bank algorithm state does not consume SRAM in a firmware image.- Generic selection, integration, property and system tests are bank-aware and exercise the four DIP slots of the active compile-time bank.
- The user manual now treats algorithm banks as the primary navigation model, with separate bank sections, consistent per-algorithm structure and a compact six-bank overview; it also documents the unavoidable four-selector-state hardware limit and, with due seriousness, the resulting case for owning more than one Drift.
- Release dependency installation was hardened with canonical Ubuntu mirrors, bounded APT retries/timeouts, minimal LibreOffice packages, an explicit job timeout and per-tag workflow concurrency.
- Dependabot version updates are consolidated into a monthly multi-ecosystem update to reduce automated pull-request noise.
- Release notes, artifact manifests, provenance records and integrity checks now derive the actual bank set from the tagged source, preserving compatibility with historical Classic-only and intermediate tags.
- All five extended-bank guides now follow the same developer-facing documentation standard as Classic: Organic was reworked with explicit bank character, visual DIP cards, fuller musical guidance, fixed-point/runtime rationale and the extended-bank coverage contract; Generative, Ambient, Electronica and Percussion retain the same visual and structural standard.
Fixed
- Replaced the oversized eight-column bank/DIP truth table in the main README with a shared four-slot mapping plus a compact bank/slot table, avoiding the broken raw-table rendering seen on GitHub and improving narrow-screen readability.
- Replaced a GitHub-disallowed MathJax operator-name macro in Electronica and engineering-analysis equations with supported roman-text notation, and added a repository guard against reintroducing it.
- Corrected the shared Electronica/Percussion tempo mapping so the documented endpoints are actually 30–240 BPM rather than the previous factor-of-four-under-scaled 7.5–60 BPM runtime behavior.
- Corrected Humanize positive-jitter scheduling so delayed events are offset from their nominal grid boundary rather than from event preparation, preserving the intended no-drift timing contract.
- Corrected coverage/release metadata and workflow guards after the domain-by-bank refactor so nested bank sources remain included in the intended qualification paths.
- Removed repeated full-suite test execution from CI/release qualification: the complete native regression suite now runs once, while bank wiring, sanitizer and coverage stages use explicit PlatformIO suite filters.
- Hardened tagged/manual release publication on Ubuntu 24.04 by using the classic static Ubuntu font package, validating exact Ubuntu Regular/Light resolution before LibreOffice export, and emitting font/PDF diagnostics on failure.
- Hardened coverage for Organic, Generative, Ambient, Electronica and Percussion: bank reports now measure only bank-owned production code, enforce 97% line / 90% branch aggregate floors plus 95% / 80% per-file floors, exclude compiler-generated throw/unreachable branches, and add targeted edge/guard tests for previously weak paths.
- Corrected release-manual validation for LibreOffice/Noble's
Ubuntu Light→Ubuntu-MediumPDF naming quirk: the alias is accepted only when the ODT source explicitly requests Ubuntu Light; real font substitution still fails. - Updated the PlatformIO cache action from
actions/cache@v4.2.0to the Node.js 24-compatibleactions/cache@v6.1.0.
Artifact integrity
Release assets include versioned Classic, Organic, Generative, Ambient, Electronica and Percussion firmware images for both Nano bootloaders for the published banks, the frozen versioned user-manual ODT plus its generated PDF,
FIRMWARE-ARTIFACTS.X.Y.Z.md, per-image build provenance, andSHA256SUMS.txt/MD5SUMS.txtcovering every generated release file. Use the SHA-256 manifest for normal integrity verification; the MD5 manifest is provided only as an additional compatibility checksum.Diff
- drift-user-manual.0.2.0.odt662 KB0↓
- fm-drift-percussion-nano-new-bootloader.0.2.0.hex33 KB0↓
- fm-drift-percussion-nano-old-bootloader.0.2.0.hex33 KB0↓
- fm-drift-classic-nano-new-bootloader.0.2.0.elf29 KB0↓
- fm-drift-classic-nano-old-bootloader.0.2.0.elf29 KB0↓
Show all 50 filesHide 45 files
- fm-drift-percussion-nano-new-bootloader.0.2.0.elf29 KB0↓
- fm-drift-percussion-nano-old-bootloader.0.2.0.elf29 KB0↓
- fm-drift-organic-nano-new-bootloader.0.2.0.elf29 KB0↓
- fm-drift-organic-nano-old-bootloader.0.2.0.elf29 KB0↓
- fm-drift-classic-nano-new-bootloader.0.2.0.hex29 KB0↓
- fm-drift-classic-nano-old-bootloader.0.2.0.hex29 KB0↓
- fm-drift-ambient-nano-new-bootloader.0.2.0.hex29 KB0↓
- fm-drift-ambient-nano-old-bootloader.0.2.0.hex29 KB0↓
- fm-drift-ambient-nano-new-bootloader.0.2.0.elf28 KB0↓
- fm-drift-ambient-nano-old-bootloader.0.2.0.elf28 KB0↓
- fm-drift-organic-nano-new-bootloader.0.2.0.hex27 KB0↓
- fm-drift-organic-nano-old-bootloader.0.2.0.hex27 KB0↓
- fm-drift-electronica-nano-new-bootloader.0.2.0.elf25 KB0↓
- fm-drift-electronica-nano-old-bootloader.0.2.0.elf25 KB0↓
- fm-drift-electronica-nano-new-bootloader.0.2.0.hex25 KB0↓
- fm-drift-electronica-nano-old-bootloader.0.2.0.hex25 KB0↓
- fm-drift-generative-nano-new-bootloader.0.2.0.elf24 KB0↓
- fm-drift-generative-nano-old-bootloader.0.2.0.elf24 KB0↓
- fm-drift-generative-nano-new-bootloader.0.2.0.hex24 KB0↓
- fm-drift-generative-nano-old-bootloader.0.2.0.hex24 KB0↓
Other files- drift-user-manual.0.2.0.pdf850 KB1↓
- BUILD-INFO-ambient-nano-new.0.2.0.txt1.4 KB1↓
- LICENSE34 KB0↓
- README.md21 KB0↓
- README-BANK-ORGANIC.md18 KB0↓
- CHANGELOG.md17 KB0↓
- README-BANK-PERCUSSION.md16 KB0↓
- README-BANK-CLASSIC.md13 KB0↓
- README-BANK-GENERATIVE.md13 KB0↓
- README-BANK-AMBIENT.md12 KB0↓
- README-BANK-ELECTRONICA.md12 KB0↓
- SHA256SUMS.txt5.0 KB0↓
- FIRMWARE-ARTIFACTS.0.2.0.md4.6 KB0↓
- MD5SUMS.txt3.5 KB0↓
- BUILD-INFO-electronica-nano-new.0.2.0.txt1.4 KB0↓
- BUILD-INFO-generative-nano-new.0.2.0.txt1.4 KB0↓
- BUILD-INFO-percussion-nano-new.0.2.0.txt1.4 KB0↓
- BUILD-INFO-electronica-nano-old.0.2.0.txt1.4 KB0↓
- BUILD-INFO-generative-nano-old.0.2.0.txt1.4 KB0↓
- BUILD-INFO-percussion-nano-old.0.2.0.txt1.4 KB0↓
- BUILD-INFO-organic-nano-new.0.2.0.txt1.4 KB0↓
- BUILD-INFO-ambient-nano-old.0.2.0.txt1.4 KB0↓
- BUILD-INFO-organic-nano-old.0.2.0.txt1.4 KB0↓
- BUILD-INFO-classic-nano-new.0.2.0.txt1.4 KB0↓
- BUILD-INFO-classic-nano-old.0.2.0.txt1.3 KB0↓