LMMS
Loading...
Searching...
No Matches
lmms::Sf2Instrument Class Reference

#include <Sf2Player.h>

Inheritance diagram for lmms::Sf2Instrument:
lmms::Instrument lmms::Plugin lmms::Model lmms::JournallingObject lmms::SerializingObject

Public Slots

void openFile (const QString &_sf2File, bool updateTrackName=true)
void updatePatch ()
void reloadSynth ()
void updateReverbOn ()
void updateReverb ()
void updateChorusOn ()
void updateChorus ()
void updateGain ()
void updateTuning ()

Signals

void fileLoading ()
void fileChanged ()
void patchChanged ()
Signals inherited from lmms::Model
void dataChanged ()
void dataUnchanged ()
void propertiesChanged ()

Public Member Functions

 Sf2Instrument (InstrumentTrack *_instrument_track)
 ~Sf2Instrument () override
void play (SampleFrame *_working_buffer) override
void playNote (NotePlayHandle *_n, SampleFrame *_working_buffer) override
void deleteNotePluginData (NotePlayHandle *_n) override
void saveSettings (QDomDocument &_doc, QDomElement &_parent) override
void loadSettings (const QDomElement &_this) override
void loadFile (const QString &_file) override
AutomatableModelchildModel (const QString &_modelName) override
QString nodeName () const override
gui::PluginViewinstantiateView (QWidget *_parent) override
 Create a view for the model.
QString getCurrentPatchName ()
void setParameter (const QString &_param, const QString &_value)
Public Member Functions inherited from lmms::Instrument
 Instrument (InstrumentTrack *_instrument_track, const Descriptor *_descriptor, const Descriptor::SubPluginFeatures::Key *key=nullptr, Flags flags=Flag::NoFlags)
 ~Instrument () override=default
virtual bool hasNoteInput () const
virtual f_cnt_t beatLen (NotePlayHandle *_n) const
virtual float desiredReleaseTimeMs () const
f_cnt_t desiredReleaseFrames () const
sample_rate_t getSampleRate () const
bool isSingleStreamed () const
bool isMidiBased () const
bool isBendable () const
virtual bool handleMidiEvent (const MidiEvent &, const TimePos &=TimePos(), f_cnt_t offset=0)
QString fullDisplayName () const override
virtual bool isFromTrack (const Track *_track) const
InstrumentTrackinstrumentTrack () const
Public Member Functions inherited from lmms::Plugin
 Plugin (const Descriptor *descriptor, Model *parent, const Descriptor::SubPluginFeatures::Key *key=nullptr)
 ~Plugin () override=default
QString displayName () const override
 Return display-name out of sub plugin or descriptor.
const PixmapLoaderlogo () const
 Return logo out of sub plugin or descriptor.
Type type () const
 Return plugin type.
const Descriptordescriptor () const
 Return plugin Descriptor.
const Descriptor::SubPluginFeatures::Keykey () const
gui::PluginViewcreateView (QWidget *parent)
 Create a view for the model.
Public Member Functions inherited from lmms::Model
 Model (Model *parent, QString displayName=QString(), bool defaultConstructed=false)
 ~Model () override=default
bool isDefaultConstructed () const
ModelparentModel () const
virtual void setDisplayName (const QString &displayName)
Public Member Functions inherited from lmms::JournallingObject
 JournallingObject ()
 ~JournallingObject () override
jo_id_t id () const
void saveJournallingState (const bool newState)
void restoreJournallingState ()
void addJournalCheckPoint ()
QDomElement saveState (QDomDocument &_doc, QDomElement &_parent) override
void restoreState (const QDomElement &_this) override
bool isJournalling () const
void setJournalling (const bool _sr)
bool testAndSetJournalling (const bool newState)
bool isJournallingStateStackEmpty () const
Public Member Functions inherited from lmms::SerializingObject
 SerializingObject ()
virtual ~SerializingObject ()
void setHook (SerializingObjectHook *_hook)
SerializingObjectHookhook ()

Private Member Functions

 mapPropertyFromModel (int, getBank, setBank, m_bankNum)
 mapPropertyFromModel (int, getPatch, setPatch, m_patchNum)
void freeFont ()
void noteOn (Sf2PluginData *n)
void noteOff (Sf2PluginData *n)
void renderFrames (f_cnt_t frames, SampleFrame *buf)

Private Attributes

AudioResampler m_resampler
std::array< SampleFrame, DEFAULT_BUFFER_SIZEm_buffer
std::span< SampleFramem_bufferView
fluid_settings_t * m_settings
fluid_synth_t * m_synth
fluid_sfont_t * m_font
int m_fontId
QString m_filename
QMutex m_notesRunningMutex
QMutex m_synthMutex
QMutex m_loadMutex
std::array< int, 128 > m_notesRunning = {}
sample_rate_t m_internalSampleRate
int m_lastMidiPitch
int m_lastMidiPitchRange
int m_channel
gui::LcdSpinBoxModel m_bankNum
gui::LcdSpinBoxModel m_patchNum
FloatModel m_gain
BoolModel m_reverbOn
FloatModel m_reverbRoomSize
FloatModel m_reverbDamping
FloatModel m_reverbWidth
FloatModel m_reverbLevel
BoolModel m_chorusOn
FloatModel m_chorusNum
FloatModel m_chorusLevel
FloatModel m_chorusSpeed
FloatModel m_chorusDepth
QVector< NotePlayHandle * > m_playingNotes
QMutex m_playingNotesMutex

Friends

class gui::Sf2InstrumentView

Additional Inherited Members

Public Types inherited from lmms::Instrument
enum class  Flag { NoFlags = 0x00 , IsSingleStreamed = 0x01 , IsMidiBased = 0x02 , IsNotBendable = 0x04 }
using Flags = lmms::Flags<Flag>
Public Types inherited from lmms::Plugin
enum class  Type {
  Instrument , Effect , ImportFilter , ExportFilter ,
  Tool , Library , Other , Undefined = 255
}
using DescriptorList = QList<Descriptor*>
Static Public Member Functions inherited from lmms::Instrument
static Instrumentinstantiate (const QString &_plugin_name, InstrumentTrack *_instrument_track, const Plugin::Descriptor::SubPluginFeatures::Key *key, bool keyFromDnd=false)
Static Public Member Functions inherited from lmms::Plugin
static PlugininstantiateWithKey (const QString &pluginName, Model *parent, const Descriptor::SubPluginFeatures::Key *key, bool keyFromDnd=false)
static Plugininstantiate (const QString &pluginName, Model *parent, void *data)
Protected Member Functions inherited from lmms::Instrument
void applyFadeIn (SampleFrame *buf, NotePlayHandle *n)
void applyRelease (SampleFrame *buf, const NotePlayHandle *_n)
float computeReleaseTimeMsByFrameCount (f_cnt_t frames) const
Protected Member Functions inherited from lmms::Plugin
void collectErrorForUI (QString errMsg)
Protected Member Functions inherited from lmms::JournallingObject
void changeID (jo_id_t _id)

Constructor & Destructor Documentation

◆ Sf2Instrument()

lmms::Sf2Instrument::Sf2Instrument ( InstrumentTrack * _instrument_track)

◆ ~Sf2Instrument()

lmms::Sf2Instrument::~Sf2Instrument ( )
override

Member Function Documentation

◆ childModel()

AutomatableModel * lmms::Sf2Instrument::childModel ( const QString & modelName)
overridevirtual

Called if external source needs to change something but we cannot reference the class header. Should return null if not key not found.

Reimplemented from lmms::Plugin.

◆ deleteNotePluginData()

void lmms::Sf2Instrument::deleteNotePluginData ( NotePlayHandle * _n)
overridevirtual

Reimplemented from lmms::Instrument.

◆ fileChanged

void lmms::Sf2Instrument::fileChanged ( )
signal

◆ fileLoading

void lmms::Sf2Instrument::fileLoading ( )
signal

◆ freeFont()

void lmms::Sf2Instrument::freeFont ( )
private

◆ getCurrentPatchName()

QString lmms::Sf2Instrument::getCurrentPatchName ( )

◆ instantiateView()

gui::PluginView * lmms::Sf2Instrument::instantiateView ( QWidget * )
overridevirtual

Create a view for the model.

Implements lmms::Plugin.

◆ loadFile()

void lmms::Sf2Instrument::loadFile ( const QString & file)
overridevirtual

Can be called if a file matching supportedFileTypes should be loaded/processed with the help of this plugin

Reimplemented from lmms::Plugin.

◆ loadSettings()

void lmms::Sf2Instrument::loadSettings ( const QDomElement & _this)
overridevirtual

◆ mapPropertyFromModel() [1/2]

lmms::Sf2Instrument::mapPropertyFromModel ( int ,
getBank ,
setBank ,
m_bankNum  )
private

◆ mapPropertyFromModel() [2/2]

lmms::Sf2Instrument::mapPropertyFromModel ( int ,
getPatch ,
setPatch ,
m_patchNum  )
private

◆ nodeName()

QString lmms::Sf2Instrument::nodeName ( void ) const
overridevirtual

◆ noteOff()

void lmms::Sf2Instrument::noteOff ( Sf2PluginData * n)
private

◆ noteOn()

void lmms::Sf2Instrument::noteOn ( Sf2PluginData * n)
private

◆ openFile

void lmms::Sf2Instrument::openFile ( const QString & _sf2File,
bool updateTrackName = true )
slot

◆ patchChanged

void lmms::Sf2Instrument::patchChanged ( )
signal

◆ play()

void lmms::Sf2Instrument::play ( SampleFrame * _working_buffer)
overridevirtual

Reimplemented from lmms::Instrument.

◆ playNote()

void lmms::Sf2Instrument::playNote ( NotePlayHandle * _n,
SampleFrame * _working_buffer )
overridevirtual

Reimplemented from lmms::Instrument.

◆ reloadSynth

void lmms::Sf2Instrument::reloadSynth ( )
slot

◆ renderFrames()

void lmms::Sf2Instrument::renderFrames ( f_cnt_t frames,
SampleFrame * buf )
private

◆ saveSettings()

void lmms::Sf2Instrument::saveSettings ( QDomDocument & _doc,
QDomElement & _parent )
overridevirtual

◆ setParameter()

void lmms::Sf2Instrument::setParameter ( const QString & _param,
const QString & _value )

◆ updateChorus

void lmms::Sf2Instrument::updateChorus ( )
slot

◆ updateChorusOn

void lmms::Sf2Instrument::updateChorusOn ( )
slot

◆ updateGain

void lmms::Sf2Instrument::updateGain ( )
slot

◆ updatePatch

void lmms::Sf2Instrument::updatePatch ( )
slot

◆ updateReverb

void lmms::Sf2Instrument::updateReverb ( )
slot

◆ updateReverbOn

void lmms::Sf2Instrument::updateReverbOn ( )
slot

◆ updateTuning

void lmms::Sf2Instrument::updateTuning ( )
slot

◆ gui::Sf2InstrumentView

friend class gui::Sf2InstrumentView
friend

Member Data Documentation

◆ m_bankNum

gui::LcdSpinBoxModel lmms::Sf2Instrument::m_bankNum
private

◆ m_buffer

std::array<SampleFrame, DEFAULT_BUFFER_SIZE> lmms::Sf2Instrument::m_buffer
private

◆ m_bufferView

std::span<SampleFrame> lmms::Sf2Instrument::m_bufferView
private

◆ m_channel

int lmms::Sf2Instrument::m_channel
private

◆ m_chorusDepth

FloatModel lmms::Sf2Instrument::m_chorusDepth
private

◆ m_chorusLevel

FloatModel lmms::Sf2Instrument::m_chorusLevel
private

◆ m_chorusNum

FloatModel lmms::Sf2Instrument::m_chorusNum
private

◆ m_chorusOn

BoolModel lmms::Sf2Instrument::m_chorusOn
private

◆ m_chorusSpeed

FloatModel lmms::Sf2Instrument::m_chorusSpeed
private

◆ m_filename

QString lmms::Sf2Instrument::m_filename
private

◆ m_font

fluid_sfont_t* lmms::Sf2Instrument::m_font
private

◆ m_fontId

int lmms::Sf2Instrument::m_fontId
private

◆ m_gain

FloatModel lmms::Sf2Instrument::m_gain
private

◆ m_internalSampleRate

sample_rate_t lmms::Sf2Instrument::m_internalSampleRate
private

◆ m_lastMidiPitch

int lmms::Sf2Instrument::m_lastMidiPitch
private

◆ m_lastMidiPitchRange

int lmms::Sf2Instrument::m_lastMidiPitchRange
private

◆ m_loadMutex

QMutex lmms::Sf2Instrument::m_loadMutex
private

◆ m_notesRunning

std::array<int, 128> lmms::Sf2Instrument::m_notesRunning = {}
private

◆ m_notesRunningMutex

QMutex lmms::Sf2Instrument::m_notesRunningMutex
private

◆ m_patchNum

gui::LcdSpinBoxModel lmms::Sf2Instrument::m_patchNum
private

◆ m_playingNotes

QVector<NotePlayHandle *> lmms::Sf2Instrument::m_playingNotes
private

◆ m_playingNotesMutex

QMutex lmms::Sf2Instrument::m_playingNotesMutex
private

◆ m_resampler

AudioResampler lmms::Sf2Instrument::m_resampler
private

◆ m_reverbDamping

FloatModel lmms::Sf2Instrument::m_reverbDamping
private

◆ m_reverbLevel

FloatModel lmms::Sf2Instrument::m_reverbLevel
private

◆ m_reverbOn

BoolModel lmms::Sf2Instrument::m_reverbOn
private

◆ m_reverbRoomSize

FloatModel lmms::Sf2Instrument::m_reverbRoomSize
private

◆ m_reverbWidth

FloatModel lmms::Sf2Instrument::m_reverbWidth
private

◆ m_settings

fluid_settings_t* lmms::Sf2Instrument::m_settings
private

◆ m_synth

fluid_synth_t* lmms::Sf2Instrument::m_synth
private

◆ m_synthMutex

QMutex lmms::Sf2Instrument::m_synthMutex
private

The documentation for this class was generated from the following files: