26#ifndef LMMS_INSTRUMENT_H
27#define LMMS_INSTRUMENT_H
32#include "lmms_export.h"
59 IsSingleStreamed = 0x01,
68 const Descriptor::SubPluginFeatures::Key *
key =
nullptr,
92 virtual void deleteNotePluginData(
NotePlayHandle * _note_to_play );
156 QString fullDisplayName()
const override;
164 static Instrument * instantiate(
const QString & _plugin_name,
167 bool keyFromDnd =
false);
169 virtual bool isFromTrack(
const Track * _track )
const;
186 float computeReleaseTimeMsByFrameCount(
f_cnt_t frames)
const;
#define LMMS_DECLARE_OPERATORS_FOR_FLAGS(type)
Definition Flags.h:77
Definition AutomatableModel.h:77
Definition Instrument.h:54
InstrumentTrack * instrumentTrack() const
Definition Instrument.h:171
virtual auto childModel(std::string_view modelName) -> AutomatableModel *
Definition Instrument.h:102
Flags m_flags
Definition Instrument.h:191
lmms::Flags< Flag > Flags
Definition Instrument.h:64
f_cnt_t desiredReleaseFrames() const
Definition Instrument.h:125
bool isMidiBased() const
Definition Instrument.h:139
Instrument(InstrumentTrack *_instrument_track, const Descriptor *_descriptor, const Descriptor::SubPluginFeatures::Key *key=nullptr, Flags flags=Flag::NoFlags)
Definition Instrument.cpp:38
Flag
Definition Instrument.h:57
@ IsMidiBased
Definition Instrument.h:60
@ IsSingleStreamed
Definition Instrument.h:59
@ NoFlags
Definition Instrument.h:58
@ IsNotBendable
Definition Instrument.h:61
bool isSingleStreamed() const
Definition Instrument.h:134
virtual bool hasNoteInput() const
Definition Instrument.h:76
InstrumentTrack * m_instrumentTrack
Definition Instrument.h:190
sample_rate_t getSampleRate() const
Definition Instrument.cpp:206
~Instrument() override=default
virtual float desiredReleaseTimeMs() const
Definition Instrument.h:118
virtual void playNote(NotePlayHandle *, SampleFrame *)
Definition Instrument.h:84
bool isBendable() const
Definition Instrument.h:144
virtual bool handleMidiEvent(const MidiEvent &, const TimePos &=TimePos(), f_cnt_t offset=0)
Definition Instrument.h:151
virtual auto midiPatch() const -> std::optional< MidiPatch >
For applicable instruments: Provides host with current MIDI bank and program.
Definition Instrument.h:95
Definition InstrumentTrack.h:62
Definition MidiEvent.h:37
Definition NotePlayHandle.h:48
Plugin(const Descriptor *descriptor, Model *parent, const Descriptor::SubPluginFeatures::Key *key=nullptr)
Constructor of a plugin.
Definition Plugin.cpp:60
const Descriptor::SubPluginFeatures::Key & key() const
Definition Plugin.h:272
Definition SampleFrame.h:41
Base-class for all tracks.
Definition Track.h:67
Definition RemotePluginBase.cpp:34
std::uint32_t sample_rate_t
Definition LmmsTypes.h:42
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
Definition MidiPatch.h:34