TracktionEngine
|
Base class for nodes in an audio playback graph. More...
Public Types | |
using | VisitorFn = std::function< void(AudioNode &)> |
Public Member Functions | |
AudioNode () | |
virtual | ~AudioNode () |
virtual void | getAudioNodeProperties (AudioNodeProperties &)=0 |
virtual void | prepareAudioNodeToPlay (const PlaybackInitialisationInfo &)=0 |
tells the node to initialise itself ready for playing from the given time. More... | |
virtual bool | purgeSubNodes (bool keepAudio, bool keepMidi)=0 |
Tells the node to delete any sub-nodes that don't produce the required type of output. More... | |
virtual void | releaseAudioNodeResources ()=0 |
tells the node that play has stopped, and it can free up anything it no longer needs. More... | |
virtual void | visitNodes (const VisitorFn &)=0 |
virtual juce::ReferenceCountedObjectPtr< Plugin > | getPlugin () const |
virtual void | prepareForNextBlock (const AudioRenderContext &) |
virtual bool | isReadyToRender ()=0 |
virtual void | renderOver (const AudioRenderContext &)=0 |
virtual void | renderAdding (const AudioRenderContext &)=0 |
void | callRenderAdding (const AudioRenderContext &) |
void | callRenderOver (const AudioRenderContext &) |
Static Public Member Functions | |
template<typename CallbackType > | |
static void | invokeSplitRender (const AudioRenderContext &rc, CallbackType &target) |
Base class for nodes in an audio playback graph.
using tracktion::engine::AudioNode::VisitorFn = std::function<void(AudioNode&)> |
tracktion::engine::AudioNode::AudioNode | ( | ) |
|
virtual |
|
pure virtual |
|
pure virtual |
tells the node to initialise itself ready for playing from the given time.
This call may be made more than once before releaseAudioNodeResources() is called
Implemented in tracktion::engine::SubSampleWaveAudioNode, tracktion::engine::PluginAudioNode, tracktion::engine::WaveAudioNode, tracktion::engine::CombiningAudioNode, and tracktion::engine::SingleInputAudioNode.
|
pure virtual |
Tells the node to delete any sub-nodes that don't produce the required type of output.
This optimises out any unplayable bits of the audio graph. Returns true if this node should be kept, false if this node can itself be deleted.
Implemented in tracktion::engine::SubSampleWaveAudioNode, tracktion::engine::WaveAudioNode, tracktion::engine::PluginAudioNode, tracktion::engine::CombiningAudioNode, and tracktion::engine::SingleInputAudioNode.
|
pure virtual |
tells the node that play has stopped, and it can free up anything it no longer needs.
Implemented in tracktion::engine::WaveAudioNode, tracktion::engine::SubSampleWaveAudioNode, tracktion::engine::PluginAudioNode, tracktion::engine::CombiningAudioNode, and tracktion::engine::SingleInputAudioNode.
|
pure virtual |
|
virtual |
Reimplemented in tracktion::engine::PluginAudioNode, and tracktion::engine::SingleInputAudioNode.
|
virtual |
|
pure virtual |
|
pure virtual |
Implemented in tracktion::engine::TimedMutingAudioNode, tracktion::engine::SpeedRampAudioNode, tracktion::engine::SubSampleWaveAudioNode, tracktion::engine::PluginAudioNode, tracktion::engine::FadeInOutAudioNode, tracktion::engine::MuteAudioNode, tracktion::engine::WaveAudioNode, tracktion::engine::CombiningAudioNode, and tracktion::engine::SingleInputAudioNode.
|
pure virtual |
Implemented in tracktion::engine::TimedMutingAudioNode, tracktion::engine::SpeedRampAudioNode, tracktion::engine::SubSampleWaveAudioNode, tracktion::engine::PluginAudioNode, tracktion::engine::FadeInOutAudioNode, tracktion::engine::MuteAudioNode, tracktion::engine::WaveAudioNode, tracktion::engine::CombiningAudioNode, and tracktion::engine::SingleInputAudioNode.
void tracktion::engine::AudioNode::callRenderAdding | ( | const AudioRenderContext & | ) |
Referenced by tracktion::engine::SubSampleWaveAudioNode::renderOver().
void tracktion::engine::AudioNode::callRenderOver | ( | const AudioRenderContext & | ) |
|
static |
References tracktion::engine::AudioRenderContext::bufferNumSamples, tracktion::engine::AudioRenderContext::bufferStartSample, tracktion::engine::AudioRenderContext::continuity, tracktion::engine::PlayHead::EditTimeWindow::editRange1, tracktion::engine::PlayHead::EditTimeWindow::editRange2, tracktion::engine::AudioRenderContext::firstBlockOfLoop, tracktion::engine::AudioRenderContext::getEditTime(), tracktion::engine::legacy::EditTimeRange::getEnd(), tracktion::engine::legacy::EditTimeRange::getLength(), tracktion::engine::PlayHead::getLoopTimes(), tracktion::engine::legacy::EditTimeRange::getStart(), tracktion::engine::PlayHead::isLooping(), tracktion::engine::PlayHead::isRollingIntoLoop(), tracktion::engine::PlayHead::EditTimeWindow::isSplit, tracktion::engine::AudioRenderContext::lastBlockBeforeLoop, tracktion::engine::AudioRenderContext::midiBufferOffset, tracktion::engine::AudioRenderContext::playhead, tracktion::engine::AudioRenderContext::streamTime, and tracktion::engine::legacy::EditTimeRange::withLength().
Referenced by tracktion::engine::SubSampleWaveAudioNode::renderAdding(), tracktion::engine::SpeedRampAudioNode::renderOver(), and tracktion::engine::TimedMutingAudioNode::renderOver().