LMMS
Loading...
Searching...
No Matches
SidInstrument.h
Go to the documentation of this file.
1/*
2 * SidInstrument.h - ResID based software-synthesizer
3 *
4 * Copyright (c) 2008 Csaba Hruska <csaba.hruska/at/gmail.com>
5 * Attila Herman <attila589/at/gmail.com>
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 _SID_H
28#define _SID_H
29
30#include "AutomatableModel.h"
31#include "Instrument.h"
32#include "InstrumentView.h"
33
34namespace lmms
35{
36
37
38class NotePlayHandle; // IWYU pragma: keep
39
40namespace gui
41{
42class Knob;
45class PixmapButton;
46}
47
81
83{
84 Q_OBJECT
85public:
92 constexpr static auto NumFilterTypes = static_cast<std::size_t>(FilterType::Count);
93
94 enum class ChipModel {
98 };
99 constexpr static auto NumChipModels = static_cast<std::size_t>(ChipModel::Count);
100
101 SidInstrument( InstrumentTrack * _instrument_track );
102 ~SidInstrument() override = default;
103
104 void playNote( NotePlayHandle * _n,
105 SampleFrame* _working_buffer ) override;
106 void deleteNotePluginData( NotePlayHandle * _n ) override;
107
108
109 void saveSettings( QDomDocument & _doc, QDomElement & _parent ) override;
110 void loadSettings( const QDomElement & _this ) override;
111
112 QString nodeName() const override;
113
114 float desiredReleaseTimeMs() const override;
115
116 gui::PluginView* instantiateView( QWidget * _parent ) override;
117
118
119/*public slots:
120 void updateKnobHint();
121 void updateKnobToolTip();*/
122
123private:
124 // voices
126
127 // filter
131
132 // misc
135
137
139
140} ;
141
142
143namespace gui
144{
145
146
148{
149 Q_OBJECT
150public:
151 SidInstrumentView( Instrument * _instrument, QWidget * _parent );
152 ~SidInstrumentView() override = default;
153
154private:
155 void modelChanged() override;
156
159
161 {
163 Knob * d,
164 Knob * s,
165 Knob * r,
166 Knob * pw,
167 Knob * crs,
169 PixmapButton * syncb,
170 PixmapButton * ringb,
171 PixmapButton * filterb,
172 PixmapButton * testb ) :
173 m_attKnob( a ),
174 m_decKnob( d ),
175 m_sustKnob( s ),
176 m_relKnob( r ),
177 m_pwKnob( pw ),
178 m_crsKnob( crs ),
179 m_waveFormBtnGrp( wfbg ),
180 m_syncButton( syncb ),
181 m_ringModButton( ringb ),
182 m_filterButton( filterb ),
183 m_testButton( testb )
184 {
185 }
186 voiceKnobs() = default;
198 } ;
199
201
206
207protected slots:
208 void updateKnobHint();
209 void updateKnobToolTip();
210} ;
211
212
213} // namespace gui
214
215} // namespace lmms
216
217#endif
uint8_t a
Definition Spc_Cpu.h:141
Definition AutomatableModel.h:497
Definition AutomatableModel.h:463
Definition Instrument.h:52
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
Model(Model *parent, QString displayName=QString(), bool defaultConstructed=false)
Definition Model.cpp:30
Definition NotePlayHandle.h:48
Definition SampleFrame.h:41
float desiredReleaseTimeMs() const override
Definition SidInstrument.cpp:227
static constexpr auto NumChipModels
Definition SidInstrument.h:99
void deleteNotePluginData(NotePlayHandle *_n) override
Definition SidInstrument.cpp:428
VoiceObject * m_voice[3]
Definition SidInstrument.h:125
SidInstrument(InstrumentTrack *_instrument_track)
Definition SidInstrument.cpp:118
QString nodeName() const override
Definition SidInstrument.cpp:221
FilterType
Definition SidInstrument.h:86
@ BandPass
Definition SidInstrument.h:88
@ LowPass
Definition SidInstrument.h:89
@ Count
Definition SidInstrument.h:90
@ HighPass
Definition SidInstrument.h:87
FloatModel m_filterFCModel
Definition SidInstrument.h:128
static constexpr auto NumFilterTypes
Definition SidInstrument.h:92
~SidInstrument() override=default
BoolModel m_voice3OffModel
Definition SidInstrument.h:133
void playNote(NotePlayHandle *_n, SampleFrame *_working_buffer) override
Definition SidInstrument.cpp:284
gui::PluginView * instantiateView(QWidget *_parent) override
Create a view for the model.
Definition SidInstrument.cpp:436
FloatModel m_volumeModel
Definition SidInstrument.h:134
void loadSettings(const QDomElement &_this) override
Definition SidInstrument.cpp:187
FloatModel m_filterResonanceModel
Definition SidInstrument.h:129
void saveSettings(QDomDocument &_doc, QDomElement &_parent) override
Definition SidInstrument.cpp:141
IntModel m_chipModel
Definition SidInstrument.h:136
IntModel m_filterModeModel
Definition SidInstrument.h:130
ChipModel
Definition SidInstrument.h:94
@ MOS8580
Definition SidInstrument.h:96
@ MOS6581
Definition SidInstrument.h:95
@ Count
Definition SidInstrument.h:97
Definition SidInstrument.h:49
IntModel m_waveFormModel
Definition SidInstrument.h:72
BoolModel m_testModel
Definition SidInstrument.h:76
FloatModel m_pulseWidthModel
Definition SidInstrument.h:66
BoolModel m_syncModel
Definition SidInstrument.h:73
static constexpr auto NumWaveShapes
Definition SidInstrument.h:59
BoolModel m_filteredModel
Definition SidInstrument.h:75
FloatModel m_decayModel
Definition SidInstrument.h:68
FloatModel m_coarseModel
Definition SidInstrument.h:71
FloatModel m_sustainModel
Definition SidInstrument.h:69
~VoiceObject() override=default
friend class SidInstrument
Definition SidInstrument.h:78
BoolModel m_ringModModel
Definition SidInstrument.h:74
VoiceObject(Model *_parent, int _idx)
Definition SidInstrument.cpp:93
WaveForm
Definition SidInstrument.h:52
@ Triangle
Definition SidInstrument.h:54
@ Noise
Definition SidInstrument.h:56
@ Saw
Definition SidInstrument.h:55
@ Square
Definition SidInstrument.h:53
@ Count
Definition SidInstrument.h:57
FloatModel m_releaseModel
Definition SidInstrument.h:70
FloatModel m_attackModel
Definition SidInstrument.h:67
Definition AutomatableButton.h:84
Instrument view with fixed LMMS-default size.
Definition InstrumentView.h:66
Definition Knob.h:47
Definition PixmapButton.h:37
Definition PluginView.h:36
Definition SidInstrument.h:148
AutomatableButtonGroup * m_passBtnGrp
Definition SidInstrument.h:157
void updateKnobHint()
Definition SidInstrument.cpp:641
void modelChanged() override
Definition SidInstrument.cpp:702
PixmapButton * m_offButton
Definition SidInstrument.h:205
voiceKnobs m_voiceKnobs[3]
Definition SidInstrument.h:200
SidInstrumentView(Instrument *_instrument, QWidget *_parent)
Definition SidInstrument.cpp:466
void updateKnobToolTip()
Definition SidInstrument.cpp:682
Knob * m_cutKnob
Definition SidInstrument.h:204
AutomatableButtonGroup * m_sidTypeBtnGrp
Definition SidInstrument.h:158
Knob * m_resKnob
Definition SidInstrument.h:203
~SidInstrumentView() override=default
Knob * m_volKnob
Definition SidInstrument.h:202
unsigned d
Definition inflate.c:940
unsigned s
Definition inflate.c:1555
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
Definition SidInstrument.h:161
Knob * m_attKnob
Definition SidInstrument.h:187
Knob * m_sustKnob
Definition SidInstrument.h:189
PixmapButton * m_filterButton
Definition SidInstrument.h:196
PixmapButton * m_testButton
Definition SidInstrument.h:197
Knob * m_relKnob
Definition SidInstrument.h:190
AutomatableButtonGroup * m_waveFormBtnGrp
Definition SidInstrument.h:193
Knob * m_pwKnob
Definition SidInstrument.h:191
PixmapButton * m_syncButton
Definition SidInstrument.h:194
Knob * m_decKnob
Definition SidInstrument.h:188
voiceKnobs(Knob *a, Knob *d, Knob *s, Knob *r, Knob *pw, Knob *crs, AutomatableButtonGroup *wfbg, PixmapButton *syncb, PixmapButton *ringb, PixmapButton *filterb, PixmapButton *testb)
Definition SidInstrument.h:162
PixmapButton * m_ringModButton
Definition SidInstrument.h:195
Knob * m_crsKnob
Definition SidInstrument.h:192
int r
Definition crypt.c:458