SIGNALPATCH

A guitar rig you patch with cables

Amps, cabinets, pedals, a looper, a 4-track, synths and voice effects are modules. Connect them however you like while the sound keeps running.

Download Source on GitHub Windows · Linux · AGPL-3.0
The rack: modules joined by cables

The rack. Every module is a plate with its own knobs, scope and footswitch. Cables glow with the signal they carry.

Screen

46 modules

Neural
Neural Amp and Neural Pedal for any .nam capture, Cabinet with two impulse responses and a blend
Effects
distortion, filter, delay, reverb, chorus, phaser, tremolo, bitcrusher, ring mod, pitch shifter, granular
Stereo
pan, stereo merge, ping-pong delay, stereo chorus, stereo reverb
Voice
vowel filter, 12-band vocoder, autotune
Instruments
mono synth, pluck, noise, drum machine, sampler, looper, 4-track
Dynamics
compressor, limiter, noise gate, Feedback Guard
Control
clock, MIDI note, LFO, random, envelope follower, 8-step sequencer, macro, spectral follower, script
Utility
tuner, gain, 4-channel mixer, crossfade

How you play it

Two views of one patch

Build in the rack. Press Tab and the same patch is a pedalboard with footswitches. Group several modules into one pedal. Keep five rig slots; knobs glide when you switch.

The Board view

Amp captures

The neural modules load Neural Amp Modeler captures. The TONE3000 browser finds them, and cabinet impulses, from inside the app. You keep playing while you try them.

Searching TONE3000 inside the app

Modulation

Every knob has a mod input. A modulated knob moves on screen. The inspector sets a knob's range, curve and mod depth.

Hands-free

MIDI learn on knobs, footswitches, buttons and slots. Expression pedals, relative encoders, a gamepad, and a touch mode for handhelds.

Feedback

Loops are allowed through a Feedback Guard, which keeps them bounded. Patches load muted and fade in when you say so.

Files

Patches are JSON with their recordings beside them. Undo covers every edit. The last session comes back on launch.

Under the panel

Engine

C++20 on headless JUCE 8. Editing compiles a new render plan that replaces the running one at a block boundary. The audio callback does not allocate, lock or block, and a test with an allocation trap checks that on a graph holding every module.

App

GLFW, OpenGL and NanoVG. Module plates are cached and only the live parts are redrawn, so a frame costs a couple of milliseconds.

Status

Version 0.3, and young. Linux with PipeWire or JACK is the main platform. The Windows build is newer and has seen less use. Bug reports are welcome.

Get it

Unzip a release, start SignalPatch and pick your interface under AUDIO. Or build it:

git clone https://github.com/willbearfruits/signalpatch
cd signalpatch
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build --parallel

# on a PipeWire desktop
PIPEWIRE_QUANTUM=128/48000 pw-jack ./build/signalpatch_artefacts/RelWithDebInfo/SignalPatch

Dependencies are fetched by CMake. Windows, Flatpak and realtime priority are covered in BUILDING.md.