Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::plugins::Plugin Class Referenceabstract

DSP processing plugin. More...

#include <src/plugins/plugin.h>

Inheritance diagram for zrythm::plugins::Plugin:
Collaboration diagram for zrythm::plugins::Plugin:

Public Types

enum class  InstantiationStatus : std::uint8_t { Pending , Successful , Failed }
using StateDirectoryParentPathProvider = std::function<fs::path ()>
 Returns the parent path where the plugin should save its state directory in (or load it).

Public Member Functions

int programIndex () const
 Returns the current program index, or -1 if no program exists.
void setProgramIndex (int index)
Q_SIGNAL void programIndexChanged (int index)
 Implementations should attach to this and set the program.
PluginConfigurationconfiguration () const
Q_SIGNAL void configurationChanged (PluginConfiguration *configuration)
 Emitted when the configuration is set on the plugin.
dsp::ProcessorParameterbypassParameter () const
dsp::ProcessorParametergainParameter () const
bool uiVisible () const
void setUiVisible (bool visible)
Q_SIGNAL void uiVisibleChanged (bool visible)
 Implementations should listen to this and show/hide the plugin UI accordingly.
InstantiationStatus instantiationStatus () const
Q_SIGNAL void instantiationStatusChanged (InstantiationStatus status)
Q_SIGNAL void instantiationFinished (bool successful, const QString &error)
 To be emitted by implementations when instantiation finished.
PluginDescriptorget_descriptor () const
utils::Utf8String get_name () const
Protocol::ProtocolType get_protocol () const
void set_configuration (const PluginConfiguration &setting)
 Sets the plugin setting to use.
void custom_prepare_for_processing (const dsp::graph::GraphNode *node, units::sample_rate_t sample_rate, nframes_t max_block_length) final
void custom_process_block (EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport) noexcept final
 Custom processor logic after processing all owned parameters.
void custom_release_resources () final
fs::path get_state_directory () const
bool currently_enabled () const
 Returns whether the plugin is enabled (not bypassed).
bool currently_enabled_rt () const noexcept
virtual void save_state (std::optional< fs::path > abs_state_dir)=0
 Saves the state inside the standard state directory.
virtual void load_state (std::optional< fs::path > abs_state_dir)=0
 Load the state from the default directory or from abs_state_dir if given.
Public Member Functions inherited from zrythm::dsp::ProcessorBase
 ProcessorBase (ProcessorBaseDependencies dependencies, utils::Utf8String name={ u8"ProcessorBase" })
void set_name (const utils::Utf8String &name)
 Set a custom name to be used in the DSP graph.
void add_input_port (const dsp::PortUuidReference &uuid)
void add_output_port (const dsp::PortUuidReference &uuid)
void add_parameter (const dsp::ProcessorParameterUuidReference &uuid)
auto & get_input_ports () const
auto & get_output_ports () const
auto & get_parameters () const
utils::Utf8String get_node_name () const final
 Returns a human friendly name of the node.
void process_block (EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport) noexcept final
 Calls custom_process_block() internally after processing all the parameters.
void prepare_for_processing (const graph::GraphNode *node, units::sample_rate_t sample_rate, nframes_t max_block_length) final
 Called to allocate resources required for processing.
void release_resources () final
 Called to release resources allocated by prepare_for_processing().
Public Member Functions inherited from zrythm::dsp::graph::IProcessable
virtual nframes_t get_single_playback_latency () const
 Returns the latency of only the given processable, without adding the previous/next latencies.
Public Member Functions inherited from zrythm::utils::UuidIdentifiableObject< Plugin >
UuidIdentifiableObject & operator= (const UuidIdentifiableObject &other)=default
auto get_uuid () const

Protected Member Functions

 Plugin (ProcessorBaseDependencies dependencies, StateDirectoryParentPathProvider state_path_provider, QObject *parent)
 Creates/initializes a plugin and its internal plugin (LV2, etc.) using the given setting.
dsp::ProcessorParameterUuidReference generate_default_bypass_param () const
 To be called by implementations to generate the default bypass parameter if the plugin does not provide its own.
dsp::ProcessorParameterUuidReference generate_default_gain_param () const
 To be called by implementations to generate the default gain parameter if the plugin does not provide its own.
Protected Member Functions inherited from zrythm::dsp::ProcessorBase
auto dependencies () const

Protected Attributes

bool instantiation_failed_ = false
 Set to true if instantiation failed and the plugin will be treated as disabled.
StateDirectoryParentPathProvider state_dir_parent_path_provider_
 Plugins should create a state directory with their UUID as the directory name under the path provided by this.
std::optional< dsp::ProcessorParameter::Uuid > bypass_id_
 Bypass toggle parameter,.
std::optional< dsp::ProcessorParameter::Uuid > gain_id_
 Zrythm-provided plugin gain parameter.
std::vector< dsp::AudioPort * > audio_in_ports_
std::vector< dsp::AudioPort * > audio_out_ports_
std::vector< dsp::CVPort * > cv_in_ports_
dsp::MidiPortmidi_in_port_ {}
dsp::MidiPortmidi_out_port_ {}
dsp::ProcessorParameterbypass_param_rt_ {}

Properties

int programIndex
zrythm::plugins::PluginConfigurationconfiguration
zrythm::dsp::ProcessorParameterbypassParameter
zrythm::dsp::ProcessorParametergainParameter
bool uiVisible
InstantiationStatus instantiationStatus

Friends

void to_json (nlohmann::json &j, const Plugin &p)
void from_json (const nlohmann::json &j, Plugin &p)

Detailed Description

DSP processing plugin.

Can be external or internal.

Definition at line 26 of file plugin.h.

Member Typedef Documentation

◆ StateDirectoryParentPathProvider

Returns the parent path where the plugin should save its state directory in (or load it).

Definition at line 48 of file plugin.h.

Member Enumeration Documentation

◆ InstantiationStatus

enum class zrythm::plugins::Plugin::InstantiationStatus : std::uint8_t
strong
Enumerator
Pending 

Instantiation underway.

Successful 

Instantiation successful.

Failed 

Instantiation failed.

Definition at line 50 of file plugin.h.

Constructor & Destructor Documentation

◆ Plugin()

zrythm::plugins::Plugin::Plugin ( ProcessorBaseDependencies dependencies,
StateDirectoryParentPathProvider state_path_provider,
QObject * parent )
protected

Creates/initializes a plugin and its internal plugin (LV2, etc.) using the given setting.

Exceptions
ZrythmExceptionIf the plugin could not be created.

Member Function Documentation

◆ bypassParameter()

dsp::ProcessorParameter * zrythm::plugins::Plugin::bypassParameter ( ) const
inline

Definition at line 99 of file plugin.h.

◆ configuration()

PluginConfiguration * zrythm::plugins::Plugin::configuration ( ) const
inline

Definition at line 90 of file plugin.h.

◆ configurationChanged()

Q_SIGNAL void zrythm::plugins::Plugin::configurationChanged ( PluginConfiguration * configuration)

Emitted when the configuration is set on the plugin.

Implementing plugins should attach to this and create all the plugin ports and parameters.

◆ currently_enabled()

bool zrythm::plugins::Plugin::currently_enabled ( ) const
inline

Returns whether the plugin is enabled (not bypassed).

Definition at line 196 of file plugin.h.

◆ currently_enabled_rt()

bool zrythm::plugins::Plugin::currently_enabled_rt ( ) const
inlinenoexcept

Definition at line 202 of file plugin.h.

◆ custom_prepare_for_processing()

void zrythm::plugins::Plugin::custom_prepare_for_processing ( const dsp::graph::GraphNode * node,
units::sample_rate_t sample_rate,
nframes_t max_block_length )
finalvirtual

Reimplemented from zrythm::dsp::ProcessorBase.

◆ custom_process_block()

void zrythm::plugins::Plugin::custom_process_block ( EngineProcessTimeInfo time_nfo,
const dsp::ITransport & transport )
finalvirtualnoexcept

Custom processor logic after processing all owned parameters.

By default, this does passthrough to same-type ports.

Reimplemented from zrythm::dsp::ProcessorBase.

◆ custom_release_resources()

void zrythm::plugins::Plugin::custom_release_resources ( )
finalvirtual

Reimplemented from zrythm::dsp::ProcessorBase.

◆ gainParameter()

dsp::ProcessorParameter * zrythm::plugins::Plugin::gainParameter ( ) const
inline

Definition at line 104 of file plugin.h.

◆ get_descriptor()

PluginDescriptor & zrythm::plugins::Plugin::get_descriptor ( ) const
inline

Definition at line 144 of file plugin.h.

◆ get_name()

utils::Utf8String zrythm::plugins::Plugin::get_name ( ) const
inline

Definition at line 148 of file plugin.h.

◆ get_protocol()

Protocol::ProtocolType zrythm::plugins::Plugin::get_protocol ( ) const
inline

Definition at line 152 of file plugin.h.

◆ get_state_directory()

fs::path zrythm::plugins::Plugin::get_state_directory ( ) const
inline

Definition at line 184 of file plugin.h.

◆ instantiationFinished()

Q_SIGNAL void zrythm::plugins::Plugin::instantiationFinished ( bool successful,
const QString & error )

To be emitted by implementations when instantiation finished.

This is used since some plugins do instantiation asynchronously. The project should re-calculate the DSP graph when this gets fired.

Parameters
errorNon-empty on instantiation failure.

◆ instantiationStatus()

InstantiationStatus zrythm::plugins::Plugin::instantiationStatus ( ) const
inline

Definition at line 126 of file plugin.h.

◆ load_state()

virtual void zrythm::plugins::Plugin::load_state ( std::optional< fs::path > abs_state_dir)
pure virtual

Load the state from the default directory or from abs_state_dir if given.

Exceptions
ZrythmExceptionIf the state could not be saved.

Implemented in zrythm::plugins::CarlaNativePlugin, zrythm::plugins::ClapPlugin, zrythm::plugins::InternalPluginBase, and zrythm::plugins::JucePlugin.

◆ programIndex()

int zrythm::plugins::Plugin::programIndex ( ) const
inline

Returns the current program index, or -1 if no program exists.

Definition at line 67 of file plugin.h.

◆ save_state()

virtual void zrythm::plugins::Plugin::save_state ( std::optional< fs::path > abs_state_dir)
pure virtual

Saves the state inside the standard state directory.

Parameters
abs_state_dirIf passed, the state will be savedinside this directory instead of the plugin's state directory. Used when saving presets.
Exceptions
ZrythmExceptionIf the state could not be saved.

Implemented in zrythm::plugins::ClapPlugin, zrythm::plugins::InternalPluginBase, and zrythm::plugins::JucePlugin.

◆ set_configuration()

void zrythm::plugins::Plugin::set_configuration ( const PluginConfiguration & setting)

Sets the plugin setting to use.

This must be called exactly once right after construction to set the PluginConfiguration for this plugin.

The plugin will have no ports or parameters until this is called.

◆ setProgramIndex()

void zrythm::plugins::Plugin::setProgramIndex ( int index)
inline

Definition at line 68 of file plugin.h.

◆ setUiVisible()

void zrythm::plugins::Plugin::setUiVisible ( bool visible)
inline

Definition at line 111 of file plugin.h.

◆ uiVisible()

bool zrythm::plugins::Plugin::uiVisible ( ) const
inline

Definition at line 110 of file plugin.h.

◆ to_json

void to_json ( nlohmann::json & j,
const Plugin & p )
friend

Definition at line 290 of file plugin.h.

Field Documentation

◆ audio_in_ports_

std::vector<dsp::AudioPort *> zrythm::plugins::Plugin::audio_in_ports_
protected

Definition at line 329 of file plugin.h.

◆ audio_out_ports_

std::vector<dsp::AudioPort *> zrythm::plugins::Plugin::audio_out_ports_
protected

Definition at line 330 of file plugin.h.

◆ bypass_id_

std::optional<dsp::ProcessorParameter::Uuid> zrythm::plugins::Plugin::bypass_id_
protected

Bypass toggle parameter,.

If the plugin itself doesn't provide a bypass parameter, one will be created for it.

Definition at line 321 of file plugin.h.

◆ bypass_param_rt_

dsp::ProcessorParameter* zrythm::plugins::Plugin::bypass_param_rt_ {}
protected

Definition at line 334 of file plugin.h.

◆ cv_in_ports_

std::vector<dsp::CVPort *> zrythm::plugins::Plugin::cv_in_ports_
protected

Definition at line 331 of file plugin.h.

◆ gain_id_

std::optional<dsp::ProcessorParameter::Uuid> zrythm::plugins::Plugin::gain_id_
protected

Zrythm-provided plugin gain parameter.

Definition at line 326 of file plugin.h.

◆ instantiation_failed_

bool zrythm::plugins::Plugin::instantiation_failed_ = false
protected

Set to true if instantiation failed and the plugin will be treated as disabled.

Definition at line 303 of file plugin.h.

◆ midi_in_port_

dsp::MidiPort* zrythm::plugins::Plugin::midi_in_port_ {}
protected

Definition at line 332 of file plugin.h.

◆ midi_out_port_

dsp::MidiPort* zrythm::plugins::Plugin::midi_out_port_ {}
protected

Definition at line 333 of file plugin.h.

◆ state_dir_parent_path_provider_

StateDirectoryParentPathProvider zrythm::plugins::Plugin::state_dir_parent_path_provider_
protected

Plugins should create a state directory with their UUID as the directory name under the path provided by this.

Definition at line 309 of file plugin.h.

Property Documentation

◆ bypassParameter

zrythm::dsp::ProcessorParameter * zrythm::plugins::Plugin::bypassParameter
read

Definition at line 34 of file plugin.h.

◆ configuration

zrythm::plugins::PluginConfiguration * zrythm::plugins::Plugin::configuration
read

Definition at line 33 of file plugin.h.

◆ gainParameter

zrythm::dsp::ProcessorParameter * zrythm::plugins::Plugin::gainParameter
read

Definition at line 36 of file plugin.h.

◆ instantiationStatus

InstantiationStatus zrythm::plugins::Plugin::instantiationStatus
read

Definition at line 38 of file plugin.h.

◆ programIndex

int zrythm::plugins::Plugin::programIndex
readwrite

Definition at line 32 of file plugin.h.

◆ uiVisible

bool zrythm::plugins::Plugin::uiVisible
readwrite

Definition at line 37 of file plugin.h.


The documentation for this class was generated from the following file: