openFrameworks addon for audio synthesis and generative music
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
arduino_init minor bugfixes Sep 20, 2017
doxygen separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_analysis new multichannel API, nonbreaking change dont worry Sep 17, 2018
example_android non-breaking big API cleaning Jun 13, 2018
example_audio_input refactoring sequencer Jun 14, 2018
example_basics1_patching adds Api selection to engine Jul 8, 2018
example_basics2_control separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_basics3_gui separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_basics4_modules separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_basics5_channels new multichannel API, nonbreaking change dont worry Sep 17, 2018
example_data_to_wave new multichannel API, nonbreaking change dont worry Sep 17, 2018
example_external_addons_wrap refactoring sequencer Jun 14, 2018
example_graincloud separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_init adds channels example Jun 16, 2018
example_ios refactoring sequencer Jun 14, 2018
example_midi_polysynth new multichannel API, nonbreaking change dont worry Sep 17, 2018
example_midi_seq_out lock free midi, osc and serial output Jun 18, 2018
example_osc_input refactoring sequencer Jun 14, 2018
example_osc_input_sender refactoring sequencer Jun 14, 2018
example_osc_output still improving examples Jun 17, 2018
example_sequencing1 new multichannel API, nonbreaking change dont worry Sep 17, 2018
example_sequencing2 improved sequencing example, improved legacy code, sequence API tweaks Jun 17, 2018
example_sequencing3_masterplan improved sequencing example, improved legacy code, sequence API tweaks Jun 17, 2018
example_sequencing4_wolfram_dub separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_sequencing5_passing_data still improving examples Jun 17, 2018
example_serial_arduino still improving examples Jun 17, 2018
example_song_player separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
example_wavesynth_pc_keys new multichannel API, nonbreaking change dont worry Sep 17, 2018
extra 0.1 Feb 4, 2016
libs working on android support pt1 Apr 11, 2018
src separates pdsp::Parameter functionality between itself and pdsp::Valu… Sep 18, 2018
.gitignore added android example May 22, 2018
README.md now works with latest danomatika/ofxMidi Jul 29, 2018
addon_config.mk working on android support pt1 Apr 11, 2018
license.md 0.1 Feb 4, 2016
ofxaddons_thumbnail.png minor tweaks Feb 17, 2016

README.md

ofxPDSP

ofxPDSP is an openFrameworks addon for audio synthesis and generative music. It is based on those design principles:

  • Native c++, made to be tightly integrated into c++ projects.
  • Class design mimics modular synthesizers, where inputs and outputs are patched with the >> operator.
  • Sample accurate timing for the included sequencer.
  • Thread-safe, lock-free methods for metering and control.
  • Lazy evaluated DSPs. DSP units are recursively processed in chunks big as the audio buffer size, DSPs switch between routines running at audio rate (process every sample) and control rate (once every buffer) on the fly when the result is the same. DSPs are also coded using SIMD instructions when possible.
  • Cross-platform code: works on Linux (x86/ARM), OSX, Windows, iOS, Android (only on ARM processors with NEON instructions).

It includes a good selection of modules ready to be used, like antialiasied oscillators and VA filters, an FFT convolver, analog-sounding envelopes, a delay, a noise generator, a sampler and a graincloud module, biquad equalizers (normal and 2x oversampled), modules for dynamic processing, units for oversampling/downsampling and a framework for writing and sequencing generative music. On top of that some other classes that uses openFrameworks for adding midi and OSC in/out, serial output, sequencer monitoring, waveform plotting and scopes, other audio addon wrapping and ofParameter-compatible control.

Documentation

Here is the reference page for a selection of the most high level classes and function (probably you won't ever need more than that).
To learn how to use ofxPDSP also be sure to check out all the included examples, starting from the basics.

Dependencies

ofxPDSP requires the latest stable release of openFrameworks (0.10) or the master release, ofxMidi, ofxSIMDFloats, ofxAudioFile and ofxOsc.

Examples

Check out the videos of some included examples:

ofxPDSP example-scoring4-wolfram-dub

ofxPDSP example-graincloud

ofxPDSP example-midi_polysynth

ofxPDSP example-scoring3-masterplan

ofxPDSP example-serial-arduino

ofxPDSP example-data-to-wave

License

Nicola Pisanti, MIT License 2016-2018.
For FFT the AudioFFT wrapper is used, Copyright (c) 2013 HiFi-LoFi.
For loading audio file on OSX libaudiodecoder was used, it is still included for legacy purposes but it will be removed in one of the next versions. Copyright (c) 2010-2012 Albert Santoni, Bill Good, RJ Ryan.