LMMS
Loading...
Searching...
No Matches
VstPlugin.h
Go to the documentation of this file.
1/*
2 * VstPlugin.h - declaration of VstPlugin class
3 *
4 * Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef _VST_PLUGIN_H
26#define _VST_PLUGIN_H
27
28#include <QMap>
29#include <QPointer>
30#include <QSize>
31#include <QString>
32#include <QTimer>
33
34#include "Knob.h"
35#include "JournallingObject.h"
36#include "RemotePlugin.h"
37
38#include "vstbase_export.h"
39
40namespace lmms
41{
42
43
44class VSTBASE_EXPORT VstPlugin : public RemotePlugin, public JournallingObject
45{
46 Q_OBJECT
47public:
48 VstPlugin( const QString & _plugin );
49 ~VstPlugin() override;
50
51 void tryLoad( const QString &remoteVstPluginExecutable );
52
53 bool processMessage( const message & _m ) override;
54
55 inline bool hasEditor() const
56 {
57 return m_pluginWindowID != 0;
58 }
59
63 virtual QWidget* editor();
64
65 inline const QString & name() const
66 {
67 return m_name;
68 }
69
70 inline int version() const
71 {
72 return m_version;
73 }
74
75 inline const QString & vendorString() const
76 {
77 return m_vendorString;
78 }
79
80 inline const QString & productString() const
81 {
82 return m_productString;
83 }
84
85 inline const QString& currentProgramName() const
86 {
88 }
89
90 inline const QString& allProgramNames() const
91 {
92 return m_allProgramNames;
93 }
94
95 const std::vector<QString>& allParameterLabels() const
96 {
98 }
99
100 const std::vector<QString>& allParameterDisplays() const
101 {
103 }
104
105 int currentProgram();
106
107 const QMap<QString, QString> & parameterDump();
108 void setParameterDump( const QMap<QString, QString> & _pdump );
109
110
111 QWidget * pluginWidget();
112
113 void loadSettings( const QDomElement & _this ) override;
114 void saveSettings( QDomDocument & _doc, QDomElement & _this ) override;
115
116 QString nodeName() const override
117 {
118 return "vstplugin";
119 }
120
121
122 virtual void createUI(QWidget *parent);
123 bool eventFilter(QObject *obj, QEvent *event) override;
124
125 QString embedMethod() const;
126
127public slots:
128 void setTempo( lmms::bpm_t _bpm );
129 void updateSampleRate();
130 void openPreset();
131 void setProgram( int index );
132 void rotateProgram( int offset );
133 void loadProgramNames();
134 void loadParameterLabels();
135 void loadParameterDisplays();
136 void updateParameterLabel(int index);
137 void updateParameterDisplay(int index);
138 void savePreset();
139 void setParam( int i, float f );
140 void idleUpdate();
141
142 void showUI() override;
143 void hideUI() override;
144 void toggleUI() override;
145
146 void handleClientEmbed();
147
148private:
149 void loadChunk( const QByteArray & _chunk );
150 QByteArray saveChunk();
151
152 void toggleEditorVisibility(int visible = -1);
153
154 QString m_plugin;
155 QPointer<QWidget> m_pluginWidget;
158 const QString m_embedMethod;
159
160 QString m_name;
166 std::vector<QString> m_allParameterLabels;
167 std::vector<QString> m_allParameterDisplays;
168
169 QString p_name;
170
171 QMap<QString, QString> m_parameterDump;
172
174
176
177} ;
178
179namespace gui {
180
181class VSTBASE_EXPORT VstPluginKnob : public Knob
182{
183public:
184 VstPluginKnob(VstPlugin* plugin, int paramIndex, const QString& name, QWidget* parent);
185 ~VstPluginKnob() override = default;
186
187private:
188 void timerEvent(QTimerEvent* event) override;
189
190 auto getCustomFloatingText() -> QString override;
191 auto getCustomFloatingTextUpdate() -> std::optional<QString> override;
192
193 auto getParameterText() const -> QString;
194
195 VstPlugin* m_plugin = nullptr;
197
200};
201
202} // namespace gui
203} // namespace lmms
204
205#endif
UI * createUI()
Definition DistrhoUI3BandEQ.cpp:206
JournallingObject()
Definition JournallingObject.cpp:36
RemotePlugin()
Definition RemotePlugin.cpp:133
Definition VstPlugin.h:45
VstPlugin(const QString &_plugin)
Definition VstPlugin.cpp:127
QMap< QString, QString > m_parameterDump
Definition VstPlugin.h:171
const QString m_embedMethod
Definition VstPlugin.h:158
QTimer m_idleTimer
Definition VstPlugin.h:175
int m_version
Definition VstPlugin.h:161
QString m_allProgramNames
Definition VstPlugin.h:165
const QString & productString() const
Definition VstPlugin.h:80
QString m_currentProgramName
Definition VstPlugin.h:164
const QString & currentProgramName() const
Definition VstPlugin.h:85
QString m_vendorString
Definition VstPlugin.h:162
const QString & allProgramNames() const
Definition VstPlugin.h:90
QString m_plugin
Definition VstPlugin.h:154
int m_currentProgram
Definition VstPlugin.h:173
const QString & name() const
Definition VstPlugin.h:65
std::vector< QString > m_allParameterLabels
Definition VstPlugin.h:166
QString p_name
Definition VstPlugin.h:169
QString m_name
Definition VstPlugin.h:160
void tryLoad(const QString &remoteVstPluginExecutable)
Definition VstPlugin.cpp:210
bool processMessage(const message &_m) override
Definition VstPlugin.cpp:404
std::vector< QString > m_allParameterDisplays
Definition VstPlugin.h:167
const std::vector< QString > & allParameterDisplays() const
Definition VstPlugin.h:100
const std::vector< QString > & allParameterLabels() const
Definition VstPlugin.h:95
QString nodeName() const override
Definition VstPlugin.h:116
QSize m_pluginGeometry
Definition VstPlugin.h:157
int version() const
Definition VstPlugin.h:70
int m_pluginWindowID
Definition VstPlugin.h:156
const QString & vendorString() const
Definition VstPlugin.h:75
QPointer< QWidget > m_pluginWidget
Definition VstPlugin.h:155
bool hasEditor() const
Definition VstPlugin.h:55
QString m_productString
Definition VstPlugin.h:163
Knob(KnobType _knob_num, QWidget *_parent=nullptr, const QString &_name=QString())
Construct a Knob with the given style and no label.
Definition Knob.cpp:41
VstPlugin * m_plugin
Definition VstPlugin.h:195
int m_paramIndex
Definition VstPlugin.h:196
auto getCustomFloatingText() -> QString override
Definition VstPlugin.cpp:895
VstPluginKnob(VstPlugin *plugin, int paramIndex, const QString &name, QWidget *parent)
Definition VstPlugin.cpp:869
auto getCustomFloatingTextUpdate() -> std::optional< QString > override
Definition VstPlugin.cpp:910
int m_rateLimitTimerId
Definition VstPlugin.h:198
bool m_updateNow
Definition VstPlugin.h:199
auto getParameterText() const -> QString
Definition VstPlugin.cpp:918
~VstPluginKnob() override=default
void timerEvent(QTimerEvent *event) override
Definition VstPlugin.cpp:878
register unsigned i
Definition inflate.c:1575
unsigned f
Definition inflate.c:1572
static const char * name
Definition pugl.h:1582
static uintptr_t parent
Definition pugl.h:1644
Definition AudioPortAudio.cpp:209
Definition AudioAlsa.cpp:35
std::uint16_t bpm_t
Definition LmmsTypes.h:45
#define false
Definition ordinals.h:83
Definition RemotePluginBase.h:356
#define const
Definition zconf.h:137