TracktionEngine
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
tracktion::graph::NodePlayer Class Reference

Simple player for an Node. More...

Public Member Functions

 NodePlayer ()=default
 Creates an empty NodePlayer. More...
 
 NodePlayer (std::unique_ptr< Node > nodeToProcess, PlayHeadState *playHeadStateToUse=nullptr)
 Creates an NodePlayer to process a Node. More...
 
NodegetNode ()
 Returns the current Node. More...
 
void setNode (std::unique_ptr< Node > newNode)
 Sets the Node to process. More...
 
void setNode (std::unique_ptr< Node > newNode, double sampleRateToUse, int blockSizeToUse)
 Sets the Node to process with a new sample rate and block size. More...
 
void prepareToPlay (double sampleRateToUse, int blockSizeToUse)
 Prepares the current Node to be played. More...
 
std::unique_ptr< NodeGraphprepareToPlay (std::unique_ptr< Node > node, NodeGraph *oldGraph, double sampleRateToUse, int blockSizeToUse)
 Prepares a specific Node to be played and returns all the Nodes. More...
 
int process (const Node::ProcessContext &pc)
 Processes a block of audio and MIDI data. More...
 
double getSampleRate () const
 
int processPostorderedNodes (NodeGraph &graphToProcess, const Node::ProcessContext &pc)
 

Protected Member Functions

int processWithPlayHeadState (PlayHeadState &phs, NodeGraph &graphToProcess, const Node::ProcessContext &pc)
 

Static Protected Member Functions

static int processPostorderedNodesSingleThreaded (NodeGraph &nodeGraph, const Node::ProcessContext &pc)
 Processes a group of Nodes assuming a postordering VertexOrdering. More...
 

Protected Attributes

std::unique_ptr< Nodeinput
 
std::unique_ptr< NodeGraphnodeGraph
 
PlayHeadStateplayHeadState = nullptr
 
double sampleRate = 0.0
 
int blockSize = 0
 
juce::SpinLock inputAndNodesLock
 

Detailed Description

Simple player for an Node.

This simply iterate all the nodes attempting to process them in a single thread.

Constructor & Destructor Documentation

◆ NodePlayer() [1/2]

tracktion::graph::NodePlayer::NodePlayer ( )
default

Creates an empty NodePlayer.

◆ NodePlayer() [2/2]

tracktion::graph::NodePlayer::NodePlayer ( std::unique_ptr< Node nodeToProcess,
PlayHeadState playHeadStateToUse = nullptr 
)

Creates an NodePlayer to process a Node.

Member Function Documentation

◆ getNode()

Node* tracktion::graph::NodePlayer::getNode ( )

Returns the current Node.

References input, and nodeGraph.

◆ setNode() [1/2]

void tracktion::graph::NodePlayer::setNode ( std::unique_ptr< Node newNode)

Sets the Node to process.

References blockSize, and sampleRate.

◆ setNode() [2/2]

void tracktion::graph::NodePlayer::setNode ( std::unique_ptr< Node newNode,
double  sampleRateToUse,
int  blockSizeToUse 
)

Sets the Node to process with a new sample rate and block size.

References inputAndNodesLock, nodeGraph, and prepareToPlay().

◆ prepareToPlay() [1/2]

void tracktion::graph::NodePlayer::prepareToPlay ( double  sampleRateToUse,
int  blockSizeToUse 
)

Prepares the current Node to be played.

References blockSize, input, nodeGraph, and sampleRate.

Referenced by setNode().

◆ prepareToPlay() [2/2]

std::unique_ptr<NodeGraph> tracktion::graph::NodePlayer::prepareToPlay ( std::unique_ptr< Node node,
NodeGraph oldGraph,
double  sampleRateToUse,
int  blockSizeToUse 
)

◆ process()

int tracktion::graph::NodePlayer::process ( const Node::ProcessContext pc)

Processes a block of audio and MIDI data.

Returns the number of times a node was checked but unable to be processed.

References inputAndNodesLock, nodeGraph, playHeadState, processPostorderedNodes(), and processWithPlayHeadState().

◆ getSampleRate()

double tracktion::graph::NodePlayer::getSampleRate ( ) const

References sampleRate.

◆ processPostorderedNodes()

int tracktion::graph::NodePlayer::processPostorderedNodes ( NodeGraph graphToProcess,
const Node::ProcessContext pc 
)

◆ processWithPlayHeadState()

int tracktion::graph::NodePlayer::processWithPlayHeadState ( PlayHeadState phs,
NodeGraph graphToProcess,
const Node::ProcessContext pc 
)
protected

◆ processPostorderedNodesSingleThreaded()

static int tracktion::graph::NodePlayer::processPostorderedNodesSingleThreaded ( NodeGraph nodeGraph,
const Node::ProcessContext pc 
)
staticprotected

Processes a group of Nodes assuming a postordering VertexOrdering.

If these conditions are met the Nodes should be processed in a single loop iteration.

References tracktion::graph::Node::AudioAndMidiBuffer::audio, tracktion::graph::Node::ProcessContext::buffers, tracktion::graph::Node::AudioAndMidiBuffer::midi, nodeGraph, tracktion::graph::Node::ProcessContext::numSamples, and tracktion::graph::Node::ProcessContext::referenceSampleRange.

Referenced by processPostorderedNodes().

Member Data Documentation

◆ input

std::unique_ptr<Node> tracktion::graph::NodePlayer::input
protected

Referenced by getNode(), and prepareToPlay().

◆ nodeGraph

std::unique_ptr<NodeGraph> tracktion::graph::NodePlayer::nodeGraph
protected

◆ playHeadState

PlayHeadState* tracktion::graph::NodePlayer::playHeadState = nullptr
protected

Referenced by prepareToPlay(), and process().

◆ sampleRate

double tracktion::graph::NodePlayer::sampleRate = 0.0
protected

◆ blockSize

int tracktion::graph::NodePlayer::blockSize = 0
protected

Referenced by prepareToPlay(), and setNode().

◆ inputAndNodesLock

juce::SpinLock tracktion::graph::NodePlayer::inputAndNodesLock
protected

Referenced by process(), and setNode().


The documentation for this class was generated from the following file: