|
LMMS
|
#include <Lv2ControlBase.h>
Public Member Functions | |
| void | shutdown () |
| void | init (Model *meAsModel) |
| const LilvPlugin * | getPlugin () const |
| Lv2Proc * | control (std::size_t idx) |
| const Lv2Proc * | control (std::size_t idx) const |
| bool | hasGui () const |
| void | setHasGui (bool val) |
| Public Member Functions inherited from lmms::LinkedModelGroups | |
| virtual | ~LinkedModelGroups ()=default |
| void | linkAllModels () |
| void | saveSettings (class QDomDocument &doc, class QDomElement &that) |
| void | loadSettings (const class QDomElement &that) |
Static Public Member Functions | |
| static Plugin::Type | check (const LilvPlugin *m_plugin, std::vector< PluginIssue > &issues) |
Protected Member Functions | |
| Lv2ControlBase (class Model *that, const QString &uri) | |
| Lv2ControlBase (const Lv2ControlBase &)=delete | |
| ~Lv2ControlBase () override | |
| void | reload () |
| Lv2ControlBase & | operator= (const Lv2ControlBase &)=delete |
| LinkedModelGroup * | getGroup (std::size_t idx) override |
| const LinkedModelGroup * | getGroup (std::size_t idx) const override |
| void | copyModelsFromLmms () |
| void | copyModelsToLmms () const |
| Bring values from all ports to the LMMS core. | |
| void | copyBuffersFromLmms (const SampleFrame *buf, f_cnt_t frames) |
| Copy buffer passed by LMMS into our ports. | |
| void | copyBuffersToLmms (SampleFrame *buf, f_cnt_t frames) const |
| Copy our ports into buffers passed by LMMS. | |
| void | run (f_cnt_t frames) |
| Run the Lv2 plugin instance for. | |
| void | saveSettings (QDomDocument &doc, QDomElement &that) |
| void | loadSettings (const QDomElement &that) |
| void | loadFile (const QString &file) |
| std::size_t | controlCount () const |
| QString | nodeName () const |
| bool | hasNoteInput () const |
| void | handleMidiInputEvent (const class MidiEvent &event, const class TimePos &time, f_cnt_t offset) |
Private Attributes | |
| std::vector< std::unique_ptr< Lv2Proc > > | m_procs |
| bool | m_hasGUI = false |
| unsigned | m_channelsPerProc |
| const LilvPlugin * | m_plugin |
Common base class for Lv2 plugins
This class contains a vector of Lv2Proc, usually 1 (for stereo plugins) or 2 (for mono plugins). Most of the logic is done there, this class primarily forwards work to the Lv2Proc and collects the results.
This class provides everything Lv2 plugins have in common. It's not named Lv2Plugin, because it does not inherit Instrument the Plugin subclass Effect does not inherit this class
This class would usually be a Model subclass. However, Qt doesn't allow this: inheriting only from Model will cause diamond inheritance for QObject, which will cause errors with Q_OBJECT making this a direct subclass of Instrument resp. EffectControls would require CRTP, which would make this class a template class, which would conflict with Q_OBJECT
The consequence is that this class can neither inherit QObject or Model, nor Instrument or EffectControls, which means in fact: this class contains no signals or slots, but it offers stubs for slots that shall be called by child classes this class can not override virtuals of Instrument or EffectControls, so it will offer functions that must be called by virtuals in its child class
|
protecteddelete |
|
overrideprotecteddefault |
|
static |
|
inline |
|
protected |
|
protected |
Copy buffer passed by LMMS into our ports.
|
protected |
Copy our ports into buffers passed by LMMS.
|
protected |
Copy values from the LMMS core (connected models, MIDI events, ...) into the respective ports
|
protected |
Bring values from all ports to the LMMS core.
|
overrideprotectedvirtual |
Implements lmms::LinkedModelGroups.
|
overrideprotectedvirtual |
Derived classes must return the group with index idx, or nullptr if is out of range
Implements lmms::LinkedModelGroups.
|
inline |
|
protected |
|
inline |
|
protected |
|
inlineprotected |
|
protecteddelete |
|
protected |
Run the Lv2 plugin instance for.
| frames | frames |
|
protected |
|
inline |
| void lmms::Lv2ControlBase::shutdown | ( | ) |
|
private |
|
private |
|
private |
|
private |
Independent processors If this is a mono effect, the vector will have size 2 in order to fulfill LMMS' requirement of having stereo input and output