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 };
148 void saveSettings(QDomDocument& doc, QDomElement& el)
override;
167 BLSawtooth, BLSquare, BLTriangle, BLMoog };
168 enum class VcaMode { Attack, Decay, Idle, NeverPlayed };
206 std::array<std::unique_ptr<Lb302Filter>, 2>
m_vcfs;
267 std::array<NotePlayHandle*, s_maxPendingNotes>
m_notes {};
void process(Alg_seq *seq, bool tempo_flag, double tempo, bool flatten_flag)
Definition allegroconvert.cpp:42
Definition AutomatableModel.h:502
Definition DspEffectLibrary.h:301
Definition AutomatableModel.h:468
Definition Instrument.h:54
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:486
float m_kfcn
Definition Lb302.h:128
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
virtual sample_t process(sample_t samp)=0
virtual void recalc()
Definition Lb302.cpp:90
Lb302Filter(Lb302FilterKnobState *p_fs)
Definition Lb302.h:70
struct lmms::Lb302Filter::@204134141173245345372270072376077331140344116345 m_vcf
virtual void envRecalc()
Definition Lb302.cpp:103
virtual void playNote()
Definition Lb302.cpp:106
Lb302FilterKnobState * fs
Definition Lb302.h:79
struct lmms::Lb302FilterIIR2::@066022011274205075104136021221043323275350160340 m_iir2
Lb302FilterIIR2(Lb302FilterKnobState *p_fs)
Definition Lb302.cpp:113
sample_t process(sample_t samp) override
Definition Lb302.cpp:138
std::unique_ptr< DspEffectLibrary::Distortion > m_dist
Definition Lb302.h:114
void recalc() override
Definition Lb302.cpp:119
void envRecalc() override
Definition Lb302.cpp:126
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
@ 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
@ BLSawtooth
Definition Lb302.h:167
Definition NotePlayHandle.h:48
Definition SampleFrame.h:41
T value(int frameOffset=0) const
Definition AutomatableModel.h:443
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
Definition DspEffectLibrary.h:35
Definition AudioPortAudio.cpp:209
Definition RemotePluginBase.cpp:34
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
@ Sine
Definition Sfxr.h:43
@ Square
Definition Sfxr.h:43
std::int8_t panning_t
Definition LmmsTypes.h:37
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
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