lmms
Cross-platform music production software
Loading...
Searching...
No Matches
lmms::MidiExport Class Reference

MIDI exporting base class. More...

#include <MidiExport.h>

Inheritance diagram for lmms::MidiExport:
lmms::ExportFilter lmms::Plugin lmms::Model lmms::JournallingObject lmms::SerializingObject

Classes

struct  Note
 A single MIDI note. More...
class  Clip
 A clip of MIDI notes. More...

Public Member Functions

 MidiExport ()
 Explicit constructor for setting plugin descriptor.
 ~MidiExport () override=default
bool tryExport (const TrackContainer::TrackList &tracks, const TrackContainer::TrackList &patternStoreTracks, int tempo, int masterPitch, const std::filesystem::path &filePath) override
 Export tracks from a project to a .mid extension MIDI file.
Public Member Functions inherited from lmms::ExportFilter
 ExportFilter (const Descriptor *_descriptor)
 ~ExportFilter () override=default
Public Member Functions inherited from lmms::Plugin
 Plugin (const Descriptor *descriptor, Model *parent, const Descriptor::SubPluginFeatures::Key *key=nullptr)
 Constructor of a plugin.
 ~Plugin () override=default
QString displayName () const override
 Return display-name out of sub plugin or descriptor.
const PixmapLoader * logo () const
 Return logo out of sub plugin or descriptor.
Type type () const
 Return plugin type.
const Descriptor * descriptor () const
 Return plugin Descriptor.
const Descriptor::SubPluginFeatures::Key & key () const
virtual void loadFile (const QString &file)
gui::PluginView * createView (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
Model * parentModel () const
virtual void setDisplayName (const QString &displayName)
virtual QString fullDisplayName () const
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)
SerializingObjectHook * hook ()

Static Public Attributes

static constexpr int DefaultBeatLength = 1500

Private Member Functions

void processTrack (Track &track, MidiFile::Track &midiTrack, int tempo, int masterPitch, bool isPattern=false)
 Process a given instrument track.
void writePatternClip (Clip &clip, const QDomElement &clipElem, std::uint8_t patternIdx, MidiFile::Track &midiTrack)
 Build a repeating clip from a normal one and write to MIDI track.
void processPatternTrack (Track &track)
 Process a given pattern track.
gui::PluginView * instantiateView (QWidget *) override
 Necessary for lmms_plugin_main().

Private Attributes

std::uint8_t m_channel = 0
 Current (incremental) track channel number for non drum tracks.
DataFile m_dataFile = DataFile(DataFile::Type::SongProject)
 DataFile to be used by Qt elements.
std::vector< std::vector< std::pair< tick_t, tick_t > > > m_plists
 Matrix containing (start, end) pairs for pattern objects.

Additional Inherited Members

Public Types inherited from lmms::Plugin
enum class  Type {
  Instrument , Effect , ImportFilter , ExportFilter ,
  Tool , Library , Other , Undefined = 255
}
using DescriptorList = QList<Descriptor*>
Signals inherited from lmms::Model
void dataChanged ()
void dataUnchanged ()
void propertiesChanged ()
Static Public Member Functions inherited from lmms::Plugin
static Plugin * instantiateWithKey (const QString &pluginName, Model *parent, const Descriptor::SubPluginFeatures::Key *key, bool keyFromDnd=false)
static Plugin * instantiate (const QString &pluginName, Model *parent, void *data)
Protected Member Functions inherited from lmms::ExportFilter
void saveSettings (QDomDocument &, QDomElement &) override
void loadSettings (const QDomElement &) override
QString nodeName () const override
Protected Member Functions inherited from lmms::Plugin
void collectErrorForUI (QString errMsg)
Protected Member Functions inherited from lmms::JournallingObject
void changeID (jo_id_t _id)

Detailed Description

MIDI exporting base class.

Constructor & Destructor Documentation

◆ MidiExport()

lmms::MidiExport::MidiExport ( )

Explicit constructor for setting plugin descriptor.

◆ ~MidiExport()

lmms::MidiExport::~MidiExport ( )
overridedefault

Member Function Documentation

◆ instantiateView()

gui::PluginView * lmms::MidiExport::instantiateView ( QWidget * )
inlineoverrideprivatevirtual

Necessary for lmms_plugin_main().

Implements lmms::Plugin.

◆ processPatternTrack()

void lmms::MidiExport::processPatternTrack ( Track & track)
private

Process a given pattern track.

◆ processTrack()

void lmms::MidiExport::processTrack ( Track & track,
MidiFile::Track & midiTrack,
int tempo,
int masterPitch,
bool isPattern = false )
private

Process a given instrument track.

◆ tryExport()

bool lmms::MidiExport::tryExport ( const TrackContainer::TrackList & tracks,
const TrackContainer::TrackList & patternStoreTracks,
int tempo,
int masterPitch,
const std::filesystem::path & filePath )
overridevirtual

Export tracks from a project to a .mid extension MIDI file.

Parameters
tracksSong tracks
patternStoreTracksPatternStore tracks
tempoSong global tempo
masterPitchSong master pitch
filePathThe path of the exported file
Returns
If operation was successful

Implements lmms::ExportFilter.

◆ writePatternClip()

void lmms::MidiExport::writePatternClip ( Clip & clip,
const QDomElement & clipElem,
std::uint8_t patternIdx,
MidiFile::Track & midiTrack )
private

Build a repeating clip from a normal one and write to MIDI track.

Member Data Documentation

◆ DefaultBeatLength

int lmms::MidiExport::DefaultBeatLength = 1500
staticconstexpr

◆ m_channel

std::uint8_t lmms::MidiExport::m_channel = 0
private

Current (incremental) track channel number for non drum tracks.

◆ m_dataFile

DataFile lmms::MidiExport::m_dataFile = DataFile(DataFile::Type::SongProject)
private

DataFile to be used by Qt elements.

◆ m_plists

std::vector<std::vector<std::pair<tick_t, tick_t> > > lmms::MidiExport::m_plists
private

Matrix containing (start, end) pairs for pattern objects.


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