tracktion-engine
3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications
« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_engine
playback
graph
tracktion_ModifierNode.h
Go to the documentation of this file.
1
/*
2
,--. ,--. ,--. ,--.
3
,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4
'-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5
| | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6
`---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8
Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9
*/
10
11
#pragma once
12
13
namespace
tracktion
{
inline
namespace
engine
14
{
15
16
class
TrackMuteState;
17
21
class
ModifierNode
final :
public
tracktion::graph::Node
22
{
23
public
:
24
//==============================================================================
31
ModifierNode
(
std::unique_ptr<Node>
input,
32
tracktion::engine::Modifier::Ptr
,
33
double
sampleRateToUse,
int
blockSizeToUse,
34
const
TrackMuteState
*,
35
tracktion::graph::PlayHeadState
&,
bool
rendering);
36
41
ModifierNode
(
std::unique_ptr<Node>
input,
42
tracktion::engine::Modifier::Ptr
,
43
double
sampleRateToUse,
int
blockSizeToUse,
44
std::shared_ptr<InputProvider>
);
45
47
~ModifierNode
()
override
;
48
49
//==============================================================================
50
Modifier
& getModifier() {
return
*modifier; }
51
52
//==============================================================================
53
tracktion::graph::NodeProperties
getNodeProperties
()
override
;
54
std::vector<Node*>
getDirectInputNodes
()
override
{
return
{ input.
get
() }; }
55
bool
isReadyToProcess
()
override
{
return
input->hasProcessed(); }
56
void
prepareToPlay
(
const
tracktion::graph::PlaybackInitialisationInfo
&)
override
;
57
void
process
(
ProcessContext
&)
override
;
58
59
private
:
60
//==============================================================================
61
std::unique_ptr<Node>
input;
62
tracktion::engine::Modifier::Ptr
modifier;
63
std::shared_ptr<InputProvider>
audioRenderContextProvider;
64
65
const
TrackMuteState
* trackMuteState =
nullptr
;
66
tracktion::graph::PlayHeadState
* playHeadState =
nullptr
;
67
bool
isRendering =
false
;
68
69
bool
isInitialised =
false
;
70
double
sampleRate = 44100.0;
71
tracktion::engine::MidiMessageArray
midiMessageArray;
72
TimeDuration
automationAdjustmentTime;
73
74
//==============================================================================
75
void
initialiseModifier (
double
sampleRateToUse,
int
blockSizeToUse);
76
PluginRenderContext
getPluginRenderContext (
juce::Range<int64_t>
,
juce::AudioBuffer<float>
&);
77
};
78
79
}}
// namespace tracktion { inline namespace engine
ProcessContext
juce::AudioBuffer
juce::Range
juce::ReferenceCountedObjectPtr< Modifier >
tracktion::engine::ModifierNode
Node for processing a Modifier.
Definition
tracktion_ModifierNode.h:22
tracktion::engine::ModifierNode::prepareToPlay
void prepareToPlay(const tracktion::graph::PlaybackInitialisationInfo &) override
Called once before playback begins for each node.
Definition
tracktion_ModifierNode.cpp:65
tracktion::engine::ModifierNode::process
void process(ProcessContext &) override
Called when the node is to be processed.
Definition
tracktion_ModifierNode.cpp:76
tracktion::engine::ModifierNode::getDirectInputNodes
std::vector< Node * > getDirectInputNodes() override
Should return all the inputs directly feeding in to this node.
Definition
tracktion_ModifierNode.h:54
tracktion::engine::ModifierNode::getNodeProperties
tracktion::graph::NodeProperties getNodeProperties() override
Should return the properties of the node.
Definition
tracktion_ModifierNode.cpp:53
tracktion::engine::ModifierNode::~ModifierNode
~ModifierNode() override
Destructor.
Definition
tracktion_ModifierNode.cpp:46
tracktion::engine::ModifierNode::isReadyToProcess
bool isReadyToProcess() override
Should return true when this node is ready to be processed.
Definition
tracktion_ModifierNode.h:55
tracktion::engine::TrackMuteState
Holds the state of a Track and if its contents/plugins should be played or not.
Definition
tracktion_TrackMutingNode.h:18
tracktion::graph::Node
Main graph Node processor class.
Definition
tracktion_Node.h:217
tracktion::graph::PlayHeadState
Determines how this block releates to other previous render blocks and if the play head has jumped in...
Definition
tracktion_PlayHeadState.h:24
std::unique_ptr::get
T get(T... args)
tracktion
Definition
tracktion_AudioReader.h:23
std::shared_ptr
tracktion::TimeDuration
Represents a duration in real-life time.
Definition
tracktion_Time.h:99
tracktion::engine::MidiMessageArray
Definition
tracktion_MidiMessageArray.h:17
tracktion::engine::Modifier
Bass class for parameter Modifiers.
Definition
tracktion_Modifier.h:38
tracktion::engine::PluginRenderContext
The context passed to plugin render methods to provide it with buffers to fill.
Definition
tracktion_Plugin.h:48
tracktion::graph::NodeProperties
Holds some really basic properties of a node.
Definition
tracktion_Node.h:152
tracktion::graph::PlaybackInitialisationInfo
Passed into Nodes when they are being initialised, to give them useful contextual information that th...
Definition
tracktion_Node.h:140
std::unique_ptr
std::vector
« « « Anklang Documentation