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

A flexible container for plugins and nested plugin groups. More...

#include <src/plugins/plugin_group.h>

Inheritance diagram for zrythm::plugins::PluginGroup:
Collaboration diagram for zrythm::plugins::PluginGroup:

Public Types

enum class  ProcessingTypeHint : std::uint8_t { Serial , Parallel , Custom }
enum class  DeviceGroupType : std::uint8_t { Audio , MIDI , Instrument , CV }
enum  DeviceGroupListModelRoles { DeviceGroupPtrRole = Qt::UserRole + 1 }

Public Member Functions

 PluginGroup (dsp::ProcessorBase::ProcessorBaseDependencies dependencies, plugins::PluginRegistry &plugin_registry, DeviceGroupType type, ProcessingTypeHint processing_type, QObject *parent=nullptr)
QString name () const
void setName (const QString &name)
Q_SIGNAL void nameChanged (const QString &name)
QHash< int, QByteArray > roleNames () const override
int rowCount (const QModelIndex &parent=QModelIndex()) const override
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
void insert_plugin (plugins::PluginUuidReference plugin_ref, int index=-1)
void append_plugin (plugins::PluginUuidReference plugin_ref)
plugins::PluginUuidReference remove_plugin (const plugins::Plugin::Uuid &plugin_id)
QVariant element_at_idx (size_t idx) const
void get_plugins (std::vector< plugins::PluginPtrVariant > &plugins) const
 Returns all plugins in the group (scanning recursively).

Properties

QString name

Friends

void to_json (nlohmann::json &j, const PluginGroup &l)
void from_json (const nlohmann::json &j, PluginGroup &l)

Detailed Description

A flexible container for plugins and nested plugin groups.

PluginGroup provides a unified architecture for implementing racks, chains, and layers. It supports both serial and parallel processing modes, recursive nesting, and type-safe signal routing for Audio, MIDI, and Instrument processing.

Key features:

  • Universal container for plugins and nested groups
  • Serial processing: chain elements sequentially
  • Parallel processing: process elements separately and sum outputs
  • Recursive nesting: groups can contain other groups
  • Type safety: separate Audio, MIDI, and Instrument signal types
  • Built-in fader for level control and muting/soloing

Common use cases:

  • Simple plugin wrapper with fader control
  • Effect chains (serial processing)
  • Layered instruments (parallel processing)
  • Complex nested rack structures

Integration:

  • Used in channels for MIDI FX, Instrument, and Audio FX processing
  • Exposes QML model interface for UI integration

Definition at line 44 of file plugin_group.h.

Member Enumeration Documentation

◆ DeviceGroupListModelRoles

enum zrythm::plugins::PluginGroup::DeviceGroupListModelRoles

Definition at line 102 of file plugin_group.h.

◆ DeviceGroupType

enum class zrythm::plugins::PluginGroup::DeviceGroupType : std::uint8_t
strong

Definition at line 76 of file plugin_group.h.

◆ ProcessingTypeHint

enum class zrythm::plugins::PluginGroup::ProcessingTypeHint : std::uint8_t
strong
Enumerator
Serial 

Process each element in sequence, connecting the output to the next element's input, and the last output to the fader.

This can be used to mimic a processing rack.

Parallel 

Process all elements separately and sum their outputs to the fader.

This can be used to mimic layers inside racks.

Custom 

Processing is completely up to the user of this class.

Definition at line 52 of file plugin_group.h.

Member Function Documentation

◆ append_plugin()

void zrythm::plugins::PluginGroup::append_plugin ( plugins::PluginUuidReference plugin_ref)
inline

Definition at line 120 of file plugin_group.h.

◆ get_plugins()

void zrythm::plugins::PluginGroup::get_plugins ( std::vector< plugins::PluginPtrVariant > & plugins) const

Returns all plugins in the group (scanning recursively).

Parameters
plsVector to add plugins to.

◆ name()

QString zrythm::plugins::PluginGroup::name ( ) const
inline

Definition at line 98 of file plugin_group.h.

Property Documentation

◆ name

QString zrythm::plugins::PluginGroup::name
readwrite

Definition at line 47 of file plugin_group.h.


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