File-based SamplePlayerNode , where samples are constantly streamed from file. Suitable for large audio files.
Enums
Public Member Functions
- 
FilePlayerNode (const Format &format=Format())Constructs a FilePlayerNode with optional format . 
- 
FilePlayerNode (const SourceFileRef &sourceFile, bool isReadAsync=true, const Format &format=Node::Format())Constructs a FilePlayerNode that plays sourceFile and optionally specifying isReadAsync (default = true). Can also provide an optional format . sourceFile's samplerate is forced to match this Node 's Context . 
- 
~FilePlayerNode ()
- 
voidstop () overrideStops playing the sample, returns the read position to the beginning and disables processing. 
- 
voidseek (size_t readPositionFrames) overrideSeek the read position to readPositionFrames . 
- 
boolisReadAsync () constReturns whether reading occurs asynchronously (default is false). If true, file reading is done from an internal thread, if false it is done directly on the audio thread. 
- 
voidsetSourceFile (const SourceFileRef &sourceFile)sourceFile's samplerate is forced to match this Node 's Context . Resets the loop points to 0: getNumFrames() ). 
- 
const SourceFileRef &getSourceFile () const
- 
uint64_tgetLastUnderrun ()Returns the frame of the last buffer underrun or 0 if none since the last time this method was called. 
- 
uint64_tgetLastOverrun ()Returns the frame of the last buffer overrun or 0 if none since the last time this method was called. 
- 
voidstart ()Starts playing the sample from the beginning. 
- 
voidstart (double when)Starts playing the sample at when seconds, measured against Context::getNumProcessedSeconds() . 
- 
voidstop (double when)Stops playing the sample at when seconds, measured against Context::getNumProcessedSeconds() . 
- 
voidseekToTime (double positionSeconds)Seek to read position readPositionSeconds ,. 
- 
size_tgetReadPosition () constReturns the current read position in frames. 
- 
doublegetReadPositionTime () constReturns the current read position in seconds. 
- 
doublegetNumSeconds () constReturns the total number of seconds this SamplePlayerNode will play from beginning to end. 
- 
size_tgetNumFrames () constReturns the total number of frames this SamplePlayerNode will play from beginning to end. 
- 
boolisEof () constReturns whether the SamplePlayerNode has reached EOF (end of file). If true, isEnabled() will also return false. 
- 
voidsetLoopEnabled (bool b=true)Sets whether playing continues from beginning after the end is reached (default = false) 
- 
boolisLoopEnabled () constGets whether playing continues from beginning after the end is reached (default = false) 
- 
voidsetLoopBegin (size_t positionFrames)Sets the begin loop marker in frames (default = 0, max = getNumFrames() ). 
- 
voidsetLoopBeginTime (double positionSeconds)Sets the begin loop marker in seconds (default = 0, max = getNumSeconds() ). 
- 
voidsetLoopEnd (size_t positionFrames)Sets the end loop marker in frames (default = getNumFrames() , max = getNumFrames() ). 
- 
voidsetLoopEndTime (double positionSeconds)Sets the end loop marker in seconds (default = getNumSeconds() , max = getNumSeconds() ). 
- 
size_tgetLoopBegin () constReturns the begin loop marker in frames. 
- 
doublegetLoopBeginTime () constReturns the begin loop marker in seconds. 
- 
size_tgetLoopEnd () constReturns the end loop marker in frames. 
- 
doublegetLoopEndTime () constReturns the end loop marker in seconds. 
- 
voidenable ()Enables this Node for processing. Same as setEnabled( true ).
- 
voidenable (double when)Enables this Node for processing at when seconds, measured against Context::getNumProcessedSeconds() . Same as setEnabled( true, when ).
- 
voiddisable ()Disables this Node for processing. Same as setEnabled( false ).
- 
voiddisable (double when)Disables this Node for processing at when seconds, measured against Context::getNumProcessedSeconds() . Same as setEnabled( false, when ).
- 
voidsetEnabled (bool b)Sets whether this Node is enabled for processing or not. 
- 
voidsetEnabled (bool b, double when)Sets whether this Node is enabled for processing or not at when seconds, measured against Context::getNumProcessedSeconds() . 
- 
boolisEnabled () constReturns whether this Node is enabled for processing or not. 
- 
voidconnect (const NodeRef &output)Connects this Node to output . 
- 
voiddisconnect (const NodeRef &output)Disconnects this Node from output . 
- 
voiddisconnectAll ()Disconnects this Node from all inputs and outputs. 
- 
voiddisconnectAllOutputs ()Disconnects this Node from all outputs. 
- 
voiddisconnectAllInputs ()Disconnects all of this Node 's inputs. 
- 
size_tgetNumConnectedInputs () constReturns the number of inputs connected to this Node . 
- 
size_tgetNumConnectedOutputs () constReturns the number of outputs this Node is connected to. 
- 
boolisConnectedToInput (const NodeRef &input) constReturns true if input is connected to this Node as an input, false otherwise. 
- 
boolisConnectedToOutput (const NodeRef &output) constReturns true if output is connected to this Node as an output, false otherwise. 
- 
size_tgetNumChannels () constReturns the number of channels this Node will process. 
- 
getChannelMode () constReturns the channel mode. 
- See Also
- 
size_tgetMaxNumInputChannels () constReturns the maximum number of channels any input has. 
- 
size_tgetSampleRate () constReturns the samplerate of this Node , which is governed by the Context 's OutputNode . 
- 
size_tgetFramesPerBlock () constReturns the number of frames processed in one block by this Node , which is governed by the Context 's OutputNode . 
- 
boolisAutoEnabled () constReturns whether this Node is automatically enabled / disabled when connected. 
- 
voidsetAutoEnabled (bool b=true)Sets whether this Node is automatically enabled / disabled when connected. 
- 
boolisInitialized () constReturns whether this Node is in an initialized state and is capable of processing audio. 
- 
bool
- 
bool
- 
boolcheckCycle (const NodeRef &sourceNode, const NodeRef &destNode) constReturns true if there is an unmanageable cycle betweeen sourceNode and destNode . If any Node 's in the traversal returns true for supportsCycles() , this method will return false. 
- 
const std::set< NodeRef > &getInputs () constReturns an immutable reference to the inputs container. 
- 
std::vector< NodeRef >getOutputs () constReturns a copy of the NodeRef's referenced by the this Node as outputs. The copy is necessary because outputs are stored internally with weak_ptr's. 
- 
std::stringgetName () constReturns a string representing the name of this Node type. Default returns a demangled, compiler-specific class name. 
- 
voidsetName (const std::string &name)Sets this Node 's name to a user-specified string. 
- 
Buffer *getInternalBuffer ()Usually used internally by a Node subclass, returns a pointer to the internal buffer storage. 
- 
const Buffer *getInternalBuffer () constUsually used internally by a Node subclass, returns a pointer to the internal buffer storage. 
- 
void
Protected Member Functions
- 
voidinitialize () overrideCalled before audio buffers need to be used. There is always a valid Context at this point. Default implementation is empty. 
- 
voiduninitialize () overrideCalled once the contents of initialize are no longer relevant, i.e. connections have changed. Default implementation is empty. Not guaranteed to be called at Node destruction. 
- 
voidenableProcessing () overrideCallled when this Node should enable processing. Initiated from Node::enable() . Default implementation is empty. 
- 
voiddisableProcessing () overrideCallled when this Node should disable processing. Initiated from Node::disable() . Default implementation is empty. 
- 
voidprocess (Buffer *buffer) overrideOverride to perform audio processing on buffer. Default implementation is empty. 
- 
voidreadAsyncImpl ()
- 
voidreadImpl ()
- 
voidseekImpl (size_t readPos)
- 
voidstopImpl ()
- 
voiddestroyReadThreadImpl ()
- 
voidsumInputs ()Override to customize how input Nodes are summed into the internal summing buffer. You usually don't need to do this. 
- 
boolsupportsInputNumChannels (size_t numChannels) constDefault implementation returns true if numChannels matches our format. 
- 
boolsupportsCycles () constDefault implementation returns false, return true if it makes sense for the Node to be processed in a cycle (eg. Delay). 
- 
boolsupportsProcessInPlace () constDefault implementation returns true, subclasses should return false if they must process out-of-place (summing). 
- 
voiddisconnectInput (const NodeRef &input)
- 
voiddisconnectOutput (const NodeRef &output)
- 
voidconfigureConnections ()
- 
voidsetupProcessWithSumming ()
- 
voidnotifyConnectionsDidChange ()
- 
boolinputChannelsAreUnequal () const
- 
void
- 
void
- 
const std::pair< size_t, size_t > &getProcessFramesRange () constReturns a pair of frame indices for Nodes that wish to support sample accurate enable and disable. The first index is where processing should start, the second is where it should end. Should only be called on the audio thread from within a Node 's process() method. Unless scheduled (with Context::schedule() ), this will be [0, getFramesPerBlock() ] 
- 
voidinitializeImpl ()
- 
voiduninitializeImpl ()
- 
getSummingBuffer ()
- 
const BufferDynamic *getSummingBuffer () const
Protected Attributes
- 
std::vector< dsp::RingBuffer >mRingBuffers
- 
mIoBuffer
- 
mSourceFile
- 
size_tmBufferFramesThreshold
- 
size_tmRingBufferPaddingFactor
- 
std::atomic< uint64_t >mLastUnderrun
- 
std::atomic< uint64_t >mLastOverrun
- 
std::unique_ptr< std::thread >mReadThread
- 
std::mutexmAsyncReadMutex
- 
std::condition_variablemIssueAsyncReadCond
- 
boolmIsReadAsync
- 
boolmAsyncReadShouldQuit
- 
size_tmNumFrames
- 
std::atomic< size_t >mReadPos
- 
std::atomic< size_t >mLoopBegin
- 
std::atomic< size_t >mLoopEnd
- 
std::atomic< bool >mLoop
- 
std::atomic< bool >mIsEof