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

The PluginDescriptor class provides a set of static utility functions and member functions to work with plugin descriptors. More...

#include <src/plugins/plugin_descriptor.h>

Inheritance diagram for zrythm::plugins::PluginDescriptor:
Collaboration diagram for zrythm::plugins::PluginDescriptor:

Public Member Functions

std::unique_ptr< juce::PluginDescription > to_juce_description () const
QString name () const
QString format () const
QString vendor () const
QString category () const
Q_INVOKABLE QString serializeToString () const
 Serializes the descriptor to a string.
Q_INVOKABLE bool isInstrument () const
Q_INVOKABLE bool isEffect () const
Q_INVOKABLE bool isModulator () const
Q_INVOKABLE bool isMidiModifier () const
bool is_same_plugin (const PluginDescriptor &other) const
 Returns whether the two descriptors describe the same plugin, ignoring irrelevant fields.
bool has_custom_ui () const
 Returns if the Plugin has a supported custom UI.
BridgeMode get_min_bridge_mode () const
 Returns the minimum bridge mode required for this plugin.
utils::Utf8String get_icon_name () const
 Gets an appropriate icon name.

Static Public Member Functions

static std::unique_ptr< PluginDescriptorfrom_juce_description (const juce::PluginDescription &juce_desc)
static PluginCategory string_to_category (const utils::Utf8String &str)
static utils::Utf8String category_to_string (PluginCategory category)

Data Fields

utils::Utf8String author_
utils::Utf8String name_
utils::Utf8String website_
PluginCategory category_ = PluginCategory::None
utils::Utf8String category_str_
 Lv2 plugin subcategory.
int num_audio_ins_ = 0
 Number of audio input ports.
int num_midi_ins_ = 0
 Number of MIDI input ports.
int num_audio_outs_ = 0
 Number of audio output ports.
int num_midi_outs_ = 0
 Number of MIDI output ports.
int num_ctrl_ins_ = 0
 Number of input control (plugin param) ports.
int num_ctrl_outs_ = 0
 Number of output control (plugin param) ports.
int num_cv_ins_ = 0
 Number of input CV ports.
int num_cv_outs_ = 0
 Number of output CV ports.
PluginArchitecture arch_ = PluginArchitecture::ARCH_64_BIT
 Architecture (32/64bit).
Protocol::ProtocolType protocol_ = Protocol::ProtocolType::Internal
 Plugin protocol (Lv2/DSSI/LADSPA/VST/etc.).
std::variant< fs::path, utils::Utf8Stringpath_or_id_
 Identifier, for plugin formats that use unique identifiers, or path otherwise.
int64_t unique_id_ {}
 Used by some plugin formats to uniquely identify the plugin.
int juce_compat_deprecated_unique_id_ {}
 This is additionally needed by JUCE for some plugin formats.
BridgeMode min_bridge_mode_ = BridgeMode::None
 Minimum required bridge mode.
bool has_custom_ui_ {}

Properties

QML_ELEMENT QString name
QString vendor
QString format
QString category

Friends

void init_from (PluginDescriptor &obj, const PluginDescriptor &other, utils::ObjectCloneType clone_type)
void to_json (nlohmann::json &j, const PluginDescriptor &p)
void from_json (const nlohmann::json &j, PluginDescriptor &p)
bool operator== (const PluginDescriptor &a, const PluginDescriptor &b)

Detailed Description

The PluginDescriptor class provides a set of static utility functions and member functions to work with plugin descriptors.

It contains information about a plugin such as its name, author, category, protocol, and various port counts.

The static utility functions are used to convert between different plugin-related enumerations and strings, as well as to determine if a plugin protocol is supported.

The member functions provide information about the plugin, such as whether it is an instrument, effect, modulator, or MIDI modifier, whether it is valid for a given slot type and track type, whether it has a custom UI, the minimum required bridge mode, and whether it is whitelisted.

The PluginDescriptor also contains various fields that store the plugin's metadata, such as its author, name, website, category, port counts, architecture, protocol, and unique ID (for VST plugins).

Definition at line 113 of file plugin_descriptor.h.

Member Function Documentation

◆ name()

QString zrythm::plugins::PluginDescriptor::name ( ) const
inlinenodiscard

Definition at line 136 of file plugin_descriptor.h.

◆ serializeToString()

Q_INVOKABLE QString zrythm::plugins::PluginDescriptor::serializeToString ( ) const

Serializes the descriptor to a string.

This is intended to be used in the UI for eg, drag n drop as a MIME type.

◆ from_json

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

Definition at line 229 of file plugin_descriptor.h.

◆ operator==

bool operator== ( const PluginDescriptor & a,
const PluginDescriptor & b )
friend

Definition at line 265 of file plugin_descriptor.h.

◆ to_json

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

Definition at line 204 of file plugin_descriptor.h.

Field Documentation

◆ arch_

PluginArchitecture zrythm::plugins::PluginDescriptor::arch_ = PluginArchitecture::ARCH_64_BIT

Architecture (32/64bit).

Definition at line 300 of file plugin_descriptor.h.

◆ author_

utils::Utf8String zrythm::plugins::PluginDescriptor::author_

Definition at line 277 of file plugin_descriptor.h.

◆ category_

PluginCategory zrythm::plugins::PluginDescriptor::category_ = PluginCategory::None

Definition at line 280 of file plugin_descriptor.h.

◆ category_str_

utils::Utf8String zrythm::plugins::PluginDescriptor::category_str_

Lv2 plugin subcategory.

Definition at line 282 of file plugin_descriptor.h.

◆ has_custom_ui_

bool zrythm::plugins::PluginDescriptor::has_custom_ui_ {}

Definition at line 319 of file plugin_descriptor.h.

◆ juce_compat_deprecated_unique_id_

int zrythm::plugins::PluginDescriptor::juce_compat_deprecated_unique_id_ {}

This is additionally needed by JUCE for some plugin formats.

Definition at line 314 of file plugin_descriptor.h.

◆ min_bridge_mode_

BridgeMode zrythm::plugins::PluginDescriptor::min_bridge_mode_ = BridgeMode::None

Minimum required bridge mode.

Definition at line 317 of file plugin_descriptor.h.

◆ name_

utils::Utf8String zrythm::plugins::PluginDescriptor::name_

Definition at line 278 of file plugin_descriptor.h.

◆ num_audio_ins_

int zrythm::plugins::PluginDescriptor::num_audio_ins_ = 0

Number of audio input ports.

Definition at line 284 of file plugin_descriptor.h.

◆ num_audio_outs_

int zrythm::plugins::PluginDescriptor::num_audio_outs_ = 0

Number of audio output ports.

Definition at line 288 of file plugin_descriptor.h.

◆ num_ctrl_ins_

int zrythm::plugins::PluginDescriptor::num_ctrl_ins_ = 0

Number of input control (plugin param) ports.

Definition at line 292 of file plugin_descriptor.h.

◆ num_ctrl_outs_

int zrythm::plugins::PluginDescriptor::num_ctrl_outs_ = 0

Number of output control (plugin param) ports.

Definition at line 294 of file plugin_descriptor.h.

◆ num_cv_ins_

int zrythm::plugins::PluginDescriptor::num_cv_ins_ = 0

Number of input CV ports.

Definition at line 296 of file plugin_descriptor.h.

◆ num_cv_outs_

int zrythm::plugins::PluginDescriptor::num_cv_outs_ = 0

Number of output CV ports.

Definition at line 298 of file plugin_descriptor.h.

◆ num_midi_ins_

int zrythm::plugins::PluginDescriptor::num_midi_ins_ = 0

Number of MIDI input ports.

Definition at line 286 of file plugin_descriptor.h.

◆ num_midi_outs_

int zrythm::plugins::PluginDescriptor::num_midi_outs_ = 0

Number of MIDI output ports.

Definition at line 290 of file plugin_descriptor.h.

◆ path_or_id_

std::variant<fs::path, utils::Utf8String> zrythm::plugins::PluginDescriptor::path_or_id_

Identifier, for plugin formats that use unique identifiers, or path otherwise.

Definition at line 308 of file plugin_descriptor.h.

◆ protocol_

Protocol::ProtocolType zrythm::plugins::PluginDescriptor::protocol_ = Protocol::ProtocolType::Internal

Plugin protocol (Lv2/DSSI/LADSPA/VST/etc.).

Definition at line 302 of file plugin_descriptor.h.

◆ unique_id_

int64_t zrythm::plugins::PluginDescriptor::unique_id_ {}

Used by some plugin formats to uniquely identify the plugin.

Definition at line 311 of file plugin_descriptor.h.

◆ website_

utils::Utf8String zrythm::plugins::PluginDescriptor::website_

Definition at line 279 of file plugin_descriptor.h.

Property Documentation

◆ category

QString zrythm::plugins::PluginDescriptor::category
read

Definition at line 120 of file plugin_descriptor.h.

◆ format

QString zrythm::plugins::PluginDescriptor::format
read

Definition at line 119 of file plugin_descriptor.h.

◆ name

QML_ELEMENT QString zrythm::plugins::PluginDescriptor::name
read

Definition at line 117 of file plugin_descriptor.h.

◆ vendor

QString zrythm::plugins::PluginDescriptor::vendor
read

Definition at line 118 of file plugin_descriptor.h.


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