LMMS
Loading...
Searching...
No Matches
Mallets.h
Go to the documentation of this file.
1/*
2 * Mallets.h - tuned instruments that one would bang upon
3 *
4 * Copyright (c) 2006-2008 Danny McRae <khjklujn/at/users.sourceforge.net>
5 *
6 *
7 * This file is part of LMMS - https://lmms.io
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public
11 * License as published by the Free Software Foundation; either
12 * version 2 of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this program (see COPYING); if not, write to the
21 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 * Boston, MA 02110-1301 USA.
23 *
24 */
25
26
27#ifndef _MALLET_H
28#define _MALLET_H
29
30#include <stk/Instrmnt.h>
31
32#include "ComboBox.h"
33#include "Instrument.h"
34#include "InstrumentView.h"
35#include "Knob.h"
36#include "NotePlayHandle.h"
37#include "LedCheckBox.h"
38
39// As of Stk 4.4 all classes and types have been moved to the namespace "stk".
40// However in older versions this namespace does not exist, therefore declare it
41// so this plugin builds with all versions of Stk.
42namespace stk { } ;
43
44namespace lmms
45{
46
47
48using namespace stk;
49
50static const int MALLETS_PRESET_VERSION = 1;
51
52
53namespace gui
54{
55class MalletsInstrumentView;
56} // namespace gui
57
58
60{
61public:
62 // ModalBar
63 MalletsSynth( const StkFloat _pitch,
64 const StkFloat _velocity,
65 const StkFloat _control1,
66 const StkFloat _control2,
67 const StkFloat _control4,
68 const StkFloat _control8,
69 const StkFloat _control11,
70 const int _control16,
71 const uint8_t _delay,
72 const sample_rate_t _sample_rate );
73
74 // TubeBell
75 MalletsSynth( const StkFloat _pitch,
76 const StkFloat _velocity,
77 const int _preset,
78 const StkFloat _control1,
79 const StkFloat _control2,
80 const StkFloat _control4,
81 const StkFloat _control11,
82 const StkFloat _control128,
83 const uint8_t _delay,
84 const sample_rate_t _sample_rate );
85
86 // BandedWG
87 MalletsSynth( const StkFloat _pitch,
88 const StkFloat _velocity,
89 const StkFloat _control2,
90 const StkFloat _control4,
91 const StkFloat _control11,
92 const int _control16,
93 const StkFloat _control64,
94 const StkFloat _control128,
95 const uint8_t _delay,
96 const sample_rate_t _sample_rate );
97
99 {
100 if (m_voice) {m_voice->noteOff(0.0);}
101 delete[] m_delay;
102 delete m_voice;
103 }
104
106 {
107 if( m_voice == nullptr )
108 {
109 return( 0.0f );
110 }
111 else
112 {
113 StkFloat s = m_voice->tick();
115 m_delayWrite++;
116 return( s );
117 }
118 }
119
121 {
122 StkFloat s = m_delay[m_delayRead];
123 m_delayRead++;
124 return( s );
125 }
126
127 inline void setFrequency(const StkFloat _pitch)
128 {
129 if (m_voice) { m_voice->setFrequency(_pitch); }
130 }
131
132 // ModalBar updates
133 inline void setVibratoGain(const StkFloat _control8)
134 {
135 // bug in stk, Control Number 8 and 1 swapped in ModalBar
136 // we send the control number for stick direct mix instead
137 if (m_voice) { m_voice->controlChange(8, _control8); }
138 }
139
140 inline void setVibratoFreq(const StkFloat _control11)
141 {
142 if (m_voice) { m_voice->controlChange(11, _control11); }
143 }
144
145 // Tubular Bells updates
146 inline void setADSR(const StkFloat _control128)
147 {
148 if (m_voice) { m_voice->controlChange(128, _control128); }
149 }
150
151 inline void setLFODepth(const StkFloat _control1)
152 {
153 if (m_voice) { m_voice->controlChange(1, _control1); }
154 }
155
156 inline void setLFOSpeed(const StkFloat _control11)
157 {
158 if (m_voice) { m_voice->controlChange(11, _control11); }
159 }
160
161 inline int presetIndex()
162 {
163 return m_presetIndex;
164 }
165
167 {
169 }
170
171
172protected:
174 Instrmnt * m_voice;
175
176 StkFloat * m_delay;
179};
180
181
182
183
238
239namespace gui
240{
241
242
244{
245 Q_OBJECT
246public:
248 QWidget * _parent );
249 ~MalletsInstrumentView() override = default;
250
251public slots:
252 void changePreset();
253
254private:
255 void modelChanged() override;
256
257 void setWidgetBackground( QWidget * _widget, const QString & _pic );
258 QWidget * setupModalBarControls( QWidget * _parent );
259 QWidget * setupTubeBellControls( QWidget * _parent );
260 QWidget * setupBandedWGControls( QWidget * _parent );
261
268
275
278// Knob * m_motionKnob;
279// Knob * m_vibratoKnob;
281// LedCheckBox * m_strikeLED;
282
286};
287
288
289} // namespace gui
290
291} // namespace lmms
292
293#endif
Definition AutomatableModel.h:497
Definition ComboBoxModel.h:39
Definition AutomatableModel.h:463
Instrument(InstrumentTrack *_instrument_track, const Descriptor *_descriptor, const Descriptor::SubPluginFeatures::Key *key=nullptr, Flags flags=Flag::NoFlags)
Definition Instrument.cpp:38
Definition InstrumentTrack.h:62
Definition AutomatableModel.h:481
Definition Mallets.h:185
bool m_filesMissing
Definition Mallets.h:232
gui::PluginView * instantiateView(QWidget *_parent) override
Create a view for the model.
Definition Mallets.cpp:424
BoolModel m_strikeModel
Definition Mallets.h:222
QString nodeName() const override
Definition Mallets.cpp:274
FloatModel m_vibratoGainModel
Definition Mallets.h:207
FloatModel m_stickModel
Definition Mallets.h:209
BoolModel m_isOldVersionModel
Definition Mallets.h:228
FloatModel m_motionModel
Definition Mallets.h:218
FloatModel m_crossfadeModel
Definition Mallets.h:212
FloatModel m_adsrModel
Definition Mallets.h:215
IntModel m_versionModel
Definition Mallets.h:227
~MalletsInstrument() override=default
FloatModel m_pressureModel
Definition Mallets.h:217
FloatModel m_spreadModel
Definition Mallets.h:225
FloatModel m_velocityModel
Definition Mallets.h:220
ComboBoxModel m_presetsModel
Definition Mallets.h:224
void loadSettings(const QDomElement &_this) override
Definition Mallets.cpp:168
QVector< sample_t > m_scalers
Definition Mallets.h:230
FloatModel m_lfoDepthModel
Definition Mallets.h:214
FloatModel m_lfoSpeedModel
Definition Mallets.h:213
void saveSettings(QDomDocument &_doc, QDomElement &_parent) override
Definition Mallets.cpp:135
MalletsInstrument(InstrumentTrack *_instrument_track)
Definition Mallets.cpp:72
void playNote(NotePlayHandle *_n, SampleFrame *_working_buffer) override
Definition Mallets.cpp:282
FloatModel m_vibratoModel
Definition Mallets.h:219
FloatModel m_randomModel
Definition Mallets.h:226
FloatModel m_vibratoFreqModel
Definition Mallets.h:208
FloatModel m_positionModel
Definition Mallets.h:206
void deleteNotePluginData(NotePlayHandle *_n) override
Definition Mallets.cpp:416
FloatModel m_hardnessModel
Definition Mallets.h:205
FloatModel m_modulatorModel
Definition Mallets.h:211
sample_t nextSampleLeft()
Definition Mallets.h:105
MalletsSynth(const StkFloat _pitch, const StkFloat _velocity, const StkFloat _control1, const StkFloat _control2, const StkFloat _control4, const StkFloat _control8, const StkFloat _control11, const int _control16, const uint8_t _delay, const sample_rate_t _sample_rate)
Definition Mallets.cpp:641
int presetIndex()
Definition Mallets.h:161
StkFloat * m_delay
Definition Mallets.h:176
void setPresetIndex(int presetIndex)
Definition Mallets.h:166
uint8_t m_delayRead
Definition Mallets.h:177
void setFrequency(const StkFloat _pitch)
Definition Mallets.h:127
int m_presetIndex
Definition Mallets.h:173
void setLFODepth(const StkFloat _control1)
Definition Mallets.h:151
~MalletsSynth()
Definition Mallets.h:98
void setVibratoGain(const StkFloat _control8)
Definition Mallets.h:133
uint8_t m_delayWrite
Definition Mallets.h:178
sample_t nextSampleRight()
Definition Mallets.h:120
void setLFOSpeed(const StkFloat _control11)
Definition Mallets.h:156
void setVibratoFreq(const StkFloat _control11)
Definition Mallets.h:140
void setADSR(const StkFloat _control128)
Definition Mallets.h:146
Instrmnt * m_voice
Definition Mallets.h:174
Definition NotePlayHandle.h:48
Definition SampleFrame.h:41
Definition ComboBox.h:38
Instrument view with fixed LMMS-default size.
Definition InstrumentView.h:66
Definition Knob.h:47
Definition Mallets.h:244
Knob * m_hardnessKnob
Definition Mallets.h:263
Knob * m_vibratoFreqKnob
Definition Mallets.h:266
Knob * m_lfoSpeedKnob
Definition Mallets.h:272
Knob * m_modulatorKnob
Definition Mallets.h:270
QWidget * m_tubeBellWidget
Definition Mallets.h:269
~MalletsInstrumentView() override=default
void changePreset()
Definition Mallets.cpp:611
Knob * m_positionKnob
Definition Mallets.h:264
QWidget * setupTubeBellControls(QWidget *_parent)
Definition Mallets.cpp:523
Knob * m_vibratoGainKnob
Definition Mallets.h:265
MalletsInstrumentView(MalletsInstrument *_instrument, QWidget *_parent)
Definition Mallets.cpp:434
Knob * m_stickKnob
Definition Mallets.h:267
QWidget * setupBandedWGControls(QWidget *_parent)
Definition Mallets.cpp:554
Knob * m_pressureKnob
Definition Mallets.h:277
QWidget * m_modalBarWidget
Definition Mallets.h:262
QWidget * setupModalBarControls(QWidget *_parent)
Definition Mallets.cpp:492
Knob * m_randomKnob
Definition Mallets.h:285
Knob * m_adsrKnob
Definition Mallets.h:274
Knob * m_crossfadeKnob
Definition Mallets.h:271
ComboBox * m_presetsCombo
Definition Mallets.h:283
void setWidgetBackground(QWidget *_widget, const QString &_pic)
Definition Mallets.cpp:480
Knob * m_velocityKnob
Definition Mallets.h:280
void modelChanged() override
Definition Mallets.cpp:585
QWidget * m_bandedWGWidget
Definition Mallets.h:276
Knob * m_lfoDepthKnob
Definition Mallets.h:273
Knob * m_spreadKnob
Definition Mallets.h:284
Definition PluginView.h:36
unsigned s
Definition inflate.c:1555
unsigned char uint8_t
Definition mid.cpp:98
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
std::uint32_t sample_rate_t
Definition LmmsTypes.h:42
float sample_t
Definition LmmsTypes.h:39
static const int MALLETS_PRESET_VERSION
Definition Mallets.h:50
Definition Mallets.h:42