Interface representing a Node that communicates with a hardware output device. This is typically speakers or a 'line-out' on an audio interface. More...
#include <OutputNode.h>
Public Types | |
enum | ChannelMode { ChannelMode::SPECIFIED, ChannelMode::MATCHES_INPUT, ChannelMode::MATCHES_OUTPUT } |
Public Member Functions | |
virtual | ~OutputDeviceNode () |
const DeviceRef & | getDevice () const |
Returns a shared_ptr to the Device that this OutputDeviceNode operates. More... | |
size_t | getOutputSampleRate () override |
Implemented to return the samplerate of the owned Device. More... | |
size_t | getOutputFramesPerBlock () override |
Implemented to return the frames per block of the owned Device. More... | |
void | enableClipDetection (bool enable=true, float threshold=2) |
bool | isClipDetectionEnabled () const |
Returns whether clip detection is enabled or not. More... | |
uint64_t | getLastClip () |
Returns the frame of the last buffer clip or 0 if none since the last time this method was called. More... | |
void | enable () |
Enables this Node for processing. Same as setEnabled( true ) . More... | |
void | disable () |
Disables this Node for processing. Same as setEnabled( false ) . More... | |
void | setEnabled (bool b=true) |
Sets whether this Node is enabled for processing or not. More... | |
bool | isEnabled () const |
Returns whether this Node is enabled for processing or not. More... | |
virtual void | disconnect (const NodeRef &output) |
Disconnects this Node from output. More... | |
virtual void | disconnectAll () |
Disconnects this Node from all inputs and outputs. More... | |
virtual void | disconnectAllOutputs () |
Disconnects this Node from all outputs. More... | |
virtual void | disconnectAllInputs () |
Disconnects all of this Node's inputs. More... | |
size_t | getNumConnectedInputs () const |
Returns the number of inputs connected to this Node. More... | |
size_t | getNumConnectedOutputs () const |
Returns the number of outputs this Node is connected to. More... | |
bool | isConnectedToInput (const NodeRef &input) const |
Returns true if input is connected to this Node as an input, false otherwise. More... | |
bool | isConnectedToOutput (const NodeRef &output) const |
Returns true if output is connected to this Node as an output, false otherwise. More... | |
ContextRef | getContext () const |
Returns the Context associated with this Node. More... | |
size_t | getNumChannels () const |
Returns the number of channels this Node will process. More... | |
ChannelMode | getChannelMode () const |
Returns the channel mode. More... | |
size_t | getMaxNumInputChannels () const |
Returns the maximum number of channels any input has. More... | |
size_t | getSampleRate () const |
Returns the samplerate of this Node, which is governed by the Context's OutputNode. More... | |
size_t | getFramesPerBlock () const |
Returns the number of frames processed in one block by this Node, which is governed by the Context's OutputNode. More... | |
bool | isAutoEnabled () const |
Returns whether this Node is automatically enabled / disabled when connected. More... | |
void | setAutoEnabled (bool b=true) |
Sets whether this Node is automatically enabled / disabled when connected. More... | |
bool | isInitialized () const |
Returns whether this Node is in an initialized state and is capable of processing audio. More... | |
bool | getProcessesInPlace () const |
Returns whether this Node will process audio with an in-place Buffer. More... | |
bool | canConnectToInput (const NodeRef &input) |
Returns whether it is possible to connect to input, example reasons of failure would be this == Node, or Node is already an input. More... | |
bool | checkCycle (const NodeRef &sourceNode, const NodeRef &destNode) const |
Returns 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. More... | |
const std::set< NodeRef > & | getInputs () const |
Returns an immutable reference to the inputs container. More... | |
std::vector< NodeRef > | getOutputs () const |
Returns 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. More... | |
virtual std::string | getName () |
Returns a string representing the name of this Node type. Default returns a demangled, compiler-specific class name. More... | |
void | setName (const std::string &name) |
Sets this Node's name to a user-specified string. More... | |
Buffer * | getInternalBuffer () |
Usually used internally by a Node subclass, returns a pointer to the internal buffer storage. More... | |
const Buffer * | getInternalBuffer () const |
Usually used internally by a Node subclass, returns a pointer to the internal buffer storage. More... | |
void | pullInputs (Buffer *inPlaceBuffer) |
Usually called internally by the Node, in special cases sub-classes may need to call this on other Node's. More... | |
Protected Member Functions | |
OutputDeviceNode (const DeviceRef &device, const Format &format=Format()) | |
virtual void | deviceParamsWillChange () |
virtual void | deviceParamsDidChange () |
bool | checkNotClipping () |
Implementations should call this to detect if the internal audio buffer is clipping. Always returns false if clip detection is disabled. More... | |
virtual void | initialize () |
Called before audio buffers need to be used. There is always a valid Context at this point. More... | |
virtual void | uninitialize () |
Called once the contents of initialize are no longer relevant, i.e. connections have changed. More... | |
virtual void | enableProcessing () |
Callled when this Node should enable processing. Initiated from Node::enable(). More... | |
virtual void | disableProcessing () |
Callled when this Node should disable processing. Initiated from Node::disable(). More... | |
virtual void | process (Buffer *buffer) |
Override to perform audio processing on buffer. More... | |
virtual void | sumInputs () |
virtual bool | supportsInputNumChannels (size_t numChannels) const |
Default implementation returns true if numChannels matches our format. More... | |
virtual bool | supportsCycles () const |
Default implementation returns false, return true if it makes sense for the Node to be processed in a cycle (eg. Delay). More... | |
virtual bool | supportsProcessInPlace () const |
Default implementation returns true, subclasses should return false if they must process out-of-place (summing). More... | |
virtual void | connectInput (const NodeRef &input) |
virtual void | disconnectInput (const NodeRef &input) |
virtual void | disconnectOutput (const NodeRef &output) |
virtual void | configureConnections () |
void | setupProcessWithSumming () |
void | notifyConnectionsDidChange () |
bool | inputChannelsAreUnequal () const |
void | setNumChannels (size_t numChannels) |
Only Node subclasses can specify num channels directly - users specify via Format at construction time. More... | |
void | setChannelMode (ChannelMode mode) |
Only Node subclasses can specify channel mode directly - users specify via Format at construction time. More... | |
void | initializeImpl () |
void | uninitializeImpl () |
BufferDynamic * | getSummingBuffer () |
const BufferDynamic * | getSummingBuffer () const |
Protected Attributes | |
DeviceRef | mDevice |
bool | mWasEnabledBeforeParamsChange |
signals::scoped_connection | mWillChangeConn |
signals::scoped_connection | mDidChangeConn |
std::atomic< uint64_t > | mLastClip |
bool | mClipDetectionEnabled |
float | mClipThreshold |
Interface representing a Node that communicates with a hardware output device. This is typically speakers or a 'line-out' on an audio interface.
You do not directly construct an OutputDeviceNode. Instead, you use the platform-defined method Context::createOutputDeviceNode(). If number of channels hasn't been specified via Node::Format, defaults to min( 2, getDevice()->getNumOutputChannels() )
.
|
stronginherited |
Used to specifiy how the corresponding channels are to be resolved between two connected Node's, based on either a Node's input (the default), it's output, or specified by user.
Enumerator | |
---|---|
SPECIFIED |
Number of channels has been specified by user or is non-settable. |
MATCHES_INPUT |
This Node matches it's channels with it's input. |
MATCHES_OUTPUT |
This Node matches it's channels with it's output. |
|
virtual |
|
protected |
const DeviceRef& cinder::audio::OutputDeviceNode::getDevice | ( | ) | const |
Returns a shared_ptr to the Device that this OutputDeviceNode operates.
|
overridevirtual |
Implemented to return the samplerate of the owned Device.
Implements cinder::audio::OutputNode.
|
overridevirtual |
Implemented to return the frames per block of the owned Device.
Implements cinder::audio::OutputNode.
|
protectedvirtual |
|
protectedvirtual |
|
inherited |
Enables clip detection, so that values over threshold will be interpreted as a clip (enabled by default).
|
inherited |
Returns whether clip detection is enabled or not.
|
inherited |
Returns the frame of the last buffer clip or 0 if none since the last time this method was called.
|
protectedinherited |
Implementations should call this to detect if the internal audio buffer is clipping. Always returns false if clip detection is disabled.
|
inherited |
Enables this Node for processing. Same as setEnabled( true )
.
|
inherited |
Disables this Node for processing. Same as setEnabled( false )
.
|
inherited |
Sets whether this Node is enabled for processing or not.
|
inherited |
Returns whether this Node is enabled for processing or not.
Disconnects this Node from output.
|
virtualinherited |
Disconnects this Node from all inputs and outputs.
|
virtualinherited |
Disconnects this Node from all outputs.
Reimplemented in cinder::audio::NodeAutoPullable.
|
virtualinherited |
Disconnects all of this Node's inputs.
Reimplemented in cinder::audio::ChannelRouterNode.
|
inherited |
Returns the number of inputs connected to this Node.
|
inherited |
Returns the number of outputs this Node is connected to.
|
inherited |
Returns true if input is connected to this Node as an input, false otherwise.
|
inherited |
Returns true if output is connected to this Node as an output, false otherwise.
|
inherited |
|
inherited |
Returns the number of channels this Node will process.
|
inherited |
Returns the channel mode.
|
inherited |
Returns the maximum number of channels any input has.
|
inherited |
Returns the samplerate of this Node, which is governed by the Context's OutputNode.
|
inherited |
Returns the number of frames processed in one block by this Node, which is governed by the Context's OutputNode.
|
inherited |
Returns whether this Node is automatically enabled / disabled when connected.
|
inherited |
Sets whether this Node is automatically enabled / disabled when connected.
|
inherited |
Returns whether this Node is in an initialized state and is capable of processing audio.
|
inherited |
|
inherited |
|
inherited |
Returns 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.
|
inherited |
Returns an immutable reference to the inputs container.
|
inherited |
Returns 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.
|
virtualinherited |
Returns a string representing the name of this Node type. Default returns a demangled, compiler-specific class name.
|
inherited |
Sets this Node's name to a user-specified string.
|
inherited |
Usually used internally by a Node subclass, returns a pointer to the internal buffer storage.
|
inherited |
Usually used internally by a Node subclass, returns a pointer to the internal buffer storage.
|
protectedvirtualinherited |
Called before audio buffers need to be used. There is always a valid Context at this point.
Reimplemented in cinder::audio::GenPulseNode, cinder::audio::GenOscNode, cinder::audio::FilePlayerNode, cinder::audio::MonitorSpectralNode, cinder::audio::GenTableNode, cinder::audio::cocoa::EffectAudioUnitNode, cinder::audio::cocoa::InputDeviceNodeAudioUnit, cinder::audio::BufferRecorderNode, cinder::audio::MonitorNode, cinder::audio::cocoa::OutputDeviceNodeAudioUnit, cinder::audio::FilterBiquadNode, cinder::audio::DelayNode, and cinder::audio::GenNode.
|
protectedvirtualinherited |
Called once the contents of initialize are no longer relevant, i.e. connections have changed.
Reimplemented in cinder::audio::FilePlayerNode, cinder::audio::cocoa::EffectAudioUnitNode, cinder::audio::cocoa::InputDeviceNodeAudioUnit, cinder::audio::cocoa::OutputDeviceNodeAudioUnit, and cinder::audio::FilterBiquadNode.
|
protectedvirtualinherited |
Callled when this Node should enable processing. Initiated from Node::enable().
Reimplemented in cinder::audio::FilePlayerNode, cinder::audio::BufferPlayerNode, cinder::audio::cocoa::InputDeviceNodeAudioUnit, and cinder::audio::cocoa::OutputDeviceNodeAudioUnit.
|
protectedvirtualinherited |
Callled when this Node should disable processing. Initiated from Node::disable().
Reimplemented in cinder::audio::FilePlayerNode, cinder::audio::cocoa::InputDeviceNodeAudioUnit, and cinder::audio::cocoa::OutputDeviceNodeAudioUnit.
Override to perform audio processing on buffer.
Reimplemented in cinder::audio::GenPulseNode, cinder::audio::GenOscNode, cinder::audio::FilePlayerNode, cinder::audio::GenTableNode, cinder::audio::BufferPlayerNode, cinder::audio::cocoa::EffectAudioUnitNode, cinder::audio::GenTriangleNode, cinder::audio::cocoa::InputDeviceNodeAudioUnit, cinder::audio::GenSineNode, cinder::audio::CallbackProcessorNode, cinder::audio::BufferRecorderNode, cinder::audio::DivideNode, cinder::audio::MonitorNode, cinder::audio::GenPhasorNode, cinder::audio::MultiplyNode, cinder::audio::GenNoiseNode, cinder::audio::FilterBiquadNode, cinder::audio::SubtractNode, cinder::audio::DelayNode, cinder::audio::AddNode, and cinder::audio::Pan2dNode.
|
protectedvirtualinherited |
Reimplemented in cinder::audio::ChannelRouterNode.
|
protectedvirtualinherited |
Default implementation returns true if numChannels matches our format.
Reimplemented in cinder::audio::ChannelRouterNode.
|
protectedvirtualinherited |
Default implementation returns false, return true if it makes sense for the Node to be processed in a cycle (eg. Delay).
Reimplemented in cinder::audio::DelayNode.
|
protectedvirtualinherited |
Default implementation returns true, subclasses should return false if they must process out-of-place (summing).
Reimplemented in cinder::audio::ChannelRouterNode, and cinder::audio::cocoa::OutputDeviceNodeAudioUnit.
Reimplemented in cinder::audio::NodeAutoPullable.
Reimplemented in cinder::audio::NodeAutoPullable, and cinder::audio::ChannelRouterNode.
|
protectedvirtualinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protected |
|
protected |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |