Channel struct

A Channel is part of a Track (excluding Tracks that don't have Channels) and contains information related to routing and the Mixer.

Contents

Public variables

Plugin* plugins
The channel strip.
Plugin* aggregated_plugins
Used for serializing/deserializing because libcyaml doesn't handle NULLS in an array.
AutomationTrack** ats
A subset of the automation tracks in the automation tracklist of the track of this channel.
ChannelType type
Type of channel this is.
Fader fader
The channel fader.
StereoPorts* stereo_in
L & R audio input ports.
Port* piano_roll
MIDI in port ID.
Port* midi_in
MIDI piano roll input port ID.
int filled_stereo_in_bufs
Flag used while processing.
Track* output
Output channel to route signal to.
int output_pos
For serializing.
Track* track
Track associated with this channel.
ChannelWidget* widget
The channel widget.
int record_set_automatically
Whether record was set automatically when the channel was selected.

Variable documentation

Plugin* Channel::plugins

The channel strip.

Note: the first plugin is special in MIDI channels.

Plugin* Channel::aggregated_plugins

Used for serializing/deserializing because libcyaml doesn't handle NULLS in an array.

The NULLS are removed and the plugins are aggregated here. They are put back in the original array when deserializing by using the Plugin's pos variable.

AutomationTrack** Channel::ats

A subset of the automation tracks in the automation tracklist of the track of this channel.

These are not meant to be serialized.

Port* Channel::piano_roll

MIDI in port ID.

This port is for receiving MIDI signals from an external MIDI source.

Port* Channel::midi_in

MIDI piano roll input port ID.

This port is for receiving MIDI signals from the piano roll (i.e., MIDI notes inside regions).

int Channel::record_set_automatically

Whether record was set automatically when the channel was selected.

This is so that it can be unset when selecting another channel. If we don't do this all the channels end up staying on record mode.