10#ifndef __AUDIO_TRACK_PROCESSOR_H__
11#define __AUDIO_TRACK_PROCESSOR_H__
31#define TRACK_PROCESSOR_SCHEMA_VERSION 1
33#define TRACK_PROCESSOR_MAGIC 81213128
34#define IS_TRACK_PROCESSOR(tr) ((tr) && (tr)->magic == TRACK_PROCESSOR_MAGIC)
36#define track_processor_is_in_active_project(self) \
37 (self->track && track_is_in_active_project (self->track))
174track_processor_set_is_project (
209 g_return_val_if_fail (
210 IS_TRACK_PROCESSOR (self) && IS_TRACK (self->
track), NULL);
212 g_return_val_if_fail (self->
track, NULL);
273track_processor_update_track_name_hash (
278track_processor_append_ports (
TrackProcessor * self, GPtrArray * ports);
Ports that transfer audio/midi/other signals to one another.
NONNULL_ARGS(1) int undo_manager_undo(UndoManager *self
Undo last action.
void track_processor_copy_values(TrackProcessor *dest, TrackProcessor *src)
Copy port values from src to dest.
void track_processor_connect_to_plugin(TrackProcessor *self, Plugin *pl)
Connect the TrackProcessor's out ports to the Plugin's input ports.
void track_processor_clear_buffers(TrackProcessor *self)
Clears all buffers.
void track_processor_free(TrackProcessor *self)
Frees the TrackProcessor.
COLD WARN_UNUSED_RESULT TrackProcessor * track_processor_new(Track *track)
Creates a new track processor for the given track.
void track_processor_connect_to_prefader(TrackProcessor *self)
Connects the TrackProcessor's stereo out ports to the Channel's prefader in ports.
void track_processor_disconnect_all(TrackProcessor *self)
Disconnects all ports connected to the TrackProcessor.
void track_processor_disconnect_from_prefader(TrackProcessor *self)
Disconnect the TrackProcessor's stereo out ports from the prefader.
void track_processor_process(TrackProcessor *self, const EngineProcessTimeInfo *const time_nfo)
Process the TrackProcessor.
void track_processor_disconnect_from_plugin(TrackProcessor *self, Plugin *pl)
Disconnect the TrackProcessor's out ports from the Plugin's input ports.
Common struct to pass around during processing to avoid repeating the data in function arguments.
Multiple Producer Multiple Consumer lock-free queue.
All MIDI mappings in Zrythm.
The base plugin Inheriting plugins must have this as a child.
Must ONLY be created via port_new()
L & R port, for convenience.
A TrackProcessor is a processor that is used as the first entry point when processing a track.
Port * monitor_audio
Whether to monitor the audio output.
MPMCQueue * updated_midi_automatable_ports
A queue of MIDI CC ports whose values have been recently updated.
Port * output_gain
Output gain, if audio.
Port * midi_in
MIDI in Port.
Port * poly_key_pressure[16]
Polyphonic key pressure (aftertouch).
Port * channel_pressure[16]
Channel pressure (aftertouch).
StereoPorts * stereo_in
L & R audio input ports, if audio.
Port * midi_cc[128 *16]
MIDI CC control ports, 16 channels.
bool pending_midi_panic
To be set to true when a panic (all notes off) message should be sent during processing.
MidiMappings * cc_mappings
Mappings to each CC port.
Port * input_gain
Input gain, if audio.
StereoPorts * stereo_out
L & R audio output ports, if audio.
Port * pitch_bend[16]
Pitch bend.
Track * track
Pointer to owner track, if any.
Port * midi_out
MIDI out port, if MIDI.
float l_port_db
Current dBFS after processing each output port.
Port * piano_roll
MIDI input for receiving MIDI signals from the piano roll (i.e., MIDI notes inside regions) or other ...
Port * mono
Mono toggle, if audio.
Track to be inserted into the Project's Tracklist.