10#ifndef __AUDIO_CHANNEL_SEND_H__
11#define __AUDIO_CHANNEL_SEND_H__
29#define CHANNEL_SEND_SCHEMA_VERSION 1
35#define CHANNEL_SEND_POST_FADER_START_SLOT 6
37#define channel_send_is_prefader(x) \
38 (x->slot < CHANNEL_SEND_POST_FADER_START_SLOT)
40#define channel_send_is_in_active_project(self) \
41 (self->track && track_is_in_active_project (self->track))
167#define channel_send_is_empty(x) (!channel_send_is_enabled (x))
240channel_send_set_amount (
ChannelSend * self,
float amount);
268channel_send_append_ports (
ChannelSend * self, GPtrArray * ports);
285channel_send_process (
Ports that transfer audio/midi/other signals to one another.
NONNULL_ARGS(1) int undo_manager_undo(UndoManager *self
Undo last action.
NONNULL Track * channel_send_get_track(const ChannelSend *self)
Gets the owner track.
NONNULL void channel_send_get_dest_name(ChannelSend *self, char *buf)
Get the name of the destination, or a placeholder text if empty.
Track * channel_send_get_target_track(ChannelSend *self, Track *owner)
Gets the target track.
NONNULL void channel_send_set_amount_from_widget(ChannelSend *self, float val)
Sets the amount from a widget amount (0.0-1.0).
bool channel_send_connect_stereo(ChannelSend *self, StereoPorts *stereo, Port *l, Port *r, bool sidechain, bool recalc_graph, bool validate, GError **error)
Connects a send to stereo ports.
int channel_send_append_connection(const ChannelSend *self, const PortConnectionsManager *mgr, GPtrArray *arr)
Appends the connection(s), if non-empty, to the given array (if not NULL) and returns the number of c...
bool channel_send_is_connected_to(const ChannelSend *self, const StereoPorts *stereo, const Port *midi)
Returns whether the send is connected to the given ports.
NONNULL bool channel_send_connect_midi(ChannelSend *self, Port *port, bool recalc_graph, bool validate, GError **error)
Connects a send to a midi port.
void channel_send_connect_to_owner(ChannelSend *self)
Connects the ports to the owner track if not connected.
ChannelSendTargetType
Target type.
ChannelSend * channel_send_new(unsigned int track_name_hash, int slot, Track *track)
Creates a channel send instance.
NONNULL ChannelSend * channel_send_find(ChannelSend *self)
Finds the project send from a given send instance.
NONNULL float channel_send_get_amount_for_widgets(ChannelSend *self)
Gets the amount to be used in widgets (0.0-1.0).
NONNULL void channel_send_disconnect(ChannelSend *self, bool recalc_graph)
Removes the connection at the given send.
NONNULL StereoPorts * channel_send_get_target_sidechain(ChannelSend *self)
Gets the target sidechain port.
NONNULL bool channel_send_is_target_sidechain(ChannelSend *self)
Returns whether the channel send target is a sidechain port (rather than a target track).
char * channel_send_target_describe(const ChannelSendTarget *self)
Returns a string describing self (track/plugin name/etc.).
@ CHANNEL_SEND_TARGET_TYPE_PLUGIN_SIDECHAIN
Send to plugin sidechain inputs.
@ CHANNEL_SEND_TARGET_TYPE_TRACK
Send to track inputs.
@ CHANNEL_SEND_TARGET_TYPE_NONE
Remove send.
uint32_t nframes_t
Frame count.
Send target (used in list views).
unsigned int track_name_hash
Track name hash (used in actions).
int slot
Slot index in the channel sends.
StereoPorts * stereo_in
Stereo input if audio send.
bool is_sidechain
If the send is a sidechain.
StereoPorts * stereo_out
Stereo output if audio send.
Port * enabled
Whether the send is currently enabled.
Port * midi_out
MIDI output if MIDI send.
Port * amount
Send amount (amplitude), 0 to 2 for audio, velocity multiplier for MIDI.
Port * midi_in
MIDI input if MIDI send.
Track * track
Pointer back to owner track.
Port connections manager.
Must ONLY be created via port_new()
L & R port, for convenience.
Track to be inserted into the Project's Tracklist.