Install All Plugins (from Releases)
- Download the zip for your platform from GitHub Releases:
downspout-<version>-linux-x86_64-vst3.zipdownspout-<version>-macos-arm64-vst3.zip(Apple Silicon)downspout-<version>-macos-x86_64-vst3.zip(Intel Mac)downspout-<version>-windows-x86_64-vst3.zip
- Unzip it. It contains one
.vst3bundle per plugin. - Copy all the
.vst3bundles into your VST3 folder:
Linux (~/.vst3):
mkdir -p ~/.vst3
cp -r *.vst3 ~/.vst3/macOS (~/Library/Audio/Plug-Ins/VST3, or /Library/Audio/Plug-Ins/VST3 for all users):
mkdir -p ~/Library/Audio/Plug-Ins/VST3
cp -r *.vst3 ~/Library/Audio/Plug-Ins/VST3/Windows (C:\Program Files\Common Files\VST3, run PowerShell as Administrator):
Copy-Item -Recurse -Force *.vst3 "C:\Program Files\Common Files\VST3\"- Restart your DAW or force a VST3 rescan.
The macOS and Windows builds are currently untested, and those packages omit
sidecar.vst3. macOS may quarantine unsigned downloads; if a plugin is
blocked, run xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/VST3/*.vst3.
See docs/install.md and docs/release.md for the local install and release packaging details.
A bunch of mostly generative, algorithmic plugins based around DPF and VST3.
The repository is organized around portable C++ cores, deterministic tests, thin
DPF wrappers, and custom NanoVG UIs. VST3 metadata is normalized across the
plugins with creator danja, group Downspout, and plugin-specific categories.
Demo -
- Transmission Generative Audio Workstation
- Valis Virtual Analog LLM Integrated System
- Flues earlier LV2 plugins and Web Audio toys
For local development installs:
./install.shThis configures ./build, builds the enabled plugins, runs ctest, and
installs VST3 bundles into ~/.vst3 by default.
Useful overrides:
DOWNSPOUT_VST3_DIR=/some/other/path ./install.sh
DOWNSPOUT_RUN_TESTS=0 ./install.shAfter reinstalling, restart your DAW or force a VST3 rescan. Some hosts cache plugin names, makers, categories, and homepage metadata independently of the installed bundle.
| Plugin | Bundle | Type | Notes |
|---|---|---|---|
| bassgen | bassgen.vst3 |
MIDI generator | Transport-aware bass generator with persistent pattern state, style modes, and MIDI follow/dodge controls. |
| p-mix | p_mix.vst3 |
Audio effect | Transport-aware probabilistic stereo gate/mix effect. Oppose slider: inputs 3–4 sidechain reduces audible bias when busy. |
| e-mix | e_mix.vst3 |
Audio effect | Transport-aware Euclidean stereo gate with redesigned UI. |
| m-mix | m_mix.vst3 |
MIDI effect | Transport-aware MIDI gate combining p-mix transitions with e-mix Euclidean blocks. |
| t-mix | t_mix.vst3 |
Audio mixer | Eight mono input strips with level, pan, mute, solo, metering, and stereo master output. |
| Mixgen | mixgen.vst3 |
MIDI control generator | Random, quasi-random, and Euclidean producer lanes for T-Mix channel gains. |
| Loopdelay | loopdelay.vst3 |
Audio effect | Stereo delay/capture looper with free or BBT-locked time and MIDI-controlled time/feedback. |
| Lightverb | lightverb.vst3 |
Audio effect | Fixed-cost stereo FDN reverb with insert/send operation and MIDI-controlled mix/space. |
| melgen | melgen.vst3 |
MIDI generator | Phrase-aware melody generator with contour, answer, structure, and follow controls. |
| rift | rift.vst3 |
Audio effect | Transport-locked live/sample buffer disruptor with WAV loading, chop/stutter repeats, reverse, skip, smear, and pitch-slip actions. |
| Orchid | orchid.vst3 |
Audio effect | Transport-aware voiced freeze/hold effect with autocorrelation capture and grid-synced loop holds. |
| Ambo | ambo.vst3 |
Audio effect | Stereo ambient processor with rearrangeable time, spectral, tape, shimmer, delay, drive, and feedback modules. |
| drumgen | drumgen.vst3 |
MIDI drum generator | Pattern generator with meter-aware styles, fills, Breakbeat/Amen/Jungle/Hip Hop genres, and clave-led Rumba/Samba/Township Jive grooves. |
| drumkit | drumkit.vst3 |
Instrument | Port of the flues drum synth with stereo output, one MIDI input, and mixer-style UI. |
| syrinx | syrinx.vst3 |
Instrument | Polyphonic MIDI synthesizer based on the Mindlin-Laje biophysical avian syrinx model with 10 bird presets and chromatic pitch mapping. |
| cadence | cadence.vst3 |
MIDI effect | Transport-aware MIDI harmonizer and comping generator. |
| arpgen | arpgen.vst3 |
MIDI effect | Transport-synced chord-capture and scale-derived arpeggiator. |
| counterpointer | counterpointer.vst3 |
MIDI generator/effect | Learns incoming MIDI and emits a monophonic counter-melody. |
| Sidecar | sidecar.vst3 |
MIDI generator | MIDI phrase player for generated solo material with local deterministic and localhost coordinator modes. |
| gremlin | gremlin.vst3 |
Instrument | Chaotic glitch instrument with scenes, macros, actions, and performance controls. |
| gremlin-driver | gremlin_driver.vst3 |
MIDI effect | MIDI modulation and action sequencer intended to drive gremlin. |
| ground | ground.vst3 |
MIDI generator | Long-form bass generator with Dub/Jazz styles, phrase planning, and guarded bass-register output. |
| floozy | floozy.vst3 |
Instrument | Corrected 8-voice hybrid physical/modulation synth derived from floozy-poly. |
| basilico | basilico.vst3 |
Instrument | Monophonic bass synth with Dub/Acid wobble, tempo sync, squelch, and upright/electric/industrial models. |
| campione | campione.vst3 |
Instrument | Campione — multi-zone sampler with WAV loading, REX2 slice import, wavetable auto-detection, recording, gap-fill pitch shift, and crossfade looping. |
| canticle | canticle.vst3 |
Instrument | 12-voice keys, reed, pad, pluck, and glass synth for melody, counterpoint, and chords. |
| moka | moka.vst3 |
Instrument | Modal hit-object synth (xylophone, glockenspiel, woodblock, glass, metal, tube) with 10 controls, 10 presets, and selectable 1–12 voice polyphony. |
| tuney-vst | tuney_vst.vst3 |
Instrument/MIDI generator | Turns focused typing or stored text into microtonal synthesized audio and ordinary MIDI notes. |
| luma | luma.vst3 |
MIDI generator | Launchpad-oriented performance generator where lit pads become bass, chord, melody, and drum agents. |
| paunchlad | paunchlad.vst3 |
Audio effect/instrument | Launchpad dub performance effect with echo throws, sirens, spring splashes, dropouts, and chops. |
| lifeform | lifeform.vst3 |
MIDI generator | Conway Game of Life sequencer for Launchpad, evolving one generation per beat into melodic or drum MIDI. |
| plank | plank.vst3 |
Instrument | Eight-string synthesizer derived from Plinky, with one voice per Launchpad grid column. |
| pratt | pratt.vst3 |
Instrument/Audio effect | Number-theoretic synthesizer and filter built from Pratt polynomials: eleven GM voices, a stable all-pole Pratt filter with two cascading index controls, or both. |
| retune | retune.vst3 |
MIDI effect | Retunes any note stream to a Scala .scl scale with one pitch bend and one output channel per note, for synths with per-channel bend (MPE-style). |
| markov | markov.vst3 |
MIDI generator | Markov-chain melody generator: a random walk through a visible 12x12 transition matrix that you draw, fill from one of eight styles, or learn from a line you play; scale-masked, optional second order, repeatable from any position. |
| sprout | sprout.vst3 |
MIDI generator | L-system melody generator: seven grammars (Plant, Koch, Dragon, Sierpinski, Cantor, Levy, Tree) rewritten per generation and played as a scale-quantised line, optionally growing one generation every N bars. |
| xoxolo | xoxolo.vst3 |
MIDI generator | Simple x0x-style drum pattern editor with 11 drumkit lanes and a 32-step maximum. |
| Harmonic Atlas | harmonic_atlas.vst3 |
MIDI generator | Autonomous tonal, modal, chromatic-mediant, and neo-Riemannian-inspired harmony. |
| Conductor | conductor.vst3 |
MIDI generator | Long-form section and scene-command generator. |
| Drift | drift.vst3 |
MIDI modulator | Four seeded CC lanes with LFO, sample-and-hold, walk, chaos, and follower modes. |
| Mnemosyne | mnemosyne.vst3 |
MIDI effect | Fixed-capacity motif capture, memory, transformation, and recombination. |
| Polymeter | polymeter.vst3 |
MIDI generator | Four Euclidean lanes with coprime lengths, ratchets, probability, and drift. |
| Oracle | oracle.vst3 |
Audio/MIDI effect | Bounded audio/MIDI analysis with CC and guarded note responses. |
| Mosaic | mosaic.vst3 |
Sampler instrument | Four-slot WAV sampler with deterministic slicing and autonomous triggering. |
| Resonance Garden | resonance_garden.vst3 |
Audio effect | MIDI-tuned damped resonator bank with internal-scale fallback. |
| Orbit | orbit.vst3 |
Audio effect | Seeded transport-aware stereo trajectories, distance filtering, and conservative Doppler. |
| Guardian | guardian.vst3 |
Safety effect | DC removal, look-ahead limiting, true-peak protection, and latched diagnostics. |
| Skream | skream.vst3 |
Audio effect | Scream filter: SVF lowpass/highpass with ADAA2 feedback saturation for dubstep growl. Ten presets, MIDI CC control via Drift. |
| Chipper | chipper.vst3 |
Audio effect | 1980s video game lo-fi processor: bitwise quantization, sample-rate reduction, and clock jitter. |
| magneto | magneto.vst3 |
Instrument | Physically informed combustion engine generator: four-stroke cycle, waveguide cylinders, intake runners, extractors, muffler and tailpipe. RPM follows notes (two octaves down), CC, automation or host tempo. |
| Primefold | primefold.vst3 |
Audio effect | Prime-harmonic feedback pitch shifter: direct 2x/3x/5x voices, composites via recirculation, bounded loop with explicit delay. |
| Quefrency | quefrency.vst3 |
Audio effect | Cepstral formant and harmonic shifter: envelope and excitation transformed independently; latency reported to the host. |
| ToneWorm | worms.vst3 |
MIDI generator | Paterson's Worm Tonnetz melody generator with six directional rules, scale quantization, Conductor CC, and Randomize/Mutate actions. |
| Ghost | ghost.vst3 |
Audio/MIDI effect | Audio-triggered ghost-note generator: BBT-quantised ghost drums on ch 10 or notes on a selectable channel, driven by Drift CC 1–4. |
| Spliff | spliff.vst3 |
Audio effect | Adaptive transient processor in the Spiff manner: per-band dynamic cuts or boosts only where transient energy lives. |
| HelterSkelter | helterskelter.vst3 |
Audio effect | Automatic wah pedal: resonant lowpass driven by the input envelope and/or a BBT-synced ADSR cycle, with Drift CC control. |
| Treatment | treatment.vst3 |
Audio effect | Physically modelled acoustic treatment panel: a mass-air-mass absorber whose resonance and absorption come from real cavity, gap, facing mass and flow resistivity, with a seeded Randomise and five Drift CC lanes. |
| Voxmod | voxmod.vst3 |
Audio effect | Combined vocoder and ring modulator: a filter-bank vocoder analysing inputs 1/2 colours the modulator on 3/4, in parallel with a band-limited ring modulator, blended by Mix. |
| Keyframe | keyframe.vst3 |
Audio effect | Extrema-sampling time stretch after DAFx26: the input reduces to timestamped local extrema whose spacing drives the overlap-add splice length. No transient detector. |
Mixgen, T-Mix, Loopdelay, and Lightverb can form a loosely coupled automatic mix chain through Producer Control Bus v1.
The repeated implementation pattern is:
- keep DSP, MIDI, transport, and state behavior in a host-agnostic C++ core;
- cover deterministic core behavior with tests;
- translate host timing, parameters, MIDI, and state in a thin DPF wrapper;
- keep UI code plugin-specific and driven by wrapper parameters/status.
The shared code lives under include/downspout and src/common. Plugin-specific implementations live under plugins.
The repository now has a shared meter model so transport-aware generators can
distinguish simple, triple, compound, and odd groupings. Musical style behavior
is still uneven by design: bassgen and drumgen have explicit style modes,
while deeper pickup, phrase-ending, and folk-idiom behavior remains future work.
- docs/pages/plugins-summary.md: dense per-plugin capability reference for automated agents (ports, MIDI roles, CC maps, wiring); also published on the Pages site as "Reference".
- docs/process.md: AI-assisted development workflow, instructions and skills, testing, builds, publishing, and definition of done.
- docs/architecture.md: build graph, layering, state, transport, UI, install, and release conventions.
- docs/install.md: local build and VST3 install behavior.
- docs/release.md: release artifact shape and GitHub Actions workflow.
- docs/screenshots.md: automated UI screenshot capture for GitHub Pages assets.
- docs/meter.md: shared meter model and current musical limitations.
- docs/requirements.md: build and dependency expectations.
- docs/plan.md: project direction and remaining work.
All current wrapper targets build as VST3 bundles. The main remaining work is host validation, release validation, and incremental DAW-facing fixes rather than large architecture changes.
Near-term priorities:
- validate all twenty-five bundles in real hosts after clean installs and rescans;
- keep release packaging aligned with local installs;
- extend musical style vocabulary where it improves actual generator behavior;
- publish and verify the first public tagged release artifact.
There's a mess of rough drafts in the /docs dir plus :
GitHub Pages is built from docs/pages, not from the root docs.
The editable plugin screenshot text is here:
- Card text and plugin-page summary: summary: in each file under docs/pages/_products
- Longer plugin-page notes: Markdown body below the front matter in the same file
- Screenshot path: screenshot: in the same front matter, pointing at docs/pages/assets/plugins
Example: docs/pages/_products/bassgen.md:1
BassGen creates...
How it renders:
- Index cards use plugin.summary in docs/pages/index.md:17
- Individual plugin pages use page.summary, page.screenshot, then the Markdown body in docs/pages/_layouts/plugin.html:10
- Jekyll collection config is in docs/pages/_config.yml:6
Build/deploy path:
- GitHub Actions workflow: .github/workflows/pages.yml:1
- It runs actions/jekyll-build-pages with source: docs/pages
- It deploys the generated _site artifact to GitHub Pages
For local preview from repo root:
jekyll serve --source docs/pages --destination /tmp/downspout-pages-site
Screenshot generation is separate. The PNGs are regenerated by scripts/capture-plugin-screenshots.sh, documented in docs/screenshots.md:1, but the descriptive text is in _products/*.md.