Example plugins
36 worked plugins, each a Jig that loads by its IRI. Every control shown is generated from the plugin's own parameter declarations. A panel links to the live profile, where the same IRI answers with Turtle for a program and a page for a person. To hear one, open the demo. To write one, read building and publishing a plugin.
Generative
Sources of musical material: melody, bass, drum and harmony generators playing in time with the session.
BassGen
Transport synced bass line generator. Scale, genre and subdivision shape a seeded pattern that plays in time with the session and can be steered from a keyboard.
Conductor
Cuts the transport into bar-aligned sections (intro, development, break, reprise, coda), as an editable form of up to 12 steps or by seeded weighted choice, and at each boundary sends a section note and CCs for scene, density, energy, mutation and reset to whatever listens on its channel. Each section can have its own length limits and its own scene, density, energy and mutation values, and may restart the generators listening to it.
DrumGen
Transport synced MIDI drum generator. Genre, style mode and resolution shape a seeded pattern that plays in time with the session, with fills on the last bar of the loop and Conductor CC control.
Ground
Transport synced long-form bass generator. Form shapes and phrase roles plan a whole section that plays in time with the session, with arc tension and Conductor control including scene-driven role overrides.
Markov
Markov-chain melody generator: a random walk over the twelve pitch classes driven by a 12 by 12 transition matrix, filled by one of eight styles or learned from a melodic line on its MIDI input, and played in time with the host transport.
MelGen
Transport synced phrase-aware melody generator. Period, contour and answer shape a seeded line that plays in time with the session, follows an incoming line when asked, and answers Conductor CCs.
Sprout
L-system MIDI generator: a grammar is rewritten for up to 16 generations, read as a turtle, and played as a monophonic, scale-quantised line locked to the host transport, optionally growing by one generation every few bars.
MIDI
Processors shaping MIDI before it reaches an instrument.
Cadence
Transport synced MIDI harmonizer that learns a chord cycle from what it hears and plays voiced progressions with comping in time with the session.
Counterpointer
Transport synced MIDI processor that learns an incoming cycle and answers it with a monophonic counter-melody, in counterpoint or a descending bass register.
Dice
A MIDI probability gate: each note-on passes with the set probability, and a note-off passes if and only if its note-on did. The generator's evolving state is saved with the project, so a restored session gates exactly as the saved one would have.
MIDI Filter
Steers MIDI between plugins: keeps one channel or all, moves what it keeps to another channel, transposes notes, and passes only the notes inside a range, so two of them split a keyboard between two instruments. A note-off passes only for a note-on that passed, so nothing is left sustaining when a setting changes mid-note.
Retune
Retunes a note stream to a Scala (.scl) scale by sending each held note on its own channel (2 to 16) behind a per-note pitch bend, so any synth that follows per-channel pitch bend can play microtonally.
Instruments
Playable sound sources: synths and drum instruments.
8-Bit 8asterd
Three AY-3-8910 chips under the 8b8 firmware, running unmodified as WebAssembly. Nine voices across three chips, hardware envelopes, a percussion set on channel 10, and the firmware's own vibrato, tremolo, arpeggiator, buzzy bass, circuit bending and ten tuning temperaments.
Canticle
Twelve-voice polyphonic tonal instrument for the middle of an ensemble: keys, reed, pad, pluck and glass tones for melody, counterpoint and chords.
DrumKit
Eleven voice synthesised drum instrument. MIDI notes trigger the voices, the master bus adds crush, drive and room, and per-instrument mutes cut voices immediately.
Moka
A stereo MIDI synth built on modal synthesis: each voice is a bank of eight damped sine modes struck by a short mallet transient, giving xylophone, glockenspiel, woodblock, glass bowl, metal sheet and tube voices.
Monochord
Eight-voice waveguide string, plucked, bowed or hammered: a delay line closed into a tuned loop with damping, stiffness, a pickup comb and a small body.
Mop
Eighteen voice OPL3 FM General MIDI instrument, capped at eight voices by default, based on mop by M. Glargaard. The AdLib Sound Blaster sound of DOS-era games: FM timbres from mop's own bank, a drum kit on channel 10, and every control answering to a MIDI CC.
Pulse
Eight voice subtractive synthesiser with saw, square and triangle oscillators, a one-pole lowpass and an attack-release envelope.
Quartet
Eight-voice four-operator FM synthesiser with eleven algorithms, band-limited sine, saw and square operators, per-operator envelopes, feedback, optional 2x oversampling, a pitch envelope and a multimode filter. It opens as a mono bass.
Sam
Software Automatic Mouth, the 1982 Commodore 64 formant speech synthesiser, as an instrument: typed text is spoken either one word per MIDI note, sung at the pitch of the key, or one word per step from a start bar, locked to the host transport.
Processors
Audio effects shaping sound.
Boost
A gain stage in C++, the minimal starting point for a WebAssembly Jig: everything in boost.cpp beyond jig_process is ABI wiring, meant to be copied.
Cascade
Schroeder plate reverb with per-mode scaling, damping inside the feedback loop, and a freeze that holds the tail indefinitely.
Dynamix
Compressor/expander, limiter and clipper/soft distortion in series. A second stereo input on channels 3 and 4 is an external key: when it is connected, the compressor/expander stage reads its level from that instead of the main signal, for sidechain ducking. When nothing is connected there, the stage detects on the main signal itself.
Ferrite
A neural amp model (nam-rs, MIT, ported from and validated against the reference Python and C++ implementations) in series with an impulse response, a cabinet or a room of up to 2.7 seconds, by partitioned FFT convolution. The amp can be switched off to use it as a convolution reverb, and Mix blends the convolved signal with the dry one. Ships a small example .nam and a synthetic (not captured) cabinet IR; both jig:asset resources are meant to be replaced with your own.
JigDAW Gain Trim
Converted by bin/jsfx-import.js from examples/jsfx/gain-trim.jsfx, a REAPER JSFX effect, and run under the shared interpreter in plugins/_jsfx-runtime/.
JigDAW One-Pole Filter
Converted by bin/jsfx-import.js from examples/jsfx/one-pole-filter.jsfx, a REAPER JSFX effect, and run under the shared interpreter in plugins/_jsfx-runtime/.
JigDAW Soft Clipper
Converted by bin/jsfx-import.js from examples/jsfx/soft-clipper.jsfx, a REAPER JSFX effect, and run under the shared interpreter in plugins/_jsfx-runtime/.
Keyframe
Stretches audio in time and shifts its pitch, independently, by reducing the signal to its local extrema and crossfading between playheads over a span the extrema's own density chooses.
Lookahead
A switchable lookahead delay for time-aligning parallel paths: direct, or held back by 512 frames. Changing position changes the plugin's latency, which the host compensates.
Octet
Eight-band parametric equalizer, stereo, with 12 and 48 dB cuts, shelves, bells and notches, Left/Right and Mid/Side modes, a spectrum analyser and a graphic editor with a draggable node per band. A fresh instance passes the signal unchanged.
Parameq
Six-band stereo parametric equalizer in C++: peak, low and high shelf, low and high pass, band pass and notch shapes per band, each with its own enable, frequency, gain and Q.
Quefrency
Separates its input through the cepstrum into a formant envelope and a harmonic structure, shifts and reshapes each independently, and multiplies them back together.
Squelch
A resonant lowpass filter whose cutoff an envelope follower pushes up on every note, for the acid bass sweep. Put it after a synth: each note opens the filter and Decay sets how fast it closes. Plain JavaScript, no WebAssembly module.
Stomp rack
A boost into a tremolo into a plate reverb, as one plugin: Drive, Tremolo depth and Reverb mix are all it exposes. The rack is built from three published Jigs by reference, and is the worked example of a composite plugin.
Tremolo
Amplitude modulation by a sine LFO. Its whole signal path is JavaScript: no WebAssembly module, the worked example for a plugin whose processing does not need one.