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_TimeStretchingWaveNode.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
namespace
tracktion
{
inline
namespace
engine
12
{
13
14
//==============================================================================
15
//==============================================================================
22
class
TimeStretchingWaveNode
final :
public
tracktion::graph::Node
23
{
24
public
:
25
TimeStretchingWaveNode
(
AudioClipBase
&,
tracktion::graph::PlayHeadState
&);
26
27
//==============================================================================
28
tracktion::graph::NodeProperties
getNodeProperties
()
override
;
29
std::vector<Node*>
getDirectInputNodes
()
override
;
30
void
prepareToPlay
(
const
tracktion::graph::PlaybackInitialisationInfo
&)
override
;
31
bool
isReadyToProcess
()
override
;
32
void
process
(
ProcessContext
&)
override
;
33
34
private
:
35
//==============================================================================
36
AudioClipBase
& c;
37
tracktion::graph::PlayHeadState
& playHeadState;
38
Clip::Ptr
clipPtr;
39
40
AudioFile
file;
41
AudioFileInfo
fileInfo;
42
AudioFileCache::Reader::Ptr
reader;
43
44
double
sampleRate = 44100.0, fileSpeedRatio = 1.0, nextEditTime = -1.0;
45
TimeStretcher
timestretcher;
46
float
speedRatio = 1.0f, pitchSemitones = 0;
47
float
timestetchSpeedRatio = 1.0f, timestetchSemitonesUp = 1.0f;
48
49
tracktion::graph::AudioFifo
fifo;
50
int
stretchBlockSize = 512;
51
52
//==============================================================================
53
int64_t
timeToFileSample (
double
)
const
noexcept
;
54
void
reset (
double
newStartTime);
55
bool
fillNextBlock();
56
};
57
58
}}
// namespace tracktion { inline namespace engine
juce::ReferenceCountedObjectPtr< Clip >
tracktion::engine::AudioClipBase
Base class for Clips that produce some kind of audio e.g.
Definition
tracktion_AudioClipBase.h:34
tracktion::engine::AudioFile
Definition
tracktion_AudioFile.h:53
tracktion::engine::TimeStretcher
Handles time/pitch stretching using various supported libraries.
Definition
tracktion_TimeStretch.h:23
tracktion::engine::TimeStretchingWaveNode
Node that reads from a file node and timestretches its output.
Definition
tracktion_TimeStretchingWaveNode.h:23
tracktion::engine::TimeStretchingWaveNode::getDirectInputNodes
std::vector< Node * > getDirectInputNodes() override
Should return all the inputs directly feeding in to this node.
Definition
tracktion_TimeStretchingWaveNode.cpp:61
tracktion::engine::TimeStretchingWaveNode::isReadyToProcess
bool isReadyToProcess() override
Should return true when this node is ready to be processed.
Definition
tracktion_TimeStretchingWaveNode.cpp:90
tracktion::engine::TimeStretchingWaveNode::getNodeProperties
tracktion::graph::NodeProperties getNodeProperties() override
Should return the properties of the node.
Definition
tracktion_TimeStretchingWaveNode.cpp:53
tracktion::engine::TimeStretchingWaveNode::process
void process(ProcessContext &) override
Called when the node is to be processed.
Definition
tracktion_TimeStretchingWaveNode.cpp:101
tracktion::engine::TimeStretchingWaveNode::prepareToPlay
void prepareToPlay(const tracktion::graph::PlaybackInitialisationInfo &) override
Called once before playback begins for each node.
Definition
tracktion_TimeStretchingWaveNode.cpp:66
tracktion::graph::AudioFifo
Definition
tracktion_AudioFifo.h:18
tracktion::graph::Node
Main graph Node processor class.
Definition
tracktion_Node.h:217
tracktion::graph::Node::ProcessContext
Struct to describe a single iteration of a process call.
Definition
tracktion_Node.h:303
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
tracktion
Definition
tracktion_AudioReader.h:23
int64_t
typedef int64_t
tracktion::engine::AudioFileInfo
Definition
tracktion_AudioFile.h:18
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::vector
« « « Anklang Documentation