Features
What exists today
Twenty-three crates, designed to work together and each usable on its own: take the whole framework, or only the buffer type. Everything listed here is in the repository and covered by its tests.
This is a small part of the road ahead. What is missing is listed just as plainly.
Core
Crates: manguebyte-core
The types everything else is built on. This crate has no dependencies at all.
AudioBuffer: planar audio, one contiguous slice per channel- The
Sampletrait, so processors work inf32orf64 Smoothedvalues for parameters that must not click- Atomic floats and a wait-free single-producer, single-consumer queue
- A log the audio thread can write to
- Decibel maths, and a guard against subnormal numbers
Signal processing
Crates: manguebyte-dsp
A tuple of processors is a processor: the chain is resolved at compile time, with no virtual calls and no allocation.
- The
Processortrait and tuple chains; sample-accurate events and transport - A polyphonic
Synthwith per-note expression and modulation, accents and legato - Band-limited oscillator and a band-limited wavetable oscillator; noise; LFO with tempo sync
- Biquad filters in 8 shapes; state-variable, one-pole and ladder filters; high-order IIR design (Butterworth, Chebyshev, elliptic); Linkwitz-Riley crossovers
- A FIR filter, and convolution with zero latency, true stereo and responses swapped while playing
- Compressor, noise gate, expander, sidechain keying for the dynamics, and a look-ahead limiter whose ceiling holds for every sample
- Interpolated delay lines and echo; chorus and flanger; phaser; reverb
- ADSR envelope, envelope follower, smoothed gain, panner, dry/wet mixing, waveshaper
- Oversampling by 2, 4, 8 or 16; resampling at any ratio; FFT of any length, window functions, FIR design
- Response curves to draw them all, from filters and dynamics to envelopes, LFOs, delays and reverb tails, worked out from the settings without touching the heap
Instruments
Crates: manguebyte-dsp
Voices ready to play, each with presets, measured for tuning, decay, velocity and accent, and all at one loudness.
- Physically modelled plucked strings: guitars and basses
- Four-operator FM, with piano, bell and bass presets
- A tonewheel organ with a rotary speaker
- The drums and kick bass of the classic analogue drum machine, and an acid bass with accent and slide
- Drum kits: acoustic drums and cymbals by modal synthesis, calibrated against recordings of a real snare and crash; the 909, 606 and CR-78; kits for trap, techno, house, drum and bass and lo-fi
Metering and analysis
Crates: manguebyte-analysis
Meters that run on the audio thread and that any thread reads without waiting.
- Loudness to BS.1770 and EBU R 128, checked against the EBU’s test signals
- True peak, peak, RMS, VU and PPM meters; stereo correlation
- A spectrum analyser with octave bands and weighting
- Pitch detection, with the nearest note named
Processing graph
Crates: manguebyte-graph
A graph that is rewired while it plays.
- Edits reach the audio thread through a wait-free queue
- Nodes keep their state across edits
- Removed nodes are freed off the audio thread
- Paths of different latency are lined up automatically
Parameters
Crates: manguebyte-params
Parameters are atomics in a struct. There are no listeners.
- Lock-free float, integer, switch and choice parameters
- Linear, skewed and logarithmic ranges, conversion to and from text with units, and smoothing
- Saved state that survives version changes
- Every parameter described as data and as JSON, for editors outside Rust
Plugins
Crates: manguebyte-plugin manguebyte-clap manguebyte-vst3 manguebyte-lv2 manguebyte-standalone
Write a plugin once. Export it as CLAP, VST 3 and LV2 with one line each, run it as an application, and test it with no host.
- The
Plugintrait that every format wraps, with the MIDI controllers it listens to, and plugin state Harness: plays notes, automation and a sidechain into a plugin inside a unit test- CLAP: notes, expression, automation and modulation arrive on their exact frame. Passes the CLAP project’s validator
- VST 3: every automation point lands on its frame; notes carry ids, tuning and per-note expression; the controllers a plugin declares arrive as MIDI again. Passes Steinberg’s validator on Windows, Linux and macOS
- LV2: the Turtle files are generated, and CI loads the example plugins’ bundles with lilv; not yet run in a host, and without an editor
- Standalone: runs a plugin as an application, with the sound card out, MIDI keyboards in, and the microphone in for effects
Plugin editors
Crates: manguebyte-gfx manguebyte-ui manguebyte-window manguebyte-gui
Editors drawn on the CPU and opened in a child of the host’s window, on Win32 so far. Tested in CI; nobody has opened one in a host by hand yet.
- The editor interfaces of both formats, CLAP’s
guiextension and VST 3’sIPlugView, tested through their real interfaces - Windows on Win32 that present only what changed, and a headless backend that lets a test drive a window on any system
- 2D drawing on the CPU: paths, gradients, images, clips and layers, recorded as a scene; text with an embedded Inter subset
- Widgets: label, knob, slider, toggle, meter and canvas; a text field and values typed into knobs and sliders; popup menus, a combo box, hover and tooltips
- Parameter edits as gestures, an accessibility description required of every widget, and a harness that drives it all in a unit test
- Editors for both example plugins
Hosting plugins
Crates: manguebyte-host
Load plugins made by anyone and run them as processors.
- CLAP and VST 3, through one interface for both formats
- Every event on its frame, and nothing allocated while processing
- Thread rules in the types: state cannot be loaded from the audio thread
Sampler
Crates: manguebyte-sampler
An SFZ player, open so that any program can play the instruments it is given.
- SFZ instruments with inheritance,
#defineand#include, their samples loaded from files or from memory - Played on the exact frame, with velocity layers, round robin, release triggers, loops with crossfades, choke groups and voice stealing that fades
- Builds for WebAssembly
In the browser
Crates: manguebyte-web
An engine for a browser’s AudioWorklet. Tested natively and in Node.js, not yet in a browser’s audio thread under load.
- Parts that play a synth, drum kits, SFZ instruments or the instruments of
manguebyte-dsp - A chain of effects for each part, and a master bus with a true-peak limiter
- Every kind of instrument and every preset at one loudness, sampled instruments measured as they load
- Events as 32-byte records that land on their exact frame, through a shared-memory ring
- WebAssembly exports with no imports, an
AudioWorkletand a demo page
MIDI
Crates: manguebyte-midi
MIDI 1.0 and 2.0, with timing kept to the sample.
- MIDI 1.0 channel and system messages, a byte-stream parser, standard MIDI files
- A sample-accurate
MidiBuffer - MIDI 2.0 packets (UMP) and translation between the protocols
- RPN and NRPN; MPE zones and note tracking
- A keyboard state an interface can read while the audio thread writes
Audio files
Crates: manguebyte-formats
Read and write whole files or block by block, from disk to the audio thread.
- WAV (with RF64), AIFF and FLAC, read and written
- Ogg Vorbis and MP3 read, with decoders written from their specifications and tested on files libvorbis and LAME wrote
- Whole or block by block, with exact seeking
- A FLAC encoder and decoder written from the specification and checked against FFmpeg
- Wait-free bridges to play and record from an audio callback
Open Sound Control
Crates: manguebyte-osc
Messages from controllers and live-coding programs, on the frame they ask for.
- OSC over UDP and TCP
- A real-time bridge that puts time-tagged bundles on their exact frame
Devices
Crates: manguebyte-devices
Sound cards and MIDI ports.
- Device listing and selection
- Playback, recording and full-duplex streams, in any hardware sample format
- MIDI input and output ports, with arrival times mapped to frames so a player’s timing survives the audio buffer
Command-line tool
Crates: cargo-mangue
From an empty folder to an installed plugin.
cargo mangue newcreates a plugin crate from a template, instrument or effectbundleturns it into a.clapand a.vst3in each system’s layout, andbundle --format lv2into an.lv2installcopies a plugin into the user’s plugin foldersvalidateruns the CLAP and VST 3 validators on it
The manguebyte crate gathers all of them under one name, with a prelude.
Not there yet
These do not exist in Manguebyte today. If you need one of them now, JUCE has it.
- A plugin editor opened in a host by hand: so far the editors are tested in CI only
- Editor windows on macOS and Linux
- LV2 run by a host or checked by
lv2lint, and LV2 editors - The browser engine and the sampler in a browser’s audio thread under load
- Audio Unit and AAX plugin formats
- Encoding to lossy formats, and reading Opus
- Plugin scanning, and the editors of hosted plugins
- Mobile platforms
- A release on crates.io, and a stable API
The roadmap lists every planned item and its status, and where JUCE is ahead says the same from the other side.