Skip to content

xxx/tract-plugin-pack

Repository files navigation

Tract Plugin Pack

A collection of audio effect plugins (VST3, CLAP, standalone) built with nih-plug in Rust.

Plugins

Gain Brain

A lightweight gain utility with cross-instance group linking. Multiple instances can be assigned to the same group (1-16), and changing gain on any grouped instance applies that change to all others.

  • 16 groups with Absolute (identical values) and Relative (delta-based) link modes
  • Invert toggle for mirrored gain movement (ducking, sidechain-style workflows)
  • In-process shared state with cumulative canonical delta sync (lock-free atomics, zero overhead)
  • CPU-rendered GUI with rotary dial (tiny-skia + softbuffer), freely resizable
  • ~0.62 MB RSS and 0.03% CPU per instance (200 instances grouped @ 6.3% CPU, 123 MB total)
  • Inspired by BlueCat's Gain Suite

GS Meter

A lightweight loudness meter with integrated gain utility, purpose-built for clip-to-zero workflows. Designed to run 100+ instances per project without significant CPU or memory impact.

  • dB and LUFS modes with per-mode gain/reference and gain-match buttons
  • Peak max, true peak (ITU-R BS.1770-4), RMS, EBU R128 (integrated, short-term, momentary, LRA)
  • CPU-rendered GUI (tiny-skia + softbuffer), freely resizable -- no GPU drivers loaded
  • SIMD-optimized metering (f32x16)
  • ~1.8 MB RSS and 0.05% CPU per instance (300 instances @ 15% CPU, 560 MB total)
  • Inspired by TBProAudio dpMeter

Pope Scope

A multichannel real-time oscilloscope with beat sync. Multiple instances share audio data through a global store, allowing one window to display waveforms from up to 16 tracks simultaneously.

  • Three display modes: Vertical (stacked), Overlay (superimposed), Sum (mixed)
  • Three draw styles: Line, Filled, Both
  • Beat sync mode with bar/beat grid alignment (1/4, 1/2, 1, 2, 4 bars)
  • Free-running mode with adjustable timebase (1ms - 10s)
  • dB-scaled amplitude mapping with configurable range
  • 16 track groups with per-track solo/mute and color assignment
  • Cursor tooltip on hover shows time (or bar position in beat-sync) plus a color-coded dB reading per track; in Vertical mode the tooltip and cursor line restrict to the hovered lane
  • Peak hold with 2-second hold and 20 dB/s decay
  • Hold mode for phase alignment (shows last complete bar, swaps at boundary)
  • SIMD-optimized ring buffer with f32x16 mipmap reduction
  • Waveform renderer bypasses tiny-skia's raster pipeline — direct pixel-write column fills with half-split envelope smoothing (~52% less GUI CPU than the original path-based rasterizer)
  • CPU-rendered GUI with amber phosphor terminal theme (tiny-skia + softbuffer), freely resizable
  • 16 instances @ 2% CPU headless (0.13% per instance)
  • Per-track solo/mute/color controls with DAW track name via CLAP track-info
  • Inspired by PsyScope and RusovDmitriy/oscilloscope

Satch

A detail-preserving spectral saturator. Uses FFT-based spectral analysis to preserve quiet frequency components through the clipping process, producing textured flat-top clipping instead of featureless flat tops.

  • Independent Gain (input boost) and Threshold (clip ceiling) controls
  • Detail knob preserves quiet harmonics through clipped regions via per-bin spectral magnitude saturation
  • Knee crossfades between hard clip (0%) and soft tanh saturation (100%)
  • Clip-aware detail blend — only affects clipped portions, unclipped material is unchanged
  • CPU-rendered GUI (tiny-skia + softbuffer), freely resizable
  • ~0.82 MB RSS and 0.14% CPU per instance (100 instances @ 13.7% CPU, 82 MB total)
  • Inspired by Newfangled Audio Saturate

Six Pack

A six-band parallel multiband saturator inspired by Wavesfactory Spectre. Each band's EQ boost is computed against dry as a difference, then run through a per-band saturation algorithm — so a band at 0 dB contributes silence and gain effectively becomes the per-band drive.

  • 1 low-shelf + 4 peaks + 1 high-shelf, each with frequency / gain / Q controls
  • Six saturation algorithms per band: Tube, Tape, Diode, Digital, Class B, Wavefold
  • Per-band Stereo / Mid / Side routing applied to the diff before saturation
  • Linear-phase polyphase oversampling: Off / 4× / 8× / 16×
  • Global de-emphasis subtracts the linear EQ boost so only saturation harmonics remain audible
  • CPU-rendered GUI with EQ curve display + live spectrum analyzer overlay (tiny-skia + softbuffer), freely resizable
  • Inspired by Wavesfactory Spectre

Tinylimit

A low-latency wideband peak limiter for track-level use. Feed-forward topology with lookahead and dual-stage transient/dynamics handling.

  • Individual attack, release, knee, and transient controls
  • 7 built-in character presets (Transparent, Aggressive, Punchy, Smooth, Safe, Vocal, Loud)
  • Optional ISP (true peak targeting via ITU-R BS.1770-4)
  • Gain Link mode for auditioning limiting without loudness change
  • CPU-rendered GUI with input/output meters and GR readout (tiny-skia + softbuffer), freely resizable
  • ~1.0 MB RSS and 0.12% CPU per instance (50 instances @ 6.2% CPU, 50 MB total)
  • Inspired by DMG Audio TrackLimit

Warp Zone

A psychedelic spectral shifter/stretcher that transforms audio in the frequency domain using a phase vocoder. Makes familiar sounds alien -- voices from another dimension, instruments with impossible harmonic structures.

  • Shift (-24 to +24 semitones) for pitch shifting without time stretching
  • Stretch (0.5x to 2.0x) warps harmonic spacing for inharmonic/metallic textures
  • Freeze captures the current spectrum as a sustained drone
  • Feedback compounds spectral shifts for rising/falling Shepard tone effects
  • Low/High frequency range limits for selective processing
  • Scrolling spectral waterfall display with psychedelic color palette
  • CPU-rendered GUI (tiny-skia + softbuffer), freely resizable
  • 4096-point FFT phase vocoder with linear interpolation and phase-coherent bin remapping

Wavetable Filter

A wavetable-based audio filter that uses wavetable frames as FIR filter kernels. Load any .wav or .wt wavetable file and use its spectral content to shape your audio.

  • Raw Mode: Direct time-domain convolution (zero latency)
  • Phaseless Mode: STFT magnitude-only filtering (no pre-ringing)
  • 3D/2D wavetable visualization (click to toggle), real-time filter response with live input spectrum shadow
  • CPU-rendered GUI (tiny-skia + softbuffer), freely resizable; rotary dials show DAW modulation arcs and support right-click text entry
  • SIMD-optimized convolution (f32x16) with silence fast-path — idle plugins use near-zero CPU
  • Inspired by Kilohearts FilterTable and EB-FreakyTable

Build Requirements

  • Rust nightly toolchain (automatically configured via rust-toolchain.toml)
  • Linux system dependencies (see below)
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Ubuntu / Debian
sudo apt install libxcb1-dev libx11-xcb-dev libx11-dev libxcursor-dev \
  libasound2-dev libgl-dev libjack-jackd2-dev libwayland-dev

Building

# Build all plugins (VST3 + CLAP)
cargo nih-plug bundle gain-brain --release
cargo nih-plug bundle gs-meter --release
cargo nih-plug bundle pope-scope --release
cargo nih-plug bundle satch --release
cargo nih-plug bundle six-pack --release
cargo nih-plug bundle tinylimit --release
cargo nih-plug bundle warp-zone --release
cargo nih-plug bundle wavetable-filter --release

# Standalone binaries
cargo build --bin gain-brain --release
cargo build --bin gs-meter --release
cargo build --bin pope-scope --release
cargo build --bin satch --release
cargo build --bin six-pack --release
cargo build --bin tinylimit --release
cargo build --bin warp-zone --release
cargo build --bin wavetable-filter --release

Host-optimized builds

For local builds that exploit your CPU's SIMD (tiny-skia's AVX2 raster paths, auto-vectorized DSP code), wrap any cargo invocation with cargo xtask native. It detects AVX2+FMA+BMI2 on the build host and, when present, sets RUSTFLAGS=-C target-cpu=haswell for the child cargo process. On non-x86_64 or older x86_64 hosts it falls back to the default target-cpu.

cargo xtask native nih-plug bundle wavetable-filter --release
cargo xtask native build --release --bin gs-meter

The resulting binaries are NOT portable to pre-Haswell machines -- use plain cargo nih-plug bundle ... for distributable bundles.

The bundler outputs to target/bundled/. Copy either the .vst3 or .clap file (you only need one -- use whichever your DAW supports) to your plugin directory:

  • Linux: ~/.vst3/ or ~/.clap/
  • macOS: ~/Library/Audio/Plug-Ins/VST3/ or ~/Library/Audio/Plug-Ins/CLAP/
  • Windows: C:\Program Files\Common Files\VST3\ or C:\Program Files\Common Files\CLAP\

Workspace Structure

tract-plugin-pack/
├── gain-brain/             # Gain utility with group linking
├── gs-meter/               # Loudness meter + gain utility
├── pope-scope/             # Multichannel real-time oscilloscope
├── satch/                  # Spectral saturator with detail preservation
├── six-pack/               # Six-band parallel multiband saturator
├── tinylimit/              # Wideband peak limiter
├── warp-zone/              # Spectral shifter/stretcher
├── wavetable-filter/       # Wavetable-based filter plugin
├── nih-plug-widgets/       # Legacy vizia widgets (no longer used; kept on disk for reference, excluded from the workspace build)
├── tiny-skia-widgets/      # Shared CPU-rendered widgets, editor base scaffolding
├── docs/                   # Plugin manuals
│   ├── gain-brain/
│   ├── gs-meter/
│   ├── pope-scope/
│   ├── satch/
│   ├── six-pack/
│   ├── tinylimit/
│   ├── warp-zone/
│   └── wavetable-filter/
└── xtask/                  # Build tooling

Testing

cargo nextest run --workspace   # All tests (461) -- parallel runner
cargo clippy --workspace        # Lint check

Install nextest via cargo install cargo-nextest --locked. Config lives in .config/nextest.toml.

Documentation

What is Clip-to-Zero?

License

GPL-3.0-or-later

Author

Michael Dungan

About

Some AI-slopped audio plugins because I like native Linux versions and I hate installers with accounts attached.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors