Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
Plugins

Audio plugin handling. More...

Collaboration diagram for Plugins:

Data Structures

struct  zrythm::plugins::PluginGtkController
 Widget for a control. More...
struct  zrythm::plugins::PluginGtkPresetRecord
struct  zrythm::plugins::CarlaPatchbayPortInfo
class  zrythm::plugins::CarlaNativePlugin

Enumerations

enum class  zrythm::plugins::CarlaPluginType {
  CARLA_PLUGIN_NONE , CARLA_PLUGIN_RACK , CARLA_PLUGIN_PATCHBAY , CARLA_PLUGIN_PATCHBAY16 ,
  CARLA_PLUGIN_PATCHBAY32 , CARLA_PLUGIN_PATCHBAY64
}
 The type of the Carla plugin. More...

Functions

void zrythm::plugins::plugin_gtk_create_window (Plugin *plugin)
 Creates a new GtkWindow that will be used to either wrap plugin UIs or create generic UIs in.
void zrythm::plugins::plugin_gtk_open_generic_ui (Plugin *plugin, bool fire_events)
 Opens the generic UI of the plugin.
ATTR_NONNULL int zrythm::plugins::plugin_gtk_update_plugin_ui (Plugin *pl)
 Called on each GUI frame to update the GTK UI.
int zrythm::plugins::plugin_gtk_close_ui (Plugin *plugin)
 Closes the plugin's UI (either LV2 wrapped with suil, generic or LV2 external).
void zrythm::plugins::plugin_gtk_set_window_title (Plugin *plugin, GtkWindow *window)
void zrythm::plugins::plugin_gtk_add_control_row (GtkWidget *table, int row, const char *name, PluginGtkController *controller)
void zrythm::plugins::plugin_gtk_on_save_preset_activate (GtkWidget *widget, Plugin *plugin)
gint zrythm::plugins::plugin_gtk_menu_cmp (gconstpointer a, gconstpointer b, gpointer data)
bool zrythm::plugins::plugin_gtk_setup_plugin_banks_combo_box (GtkComboBoxText *cb, Plugin *plugin)
 Sets up the combo box with all the banks the plugin has.
bool zrythm::plugins::plugin_gtk_setup_plugin_presets_list_box (GtkListBox *box, Plugin *plugin)
 Sets up the combo box with all the presets the plugin has in the given bank, or all the presets if NULL is given.
GtkWidget * zrythm::plugins::plugin_gtk_new_label (const char *text, bool title, bool preformatted, float xalign, float yalign)
 Creates a label for a control.
void zrythm::plugins::plugin_gtk_generic_set_widget_value (Plugin *pl, PluginGtkController *controller, float control)
 Called when a property changed or when there is a UI port event to set (update) the widget's value.
 zrythm::plugins::CarlaPatchbayPortInfo::CarlaPatchbayPortInfo (unsigned int _plugin_id, unsigned int _port_hints, unsigned int _port_id, std::string _port_name)
 zrythm::plugins::CarlaNativePlugin::CarlaNativePlugin (ProcessorBaseDependencies dependencies)
 Creates/initializes a plugin using the given setting.
 zrythm::plugins::CarlaNativePlugin::~CarlaNativePlugin () override
 Deactivates, cleanups and frees the instance.
void zrythm::plugins::CarlaNativePlugin::save_state (bool is_backup, std::optional< fs::path > abs_state_dir) override
void zrythm::plugins::CarlaNativePlugin::load_state (std::optional< fs::path > abs_path)
 Loads the state from the given file or from its state file.
void zrythm::plugins::CarlaNativePlugin::update_buffer_size_and_sample_rate ()
void zrythm::plugins::CarlaNativePlugin::open_custom_ui (bool show) override
 Shows or hides the UI.
dsp::ProcessorParameterzrythm::plugins::CarlaNativePlugin::get_param_from_param_id (uint32_t id)
 Returns the plugin Port corresponding to the given parameter.
dsp::MidiPortzrythm::plugins::CarlaNativePlugin::get_midi_out_port ()
 Returns the MIDI out port.
float zrythm::plugins::CarlaNativePlugin::get_param_value (uint32_t id)
void zrythm::plugins::CarlaNativePlugin::set_param_value (uint32_t id, float val)
 Called from port_set_control_value() to send the value to carla.
void zrythm::plugins::CarlaNativePlugin::close () override
static bool zrythm::plugins::CarlaNativePlugin::has_custom_ui (const PluginDescriptor &descr)
nframes_t zrythm::plugins::CarlaNativePlugin::get_single_playback_latency () const override
 Returns the latency in samples.
bool zrythm::plugins::CarlaNativePlugin::add_internal_plugin_from_descr (const PluginDescriptor &descr)
 Adds the internal plugin from the given descriptor.

Variables

GtkSpinButton * zrythm::plugins::PluginGtkController::spin
GtkWidget * zrythm::plugins::PluginGtkController::control
ControlPort * zrythm::plugins::PluginGtkController::port
 Port this control is for.
Pluginzrythm::plugins::PluginGtkController::plugin
 Pointer back to plugin.
float zrythm::plugins::PluginGtkController::last_set_control_val
 Last set control value - used to avoid re-setting the same value on float controls.
Pluginzrythm::plugins::PluginGtkPresetRecord::plugin
void * zrythm::plugins::PluginGtkPresetRecord::preset
 This will be a LilvNode * for LV2 and an absolute path for carla.
constexpr auto zrythm::plugins::CARLA_STATE_FILENAME = "state.carla"sv
unsigned int zrythm::plugins::CarlaPatchbayPortInfo::plugin_id = 0
unsigned int zrythm::plugins::CarlaPatchbayPortInfo::port_hints = 0
unsigned int zrythm::plugins::CarlaPatchbayPortInfo::port_id = 0
std::string zrythm::plugins::CarlaPatchbayPortInfo::port_name
unsigned int zrythm::plugins::CarlaNativePlugin::carla_plugin_id_ = 0
 Plugin ID inside carla engine.
bool zrythm::plugins::CarlaNativePlugin::ports_created_ = false
 Whether ports are already created or not.
bool zrythm::plugins::CarlaNativePlugin::loading_state_ = false
 Flag.
unsigned int zrythm::plugins::CarlaNativePlugin::audio_input_port_id_ = 0
 Port ID of first audio input (for connecting inside patchbay).
unsigned int zrythm::plugins::CarlaNativePlugin::audio_output_port_id_ = 0
 Port ID of first audio output (for connecting inside patchbay).
unsigned int zrythm::plugins::CarlaNativePlugin::cv_input_port_id_ = 0
 Port ID of first cv input (for connecting inside patchbay).
unsigned int zrythm::plugins::CarlaNativePlugin::cv_output_port_id_ = 0
 Port ID of first cv output (for connecting inside patchbay).
unsigned int zrythm::plugins::CarlaNativePlugin::midi_input_port_id_ = 0
 Port ID of first midi input (for connecting inside patchbay).
unsigned int zrythm::plugins::CarlaNativePlugin::midi_output_port_id_ = 0
 Port ID of first midi output (for connecting inside patchbay).
std::vector< CarlaPatchbayPortInfozrythm::plugins::CarlaNativePlugin::patchbay_port_info_
 Used when connecting Carla's internal plugin to patchbay ports.
std::vector< std::vector< float > > zrythm::plugins::CarlaNativePlugin::zero_inbufs_
 Idle callback for the plugin UI.
std::vector< std::vector< float > > zrythm::plugins::CarlaNativePlugin::zero_outbufs_
std::vector< const float * > zrythm::plugins::CarlaNativePlugin::inbufs_
std::vector< float * > zrythm::plugins::CarlaNativePlugin::outbufs_
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_audio_ins_ = 0
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_audio_outs_ = 0
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_cv_ins_ = 0
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_cv_outs_ = 0
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_midi_ins_ = 0
unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_midi_outs_ = 0

Friends

void zrythm::plugins::CarlaNativePlugin::init_from (CarlaNativePlugin &obj, const CarlaNativePlugin &other, utils::ObjectCloneType clone_type)
void zrythm::plugins::CarlaNativePlugin::to_json (nlohmann::json &j, const CarlaNativePlugin &plugin)
void zrythm::plugins::CarlaNativePlugin::from_json (const nlohmann::json &j, CarlaNativePlugin &plugin)

Detailed Description

Audio plugin handling.

Enumeration Type Documentation

◆ CarlaPluginType

The type of the Carla plugin.

Definition at line 35 of file carla_native_plugin.h.

Function Documentation

◆ add_internal_plugin_from_descr()

bool zrythm::plugins::CarlaNativePlugin::add_internal_plugin_from_descr ( const PluginDescriptor & descr)

Adds the internal plugin from the given descriptor.

Parameters
descr
Returns
Whether added.

◆ CarlaNativePlugin()

zrythm::plugins::CarlaNativePlugin::CarlaNativePlugin ( ProcessorBaseDependencies dependencies)

Creates/initializes a plugin using the given setting.

Exceptions
ZrythmExceptionIf the plugin could not be created.

◆ CarlaPatchbayPortInfo()

zrythm::plugins::CarlaPatchbayPortInfo::CarlaPatchbayPortInfo ( unsigned int _plugin_id,
unsigned int _port_hints,
unsigned int _port_id,
std::string _port_name )
inline

Definition at line 48 of file carla_native_plugin.h.

◆ get_single_playback_latency()

nframes_t zrythm::plugins::CarlaNativePlugin::get_single_playback_latency ( ) const
overridevirtual

Returns the latency in samples.

Reimplemented from zrythm::dsp::graph::IProcessable.

◆ load_state()

void zrythm::plugins::CarlaNativePlugin::load_state ( std::optional< fs::path > abs_path)
virtual

Loads the state from the given file or from its state file.

Exceptions
ZrythmExceptionif failed to load state.

Implements zrythm::plugins::Plugin.

◆ plugin_gtk_new_label()

GtkWidget * zrythm::plugins::plugin_gtk_new_label ( const char * text,
bool title,
bool preformatted,
float xalign,
float yalign )

Creates a label for a control.

TODO move to ui.

Parameters
titleWhether this is a title text (makes it bold).
preformattedWhether the text is preformatted.

◆ plugin_gtk_open_generic_ui()

void zrythm::plugins::plugin_gtk_open_generic_ui ( Plugin * plugin,
bool fire_events )

Opens the generic UI of the plugin.

Assumes plugin_gtk_create_window() has been called.

◆ plugin_gtk_setup_plugin_banks_combo_box()

bool zrythm::plugins::plugin_gtk_setup_plugin_banks_combo_box ( GtkComboBoxText * cb,
Plugin * plugin )

Sets up the combo box with all the banks the plugin has.

Returns
Whether any banks were added.

◆ plugin_gtk_setup_plugin_presets_list_box()

bool zrythm::plugins::plugin_gtk_setup_plugin_presets_list_box ( GtkListBox * box,
Plugin * plugin )

Sets up the combo box with all the presets the plugin has in the given bank, or all the presets if NULL is given.

Returns
Whether any presets were added.

◆ plugin_gtk_update_plugin_ui()

ATTR_NONNULL int zrythm::plugins::plugin_gtk_update_plugin_ui ( Plugin * pl)

Called on each GUI frame to update the GTK UI.

Note
This is a GSourceFunc.

◆ set_param_value()

void zrythm::plugins::CarlaNativePlugin::set_param_value ( uint32_t id,
float val )

Called from port_set_control_value() to send the value to carla.

Parameters
valReal value (ie, not normalized).

Variable Documentation

◆ audio_input_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::audio_input_port_id_ = 0

Port ID of first audio input (for connecting inside patchbay).

Definition at line 210 of file carla_native_plugin.h.

◆ audio_output_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::audio_output_port_id_ = 0

Port ID of first audio output (for connecting inside patchbay).

Definition at line 212 of file carla_native_plugin.h.

◆ carla_plugin_id_

unsigned int zrythm::plugins::CarlaNativePlugin::carla_plugin_id_ = 0

Plugin ID inside carla engine.

Definition at line 201 of file carla_native_plugin.h.

◆ CARLA_STATE_FILENAME

auto zrythm::plugins::CARLA_STATE_FILENAME = "state.carla"sv
constexpr

Definition at line 30 of file carla_native_plugin.h.

◆ control

GtkWidget* zrythm::plugins::PluginGtkController::control

Definition at line 33 of file plugin_gtk.h.

◆ cv_input_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::cv_input_port_id_ = 0

Port ID of first cv input (for connecting inside patchbay).

Definition at line 215 of file carla_native_plugin.h.

◆ cv_output_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::cv_output_port_id_ = 0

Port ID of first cv output (for connecting inside patchbay).

Definition at line 217 of file carla_native_plugin.h.

◆ inbufs_

std::vector<const float *> zrythm::plugins::CarlaNativePlugin::inbufs_

Definition at line 248 of file carla_native_plugin.h.

◆ last_set_control_val

float zrythm::plugins::PluginGtkController::last_set_control_val

Last set control value - used to avoid re-setting the same value on float controls.

Definition at line 43 of file plugin_gtk.h.

◆ loading_state_

bool zrythm::plugins::CarlaNativePlugin::loading_state_ = false

Flag.

Definition at line 207 of file carla_native_plugin.h.

◆ max_variant_audio_ins_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_audio_ins_ = 0

Definition at line 251 of file carla_native_plugin.h.

◆ max_variant_audio_outs_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_audio_outs_ = 0

Definition at line 252 of file carla_native_plugin.h.

◆ max_variant_cv_ins_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_cv_ins_ = 0

Definition at line 253 of file carla_native_plugin.h.

◆ max_variant_cv_outs_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_cv_outs_ = 0

Definition at line 254 of file carla_native_plugin.h.

◆ max_variant_midi_ins_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_midi_ins_ = 0

Definition at line 255 of file carla_native_plugin.h.

◆ max_variant_midi_outs_

unsigned int zrythm::plugins::CarlaNativePlugin::max_variant_midi_outs_ = 0

Definition at line 256 of file carla_native_plugin.h.

◆ midi_input_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::midi_input_port_id_ = 0

Port ID of first midi input (for connecting inside patchbay).

Definition at line 220 of file carla_native_plugin.h.

◆ midi_output_port_id_

unsigned int zrythm::plugins::CarlaNativePlugin::midi_output_port_id_ = 0

Port ID of first midi output (for connecting inside patchbay).

Definition at line 222 of file carla_native_plugin.h.

◆ outbufs_

std::vector<float *> zrythm::plugins::CarlaNativePlugin::outbufs_

Definition at line 249 of file carla_native_plugin.h.

◆ patchbay_port_info_

std::vector<CarlaPatchbayPortInfo> zrythm::plugins::CarlaNativePlugin::patchbay_port_info_

Used when connecting Carla's internal plugin to patchbay ports.

Definition at line 225 of file carla_native_plugin.h.

◆ plugin [1/2]

Plugin* zrythm::plugins::PluginGtkController::plugin

Pointer back to plugin.

Definition at line 39 of file plugin_gtk.h.

◆ plugin [2/2]

Plugin* zrythm::plugins::PluginGtkPresetRecord::plugin

Definition at line 48 of file plugin_gtk.h.

◆ plugin_id

unsigned int zrythm::plugins::CarlaPatchbayPortInfo::plugin_id = 0

Definition at line 57 of file carla_native_plugin.h.

◆ port

ControlPort* zrythm::plugins::PluginGtkController::port

Port this control is for.

Definition at line 36 of file plugin_gtk.h.

◆ port_hints

unsigned int zrythm::plugins::CarlaPatchbayPortInfo::port_hints = 0

Definition at line 58 of file carla_native_plugin.h.

◆ port_id

unsigned int zrythm::plugins::CarlaPatchbayPortInfo::port_id = 0

Definition at line 59 of file carla_native_plugin.h.

◆ port_name

std::string zrythm::plugins::CarlaPatchbayPortInfo::port_name

Definition at line 60 of file carla_native_plugin.h.

◆ ports_created_

bool zrythm::plugins::CarlaNativePlugin::ports_created_ = false

Whether ports are already created or not.

Definition at line 204 of file carla_native_plugin.h.

◆ preset

void* zrythm::plugins::PluginGtkPresetRecord::preset

This will be a LilvNode * for LV2 and an absolute path for carla.

Definition at line 52 of file plugin_gtk.h.

◆ spin

GtkSpinButton* zrythm::plugins::PluginGtkController::spin

Definition at line 32 of file plugin_gtk.h.

◆ zero_inbufs_

std::vector<std::vector<float> > zrythm::plugins::CarlaNativePlugin::zero_inbufs_

Idle callback for the plugin UI.

do not use tick callback: falktx: I am doing some checks on ildaeil/carla, and see there is a nice way without conflicts to avoid the GL context issues. it came from cardinal, where I cannot draw plugin UIs in the same function as the main stuff, because it is in between other opengl calls (before and after). the solution I found was to have a dedicated idle timer, and handle the plugin UI stuff there, outside of the main application draw function Used during processing.

Must be resized on buffer size change.

Definition at line 246 of file carla_native_plugin.h.

◆ zero_outbufs_

std::vector<std::vector<float> > zrythm::plugins::CarlaNativePlugin::zero_outbufs_

Definition at line 247 of file carla_native_plugin.h.

Friends

◆ from_json

void from_json ( const nlohmann::json & j,
CarlaNativePlugin & plugin )
friend

Definition at line 152 of file carla_native_plugin.h.

◆ to_json

void to_json ( nlohmann::json & j,
const CarlaNativePlugin & plugin )
friend

Definition at line 148 of file carla_native_plugin.h.