DJZ_Pedalboard
Strapping a Guitar Pedalboard to Your ComfyUI Workflow
- audio
- audio
Most ComfyUI audio packs are about generating sound - TTS, voice cloning, music models. DJZ_Pedalboard goes the other way: it's a single node that processes whatever audio you already have through real guitar-pedal effects - reverb, delay, chorus, distortion, phaser, pitch shift - and hands it back to the graph as the same AUDIO type it ate. No models to download, no API key, nothing but math on a waveform. If you've ever wanted to run a voice or a music sample through a "pedalboard" before it hits your video or your sound-to-video model, this is the node for it.
How it actually works
Under the hood it's a thin wrapper around Spotify's open-source pedalboard library, the same DSP code Spotify uses internally for podcast and music processing. The chain isn't built in the node UI - it's defined in plain-text .pdl preset files that ship in the pack's pedalboard/ folder. You pick a preset from a dropdown, and the node:
- Converts the incoming waveform to numpy, juggling 1D/2D/3D shapes and transposing
(channels, samples)to(samples, channels)so the DSP library gets what it expects. - Reads your chosen
.pdl, regex-pulls the effect chain out of the[...]block, and evaluates it in a restricted namespace - no builtins, just an allowlist of 11 effect classes: Chorus, Compressor, Delay, Distortion, HighpassFilter, LowpassFilter, Phaser, Reverb, PitchShift, Limiter, and LadderFilter. - Runs the whole chain through
Pedalboard(effects), peak-normalizes if anything clipped past 1.0, and converts the result back to the standard(1, channels, samples)tensor ComfyUI audio nodes expect.
A preset looks like this:
# Combined Effects
[Compressor(threshold_db=-20, ratio=3), Chorus(rate_hz=1.0, depth=0.25, mix=0.3), Delay(delay_seconds=0.25, feedback=0.3)],
"combined_effects.wav"
So the "pedalboard" part isn't a gimmick - you're literally building a signal chain in the same style as pedalboards, just in a text file.
The two inputs and one output
- audio (AUDIO) - feed it the output of any node that emits AUDIO: a Load Audio node, a TTS node, or a video-to-audio extractor. The node validates that it's a real dict with a non-None waveform and errors loudly if not.
- effect_presets (enum) - the dropdown of 16 shipped
.pdlfiles, fromreverb_large.pdlandchorus_subtle.pdlto the eyebrow-raisingtest.pdl. This is your whole "interface." - audio (AUDIO) - the processed result, ready to wire into whatever consumes audio next.
That's it. There are no knobs in the node itself; all parameter tuning happens inside the preset files.
Installing it
Easiest route: ComfyUI Manager → search "DJZ-Pedalboard" → install → restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Pedalboard
Then install the one real dependency - the pedalboard pip package. Windows portable users get install-portable.bat in the repo, which pip-installs into the embedded Python automatically; everyone else:
pip install -r ComfyUI/custom_nodes/DJZ-Pedalboard/requirements.txt
No model files, no weights, no heavy torch extras - just that one pip package.
Where people get burned
- The dropdown is frozen at startup. The preset list is built by globbing
pedalboard/*.pdlwhen ComfyUI launches. Add or rename a preset and you must restart ComfyUI before it shows up in the enum. - The
"output.wav"at the end of each preset is decorative. The node only cares about the[...]chain; it returns AUDIO to the graph and never actually writes that file. Don't go hunting for a generated wav. - A typo in a
.pdlis a hard error, not a silent skip - the restrictedevalrejects anything not in the effect allowlist, and a malformed chain raises a ValueError. The node keeps adjz_pedalboard.lognext to its own source file; when something fails, that's where the real detail lives.
It's a niche node for a real gap - audio processing inside ComfyUI is still mostly DIY, and this is one of the few approaches that ships working presets and doesn't drag in a stack of model weights. Tweak a preset or two and it earns its place.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| effect_presets | COMBO | 16 options: reverb_large.pdl, chorus_subtle.pdl, pitch_shift_up.pdl, distortion_mild.pdl, test.pdl, reverb_small.pdl, +10 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |