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 panel

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.

13 controls. Accepts Midi, produces Midi, BassMidi.

Conductor panel

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.

64 controls. Accepts nothing, produces Midi, ControlMidi.

DrumGen panel

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.

21 controls. Accepts ControlMidi, produces Midi, DrumMidi.

Ground panel

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.

56 controls. Accepts ControlMidi, produces Midi, BassMidi.

Markov panel

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.

20 controls. Accepts Midi, ControlMidi, produces Midi, MelodyMidi.

MelGen panel

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.

26 controls. Accepts Midi, ControlMidi, produces Midi, MelodyMidi.

Sprout panel

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.

17 controls. Accepts Midi, ControlMidi, produces Midi.

MIDI

Processors shaping MIDI before it reaches an instrument.

Cadence panel

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.

17 controls. Accepts Midi, produces Midi, HarmonyMidi.

Counterpointer panel

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.

24 controls. Accepts Midi, produces Midi, MelodyMidi.

Dice panel

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.

3 controls. Accepts Midi, produces Midi.

MIDI Filter panel

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.

5 controls. Accepts Midi, produces Midi.

Retune panel

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.

2 controls. Accepts Midi, produces Midi.

Instruments

Playable sound sources: synths and drum instruments.

8-Bit 8asterd panel

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.

42 controls. Accepts Midi, produces Audio.

Canticle panel

Canticle

Twelve-voice polyphonic tonal instrument for the middle of an ensemble: keys, reed, pad, pluck and glass tones for melody, counterpoint and chords.

16 controls. Accepts Midi, MelodyMidi, HarmonyMidi, produces Audio.

DrumKit panel

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.

75 controls. Accepts Midi, DrumMidi, produces Audio.

Moka panel

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.

10 controls. Accepts Midi, produces Audio.

Monochord panel

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.

14 controls. Accepts Midi, produces Audio.

Mop panel

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.

6 controls. Accepts Midi, produces Audio.

Pulse panel

Pulse

Eight voice subtractive synthesiser with saw, square and triangle oscillators, a one-pole lowpass and an attack-release envelope.

5 controls. Accepts Midi, produces Audio.

Quartet panel

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.

59 controls. Accepts Midi, produces Audio.

Sam panel

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.

17 controls. Accepts Midi, produces Audio.

Processors

Audio effects shaping sound.

Boost panel

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.

1 controls. Accepts Audio, produces Audio.

Cascade panel

Cascade

Schroeder plate reverb with per-mode scaling, damping inside the feedback loop, and a freeze that holds the tail indefinitely.

5 controls. Accepts Audio, produces Audio.

Dynamix panel

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.

14 controls. Accepts Audio, produces Audio.

Ferrite panel

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.

5 controls. Accepts Audio, produces Audio.

JigDAW Gain Trim panel

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/.

1 controls. Accepts Audio, produces Audio.

JigDAW One-Pole Filter panel

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/.

1 controls. Accepts Audio, produces Audio.

JigDAW Soft Clipper panel

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/.

2 controls. Accepts Audio, produces Audio.

Keyframe panel

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.

9 controls. Accepts Audio, produces Audio.

Lookahead panel

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.

1 controls. Accepts Audio, produces Audio.

Octet panel

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.

53 controls. Accepts Audio, MidiCC, produces Audio.

Parameq panel

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.

31 controls. Accepts Audio, produces Audio.

Quefrency panel

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.

11 controls. Accepts Audio, ControlMidi, produces Audio.

Squelch panel

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.

4 controls. Accepts Audio, produces Audio.

Stomp rack panel

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.

3 controls. Accepts Audio, produces Audio.

Tremolo panel

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.

2 controls. Accepts Audio, produces Audio.