Zrythm
a highly automated and intuitive digital audio workstation
|
Ports that transfer audio/midi/other signals to one another. More...
#include "zrythm-config.h"
#include "dsp/port_identifier.h"
#include "utils/types.h"
#include "zix/sem.h"
Go to the source code of this file.
Data Structures | |
struct | PortScalePoint |
Scale point. More... | |
struct | Port |
Must ONLY be created via port_new() More... | |
struct | StereoPorts |
L & R port, for convenience. More... | |
Macros | |
#define | PORT_SCHEMA_VERSION 1 |
#define | STEREO_PORTS_SCHEMA_VERSION 1 |
#define | PORT_MAGIC 456861194 |
#define | IS_PORT(_p) (((Port *) (_p))->magic == PORT_MAGIC) |
#define | IS_PORT_AND_NONNULL(x) ((x) && IS_PORT (x)) |
#define | TIME_TO_RESET_PEAK 4800000 |
#define | PORT_NOT_OWNED -1 |
Special ID for owner_pl, owner_ch, etc. | |
#define | port_is_owner_active(self, _owner_type, owner) |
#define | port_is_in_active_project(self) |
#define | port_connect(a, b, locked) |
Connects a and b with default settings: | |
#define | port_disconnect(a, b) |
Removes the connection between the given ports. | |
#define | ports_connected(a, b) |
#define | port_clear_buffer(engine_, _port) |
Clears the port buffer. | |
Typedefs | |
typedef struct ZixRingImpl | ZixRing |
typedef struct WindowsMmeDevice | WindowsMmeDevice |
typedef struct RtMidiDevice | RtMidiDevice |
typedef struct RtAudioDevice | RtAudioDevice |
Enumerations | |
enum class | PortInternalType { None , PortInternalType::Lv2Port , PortInternalType::JackPort , PortInternalType::PulseAudioPort , PortInternalType::AlsaSequencerPort } |
What the internal data is. More... | |
Functions | |
int | port_scale_point_cmp (const void *_a, const void *_b) |
NONNULL PortScalePoint * | port_scale_point_new (const float val, const char *label) |
NONNULL void | port_scale_point_free (PortScalePoint *self) |
NONNULL void | port_init_loaded (Port *self, void *owner) |
This function finds the Ports corresponding to the PortIdentifiers for srcs and dests. | |
void | port_set_owner (Port *self, PortIdentifier::OwnerType owner_type, void *owner) |
NONNULL Port * | port_find_from_identifier (const PortIdentifier *const id) |
WARN_UNUSED_RESULT NONNULL Port * | port_new_with_type (ZPortType type, ZPortFlow flow, const char *label) |
Creates port. | |
WARN_UNUSED_RESULT NONNULL Port * | port_new_with_type_and_owner (ZPortType type, ZPortFlow flow, const char *label, PortIdentifier::OwnerType owner_type, void *owner) |
NONNULL void | port_allocate_bufs (Port *self) |
Allocates buffers used during DSP. | |
NONNULL void | port_free_bufs (Port *self) |
Frees buffers. | |
NONNULL StereoPorts * | stereo_ports_new_from_existing (Port *l, Port *r) |
Creates blank stereo ports. | |
StereoPorts * | stereo_ports_new_generic (int in, const char *name, const char *symbol, PortIdentifier::OwnerType owner_type, void *owner) |
Creates stereo ports for generic use. | |
NONNULL void | stereo_ports_connect (StereoPorts *src, StereoPorts *dest, int locked) |
Connects the internal ports using port_connect(). | |
NONNULL void | stereo_ports_disconnect (StereoPorts *self) |
StereoPorts * | stereo_ports_clone (const StereoPorts *src) |
NONNULL void | stereo_ports_free (StereoPorts *self) |
const void * | port_get_value_from_symbol (const char *port_sym, void *user_data, uint32_t *size, uint32_t *type) |
Function to get a port's value from its string symbol. | |
NONNULL bool | port_has_sound (Port *self) |
If MIDI port, returns if there are any events, if audio port, returns if there is sound in the buffer. | |
NONNULL void | port_get_full_designation (Port *const self, char *buf) |
Copies a full designation of self in the format "Track/Port" or "Track/Plugin/Port" in buf . | |
NONNULL void | port_print_full_designation (Port *const self) |
void | port_get_all (GPtrArray *ports) |
Gathers all ports in the project and appends them in the given array. | |
NONNULL Track * | port_get_track (const Port *const self, int warn_if_fail) |
NONNULL Plugin * | port_get_plugin (Port *const self, const bool warn_if_fail) |
void | port_update_identifier (Port *self, const PortIdentifier *prev_id, Track *track, bool update_automation_track) |
To be called when the port's identifier changes to update corresponding identifiers. | |
NONNULL void | port_disconnect_hw_inputs (Port *self) |
Disconnects all hardware inputs from the port. | |
NONNULL void | port_set_expose_to_backend (Port *self, int expose) |
Sets whether to expose the port to the backend and exposes it or removes it. | |
NONNULL void | port_rename_backend (Port *self) |
Renames the port on the backend side. | |
NONNULL void | port_set_control_value (Port *self, const float val, const bool is_normalized, const bool forward_event) |
Sets the given control value to the corresponding underlying structure in the Port. | |
NONNULL HOT float | port_get_control_value (Port *self, const bool normalize) |
Gets the given control value from the corresponding underlying structure in the Port. | |
NONNULL int | port_get_num_unlocked_srcs (const Port *self) |
Returns the number of unlocked (user-editable) sources. | |
NONNULL int | port_get_num_unlocked_dests (const Port *self) |
Returns the number of unlocked (user-editable) destinations. | |
void | port_update_track_name_hash (Port *self, Track *track, unsigned int new_hash) |
Updates the track name hash on a track port and all its source/destination identifiers. | |
HOT NONNULL void | port_process (Port *port, const EngineProcessTimeInfo time_nfo, const bool noroll) |
First sets port buf to 0, then sums the given port signal from its inputs. | |
NONNULL bool | ports_can_be_connected (const Port *src, const Port *dest) |
Returns whether the Port's can be connected (if the connection will be valid and won't break the acyclicity of the graph). | |
NONNULL void | ports_disconnect (Port **ports, int num_ports, int deleting) |
Disconnects all the given ports. | |
NONNULL void | port_copy_metadata_from_project (Port *self, Port *project_port) |
Copies the metadata from a project port to the given port. | |
NONNULL void | port_copy_values (Port *self, const Port *other) |
Copies the port values from other to self. | |
NONNULL void | port_restore_from_non_project (Port *self, Port *non_project) |
Reverts the data on the corresponding project port for the given non-project port. | |
HOT NONNULL OPTIMIZE_O3 void | port_clear_external_buffer (Port *port) |
Clears the backend's port buffer. | |
NONNULL int | port_disconnect_all (Port *port) |
Disconnects all srcs and dests from port. | |
NONNULL void | port_apply_pan_stereo (Port *l, Port *r, float pan, PanLaw pan_law, PanAlgorithm pan_algo) |
Applies the pan to the given L/R ports. | |
NONNULL void | port_apply_pan (Port *port, float pan, PanLaw pan_law, PanAlgorithm pan_algo, nframes_t start_frame, const nframes_t nframes) |
Applies the pan to the given port. | |
NONNULL uint32_t | port_get_hash (const void *ptr) |
Generates a hash for a given port. | |
Port * | port_clone (const Port *src) |
To be used during serialization. | |
NONNULL void | port_free (Port *port) |
Deletes port, doing required cleanup and updating counters. | |
Ports that transfer audio/midi/other signals to one another.
Definition in file port.h.