Mod

eurorack-organic-modulation-firmware

Hype14/100

Eurorack 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.

Downloads
0
Stars
3
Forks
0
Commits
47
Last commit
Download v0.3.0

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

47
Commits
2
Releases
47 commits and 2 releases in the last year
Activity · last 12 months
2 releases
  1. 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> or scripts/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, chop and build.
    • 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 ClockSource domain 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, and SHA256SUMS.txt / MD5SUMS.txt covering 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

    v0.2.0...v0.3.0

    Show all 57 files
    Other files
  2. 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 refresh and recreate maintenance 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/electronica and domain/percussion; shared engine, fixed-point, frequency and RNG support remains at the domain root.
    • DriftEngine now 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-Medium PDF 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.0 to the Node.js 24-compatible actions/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, and SHA256SUMS.txt / MD5SUMS.txt covering 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

    v0.1.0...v0.2.0

    Show all 50 files
    Other files