48#define OPL2_VOICE_FREE 128
49#define OPL2_NO_VOICE 255
53#define DEFAULT_BEND_CENTS 100
55class OpulenzInstrument;
91 void saveSettings(QDomDocument& _doc, QDomElement& _this)
override;
95 void loadPatch(
const unsigned char inst[14]);
143 static constexpr auto OpAdd = std::array<unsigned int, OPL2_VOICES>{
144 0x00, 0x01, 0x02, 0x08, 0x09, 0x0A, 0x10, 0x11, 0x12
#define OPL2_VOICES
Definition OpulenZ.h:50
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
Definition MidiEvent.h:37
void loadFile(const QString &file) override
Load an SBI file into the knob models.
Definition OpulenZ.cpp:604
FloatModel m_feedbackModel
Definition OpulenZ.h:101
QString nodeName() const override
Definition OpulenZ.cpp:354
void updatePatch()
Update patch from the models to the chip emulation.
Definition OpulenZ.cpp:507
int pitchbend
Definition OpulenZ.h:129
void play(SampleFrame *_working_buffer) override
Definition OpulenZ.cpp:364
static QMutex s_emulatorMutex
Definition OpulenZ.h:140
void loadSettings(const QDomElement &_this) override
Definition OpulenZ.cpp:416
void saveSettings(QDomDocument &_doc, QDomElement &_this) override
Definition OpulenZ.cpp:380
int fnums[128]
Definition OpulenZ.h:126
BoolModel m_vibDepthModel
Definition OpulenZ.h:103
int RPNcoarse
Definition OpulenZ.h:157
bool handleMidiEvent(const MidiEvent &event, const TimePos &time, f_cnt_t offset=0) override
Definition OpulenZ.cpp:265
void reloadEmulator()
Samplerate changes when choosing oversampling, so this is more or less mandatory.
Definition OpulenZ.cpp:198
OpulenzOperatorModels m_op2
Definition OpulenZ.h:106
int RPNfine
Definition OpulenZ.h:157
int pitchBendRange
Definition OpulenZ.h:130
int pushVoice(int v)
Push voice into first free slot.
Definition OpulenZ.cpp:249
void loadGMPatch()
Load one of the default patches.
Definition OpulenZ.cpp:501
void writeVoice(int voice, int reg, int val)
Definition OpulenZ.cpp:214
~OpulenzInstrument() override
Definition OpulenZ.cpp:190
gui::PluginView * instantiateView(QWidget *_parent) override
Create a view for the model.
Definition OpulenZ.cpp:359
QString storedname
Definition OpulenZ.h:115
void loadPatch(const unsigned char inst[14])
Load a patch into the emulator.
Definition OpulenZ.cpp:459
void setVoiceVelocity(int voice, int vel)
Can only be called by code protected by the holy mutex!
Definition OpulenZ.cpp:219
int Hz2fnum(float Hz)
Find suitable F number in lowest possible block.
Definition OpulenZ.cpp:491
int voiceNote[OPL2_VOICES]
Definition OpulenZ.h:118
BoolModel m_fmModel
Definition OpulenZ.h:102
int popVoice()
Pop least recently used voice.
Definition OpulenZ.cpp:234
Copl * theEmulator
Definition OpulenZ.h:114
short * renderbuffer
Definition OpulenZ.h:117
IntModel m_patchModel
Definition OpulenZ.h:100
BoolModel m_tremDepthModel
Definition OpulenZ.h:104
void tuneEqual(int center, float Hz)
Definition OpulenZ.cpp:482
static constexpr auto OpAdd
(Weird) offsets for voice parameters
Definition OpulenZ.h:143
f_cnt_t frameCount
Definition OpulenZ.h:116
OpulenzOperatorModels m_op1
Definition OpulenZ.h:105
OpulenzInstrument(InstrumentTrack *insTrack)
Definition OpulenZ.cpp:105
int velocities[128]
Definition OpulenZ.h:123
void loadDefaultPatch()
Load default patch.
Definition OpulenZ.cpp:570
int voiceLRU[OPL2_VOICES]
Least recently used voices.
Definition OpulenZ.h:120
Definition SampleFrame.h:41
Instrument view with fixed LMMS-default size.
Definition InstrumentView.h:66
Definition LcdSpinBox.h:35
LcdSpinBox * m_patch
Definition OpulenZ.h:191
~OpulenzInstrumentView() override
Definition OpulenZ.cpp:777
PixmapButton * vibDepthButton
Definition OpulenZ.h:198
OpulenzOperatorControls op2View
Definition OpulenZ.h:195
Knob * feedbackKnob
Definition OpulenZ.h:196
QString timeKnobHint(float n)
Formats time nicely for knob hints.
Definition OpulenZ.cpp:782
PixmapButton * tremDepthButton
Definition OpulenZ.h:199
OpulenzInstrumentView(Instrument *_instrument, QWidget *_parent)
Definition OpulenZ.cpp:700
OpulenzOperatorControls op1View
Definition OpulenZ.h:194
void updateKnobHints()
Update hints to have user-friendly formatting and units.
Definition OpulenZ.cpp:789
PixmapButton * fmButton
Definition OpulenZ.h:197
void modelChanged() override
Definition OpulenZ.cpp:835
Definition PluginView.h:36
unsigned v[N_MAX]
Definition inflate.c:1584
int val
Definition jpeglib.h:956
Definition AudioPortAudio.cpp:209
Definition AudioAlsa.cpp:35
Instrument * ins
Definition HydrogenImport.cpp:138
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
Stores parameters unique to both operators, to avoid duplication.
Definition OpulenZ.h:59
FloatModel release
Definition OpulenZ.h:67
BoolModel ksr
Key-Scale Rate.
Definition OpulenZ.h:71
OpulenzOperatorModels(OpulenzInstrument *ins, int num)
num is the number of the operator (1 or 2 on an OPL2)
Definition OpulenZ.cpp:89
BoolModel vib
Vibrato.
Definition OpulenZ.h:74
~OpulenzOperatorModels()=default
FloatModel mul
Frequency multiplier.
Definition OpulenZ.h:70
FloatModel attack
Definition OpulenZ.h:64
IntModel waveform
Definition OpulenZ.h:75
FloatModel decay
Definition OpulenZ.h:65
FloatModel scale
Definition OpulenZ.h:69
FloatModel sustain
Definition OpulenZ.h:66
BoolModel perc
Percussive envelope mode.
Definition OpulenZ.h:72
BoolModel trem
Tremolo.
Definition OpulenZ.h:73
FloatModel level
Definition OpulenZ.h:68
Aggregates controls for models available in OpulenzOperatorModels. All pointers are non-owning.
Definition OpulenZ.h:165
Knob * level
Definition OpulenZ.h:170
AutomatableButtonGroup * waveform
Definition OpulenZ.h:177
PixmapButton * vib
Definition OpulenZ.h:176
Knob * attack
Definition OpulenZ.h:166
Knob * decay
Definition OpulenZ.h:167
PixmapButton * perc
Definition OpulenZ.h:174
Knob * release
Definition OpulenZ.h:169
Knob * sustain
Definition OpulenZ.h:168
PixmapButton * trem
Definition OpulenZ.h:175
Knob * scale
Definition OpulenZ.h:171
PixmapButton * w3
Definition OpulenZ.h:181
Knob * mul
Definition OpulenZ.h:172
PixmapButton * w1
Definition OpulenZ.h:179
PixmapButton * w0
Definition OpulenZ.h:178
PixmapButton * ksr
Definition OpulenZ.h:173
PixmapButton * w2
Definition OpulenZ.h:180
int n
Definition crypt.c:458
struct zdirent * file
Definition win32.c:1500