A diatonic chord generator MIDI FX plugin for macOS. One trigger note in, one diatonic chord out, authored as a CLAP and projected outward to an Audio Unit (aumi) for Logic Pro's MIDI FX slot.
Play one key and a diatonic chord sounds. Hold three and three chords sound, each releasing independently. Chord quality is never configured: it falls out of the selected key and scale, so degree 0 of F# Aeolian gives F#m and degree 2 gives A major, with no per-chord data anywhere.
Springer is deliberately not competing with Scaler, Cthulhu or InstaChord. It is a specialized instrument that works exactly one way, rebuilt from a Logic Pro Scripter script that had been in daily use and had outgrown what Scripter can carry.
Nothing loads yet. The project is at Phase 0 of eight, and Phase 0 is the repository foundation: agent configuration, lint configuration, CI, the thirteen architecture decision records, and the original Scripter script preserved verbatim as the normative statement of what the plugin must do.
There is no build yet. build.zig, the CLAP bindings and the plugin skeleton arrive together in Phase 1, which deliberately proves the Audio Unit path first, against an empty pass-through plugin, because that path is the largest unknown in the project.
The design is settled and written down. The build plan is the master document; docs/adr/ holds the decisions; AGENTS.md is the working hub.
| Phase | Scope | Status |
|---|---|---|
| 0 | Repository foundation: agent config, CI, lint configuration, the thirteen ADRs | Complete |
| 1 | The shell in both formats: build, CLAP bindings, note ports, pass-through process | Next |
| 2 | The musical core: scales, degrees, chord construction, voicing | Planned |
| 3 | Parameters and state, with stable ids and AUv2 parameter ordering | Planned |
| 4 | The event engine: scheduler, voice table, transport gate, hold, strum, CC toggle | Planned |
| 5 | The macro: per-target start, end and curve mapping | Planned |
| 6 | Release plumbing: installer, notarization, documentation | Planned |
| 7 | The GUI | Deferred |
The GUI is deferred by ADR 0013 rather than merely unscheduled, and arpeggiation is declined outright by ADR 0012: Springer emits chords, and Logic's Arpeggiator placed below it does patterns.
- macOS 11.0 or later on Apple Silicon. This is a decision rather than an oversight; see ADR 0001.
- Logic Pro, for the Audio Unit, or any CLAP host for the
.clapbuild. - To build: Zig 0.16.0 exactly, plus CMake for the Audio Unit. Neither is needed yet.
There is nothing to install yet. From Phase 6 the project ships a signed and notarized installer package carrying both the .clap and the .component.
Place Springer in a software instrument track's MIDI FX slot, above the Arpeggiator if one is used. The whole keyboard is the chord zone.
Two controls define the chord and they are orthogonal. Chord Tones is a depth ladder from 2 to 6. Chord Color selects among Normal, Sus2, Sus4, Sixth and Shell. Open Macro is the performance control: one automation lane that moves chord depth, voicing spread, inversion, velocity tilt, strum, color, bass note and minimum chord length together, each along its own configurable curve.
See CONTRIBUTING.md. The thirteen decisions in docs/adr/ are settled and are superseded by a new ADR rather than reopened.
MIT License. TL;DR: Do whatever you want with this software, just keep the copyright notice included. The authors aren't liable if something goes wrong.