|
Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
|
DSP processing plugin. More...
#include <src/plugins/plugin.h>


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. | |
| PluginConfiguration * | configuration () const |
| Q_SIGNAL void | configurationChanged (PluginConfiguration *configuration) |
| Emitted when the configuration is set on the plugin. | |
| dsp::ProcessorParameter * | bypassParameter () const |
| dsp::ProcessorParameter * | gainParameter () 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. | |
| PluginDescriptor & | get_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::MidiPort * | midi_in_port_ {} |
| dsp::MidiPort * | midi_out_port_ {} |
| dsp::ProcessorParameter * | bypass_param_rt_ {} |
Friends | |
| void | to_json (nlohmann::json &j, const Plugin &p) |
| void | from_json (const nlohmann::json &j, Plugin &p) |
| using zrythm::plugins::Plugin::StateDirectoryParentPathProvider = std::function<fs::path ()> |
|
strong |
|
protected |
Creates/initializes a plugin and its internal plugin (LV2, etc.) using the given setting.
| ZrythmException | If the plugin could not be created. |
|
inline |
|
inline |
| 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.
|
inline |
|
inlinenoexcept |
|
finalvirtual |
Reimplemented from zrythm::dsp::ProcessorBase.
|
finalvirtualnoexcept |
Custom processor logic after processing all owned parameters.
By default, this does passthrough to same-type ports.
Reimplemented from zrythm::dsp::ProcessorBase.
|
finalvirtual |
Reimplemented from zrythm::dsp::ProcessorBase.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| 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.
| error | Non-empty on instantiation failure. |
|
inline |
|
pure virtual |
Load the state from the default directory or from abs_state_dir if given.
| ZrythmException | If the state could not be saved. |
Implemented in zrythm::plugins::CarlaNativePlugin, zrythm::plugins::ClapPlugin, zrythm::plugins::InternalPluginBase, and zrythm::plugins::JucePlugin.
|
inline |
|
pure virtual |
Saves the state inside the standard state directory.
| abs_state_dir | If passed, the state will be savedinside this directory instead of the plugin's state directory. Used when saving presets. |
| ZrythmException | If the state could not be saved. |
Implemented in zrythm::plugins::ClapPlugin, zrythm::plugins::InternalPluginBase, and zrythm::plugins::JucePlugin.
| 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.
|
inline |
|
inline |
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
read |
|
read |
|
read |
|
read |