85 std::array<float, 2>
e = {0.f, 0.f};
106 std::array<float, 2>
d = {0.f, 0.f};
114 std::unique_ptr<DspEffectLibrary::Distortion>
m_dist;
132 std::array<sample_t, 3>
m_ay = { 0.f, 0.f, 0.f };
206 std::array<std::unique_ptr<Lb302Filter>, 2>
m_vcfs;
267 std::array<NotePlayHandle*, s_maxPendingNotes>
m_notes {};
Definition AutomatableModel.h:497
Definition DspEffectLibrary.h:301
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
float m_kfcn
Definition Lb302.h:128
sample_t process(sample_t samp) override
Definition Lb302.cpp:199
float m_kres
Definition Lb302.h:131
float m_value
Definition Lb302.h:134
float m_kp
Definition Lb302.h:129
float m_kp1h
Cached value of (m_kp + 1) / 2.
Definition Lb302.h:130
Lb302Filter3Pole(Lb302FilterKnobState *p_fs)
Definition Lb302.h:121
std::array< sample_t, 3 > m_ay
Definition Lb302.h:132
void envRecalc() override
Definition Lb302.cpp:164
float m_lastin
Definition Lb302.h:133
void recalc() override
Definition Lb302.cpp:156
virtual ~Lb302Filter()=default
std::array< float, 2 > e
Two values for interpolation.
Definition Lb302.h:85
virtual sample_t process(sample_t samp)=0
virtual void recalc()
Definition Lb302.cpp:90
struct lmms::Lb302Filter::@046074133257322201173360347057124124216004105072 m_vcf
Lb302Filter(Lb302FilterKnobState *p_fs)
Definition Lb302.h:70
virtual void envRecalc()
Definition Lb302.cpp:103
virtual void playNote()
Definition Lb302.cpp:106
Lb302FilterKnobState * fs
Definition Lb302.h:79
float resCoeff
Resonance coefficient [0.30, 9.54]
Definition Lb302.h:86
float c0
c0 = e[1] on retrigger; c0 *=ed every sample; cutoff = e[0] + c0
Definition Lb302.h:84
Lb302FilterIIR2(Lb302FilterKnobState *p_fs)
Definition Lb302.cpp:113
sample_t process(sample_t samp) override
Definition Lb302.cpp:138
float c
Definition Lb302.h:111
std::unique_ptr< DspEffectLibrary::Distortion > m_dist
Definition Lb302.h:114
float a
Definition Lb302.h:109
struct lmms::Lb302FilterIIR2::@346123164351052165335065110147243267100110262132 m_iir2
void recalc() override
Definition Lb302.cpp:119
void envRecalc() override
Definition Lb302.cpp:126
std::array< float, 2 > d
IIR2 resonance loop. d[0] and d[1] are added back into the sample with a and b as coefficients.
Definition Lb302.h:106
float b
Definition Lb302.h:110
float m_vcoC
Raw oscillator sample [-0.5, 0.5].
Definition Lb302.h:193
static constexpr float s_distRatio
Definition Lb302.h:170
static constexpr std::size_t s_maxPendingNotes
The maximum number of note events Lb302 can process per audio buffer.
Definition Lb302.h:232
static constexpr std::size_t s_maxNoteEnqueueRetries
The maximum number of retries permitted per enqueue operation before a note is dropped.
Definition Lb302.h:249
void db24Toggled()
Definition Lb302.cpp:305
QString nodeName() const override
Definition Lb302.cpp:308
float m_noteVolume
The per-note volume (velocity) of the most recent note, within [0, 1].
Definition Lb302.h:218
float m_slideInc
Slide base to use in next node. Nonzero=slide next note.
Definition Lb302.h:198
void recalcFilter()
Definition Lb302.cpp:311
FloatModel m_vcoDetuneKnob
Definition Lb302.h:179
Lb302FilterKnobState m_fs
Definition Lb302.h:204
float m_slide
Current value of slide exponential curve. Nonzero=sliding.
Definition Lb302.h:197
FloatModel m_vcfCutKnob
Definition Lb302.h:175
std::array< NotePlayHandle *, s_maxPendingNotes > m_notes
Backing array for the multiple-producer single-consumer realtime-safe ring buffer queue for note even...
Definition Lb302.h:267
FloatModel m_vcfResKnob
Definition Lb302.h:176
float m_vcoInc
Sample increment for the frequency. Creates Sawtooth.
Definition Lb302.h:191
FloatModel m_slideDecKnob
Definition Lb302.h:183
void saveSettings(QDomDocument &doc, QDomElement &el) override
Definition Lb302.cpp:249
void loadSettings(const QDomElement &el) override
Definition Lb302.cpp:266
NotePlayHandle * m_playingNote
Definition Lb302.h:222
void filterChanged()
Definition Lb302.cpp:288
float m_slideBase
The base m_vcoInc while sliding.
Definition Lb302.h:199
Lb302Filter & vcf()
Helper to get current vcf.
Definition Lb302.h:211
f_cnt_t m_vcfEnvPos
Update counter. Updates when >= s_envInc.
Definition Lb302.h:213
void playNote(NotePlayHandle *nph, SampleFrame *working_buffer) override
Definition Lb302.cpp:498
f_cnt_t m_releaseFrame
Definition Lb302.h:214
IntModel m_waveShape
Definition Lb302.h:182
VcaMode m_vcaMode
Definition Lb302.h:220
void play(SampleFrame *working_buffer) override
Definition Lb302.cpp:574
std::atomic_size_t m_notesReadSeq
Sequence number indicating complete dequeue operations.
Definition Lb302.h:280
static constexpr std::size_t s_notesBufMask
Bitmask used to wrap arbitrary indicies within the bounds of m_notes.
Definition Lb302.h:256
void deleteNotePluginData(NotePlayHandle *nph) override
Definition Lb302.cpp:598
BoolModel m_deadToggle
Definition Lb302.h:187
BoolModel m_slideToggle
Definition Lb302.h:185
VcoShape m_vcoShape
Definition Lb302.h:201
gui::PluginView * instantiateView(QWidget *parent) override
Create a view for the model.
Definition Lb302.cpp:604
FloatModel m_distKnob
Definition Lb302.h:181
BoolModel m_accentToggle
Definition Lb302.h:186
static constexpr float s_vcaInitial
Initial amplifier coefficient.
Definition Lb302.h:173
float m_trueFreq
Definition Lb302.h:196
static constexpr float s_vcaAttack
Amplitude attack.
Definition Lb302.h:172
float m_vca
Amplifier coefficient.
Definition Lb302.h:217
FloatModel m_vcfDecKnob
Definition Lb302.h:178
panning_t m_notePan
The per-note panning of the most recent note.
Definition Lb302.h:219
static constexpr f_cnt_t s_envInc
Envelope Recalculation period
Definition Lb302.h:171
void processNote(NotePlayHandle *nph)
Definition Lb302.cpp:545
bool m_newFreq
Definition Lb302.h:195
BoolModel m_db24Toggle
Definition Lb302.h:188
void process(SampleFrame *outbuf, const f_cnt_t size)
Definition Lb302.cpp:318
Lb302Synth(InstrumentTrack *)
Definition Lb302.cpp:216
std::atomic_size_t m_notesWriteClaimed
Sequence number indicating in-progress enqueue operations.
Definition Lb302.h:307
std::array< std::unique_ptr< Lb302Filter >, 2 > m_vcfs
Filters (just keep both loaded and switch).
Definition Lb302.h:206
VcaMode
Definition Lb302.h:168
@ Decay
Definition Lb302.h:168
@ Attack
Definition Lb302.h:168
@ Idle
Definition Lb302.h:168
@ NeverPlayed
Definition Lb302.h:168
void decayChanged()
Adjusts m_fs 's Lb302FilterKnobState::envdecay for both sampling rate and s_envInc.
Definition Lb302.cpp:298
FloatModel m_vcfModKnob
Definition Lb302.h:177
float m_vcoK
Raw oscillator sample [-0.5, 0.5].
Definition Lb302.h:192
std::atomic_size_t m_notesWriteCommitted
Sequence number indicating complete enqueue operations.
Definition Lb302.h:294
VcoShape
Definition Lb302.h:166
@ BLSquare
Definition Lb302.h:167
@ BLTriangle
Definition Lb302.h:167
@ Moog
Definition Lb302.h:166
@ Triangle
Definition Lb302.h:166
@ Sine
Definition Lb302.h:166
@ RoundSquare
Definition Lb302.h:166
@ BLMoog
Definition Lb302.h:167
@ Exponential
Definition Lb302.h:166
@ Sawtooth
Definition Lb302.h:166
@ Square
Definition Lb302.h:166
@ BLSawtooth
Definition Lb302.h:167
Definition NotePlayHandle.h:48
Definition SampleFrame.h:41
Instrument view with fixed LMMS-default size.
Definition InstrumentView.h:66
Knob * m_vcfResKnob
Definition Lb302.h:327
Knob * m_vcfCutKnob
Definition Lb302.h:326
Lb302SynthView(Instrument *instrument, QWidget *parent)
Definition Lb302.cpp:618
LedCheckBox * m_slideToggle
Definition Lb302.h:335
Knob * m_vcfModKnob
Definition Lb302.h:329
Knob * m_distKnob
Definition Lb302.h:331
Knob * m_vcfDecKnob
Definition Lb302.h:328
LedCheckBox * m_db24Toggle
Definition Lb302.h:338
void modelChanged() override
Definition Lb302.cpp:757
AutomatableButtonGroup * m_waveBtnGrp
Definition Lb302.h:333
LedCheckBox * m_deadToggle
Definition Lb302.h:337
~Lb302SynthView() override=default
Knob * m_slideDecKnob
Definition Lb302.h:332
Definition LedCheckBox.h:37
Definition PluginView.h:36
unsigned el
Definition inflate.c:1571
static uintptr_t parent
Definition pugl.h:1644
Definition DspEffectLibrary.h:35
Definition AudioPortAudio.cpp:209
Definition AudioAlsa.cpp:35
constexpr panning_t DefaultPanning
Definition panning.h:41
float sample_t
Definition LmmsTypes.h:39
constexpr std::size_t hardware_destructive_interference_size
Platform-dependent minimum amount of padding between objects to prevent false cache sharing.
Definition Hardware.h:60
std::int8_t panning_t
Definition LmmsTypes.h:37
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
GUI::ui_handle_t gui
Definition main.cpp:50
float dist
Definition Lb302.h:63
float cutoff
Definition Lb302.h:59
float reso
Definition Lb302.h:60
float envmod
Definition Lb302.h:61
float envdecay
Definition Lb302.h:62