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

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_CombiningAudioNode.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#include "tracktion_AudioNode.h"
14
15
16namespace tracktion { inline namespace engine
17{
18
28{
29public:
31 ~CombiningAudioNode() override;
32
33 //==============================================================================
41 void addInput (legacy::EditTimeRange time, AudioNode* inputNode);
42
43 void clear();
44
45 //==============================================================================
46 void getAudioNodeProperties (AudioNodeProperties&) override;
47 void visitNodes (const VisitorFn&) override;
48
49 bool purgeSubNodes (bool keepAudio, bool keepMidi) override;
50
52 bool isReadyToRender() override;
53 void releaseAudioNodeResources() override;
54
55 void renderOver (const AudioRenderContext&) override;
56 void renderAdding (const AudioRenderContext&) override;
57 void prepareForNextBlock (const AudioRenderContext&) override;
58
59 void renderSection (const AudioRenderContext&, legacy::EditTimeRange);
60
61private:
62 struct TimedAudioNode;
65
66 bool hasAudio = false, hasMidi = false;
67 int maxNumberOfChannels = 0;
68
69 void prefetchGroup (const AudioRenderContext&, double time);
70
72};
73
74}} // namespace tracktion { inline namespace engine
Base class for nodes in an audio playback graph.
An AudioNode that mixes a sequence of clips of other nodes.
bool purgeSubNodes(bool keepAudio, bool keepMidi) override
Tells the node to delete any sub-nodes that don't produce the required type of output.
void addInput(legacy::EditTimeRange time, AudioNode *inputNode)
Adds an input node to be played.
void prepareAudioNodeToPlay(const PlaybackInitialisationInfo &) override
tells the node to initialise itself ready for playing from the given time.
void releaseAudioNodeResources() override
tells the node that play has stopped, and it can free up anything it no longer needs.
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
Holds some really basic properties of a node.
Passed into AudioNodes when they are being initialised, to give them useful contextual information th...
time