(SP) PadSynth
Generate a synth pad out of thin air
- audio
Most nodes in this pack take audio and change it. (SP) PadSynth makes audio from nothing: feed it a frequency and it synthesizes a rich, evolving pad tone, ready for effects. It's a port of the PADSynth algorithm from Nasca Octavian Paul - the same mind behind PaulStretch - specifically the version used in the ZynAddSubFX synthesizer. If you've ever wanted "a synth plugin inside my ComfyUI graph," this is the closest thing here.
The algorithm is elegant and very un-oscillator-like. Instead of building a waveform sample-by-sample, it constructs the tone in the frequency domain: each harmonic gets a Gaussian bell of energy (the width controlled by bandwidth_cents) and a random phase, then everything is inverse-FFT'd into a waveform. Random phases are the secret - they make the tone sound airy and detuned, like a wide pad rather than a plain sine, even though it's a single static note. This is the opposite of PaulStretch in a fun way: PaulStretch stretches existing audio into pads, PadSynth builds pads directly.
The inputs
- sample_rate - 8000–96000, default 44100. Standard CD rate is fine.
- fundamental_freq - the pitch of the pad in Hz, default 261 (roughly middle C). This is your musical starting point.
- bandwidth_cents - 10–100, default 40, the width of each harmonic's Gaussian bell. Wider = airier, softer pad; narrower = clearer, more defined tone.
- number_harmonics - 1–128, default 64. More harmonics = richer timbre (and a longer render). The code applies a classic
1/namplitude falloff with even harmonics doubled, so high harmonics are present but quiet - that's what gives pads their shimmer.
One audio output, and it's mono - the README is explicit: use (SP) Mix Down after, or hit it with (SP) Stereo Width, to get real stereo.
How to actually use it
The classic recipe: PadSynth (pick your note) → Stereo Width (decorrelation) → Filter (highpass the sub-mud) → Convolution Reverb → done. The output is a static note - there's no amplitude envelope, so the tone starts instantly and holds forever. That's a feature for beds and drones, but don't expect a pluck. If you want several notes at once, that's what the (SP) PadSynth Choir node is for.
One thing to know before you go hunting for it: the README describes an amplitude_per_harmonic JSON parameter for sculpting each harmonic's volume - but the shipped node doesn't expose it. The amplitude profile is fixed in the code. So don't waste time looking for that field in the UI; it's on the author's roadmap, not your graph.
Installing it
ComfyUI Manager → "Install Custom Nodes" → search ComfyUI Signal Processing, or:
cd ComfyUI/custom_nodes
git clone https://github.com/c0ffymachyne/ComfyUI_SignalProcessing
then restart ComfyUI. Dependencies from requirements.txt (scipy, pyfar, torchaudio, pyloudnorm, cupy-cuda11x, ...) - Manager installs them. The repo is a work in progress; if the pack won't load, the pinned cupy-cuda11x is the usual suspect, and fixing that brings PadSynth along with everything else.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sample_rate | INT | 441008000–96000 | — |
| fundamental_freq | FLOAT | 26120–2000 | — |
| bandwidth_cents | FLOAT | 4010–100 | — |
| number_harmonics | INT | 641–128 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |