struct CCL::IAudioGraph

Overview

A realtime audio processing graph of IAudioNode instances. More…

#include <iaudiograph.h>

struct IAudioGraph: public CCL::IAudioComponent
{
    // methods

    virtual tresult CCL_API addNode (IAudioNode* node) = 0;
    virtual tresult CCL_API removeNode (IAudioNode* node) = 0;
    virtual IAudioNode*CCL_API findNode (StringID nodeId) const = 0;
    IAudioGraph IAudioProcessor* asProcessor ();

    template  <typename INodeType>
    INodeType* find (StringID nodeId) const;
};

Inherited Members

public:
    // enums

    enum CapabilityFlags;

    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    virtual tresult CCL_API initialize (IUnknown* context = nullptr) = 0;
    virtual tresult CCL_API terminate () = 0;
    virtual tbool CCL_API canTerminate () const = 0;
    virtual CapabilityFlags CCL_API getCapabilities () const = 0;
    virtual tresult CCL_API setStreamLayout (const IAudioStreamLayout& layout) = 0;
    virtual const IAudioStreamLayout&CCL_API getStreamLayout () const = 0;

    virtual tresult CCL_API setStreamActive (
        AudioStreamDirection direction,
        int index,
        tbool active
    ) = 0;

    virtual tresult CCL_API getProcessConfiguration (AudioProcessConfiguration& configuration) const = 0;
    virtual tresult CCL_API setProcessConfiguration (const AudioProcessConfiguration& configuration) = 0;

    virtual tresult CCL_API getLatency (
        int& latencyInSamples,
        AudioStreamDirection direction
    ) const = 0;

    virtual tbool CCL_API isActive () const = 0;
    virtual tresult CCL_API setActive (tbool state) = 0;
    IAudioComponent bool hasKnownStreamLayout () const;
    bool hasMutableStreamLayout () const;
    bool hasStreamActivation () const;
    bool hasKnownLatency () const;

Detailed Documentation

A realtime audio processing graph of IAudioNode instances.

The graph holds and configures nodes, and drives processing.

Additional interfaces:

Float type is currently limited to 32 bit floating-point.

Methods

virtual tresult CCL_API addNode (IAudioNode* node) = 0

Add node to graph - graph takes ownership.

Graph configures node with current process configuration, and node becomes ready to connect.

virtual tresult CCL_API removeNode (IAudioNode* node) = 0

Remove node from graph - ownership is transferred to caller.

virtual IAudioNode*CCL_API findNode (StringID nodeId) const = 0

Find node by identifier (returns first match).