Jiggy / plugin gallery

Jigs

Every plugin in this repository, with its generated control panel. Panels are drawn by the same generator the host uses, so what you see here is what you get in Jiggy. Screenshots are refreshed by node bin/build-gallery.js; panels by node bin/jig.js panel <name>.

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.

MidiGenerator . 13 controls . accepts Midi → produces Midi, BassMidi

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.

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

MidiGenerator . 56 controls . accepts ControlMidi → produces Midi, BassMidi

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.

MidiGenerator . 26 controls . accepts Midi, ControlMidi → produces Midi, MelodyMidi

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.

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

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

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

MidiProcessor . 5 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.

Instrument, AudioInstrument . 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.

Instrument, AudioInstrument . 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.

Instrument, DrumInstrument . 75 controls . accepts Midi, DrumMidi → 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.

Instrument, AudioInstrument . 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.

Instrument, AudioInstrument . 5 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.

AudioEffect, Utility . 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.

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

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

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

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

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

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

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

AudioEffect . 1 controls . accepts Audio → 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.

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

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

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

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

AudioEffect . 2 controls . accepts Audio → produces Audio