nvrl 444b9d93da
Check and Windows preview / previews (push) Waiting to run
Independent plugin release / plan (push) Waiting to run
Check and Windows preview / check (anvil) (push) Successful in 2m11s
Check and Windows preview / check (crucible) (push) Successful in 1m43s
Check and Windows preview / check (knurl) (push) Successful in 1m37s
Check and Windows preview / check (lathe) (push) Successful in 1m39s
Check and Windows preview / check (patina) (push) Successful in 2m25s
Check and Windows preview / check (rivet) (push) Successful in 1m50s
Check and Windows preview / check (temper) (push) Successful in 1m45s
Check and Windows preview / check (weld) (push) In progress
feat!: change CLAP IDs to io.narl.bass-foundry.<product>, release all plugins
The io.storyboard.* IDs were a leftover from Motif Storyboard and named
old functions (motif, sub-anchor, layer-align) instead of the products.
Every plugin now uses io.narl.bass-foundry.<product>, and IDs are frozen
from here on, even across renames.

Hosts see the new IDs as different plugins: delete the old .clap files,
rescan, and add the plugins again in existing projects. Rivet session
JSON and Patina parameter IDs are unchanged.

- Rivet 0.5.0, Patina 0.3.0; Anvil, Crucible, Lathe, Temper, Weld and
  Knurl 0.2.0.
- Docs, changelogs and the release table describe the change.
- Website: upgrade note in the Install section.
2026-11-06 11:51:11 +01:00
2026-11-05 23:58:00 +01:00
2026-11-05 23:58:00 +01:00
2026-11-05 23:58:00 +01:00

Bass Foundry

Rust CLAP plugins for writing, designing and mixing bass music in FL Studio.

Website: fl.narl.io

CLAP FL Studio 2024.1+ Windows x64 Rust stable License ISC

Riddim and dubstep basses change patch on every switch-up. Fixed-frequency tools then act differently on every note: the sub jumps, an EQ cut lands on another harmonic, the distortion gets fizzy on one note and dull on the next. Most plugins in this suite follow the played note, so a setting means the same thing on every note. Each plugin is a separate product with its own version, guide and release.

Plugins

Plugin What it does Load it on Latency Docs
Rivet Tells a MIDI motif as a story on a storyboard of roles and joins the seams into one phrase Channel Rack none Guide · Changes
Patina Smooths harsh, ringing resonances while plain harmonic tone and transients pass Any mixer track one analysis frame Guide · Changes
Anvil Replaces the sub with a clean mono sine: one level and one start phase on every note Bass bus 80 ms Guide · Changes
Crucible Records the last bars all the time, then slices, cleans and exports key-labelled samples with one button End of the chain to resample none Guide · Changes
Lathe EQ with one band on each harmonic of the played note: a cut on harmonic 3 stays on harmonic 3 Bass, after the synth ≈ 67 ms Guide · Changes
Temper Distortion that drives every note the same: level and tone filters follow the note Bass ≈ 67 ms + oversampling Guide · Changes
Weld Phase-aligns one bass layer to another layer through the sidechain, so the layers sum in the mids instead of cancelling One layer's track, other layer as sidechain none Guide · Changes
Knurl Gives every cycle of the note its own level, timing and grit: in-tune subharmonic growl, rattle and fry on every note Bass ≈ 71 ms Guide · Changes

Plugins with latency report it to the host, so FL Studio compensates the delay. Anvil, Lathe, Temper and Knurl detect pitch from the audio. They can also take the pitch from MIDI.

The names come from metalwork: a rivet joins pieces; patina changes a surface and keeps its character; an anvil is the solid base that everything is struck on; a crucible melts material down to be cast again; a lathe turns a piece so each cut lands the same all the way round; tempering sets how hard and how tough a metal ends up; a weld fuses two pieces into one; knurling presses a ridged grip pattern into a surface. The suite is the foundry: the workshop where the bass gets cast, shaped and finished. Hosts list the plugins under the vendor name Bass Foundry.

Editors

Rivet editor
Rivet: storyboard composition
Patina editor
Patina: resonance smoothing
Anvil editor
Anvil: sub anchor
Crucible editor
Crucible: resampler
Lathe editor
Lathe: harmonic EQ
Temper editor
Temper: tracked distortion
Weld editor
Weld: layer phase alignment
Knurl editor
Knurl: cycle texture

The previews are rendered headless from the real editor code by tools/editor-check, so they match what the plugin draws.

Install

  1. Open the plugin's release on Gitea. Every plugin has its own release tag, for example lathe-v0.1.0.

  2. Download <plugin>-windows-x86_64-<version>.zip. You can check it against the .zip.sha256 file next to it.

  3. Extract the ZIP and copy the .clap file into:

    C:\Program Files\Common Files\CLAP\
    
  4. In FL Studio 2024.1 or newer, open Options → Manage plugins, enable Verify plugins, and click Find installed plugins.

  5. Load Rivet in the Channel Rack. Load the other plugins in mixer effect slots.

Keep the font license (licenses/) with redistributed packages.

Every branch and pull-request pipeline also builds a combined Windows preview ZIP, bass-foundry-windows-x86_64.zip, in its windows job. Use it to test unreleased changes.

Upgrading from an earlier build? The CLAP IDs changed from io.storyboard.* to io.narl.bass-foundry.<product>, so hosts see each plugin as new. Delete the old .clap files, rescan, and add the plugins again in existing projects. Motif Storyboard and Resonance Compressor are now Rivet and Patina, and the vendor is "Bass Foundry".

Build from source

You need:

  • Rust stable and Python 3.11 or newer.
  • For the Windows target on Linux: the x86_64-pc-windows-gnu Rust target and MinGW (x86_64-w64-mingw32-gcc).
  • For the native wrapper tests on Linux: pkg-config and the X11/XCB and OpenGL development headers. Rivet's optional standalone also needs ALSA/JACK headers.
# Tests for all engines, editors and tools
cargo test --workspace --locked

# Formatting, tests and lints for one product, including its CLAP wrapper
python3 scripts/check-plugin.py --plugin lathe

# Windows build, then the ZIPs (all plugins, or --plugin <name>)
python3 scripts/build-plugin.py --plugin lathe --target x86_64-pc-windows-gnu
python3 scripts/package-windows.py

# Headless editor preview
cargo run --manifest-path tools/editor-check/Cargo.toml -- target/editor/lathe.png --plugin lathe

Plugin names for the scripts are rivet, patina, anvil, crucible, lathe, temper, weld and knurl. Builds go to dist/<target>/<Name>.clap. No script installs anything into a DAW. Development and testing has the full command list.

Quality checks

Every push and pull request runs these checks in CI (.gitea/workflows/check.yml):

  • Engine tests. Every engine has tests for its signal behaviour and latency against measured targets.
  • Realtime safety. Every audio effect has a test that fails if the audio thread allocates memory.
  • Host tests. Each wrapper is loaded through the exported CLAP ABI, without a DAW. The tests check the ports, the reported latency, state save and load, and processing at 44.1, 48 and 96 kHz.
  • Lints. rustfmt and clippy -D warnings for every package and wrapper.
  • Editor previews. All editors are rendered headless and kept as CI artifacts.
  • Windows builds. Every .clap is cross-compiled and packaged.

Release ZIPs are deterministic and contain checksums for every file. Things CI cannot check stay manual: FL Studio routing, native window behaviour, and listening.

Repository

plugins/
  catalog.json         Product metadata for the build, check and release tools
  rivet/               core · midi · app · preview · plugin
  patina/              core · ui · render · plugin
  anvil/               core · ui · plugin
  crucible/            core · ui · plugin
  lathe/               core · ui · plugin
  temper/              core · ui · plugin
  weld/                core · ui · plugin
  knurl/               core · ui · plugin
  common/
    ui/                Shared look: palette, embedded fonts, knobs, panels, meters
    dsp/               Shared filters, pitch tracking, oversampling, meters, WAV files
tools/editor-check/    Headless editor renderer for visual QA
scripts/               Build, check, packaging, release and analysis tools
docs/<plugin>/         Guide, changelog and editor preview for each plugin
docs/ideas.md          Problems in bass-music production and the plugin ideas for them
references/            Local reference audio; never distributed
website/               The fl.narl.io site: Astro, nginx container, reads catalog and previews

Each product follows the same split:

  • core is the engine. It is plain Rust, does not depend on a plugin SDK, and is tested on its own.
  • ui is the egui editor, built on common-ui.
  • plugin is the CLAP wrapper on a pinned NIH-plug revision.

The root Cargo workspace holds the engines, editors and tools. Each wrapper is its own workspace with its own lockfile, so SDK dependencies stay separate. plugins/catalog.json is the single list of products. The scripts and CI read it, so adding a plugin starts there.

Releases

Each plugin is versioned and released on its own. Its version is the version in plugins/<plugin>/plugin/Cargo.toml. A tag <plugin>-v<version>, for example temper-v0.1.0, starts the release workflow. The workflow builds, checks and publishes that plugin's Windows ZIP to a Gitea release. See docs/releases.md.

Roadmap

docs/ideas.md lists the production problems the suite targets, the released plugins and the ideas for the next ones.

License

ISC, see LICENSE. The embedded Roboto Condensed fonts are under the SIL Open Font License (OFL.txt).

S
Description
Bass Foundry: Rust CLAP plugins for riddim and bass-music sound design in FL Studio
Readme ISC
9.7 MiB
0 Stars 1 Watchers 0 Forks
Knurl 0.1.0
Latest
2026-11-06 09:22:43 +01:00
Languages
Rust 88.4%
Astro 6.1%
Python 2.9%
TypeScript 1.1%
CSS 0.6%
Other 0.9%