ofxPDSP extentions
Branches ahead of master
These branches have commits not yet on master — could be unmerged fixes or work in progress worth a look.
README
WIP ofxPDSPTools
Work in progress High level modules and tools to use with ofxPDSP. Like Synth, Synth parameters, patch saving/loading, UI helpers ...
Not sure of everything yet, code can change at any moment.
Project started to learn DSP, get back into shape with C++ and explore OF.
Dependencies & Thank's
Thanks to OpenFrameworks, npisanti, ocornut, jvcleave for there super works.
This addon relies on other libraries :
- ofxPDSP
- ofxOsc
- [ofxMidi]()
- [ofxAudioFile]()
- ImGui (fork)
- ofxImGui (fork)
- ofxXmlSettings
Install
Clone the project in OF\addonsCompile
I can only test on Windows with Visual Studio 2017/2019. But should compile on other platform as I only use OF addons.
If the project is cloned in OF\addons everything should be ok.
Modules
Patch
PatchParams
This class allow to build a hierachy of ParamDesc which contain an pdsp::Parameter which encapulsate an ofParameter. It also maintain a ofParameterGroup to ease (de)serialization using ofxXmlSettings.
For each ParamDesc you can provide layout options that will be used by the UI part to draw controls.
PatchFilesStore
Use the ofParameterGroup of PatchParams to help store/load synth patchs from a given folder.
Synth
Still bit messy.
UI
All UI is based on a fork of ofxImGui & ImGui.
PatchParam being an abstraction, it could be used to draw UI with ofxGui.
UI helpers to :
- draw PatchParams controls to setup synth
- provide a UI to select MIDI output
- provide a UI to save/load patches
Examples
example_midi_substractive_synth
This was inspired by the book
Creating Sounds from Scratch from Andrea Pejrolo & Scott B. Metcalfe, Arturia Minibrute 2 controls layout and other .This example feature a synth with a two OSCs voice.
Both allow to select:
- wave forms weight
- detune (coarse and fine)
- ADSR envelop shape
- filter (filter type, cutoff and reso)
The other provide an LFO to control many parameters of the voice (level, pitch, ...).
And UI components to setup synth, select MIDI output and load/save patches.
WARNING: Depending on computers (probably audio card or drivers) synth can produce different audio level and cracks.
So, lower volume of your system before trying it, and if you get cracks lower OSC and/or synth level.
I have to investigate and probably insert a compressor between synth out and audio output.

To Do
Not clear yet, but the idea is to create a track object to which I could bind a synth and FXs. All build using ofxPDS sequencer system.
ofxAddons