35#ifndef __AUDIO_GRAPH_NODE_H__
36#define __AUDIO_GRAPH_NODE_H__
40#include "gtk_wrapper.h"
43TYPEDEF_STRUCT (
Graph);
44TYPEDEF_STRUCT (PassthroughProcessor);
46TYPEDEF_STRUCT (
Fader);
47TYPEDEF_STRUCT (
Track);
94 ROUTE_NODE_TYPE_MODULATOR_MACRO_PROCESOR,
174graph_node_get_pointer (
GraphNode * self);
177graph_node_print_to_str (
GraphNode * node,
char * buf,
size_t buf_sz);
GraphNodeType
Graph nodes can be either ports or processors.
void graph_node_set_route_playback_latency(GraphNode *node, nframes_t dest_latency)
Sets the playback latency of the given node recursively.
HOT void graph_node_trigger(GraphNode *self)
Called by an upstream node when it has completed processing.
HOT void graph_node_process(GraphNode *node, EngineProcessTimeInfo time_nfo)
Processes the GraphNode.
char * graph_node_get_name(GraphNode *node)
Returns a human friendly name of the node.
HOT nframes_t graph_node_get_single_playback_latency(GraphNode *node)
Returns the latency of only the given port, without adding the previous/next latencies.
@ ROUTE_NODE_TYPE_CHANNEL_SEND
Channel send.
@ ROUTE_NODE_TYPE_INITIAL_PROCESSOR
Initial processor.
@ ROUTE_NODE_TYPE_FADER
Fader/pan processor.
@ ROUTE_NODE_TYPE_PORT
Port.
@ ROUTE_NODE_TYPE_HW_PROCESSOR
Hardware processor.
@ ROUTE_NODE_TYPE_MONITOR_FADER
Fader/pan processor for monitor.
@ ROUTE_NODE_TYPE_PREFADER
Pre-Fader passthrough processor.
@ ROUTE_NODE_TYPE_PLUGIN
Plugin processor.
@ ROUTE_NODE_TYPE_TRACK
Track processor.
@ ROUTE_NODE_TYPE_SAMPLE_PROCESSOR
Sample processor.
uint32_t nframes_t
Frame count.
Common struct to pass around during processing to avoid repeating the data in function arguments.
A Fader is a processor that is used for volume controls and pan.
A node in the processing graph.
nframes_t route_playback_latency
The route's playback latency so far.
Fader * fader
Fader, if fader.
gint refcount
Incoming node count.
GraphNode ** childnodes
outgoing edges downstream nodes to activate when this node has completed processed
GraphNode ** parentnodes
Used when creating the graph so we can traverse it backwards to set the latencies.
HardwareProcessor * hw_processor
Hardware processor, if hardware processor.
gint init_refcount
Initial incoming node count.
bool terminal
For debugging.
nframes_t playback_latency
The playback latency of the node, in samples.
Port * port
Port, if not a plugin or fader.
Fader * prefader
Pre-Fader, if prefader node.
SampleProcessor * sample_processor
Sample processor, if sample processor.
Plugin * pl
Plugin, if plugin.
Graph * graph
Ref back to the graph so we don't have to pass it around.
Modulator macro button processor.
The base plugin Inheriting plugins must have this as a child.
Must ONLY be created via port_new()
A processor to be used in the routing graph for playing samples independent of the timeline.
Track to be inserted into the Project's Tracklist.