Generate PAD spectra with FFT wavetables

This commit is contained in:
Meta Vens 2026-05-14 21:20:15 +01:00
commit 25fb9d1e90
9 changed files with 215 additions and 68 deletions

View file

@ -169,15 +169,20 @@ layer name=pad_low engine=pad
spectrum layer=pad_low root=130.8128 spread=.012 partials=1:.07,1.5:.052
```
This gives PAD texture targets a reusable source authority without inflating the
voice graph. It is still not a claim of exact PADsynth FFT/bandwidth parity:
`root`, `spread`, and `partials` are authoring-time table shape, not runtime
controls.
The source table is generated by an authoring-time PADsynth-style path:
harmonics are spread into a frequency-domain amplitude profile, deterministic
random phase is applied, one inverse FFT produces the looped table, and Faust
only reads that baked table. This gives PAD texture targets a reusable source
authority without inflating the voice graph. It still does not claim full Zyn
PAD engine parity across all harmonic profiles, randomness controls, or
multi-table pitch-zone behavior. `root`, `spread`, and `partials` are
authoring-time table shape, not runtime controls.
Sources:
- [ZynAddSubFX](https://github.com/zynaddsubfx/zynaddsubfx)
- [ZynAddSubFX feature list](https://github.com/zynaddsubfx/zynaddsubfx)
- [Paul Nasca's PADsynth algorithm](https://zynaddsubfx.sourceforge.io/doc/PADsynth/PADsynth.htm)
### Tier 3: Faust Examples And Libraries