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

JUCE-based plugin host implementation. More...

#include <src/plugins/juce_plugin.h>

Inheritance diagram for zrythm::plugins::JucePlugin:
Collaboration diagram for zrythm::plugins::JucePlugin:

Public Types

using CreatePluginInstanceAsyncFunc
Public Types inherited from zrythm::plugins::Plugin
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

 JucePlugin (dsp::ProcessorBase::ProcessorBaseDependencies dependencies, StateDirectoryParentPathProvider state_path_provider, CreatePluginInstanceAsyncFunc create_plugin_instance_async_func, std::function< units::sample_rate_t()> sample_rate_provider, std::function< nframes_t()> buffer_size_provider, PluginHostWindowFactory top_level_window_provider, QObject *parent=nullptr)
 Constructor for JucePlugin.
void save_state (std::optional< fs::path > abs_state_dir) override
 Saves the state inside the standard state directory.
void load_state (std::optional< fs::path > abs_state_dir) override
 Load the state from the default directory or from abs_state_dir if given.
nframes_t get_single_playback_latency () const override
 Returns the latency of only the given processable, without adding the previous/next latencies.
Public Member Functions inherited from zrythm::plugins::Plugin
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
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::utils::UuidIdentifiableObject< Plugin >
UuidIdentifiableObject & operator= (const UuidIdentifiableObject &other)=default
auto get_uuid () const

Protected Member Functions

void prepare_for_processing_impl (units::sample_rate_t sample_rate, nframes_t max_block_length) override
void process_impl (EngineProcessTimeInfo time_info) noexcept override
Protected Member Functions inherited from zrythm::plugins::Plugin
 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

Friends

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

Additional Inherited Members

Protected Attributes inherited from zrythm::plugins::Plugin
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 inherited from zrythm::plugins::Plugin
int programIndex
zrythm::plugins::PluginConfigurationconfiguration
zrythm::dsp::ProcessorParameterbypassParameter
zrythm::dsp::ProcessorParametergainParameter
bool uiVisible
InstantiationStatus instantiationStatus

Detailed Description

JUCE-based plugin host implementation.

This class provides hosting capabilities for VST3, AU, and other JUCE-supported plugin formats using the JUCE 8 framework.

Definition at line 19 of file juce_plugin.h.

Member Typedef Documentation

◆ CreatePluginInstanceAsyncFunc

using zrythm::plugins::JucePlugin::CreatePluginInstanceAsyncFunc
Initial value:
std::function<void (
const juce::PluginDescription &,
double,
int,
juce::AudioPluginFormat::AudioPluginFormat::PluginCreationCallback)>

Definition at line 26 of file juce_plugin.h.

Constructor & Destructor Documentation

◆ JucePlugin()

zrythm::plugins::JucePlugin::JucePlugin ( dsp::ProcessorBase::ProcessorBaseDependencies dependencies,
StateDirectoryParentPathProvider state_path_provider,
CreatePluginInstanceAsyncFunc create_plugin_instance_async_func,
std::function< units::sample_rate_t()> sample_rate_provider,
std::function< nframes_t()> buffer_size_provider,
PluginHostWindowFactory top_level_window_provider,
QObject * parent = nullptr )

Constructor for JucePlugin.

Parameters
dependenciesProcessor dependencies
state_path_providerFunction to provide state directory path
format_managerJUCE format manager for plugin creation
sample_rate_providerFunction to provide current sample rate
buffer_size_providerFunction to provide current buffer size
parentParent QObject

Member Function Documentation

◆ get_single_playback_latency()

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

Returns the latency of only the given processable, without adding the previous/next latencies.

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

◆ load_state()

void zrythm::plugins::JucePlugin::load_state ( std::optional< fs::path > abs_state_dir)
overridevirtual

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

Exceptions
ZrythmExceptionIf the state could not be saved.

Implements zrythm::plugins::Plugin.

◆ prepare_for_processing_impl()

void zrythm::plugins::JucePlugin::prepare_for_processing_impl ( units::sample_rate_t sample_rate,
nframes_t max_block_length )
overrideprotectedvirtual

Reimplemented from zrythm::plugins::Plugin.

◆ process_impl()

void zrythm::plugins::JucePlugin::process_impl ( EngineProcessTimeInfo time_info)
overrideprotectedvirtualnoexcept

◆ save_state()

void zrythm::plugins::JucePlugin::save_state ( std::optional< fs::path > abs_state_dir)
overridevirtual

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.

Implements zrythm::plugins::Plugin.

◆ from_json

void from_json ( const nlohmann::json & j,
JucePlugin & p )
friend

Definition at line 130 of file juce_plugin.h.

◆ to_json

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

Definition at line 119 of file juce_plugin.h.


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