tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_CombiningNode.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
11namespace tracktion { inline namespace engine
12{
13
24{
25public:
27 ~CombiningNode() override;
28
29 //==============================================================================
37 void addInput (std::unique_ptr<Node>, TimeRange);
38
46 void addInput (std::unique_ptr<Node>, BeatRange);
47
49 int getNumInputs() const;
50
56
57 //==============================================================================
61 bool isReadyToProcess() override;
62 void prefetchBlock (juce::Range<int64_t> /*referenceSampleRange*/) override;
63 void process (ProcessContext&) override;
64
65 size_t getAllocatedBytes() const override;
66
67private:
68 const EditItemID itemID;
69
70 struct TimedNode;
73 std::atomic<bool> isReadyToProcessBlock { false };
74 choc::buffer::ChannelArrayBuffer<float> tempAudioBuffer;
75 MidiMessageArray noteOffEventsToSend;
76
78
79 void prefetchGroup (juce::Range<int64_t>, TimeRange, BeatRange);
80 void queueNoteOffsForClipsNoLongerPresent (const CombiningNode&);
81
83};
84
85}} // namespace tracktion { inline namespace engine
An Node that mixes a sequence of clips of other nodes.
void process(ProcessContext &) override
Called when the node is to be processed.
void addInput(std::unique_ptr< Node >, TimeRange)
Adds an input node to be played at a given time range.
int getNumInputs() const
Returns the number of inputs added.
void prefetchBlock(juce::Range< int64_t >) override
Called before once on all Nodes before they are processed.
tracktion::graph::NodeProperties getNodeProperties() override
Should return the properties of the node.
std::vector< Node * > getDirectInputNodes() override
Should return all the inputs directly feeding in to this node.
void prepareToPlay(const tracktion::graph::PlaybackInitialisationInfo &) override
Called once before playback begins for each node.
bool isReadyToProcess() override
Should return true when this node is ready to be processed.
std::vector< Node * > getInternalNodes() override
Returns the inputs that have been added.
Base class for Nodes that provides information about the current process call.
Main graph Node processor class.
Struct to describe a single iteration of a process call.
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
ID for objects of type EditElement - e.g.
Holds the state of a process call.
Holds some really basic properties of a node.
Passed into Nodes when they are being initialised, to give them useful contextual information that th...