Om
1.0.0
A universal framework for multimedia simulation
|
A class that produces delay effects which can be independently changed per channel. More...
#include <omSoundMultichannelDelay.h>
Public Types | |
enum | DelayType { COMB = 0, ALL_PASS = 1 } |
An enum type which describes the various types of delay effects that a Delay can produce. More... | |
Public Member Functions | |
MultichannelDelay () | |
Create a multichannel comb delay filter with 500ms delay time, 0 delay feedback, 0dB delay gain, and 0dB dry gain. More... | |
MultichannelDelay (Float newDelayTime, Gain newFeedbackGain, Gain newDelayGain, Gain newDryGain) | |
Create a multichannel comb delay filter with the specified delay parameters. More... | |
MultichannelDelay (DelayType newType, Float newDelayTime, Gain newFeedbackGain, Gain newDelayGain, Gain newDryGain) | |
Create a multichannel delay filter with the specified type and delay parameters. More... | |
DelayType | getType () const |
Return the kind of delay effect that this delay filter is producing. More... | |
void | setType (DelayType newType) |
Set the kind of delay effect that this delay filter is producing. More... | |
Float | getDelayTime (Index channelIndex) const |
Return the delay time for the specified delay filter channel in seconds. More... | |
void | setDelayTime (Index channelIndex, Float newDelayTime) |
Set the delay time for the specified delay filter channel in seconds. More... | |
void | setDelayTime (Float newDelayTime) |
Set the delay time for all of this delay filter's channels in seconds. More... | |
Float | getDecayTime (Index channelIndex) const |
Return the time it takes for the output of the specified delay filter channel to decay to -60dB. More... | |
void | setDecayTime (Index channelIndex, Float newDecayTime) |
Set the time it takes for the output of the specified delay filter channel to decay to -60dB. More... | |
void | setDecayTime (Float newDecayTime) |
Set the time it takes for the output of the all delay filter channels to decay to -60dB. More... | |
Gain | getFeedbackGain (Index channelIndex) const |
Return the feedback gain for the specified channel of this delay filter. More... | |
Gain | getFeedbackGainDB (Index channelIndex) const |
Return the feedback gain for the specified channel of this delay filter in decibels. More... | |
void | setFeedbackGain (Index channelIndex, Gain newFeedbackGain) |
Set the feedback gain for the specified channel of this delay filter. More... | |
void | setFeedbackGainDB (Index channelIndex, Gain newFeedbackGain) |
Set the feedback gain for the specified channel of this delay filter in decibels. More... | |
void | setFeedbackGain (Gain newFeedbackGain) |
Set the feedback gain for all channels of this delay filter. More... | |
void | setFeedbackGainDB (Gain newFeedbackGain) |
Set the feedback gain for all channels of this delay filter. More... | |
Float | getChannelPhase (Index channelIndex) const |
Return the delay phase offset of the channel with the specified index. More... | |
void | setChannelPhase (Index channelIndex, Float newPhase) |
Set the delay phase offset of the channel with the specified index. More... | |
void | setChannelPhase (Float newPhase) |
Set the delay phase offset for all channels. More... | |
Gain | getDelayGain () const |
Return the linear delay gain of this multichannel delay filter. More... | |
Gain | getDelayGainDB () const |
Return the delay gain of this multichannel delay filter in decibels. More... | |
void | setDelayGain (Gain newDelayGain) |
Set the linear delay gain of this multichannel delay filter. More... | |
void | setDelayGainDB (Gain newDelayGain) |
Set the delay gain of this multichannel delay filter in decibels. More... | |
Gain | getDryGain () const |
Return the linear dry gain of this multichannel delay filter. More... | |
Gain | getDryGainDB () const |
Return the dry gain of this multichannel delay filter in decibels. More... | |
void | setDryGain (Gain newDryGain) |
Set the linear dry gain of this multichannel delay filter. More... | |
void | setDryGainDB (Gain newDryGain) |
Set the dry gain of this multichannel delay filter in decibels. More... | |
virtual UTF8String | getName () const |
Return a human-readable name for this multichannel delay filter. More... | |
virtual UTF8String | getManufacturer () const |
Return the manufacturer name of this multichannel delay filter. More... | |
virtual FilterVersion | getVersion () const |
Return an object representing the version of this multichannel delay filter. More... | |
virtual FilterCategory | getCategory () const |
Return an object that describes the category of effect that this filter implements. More... | |
virtual Size | getParameterCount () const |
Return the total number of generic accessible parameters this multichannel delay filter has. More... | |
virtual Bool | getParameterInfo (Index parameterIndex, FilterParameterInfo &info) const |
Get information about the multichannel delay filter parameter at the specified index. More... | |
virtual Bool | getParameterValueName (Index parameterIndex, const FilterParameter &value, UTF8String &name) const |
Get any special name associated with the specified value of an indexed parameter. More... | |
Public Member Functions inherited from om::sound::filters::SoundFilter | |
virtual | ~SoundFilter () |
Destroy this sound filter object. More... | |
SoundResult | read (SoundBuffer &outputBuffer, Size numSamples) |
Fill the specified output buffer with the requested number of samples, based on internal filter state. More... | |
SoundResult | read (SoundFrame &outputFrame, Size numSamples) |
Fill the specified output frame with the requested number of samples, based on internal filter state. More... | |
SoundResult | write (const SoundBuffer &inputBuffer, Size numSamples) |
Process the specified input buffer samples and do something with them. More... | |
SoundResult | write (const SoundFrame &inputFrame, Size numSamples) |
Process the specified input frame samples and do something with them. More... | |
SoundResult | process (const SoundBuffer &inputBuffer, SoundBuffer &outputBuffer, Size numSamples) |
Apply this filter to the specified input buffer data, placing the result in the output buffer. More... | |
SoundResult | process (const SoundBuffer &inputBuffer, SoundFrame &outputFrame, Size numSamples) |
Apply this filter to the specified input buffer data, placing the result in the output frame. More... | |
SoundResult | process (const SoundFrame &inputFrame, SoundFrame &outputFrame, Size numSamples) |
Apply this filter to the specified input frame data, placing the result in the output frame. More... | |
SoundResult | process (const SoundFrame &inputBuffer, SoundBuffer &outputBuffer, Size numSamples) |
Apply this filter to the specified input frame data, placing the result in the output buffer. More... | |
void | reset () |
Signal to the filter that the audio stream is restarting. More... | |
UInt64 | getFrameIndex () const |
Return the index of the next frame to be processed (or the current one if currently processing). More... | |
Size | getInputCount () const |
Return the current number of audio inputs that this filter has. More... | |
virtual UTF8String | getInputName (Index inputIndex) const |
Return a human-readable name of the filter audio input at the specified index. More... | |
Size | getOutputCount () const |
Return the current number of audio outputs that this filter has. More... | |
virtual UTF8String | getOutputName (Index outputIndex) const |
Return a human-readable name of the filter audio output at the specified index. More... | |
Size | getMIDIInputCount () const |
Return the current number of MIDI inputs that this filter has. More... | |
virtual UTF8String | getMIDIInputName (Index inputIndex) const |
Return a human-readable name of the filter MIDI input at the specified index. More... | |
Size | getMIDIOutputCount () const |
Return the current number of MIDI outputs that this filter has. More... | |
virtual UTF8String | getMIDIOutputName (Index outputIndex) const |
Return a human-readable name of the filter MIDI output at the specified index. More... | |
virtual Time | getLatency () const |
Return a Time value indicating the latency of this sound filter in seconds. More... | |
virtual Bool | getParameterIndex (const UTF8String ¶meterName, Index ¶meterIndex) const |
Query the index of the parameter with the specified name. More... | |
Bool | getParameter (Index parameterIndex, FilterParameter &value) const |
Place the value of the parameter at the specified index in the output parameter. More... | |
Bool | getParameter (Index parameterIndex, Bool &value) const |
Place the value of the parameter at the specified index in the output parameter. More... | |
Bool | getParameter (Index parameterIndex, Int64 &value) const |
Place the value of the parameter at the specified index in the output parameter. More... | |
Bool | getParameter (Index parameterIndex, Float32 &value) const |
Place the value of the parameter at the specified index in the output parameter. More... | |
Bool | getParameter (Index parameterIndex, Float64 &value) const |
Place the value of the parameter at the specified index in the output parameter. More... | |
template<typename ParameterType > | |
Bool | getParameter (const UTF8String &name, ParameterType &value) const |
Place the value of the parameter with the specified name in the output parameter. More... | |
template<typename ParameterType > | |
Bool | getParameter (const char *name, ParameterType &value) const |
Place the value of the parameter with the specified name in the output parameter. More... | |
Bool | setParameter (Index parameterIndex, const FilterParameter &value) |
Attempt to set the parameter value at the specified index. More... | |
Bool | setParameter (Index parameterIndex, Bool value) |
Attempt to set the parameter value at the specified index. More... | |
Bool | setParameter (Index parameterIndex, Int64 value) |
Attempt to set the parameter value at the specified index. More... | |
Bool | setParameter (Index parameterIndex, Float32 value) |
Attempt to set the parameter value at the specified index. More... | |
Bool | setParameter (Index parameterIndex, Float64 value) |
Attempt to set the parameter value at the specified index. More... | |
template<typename ParameterType > | |
Bool | setParameter (const UTF8String &name, ParameterType value) |
Attempt to set the parameter value with the specified name. More... | |
template<typename ParameterType > | |
Bool | setParameter (const char *name, ParameterType value) |
Attempt to set the parameter value with the specified name. More... | |
virtual Bool | writeState (DataOutputStream &stream) const |
Write the current state of this sound filter to a data output stream. More... | |
virtual Bool | readState (DataInputStream &stream) |
Read a previously saved filter state from the specified data input stream and replace the filter's state. More... | |
virtual Size | getPresetCount () const |
Return the number of standard configuration presets that this sound filter has. More... | |
virtual Bool | getPreset (Index presetIndex, FilterPreset &preset) const |
Get the standard preset for this sound filter with the specified index. More... | |
Bool | getIsSynchronized () const |
Return whether or not this sound filter performs thread synchronization. More... | |
void | setIsSynchronized (Bool newIsSynchronized) |
Set whether or not this sound filter performs thread synchronization. More... | |
virtual Bool | allowsInPlaceProcessing () const |
Return whether or not this sound filter can process audio data in-place. More... | |
Static Public Attributes | |
static const UTF8String | NAME |
A string indicating the human-readable name of this multichannel delay filter. More... | |
static const UTF8String | MANUFACTURER |
A string indicating the manufacturer name of this multichanel delay filter. More... | |
static const FilterVersion | VERSION |
An object indicating the version of this multichannel delay filter. More... | |
Static Public Attributes inherited from om::sound::filters::SoundFilter | |
static const om::resources::ResourceType | RESOURCE_TYPE |
The resource type for a sound filter. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from om::sound::filters::SoundFilter | |
static Size | getMaximumNumberOfInputs () |
Return the maximum number of audio inputs that a SoundFilter can support. More... | |
static Size | getMaximumNumberOfOutputs () |
Return the maximum number of audio outputs that a SoundFilter can support. More... | |
static Size | getMaximumNumberOfMIDIInputs () |
Return the maximum number of MIDI inputs that a SoundFilter can support. More... | |
static Size | getMaximumNumberOfMIDIOutputs () |
Return the maximum number of MIDI outputs that a SoundFilter can support. More... | |
Protected Member Functions inherited from om::sound::filters::SoundFilter | |
SoundFilter () | |
Create a new sound filter with 1 audio input and output, and no MIDI inputs or outputs. More... | |
SoundFilter (Size numInputs, Size numOutputs) | |
Create a new sound filter with the specified number of audio inputs and outputs. More... | |
SoundFilter (Size numInputs, Size numOutputs, Size numMIDIInputs, Size numMIDIOutputs) | |
Create a new sound filter with the specified number of audio inputs and outputs. More... | |
void | setInputCount (Size newNumInputs) |
Set the number of inputs that this filter should have. More... | |
void | setOutputCount (Size newNumOutputs) |
Set the number of outputs that this filter should have. More... | |
void | setMIDIInputCount (Size newNumMIDIInputs) |
Set the number of MIDI inputs that this filter should have. More... | |
void | setMIDIOutputCount (Size newNumMIDIOutputs) |
Set the number of MIDI outputs that this filter should have. More... | |
Bool | isFirstFrame () const |
Return whether or not the filter's next frame to be processed is also its first frame. More... | |
void | lockMutex () const |
Acquire a mutex which handles subclass rendering parameter synchronization. More... | |
void | unlockMutex () const |
Release a mutex which handles subclass rendering parameter synchronization. More... | |
A class that produces delay effects which can be independently changed per channel.
This class represents a generic delay-style effect. It can be switched between comb filtering and all-pass delay. This class can also be used to implement a simple delay filter with basic delay time, feedback, and mix controls. It may also be used as a building block for more complex effects like a Schroeder reverberator.
Having explicit control of the delay times and feedback gains for the different channels allows different echo patterns for each channel, increasing stereo imaging. It is often useful to use a set of delay filters with different delay times for each channel to approximate a reverb tail.
An enum type which describes the various types of delay effects that a Delay can produce.
Enumerator | |
---|---|
COMB |
The delay filter behaves as a delay filter (the same as a standard delay effect). |
ALL_PASS |
The delay filter behaves as an all-pass filter. |
om::sound::filters::MultichannelDelay::MultichannelDelay | ( | ) |
Create a multichannel comb delay filter with 500ms delay time, 0 delay feedback, 0dB delay gain, and 0dB dry gain.
om::sound::filters::MultichannelDelay::MultichannelDelay | ( | Float | newDelayTime, |
Gain | newFeedbackGain, | ||
Gain | newDelayGain, | ||
Gain | newDryGain | ||
) |
Create a multichannel comb delay filter with the specified delay parameters.
This constructor creates a filter with the specified delay time, delay feedback gain, delay output gain, and input-to-output gain.
om::sound::filters::MultichannelDelay::MultichannelDelay | ( | DelayType | newType, |
Float | newDelayTime, | ||
Gain | newFeedbackGain, | ||
Gain | newDelayGain, | ||
Gain | newDryGain | ||
) |
Create a multichannel delay filter with the specified type and delay parameters.
This constructor creates a filter with the specified delay time, delay feedback gain, delay output gain, and input-to-output gain.
|
inline |
Return the kind of delay effect that this delay filter is producing.
|
inline |
Set the kind of delay effect that this delay filter is producing.
Return the delay time for the specified delay filter channel in seconds.
Set the delay time for the specified delay filter channel in seconds.
void om::sound::filters::MultichannelDelay::setDelayTime | ( | Float | newDelayTime | ) |
Set the delay time for all of this delay filter's channels in seconds.
Return the time it takes for the output of the specified delay filter channel to decay to -60dB.
This method computes the decay time of the multichannel delay filter using the current values for the feedback gain and delay time of the multichannel delay filter.
Set the time it takes for the output of the specified delay filter channel to decay to -60dB.
This method uses the current multichannel delay filter delay time to compute the feedback gain necessary to produce the desired decay time.
void om::sound::filters::MultichannelDelay::setDecayTime | ( | Float | newDecayTime | ) |
Set the time it takes for the output of the all delay filter channels to decay to -60dB.
This method uses the current multichannel delay filter delay time to compute the feedback gain necessary to produce the desired decay time.
|
inline |
Return the feedback gain for the specified channel of this delay filter.
This value represents how much of each output delay sample is sent back to the delay buffer during each pass over the delay buffer. This value should be between -0.99999 and 0.99999 in order to ensure filter stability.
|
inline |
Return the feedback gain for the specified channel of this delay filter in decibels.
This value represents the gain applied to the output delay sample that is sent back to the delay buffer during each pass over the delay buffer. This value should be between -infinity and -0.00001 in order to ensure filter stability.
void om::sound::filters::MultichannelDelay::setFeedbackGain | ( | Index | channelIndex, |
Gain | newFeedbackGain | ||
) |
Set the feedback gain for the specified channel of this delay filter.
This value represents how much of each output delay sample is sent back to the delay buffer during each pass over the delay buffer. This value is clamped to be between -0.99999 and 0.99999 in order to ensure filter stability.
|
inline |
Set the feedback gain for the specified channel of this delay filter in decibels.
This value represents the gain applied to the output delay sample that is sent back to the delay buffer during each pass over the delay buffer. This value should be between -infinity and -0.00001 in order to ensure filter stability.
void om::sound::filters::MultichannelDelay::setFeedbackGain | ( | Gain | newFeedbackGain | ) |
Set the feedback gain for all channels of this delay filter.
This value represents how much of each output delay sample is sent back to the delay buffer during each pass over the delay buffer. This value is clamped to be between -0.99999 and 0.99999 in order to ensure filter stability.
|
inline |
Set the feedback gain for all channels of this delay filter.
This value represents the gain applied to the output delay sample that is sent back to the delay buffer during each pass over the delay buffer. This value should be between -infinity and -0.00001 in order to ensure filter stability.
Return the delay phase offset of the channel with the specified index.
This value, specified in degrees, indicates how much the phase of the channel should be shifted by. This parameter allows the creation of ping-pong delay effects. For example, if the phase of the left channel is 0 and the phase of the right channel is 180, the channels' delay will be 50% out-of-phase, creating the classic ping-pong style delay.
Set the delay phase offset of the channel with the specified index.
This value, specified in degrees, indicates how much the phase of the channel should be shifted by. This parameter allows the creation of ping-pong delay effects. For example, if the phase of the left channel is 0 and the phase of the right channel is 180, the channels' delay will be 50% out-of-phase, creating the classic ping-pong style delay.
The input phase value is clamped so that the new phase value lies between -180 and 180 degrees.
void om::sound::filters::MultichannelDelay::setChannelPhase | ( | Float | newPhase | ) |
Set the delay phase offset for all channels.
Doing this brings all channels into phase with each other (regardless of what phase that is).
The input phase value is clamped so that the new phase value lies between -180 and 180 degrees.
|
inline |
Return the linear delay gain of this multichannel delay filter.
This value represents the gain applied to the delayed signal before it is mixed with input signal.
|
inline |
Return the delay gain of this multichannel delay filter in decibels.
This value represents the gain applied to the delayed signal before it is mixed with input signal.
|
inline |
Set the linear delay gain of this multichannel delay filter.
This value represents the gain applied to the delayed signal before it is mixed with input signal.
|
inline |
Set the delay gain of this multichannel delay filter in decibels.
This value represents the gain applied to the delayed signal before it is mixed with input signal.
|
inline |
Return the linear dry gain of this multichannel delay filter.
This value represents the gain applied to the input signal before it is mixed with delayed signal.
|
inline |
Return the dry gain of this multichannel delay filter in decibels.
This value represents the gain applied to the input signal before it is mixed with delayed signal.
|
inline |
Set the linear dry gain of this multichannel delay filter.
This value represents the gain applied to the input signal before it is mixed with delayed signal.
|
inline |
Set the dry gain of this multichannel delay filter in decibels.
This value represents the gain applied to the input signal before it is mixed with delayed signal.
|
virtual |
Return a human-readable name for this multichannel delay filter.
The method returns the string "Mutichannel Comb Filter".
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Return the manufacturer name of this multichannel delay filter.
The method returns the string "Om Sound".
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Return an object representing the version of this multichannel delay filter.
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Return an object that describes the category of effect that this filter implements.
This method returns the value FilterCategory::DELAY.
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Return the total number of generic accessible parameters this multichannel delay filter has.
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Get information about the multichannel delay filter parameter at the specified index.
Reimplemented from om::sound::filters::SoundFilter.
|
virtual |
Get any special name associated with the specified value of an indexed parameter.
Reimplemented from om::sound::filters::SoundFilter.
|
static |
A string indicating the human-readable name of this multichannel delay filter.
|
static |
A string indicating the manufacturer name of this multichanel delay filter.
|
static |
An object indicating the version of this multichannel delay filter.