ofxPDSP
pdsp Namespace Reference

Thread-safe value control with smoothing. More...

Classes

class  AAHighShelfEQ
 2x Oversampled High Shelf Equalizer. Multichannel. More...
 
class  AALowShelfEQ
 2x Oversampled Low Shelf Equalizer. Multichannel. More...
 
class  AAPeakEQ
 2x Oversampled Peak Equalizer. Multichannel. More...
 
class  AbsoluteValue
 The output are the absolute values of the input signal values. Make the signal unipolar by mirroring values that are less than zero. More...
 
class  ADSR
 Attack-Decay-Sustain-Release envelope. More...
 
class  AHR
 Attack-Hold-Release envelope. More...
 
class  AllPassDelay
 Digital Delay with an all pass filter in the feedback path, useful for building reverbs. More...
 
class  Amp
 Multiply in("signal") for in("mod"). More...
 
class  APF1
 1pole AllPass Filter More...
 
class  APF4
 4pole AllPass Filter More...
 
class  BasiVerb
 Dubby sounding reverb based on Moorer's reverb with added time modulations. More...
 
class  BipolarToUnipolar
 Converts bipolar signals to unipolar. More...
 
class  BiquadAPF2
 2pole All Pass Filter More...
 
class  BiquadBase
 Base class for biquad filters. More...
 
class  BiquadBPF2
 2pole Band Pass Filter More...
 
class  BiquadHighShelf
 High shelf EQ filter. More...
 
class  BiquadHPF2
 2pole High Pass Filter More...
 
class  BiquadLowShelf
 Low shelf EQ filter. More...
 
class  BiquadLPF2
 2pole Low Pass filter More...
 
class  BiquadNotch2
 2pole Notch Filter More...
 
class  BiquadPeakEQ
 Peaking EQ filter with variable Q. More...
 
class  Bitcruncher
 Bitcruncher. Makes the output distorted by reducing the bit used for storing the amplitude values. More...
 
class  BitNoise
 Stereo Digital noise generator with lots of control. More...
 
class  BLEPSaw
 Antialiased Saw Oscillator. More...
 
class  BufferShell
 A buffer of memory-aligned floats that resize itself when the units are prepared. More...
 
class  ChannelNode
 A module with no dsp inside, just two public pdsp::PatchNode set as default input and output and not connected between then, useful as send/return for coding multichannel modules. More...
 
class  CheapPulse
 Economic pulse oscillator. More...
 
class  CheapSaw
 Economic saw oscillator. More...
 
class  CheapSine
 Economic sine oscillator. More...
 
class  CheapTri
 Economic triangle oscillator. More...
 
class  Clockable
 Global transport and tempo interface. More...
 
class  ClockedLFO
 LFO clocked to global tempo and synchronized to transport. More...
 
class  ClockedPhasor
 Phazor clocked to tempo values and syncronized to transport. More...
 
class  CombFilter
 A comb filter is a delay tuned to a specific pitch frequency (mix it with the dry signal). Multichannel. More...
 
class  Compressor
 Stereo Feed-forward compressor with peak-based or RMS detection and optional lookahead and stereo linking. More...
 
class  ComputerKeyboard
 
class  Controller
 
class  DataOsc
 Data table oscillator. More...
 
class  DataOscillator
 DataTable based oscillator. Check out the pdsp::DataTable for more info. More...
 
class  DataTable
 Utility class for creating waveform from realtime data, thread safely. More...
 
class  DBtoLin
 Converts dB values into linear values. More...
 
class  Decimator
 Sample Rate Decimator, reduce the sample rate of the input signal. New sample rate frequency is a real-time modulable input. More...
 
class  Delay
 Digital Delay with a low pass filter in the feedback path. More...
 
class  DimensionChorus
 Chorus loosely based on Roland Dimension C-D models. More...
 
class  DownSampler
 Abstract class to implement downsampling resamplers. More...
 
class  DPWTri
 Antialiased Triangle Oscillator. More...
 
class  Ducker
 Triggered ducking module. Multichannel. More...
 
class  Engine
 
class  EnvelopeFollower
 Envelope Follower for dynamic processing and control. More...
 
class  ExternalInput
 Unit to copy values from an external audio input and convert them to a patchable output. More...
 
class  FDLConvolver
 Process the input using FFT convolution with a given impulse response. More...
 
class  FFTWorker
 Class to use an FFT Implementation. More...
 
class  FMOperator
 FM operator based on a wavetable sine. More...
 
class  Formula
 An abstract unit with one input and one output and no other controls, for simple processing. More...
 
class  FreqToMs
 output is frequency converted to milliseconds, useful for tuning delays More...
 
class  Function
 powerful class for sequencing. Function executed a given code with a rate defined by timing variable and by pdsp::Engine sequencer tempo. Into the executed assignable lambda you can send out triggers or value messages to the pdsp::Function outputs More...
 
class  GainComputer
 Calculate gain reduction value. Needs an input converted from linear to dB values. More...
 
class  GrainCloud
 Stereo "cloud" of really short sampled segments. More...
 
class  GrainWindow
 Single trigger envelope with a DSP-window shape, with included amp. More...
 
class  HighCut
 12 dB High Cut (aka Low-Pass filter). Non-resonant. Multichannel. More...
 
class  HighShelfEQ
 High Shelf Equalizer. Multichannel. More...
 
class  IIRDownSampler2x
 Downsample to half the oversampling level. More...
 
class  IIRUpSampler2x
 Upsample to half the oversampling level. More...
 
class  InputNode
 Input of a Unit, process all the connected Outputs and sum them. Has an internal variable state. More...
 
class  IRVerb
 Impulse Response based reverb, with stereo or mono input and stereo output. More...
 
class  LFO
 non-clocked LFO More...
 
class  LFOPhasor
 Simple phazor for LFOs. More...
 
class  LHDelay
 Utility to delay signal for a certain ms, used in lookahead compressors. More...
 
class  LinearCrossfader
 Linearly fades between A/B inputs. More...
 
class  LinToDB
 Converts linear values into dB values. More...
 
class  LowCut
 12 dB Low Cut (aka High-Pass filter). Non-resonant. Multichannel. More...
 
class  LowShelfEQ
 Low Shelf Equalizer. Multichannel. More...
 
class  MaxValue2
 Output is the max between the values of the two inputs. More...
 
class  MultiLadder4
 4 pole Multimode Ladder Virtual Analog Filter More...
 
class  OneBarTimeMs
 Constantly outputs a control rate value that rapresent the time in milliseconds for one bar. More...
 
class  OneMinusInput
 output is 1.0f - input More...
 
class  OnePole
 1 pole high/low pass filter More...
 
class  Oscillator
 Abstract class to implement oscillators. More...
 
class  OscillatorVariShape
 Abstract class to implement oscillators with single shape control. More...
 
class  OutputNode
 Output of a Unit, contains a buffer of rendered floats and has a variable state flag. More...
 
class  Panner
 Pans a signal between L/R outputs. More...
 
class  Parameter
 
class  ParameterAmp
 
class  ParameterGain
 
class  Patchable
 Abstract class for implementing Units and Modules. More...
 
class  PatchNode
 A Unit with no dsp inside, it just pass it's input to the output. Patching float to this Unit is thread-safe. More...
 
class  PeakEQ
 Peak Equalizer. Multichannel. More...
 
class  PhaserFilter
 A 4 pole Phaser. Multichannel. More...
 
class  PhasorShifter
 Shift a phazor output, wrapping it around if needed. More...
 
class  PitchToFreq
 Converts pitch values to frequency values. More...
 
class  PMPhasor
 Fully featured phazor with phase modulation and sync inputs. More...
 
class  PositiveValue
 Make the signal unipolar by setting to zero negative values. Only positive values are not altered. More...
 
class  Preparable
 
class  Processor
 The bridge between pdsp and the audio callback. More...
 
class  RMSDetector
 An RMS signal detector. More...
 
class  SampleAndHold
 Sample & Hold unit. More...
 
class  SampleBuffer
 Contains the data loaded from an audio file. More...
 
class  SampleBufferPlotter
 utility class to generate a waveform plot More...
 
class  Sampler
 plays SampleBuffer More...
 
class  SamplesDelay
 Utility to delay signal for a certain number of samples. More...
 
class  Saturator1
 Saturator unit, inverse sigmoid curve. More...
 
class  Saturator2
 Saturator unit, tanh curve. More...
 
class  Scope
 
class  SequencerGateOutput
 Takes messages from a MessageBuffer and convert them in a trigger output. More...
 
class  SequencerProcessor
 Contains all the needed framework for generating and sequencing messages for the DSPs. More...
 
class  SequencerValueOutput
 Takes messages from a MessageBuffer and convert them in an optionally smoothed value output. More...
 
class  SineFB
 Wavetable sine oscillator with self-fm. More...
 
class  SoftClip
 Soft Clipper with settable threshold, useful for limiting signals. More...
 
class  SquarePeakDetector
 Make the signal unipolar by multiplying the values for themselves. More...
 
class  SRDelay
 Send/Return Delay. Digital Delay with patchable feedback path. More...
 
class  SVF2
 2pole Virtual Analog State Variable Filter More...
 
class  SVFilter
 Multi-mode virtual analog state variable filter. Multichannel. More...
 
class  Switch
 A Unit with no dsp inside, it let you switch between different connected inputs and process and pass to the output only the selected input. More...
 
class  TableOscillator
 pdsp::WaveTable based oscillator More...
 
class  ToGateTrigger
 Generate trigger on/off messages when the input values are greater than a set value. More...
 
class  TriggerControl
 Generate trigger on/off messages when the input values are greater than a set value. More...
 
class  TriggeredGrain
 A stream of really short sampled segments, use many of this to create a "graincloud". More...
 
class  TriggeredRandom
 Random values clocked by an external trigger. More...
 
class  TriggerGeiger
 Generate randomly separated trigger values. More...
 
class  Unit
 Abstract class for implementing Units. More...
 
class  UpSampler
 Abstract class to implement upsampling resamplers. More...
 
class  UsesSlew
 Slewing behavior. More...
 
class  VAFilter
 Multi-mode virtual analog ladder filter. Multichannel. More...
 
class  ValueControl
 
class  ValueNode
 An OutputNode that is always set at control rate with a set value. Setting or patching float to this class is thread-safe. More...
 
class  VAOscillator
 Oscillator with antialiased waveforms, sync in/out and fm input. More...
 
class  WaveTable
 Utility class for storing and loading buffers of waveforms. More...
 
class  WaveTableOsc
 Wavetable oscillator. More...
 
class  WhiteNoise
 PseudoRandom Noise Generator (used for white noise, but it can also generate more complex noise timbres, see pdsp::BitNoise) More...
 
class  Wrapper
 
class  ZeroDownSampler
 Downsample the signal without filtering, just removing values. More...
 
class  ZeroUpSampler
 Upsample the signal without filtering, just copying values. More...
 

Typedefs

typedef AbsoluteValue FullWavePeakDetector
 
typedef AbsoluteValue AbsoluteSignal
 
typedef PositiveValue HalfWavePeakDetector
 
typedef PositiveValue PositiveSignal
 
typedef DPWTri AATri
 
typedef BLEPSaw AASaw
 
typedef Compressor Compressor1
 
typedef Compressor Compressor2
 
typedef Delay DampedDelay
 
typedef ClockedPhasor ClockedPhazor
 
typedef LFOPhasor LFOPhazor
 
typedef PhasorShifter PhazorShifter
 
typedef PMPhasor PMPhazor
 
typedef WhiteNoise PRNoiseGen
 

Enumerations

enum  VoiceMode { Poly, Mono }
 
enum  PortamentoMode { Off, On, Legato }
 
enum  MonoPriority { Last, Low, High }
 
enum  Window_t {
  Rectangular, Triangular, Hann, Hamming,
  Blackman, BlackmanHarris, SineWindow, Welch,
  Gaussian, Tukey
}
 
enum  Interpolator_t { Linear, Smooth }
 
enum  SlewMode_t { Rate, Time }
 

Functions

std::vector< sumNodePtr > * operator+ (float left, OutputNode &right)
 
std::vector< sumNodePtr > * operator+ (float left, Patchable &right)
 
std::vector< sumNodePtr > * operator+ (OutputNode &left, OutputNode &right)
 
std::vector< sumNodePtr > * operator+ (OutputNode &left, Patchable &right)
 
std::vector< sumNodePtr > * operator+ (OutputNode &left, float right)
 
std::vector< sumNodePtr > * operator+ (Patchable &left, OutputNode &right)
 
std::vector< sumNodePtr > * operator+ (Patchable &left, Patchable &right)
 
std::vector< sumNodePtr > * operator+ (Patchable &left, float right)
 
std::vector< sumNodePtr > * operator+ (std::vector< sumNodePtr > *left, OutputNode &right)
 
std::vector< sumNodePtr > * operator+ (std::vector< sumNodePtr > *left, Patchable &right)
 
void operator>> (std::vector< sumNodePtr > *left, InputNode &right)
 
Patchableoperator>> (std::vector< sumNodePtr > *left, Patchable &right)
 
void operator>> (OutputNode &output, InputNode &input)
 
Patchableoperator>> (OutputNode &output, Patchable &input)
 
void operator>> (float value, InputNode &input)
 
OutputNodeoperator>> (float lhs, ValueNode &node)
 
void operator>> (Patchable &output, InputNode &input)
 
Patchableoperator>> (Patchable &output, Patchable &input)
 
Patchableoperator>> (float value, Patchable &input)
 
void operator!= (InputNode &input, OutputNode &output)
 
void operator!= (OutputNode &output, InputNode &input)
 
void operator!= (Patchable &input, OutputNode &output)
 
void operator!= (OutputNode &output, Patchable &input)
 
void operator!= (InputNode &input, Patchable &output)
 
void operator!= (Patchable &output, InputNode &input)
 
OutputNodeoperator* (OutputNode &output, float multiplier)
 
Patchableoperator* (Patchable &patch, float multiplier)
 
void operator<< (InputNode &input, float value)
 
void operator<< (ValueNode &node, float value)
 
void operator<<= (InputNode &input, float value)
 
void operator<<= (ValueNode &node, float value)
 
void prepareAllToPlay (int expectedBufferSize, double sampleRate)
 prepares all the Preparable to play, it is mandatory to be called at least once with the correct sample rate and buffer size
 
void releaseAll ()
 releases the resources of all the Preparable classes
 
void setInitOversample (int initOversample)
 changes the default oversample level (default is 1 = no oversampling )
 
inline_f float BLEPn (const float *BLEPTable, const float &tableFakeLen, const float &modulo, const float &inc, const float &height, const float &pointsPerSide, const int &pointsPerSide_int, bool interpolate, const float &tableCenter, const float &oneSlashPointPerSide)
 
void BLEPWaveformDSP (int bufferSize, float *outputBuffer, const float *phaseBuffer, float inc, const float *BLEPTable, float pointsPerSide, float tableFakeLen, bool interpolate=false)
 
void BLEPFMWaveformDSP (int bufferSize, float *outputBuffer, const float *phaseBuffer, const float *incBuffer, const float *BLEPTable, float pointsPerSide, float tableFakeLen, bool interpolate=false)
 
inline_f bool checkTrigger (float x)
 
inline_f bool envTrigger (float x)
 
inline_f bool notTrigger (float x)
 
inline_f bool checkSync (float x)
 
inline_f void pdsp_trace ()
 
inline_f void wrapChannelIndex (size_t &index, size_t max=2, std::string name="this module")
 
inline_f float PNSequenceNext (uint32_t &PNRegister)
 
float panL (float pan)
 returns a float value you can use to multiply your signal for panning when patching to a left channel More...
 
float panR (float pan)
 returns a float value you can use to multiply your signal for panning when patching to a right channel More...
 
float f2p (float freq)
 take a frequency value as input an returns a pitch value. Standard reference tuning is 440hz, you can set it with setReferencyFrequency() (remember to set it before using this function!). More...
 
float pratio (float pitch, float ratio)
 take a pitch value and a float ratio. The returns a pitch that is the pitch value of the frequency corresponding to the first pitch, multiplied by the ratio. More...
 
int highestPartial (float pitch)
 take a pitch value as input an returns the highest partial before 20000hz of a waweform with that base pitch. Useful for initializing pdsp::WaveTable, to avoid aliasing use the pitch of the maximum note you want to use with that oscillator. This function is calibrated for 44.1 kHz sapling rate.
 
inline_f float urand ()
 returns a random float value ranging from 0.0f, to the 1.0f. Use this instead of ofRandom() in the code that should run in the audio thread.
 
inline_f float brand ()
 returns a random float value ranging from -1.0f to 1.0f. Use this instead of ofRandom() in the code that should run in the audio thread.
 
inline_f int dice (int min, int maxExclusive)
 returns a random int value that ranges from min to maxExclusive-1 More...
 
float spread (int index, int max, float spread, bool fromCenter=false)
 returns a value for panning voices in an uniform distribution into the stereo panorama More...
 
float p2f (float pitch)
 take a pitch value as input an returns a frequency value. Standard reference tuning is 440hz, you can set it with setReferencyFrequency() (remember to set it before using this function!). More...
 

Detailed Description

Thread-safe value control with smoothing.

abstract class to extend for integrate openFrameworks addon into ofxPDSP

utility class manage serial output ports and send bytes from the internal generative music system

Utility class to monitor the signal.

Two pdsp::Amp with the mod controlled in decibel by a pdsp::Parameter converted from, packed together. Multichannel.

A pdsp::Amp with the mod controlled by a pdsp::Parameter, packed together. Multichannel.

Utility class control the audio dsp parameter and bind them to one or more internal ofParameter.

utility class manage OSC output from the sequencer

utility class manage OSC input to the DSP

utility class to parse midi note data from a pdsp::midi::Input and convert it to a bank trigger outputs

utility class manage midi output ports and send midi messages from the internal generative music system

utility class to parse note, pitch bend and channel pressure from a pdsp::midi::Input and convert it to a bank of patchable triggers and values

utility class manage midi input ports and collect midi input messages

utility class to parse control change data from a pdsp::midi::Input and convert it to a bank of patchable modules with optional slewed output. By default outputs are slewed to 50ms.

utility class to manage input/output audio streams, acquire and release resources and process midi input/output. It also has an internal SequencerProcessor for sequencing.

utility class to use your computer keyboard as an 1-octave musical keyboard

pdsp::ValueControl contains a value that you can patch to other pdsp modules, and set with the set() method. The value can optionally be smoothed over time, and the set() and get() methods are thread-safe.

pdsp::Parameter contains some ofParameter and a pdsp::ValueControl, that is read and processed in a thread-safe manner. When one of the ofParameters is changed the pdsp::ValueControl is set. The output of this class can be patched to the audio DSP and can be optionally smoothed out.

This will save you lot of time when making monophonic synths. It has an input and output like a pdsp::Amp, but no in_mod() as the mod is controlled by an internal pdsp::Parameter you can access and set with the other methods.

This will save you lot of time to mix signals. A value lower than -48.0f will set the amp mod to 0.0f, muting the input signal and pausing its DSP processing.

Function Documentation

◆ dice()

inline_f int pdsp::dice ( int  min,
int  maxExclusive 
)

returns a random int value that ranges from min to maxExclusive-1

Parameters
[in]minnumber
[in]maxExclusive

◆ f2p()

float pdsp::f2p ( float  freq)

take a frequency value as input an returns a pitch value. Standard reference tuning is 440hz, you can set it with setReferencyFrequency() (remember to set it before using this function!).

Parameters
[in]freqfreq value to convert

◆ p2f()

float pdsp::p2f ( float  pitch)

take a pitch value as input an returns a frequency value. Standard reference tuning is 440hz, you can set it with setReferencyFrequency() (remember to set it before using this function!).

Parameters
[in]pitchpitch value to convert

◆ panL()

float pdsp::panL ( float  pan)

returns a float value you can use to multiply your signal for panning when patching to a left channel

Parameters
[in]panpan value

◆ panR()

float pdsp::panR ( float  pan)

returns a float value you can use to multiply your signal for panning when patching to a right channel

Parameters
[in]panpan value

◆ pratio()

float pdsp::pratio ( float  pitch,
float  ratio 
)

take a pitch value and a float ratio. The returns a pitch that is the pitch value of the frequency corresponding to the first pitch, multiplied by the ratio.

Parameters
[in]pitchbase pitch value
[in]ratioratio of the frequency multiplication

◆ spread()

float pdsp::spread ( int  index,
int  max,
float  spread,
bool  fromCenter = false 
)

returns a value for panning voices in an uniform distribution into the stereo panorama

Parameters
[in]indexindex of the voice to pan
[in]maxnumber of max voices
[in]spreadspread of the total panorama, value should range from 0.0f to 1.0f
[in]fromCenterif true the spreading will start from the center and alternate notes at right and left