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

#include <Song.h>

Inheritance diagram for lmms::Song:
lmms::TrackContainer lmms::Model lmms::JournallingObject lmms::SerializingObject

Classes

struct  SaveOptions

Public Types

enum class  PlayMode {
  None , Song , Pattern , MidiClip ,
  AutomationClip , Count
}
Public Types inherited from lmms::TrackContainer
enum class  Type { Pattern , Song }
using TrackList = std::vector<Track*>

Public Slots

void playSong ()
void record ()
void playAndRecord ()
void playPattern ()
void playMidiClip (const lmms::MidiClip *midiClipToPlay, bool loop=true)
void togglePause ()
void stop ()
void startExport ()
void stopExport ()
void setModified ()
void clearProject ()
void addPatternTrack ()

Signals

void projectLoaded ()
void playbackStateChanged ()
void playbackPositionJumped ()
void lengthChanged (int bars)
void tempoChanged (lmms::bpm_t newBPM)
void timeSignatureChanged (int oldTicksPerBar, int ticksPerBar)
void controllerAdded (lmms::Controller *)
void controllerRemoved (lmms::Controller *)
void stopped ()
void modified ()
void projectFileNameChanged ()
void scaleListChanged (int index)
void keymapListChanged (int index)
Signals inherited from lmms::TrackContainer
void trackAdded (lmms::Track *_track)
void trackRemoved ()
void trackMoved ()
Signals inherited from lmms::Model
void dataChanged ()
void dataUnchanged ()
void propertiesChanged ()

Public Member Functions

void clearErrors ()
void collectError (const QString error)
bool hasErrors ()
QString errorSummary ()
void processNextBuffer ()
int getLoadingTrackCount () const
int getMilliseconds () const
int getMilliseconds (PlayMode playMode) const
int getBars () const
int ticksPerBar () const
int getBeat () const
int getBeatTicks () const
int getTicks () const
f_cnt_t getFrames () const
bool isPaused () const
bool isPlaying () const
bool isStopped () const
bool isExporting () const
void setExportLoop (bool exportLoop)
bool isRecording () const
void setLoopRenderCount (int count)
int getLoopRenderCount () const
bool isExportDone () const
int getExportProgress () const
void setRenderBetweenMarkers (bool renderBetweenMarkers)
PlayMode playMode () const
const TimePosgetPlayPos (PlayMode pm) const
const TimePosgetPlayPos () const
void setPlayPos (tick_t ticks, PlayMode playMode)
void setPlayPos (tick_t ticks)
auto getTimeline (PlayMode mode) -> Timeline &
auto getTimeline (PlayMode mode) const -> const Timeline &
auto getTimeline () -> Timeline &
auto getTimeline () const -> const Timeline &
void updateLength ()
bar_t length () const
bpm_t getTempo ()
AutomationTrackglobalAutomationTrack ()
AutomatedValueMap automatedValuesAt (TimePos time, int clipNum=-1) const override
void createNewProject ()
void createNewProjectFromTemplate (const QString &templ)
void loadProject (const QString &filename)
bool guiSaveProject ()
bool guiSaveProjectAs (const QString &filename)
bool saveProjectFile (const QString &filename, bool withResources=false)
const QString & projectFileName () const
bool isLoadingProject () const
void loadingCancelled ()
bool isCancelled ()
bool isModified () const
QString nodeName () const override
virtual bool fixedClips () const
void addController (Controller *c)
void removeController (Controller *c)
const ControllerVectorcontrollers () const
MeterModelgetTimeSigModel ()
IntModeltempoModel ()
void exportProjectMidi (QString const &exportFileName) const
void setLoadOnLaunch (bool value)
SaveOptionsgetSaveOptions ()
bool isSavingProject () const
std::shared_ptr< const ScalegetScale (unsigned int index) const
std::shared_ptr< const KeymapgetKeymap (unsigned int index) const
void setScale (unsigned int index, std::shared_ptr< Scale > newScale)
void setKeymap (unsigned int index, std::shared_ptr< Keymap > newMap)
const std::string & syncKey () const noexcept
Metronomemetronome ()
Public Member Functions inherited from lmms::TrackContainer
 TrackContainer ()
 ~TrackContainer () override
void saveSettings (QDomDocument &_doc, QDomElement &_parent) override
void loadSettings (const QDomElement &_this) override
int countTracks (Track::Type _tt=Track::Type::Count) const
void addTrack (Track *_track)
void removeTrack (Track *_track)
void moveTrack (Track *track, int indexTo)
virtual void updateAfterTrackAdd ()
void clearAllTracks ()
const TrackListtracks () const
bool isEmpty () const
void setType (Type newType)
Type type () const
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 QString displayName () 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)
SerializingObjectHookhook ()

Static Public Attributes

static constexpr auto PlayModeCount = static_cast<std::size_t>(PlayMode::Count)

Private Slots

void insertBar ()
void removeBar ()
void addSampleTrack ()
void addAutomationTrack ()
void setTempo ()
void setTimeSignature ()
void masterVolumeChanged ()
void savePlayStartPosition ()
void updateFramesPerTick ()

Private Member Functions

 mapPropertyFromModel (int, getTempo, setTempo, m_tempoModel)
 mapPropertyFromModel (int, masterPitch, setMasterPitch, m_masterPitchModel)
 mapPropertyFromModel (int, masterVolume, setMasterVolume, m_masterVolumeModel)
 Song ()
 Song (const Song &)
 ~Song () override
bar_t currentBar () const
tick_t currentTick () const
f_cnt_t currentFrame () const
void saveControllerStates (QDomDocument &doc, QDomElement &element)
void restoreControllerStates (const QDomElement &element)
void removeAllControllers ()
void saveScaleStates (QDomDocument &doc, QDomElement &element)
void restoreScaleStates (const QDomElement &element)
void saveKeymapStates (QDomDocument &doc, QDomElement &element)
void restoreKeymapStates (const QDomElement &element)
void processAutomations (const TrackList &tracks, TimePos timeStart, f_cnt_t frames)
void processMetronome (size_t bufferOffset)
void setModified (bool value)
void setProjectFileName (QString const &projectFileName)

Private Attributes

AutomationTrackm_globalAutomationTrack
IntModel m_tempoModel
MeterModel m_timeSigModel
int m_oldTicksPerBar
IntModel m_masterVolumeModel
IntModel m_masterPitchModel
ControllerVector m_controllers
int m_nLoadingTrack
QString m_fileName
QString m_oldFileName
bool m_modified
bool m_loadOnLaunch
volatile bool m_recording
volatile bool m_exporting
volatile bool m_exportLoop
volatile bool m_renderBetweenMarkers
volatile bool m_playing
volatile bool m_paused
bool m_savingProject
bool m_loadingProject
bool m_isCancelled
SaveOptions m_saveOptions
QHash< QString, intm_errors
std::array< Timeline, PlayModeCountm_timelines
PlayMode m_playMode
bar_t m_length
const MidiClipm_midiClipToPlay
bool m_loopMidiClip
VstSyncController m_vstSyncController
int m_loopRenderCount
int m_loopRenderRemaining
TimePos m_exportSongBegin
TimePos m_exportLoopBegin
TimePos m_exportLoopEnd
TimePos m_exportSongEnd
TimePos m_exportEffectiveLength
std::shared_ptr< Scalem_scales [MaxScaleCount]
std::shared_ptr< Keymapm_keymaps [MaxKeymapCount]
AutomatedValueMap m_oldAutomatedValues
Metronome m_metronome

Friends

class Engine
class gui::SongEditor
class gui::ControllerRackView

Additional Inherited Members

Static Public Member Functions inherited from lmms::TrackContainer
static const QString classNodeName ()
Protected Member Functions inherited from lmms::JournallingObject
void changeID (jo_id_t _id)
Static Protected Member Functions inherited from lmms::TrackContainer
static AutomatedValueMap automatedValuesFromTracks (const TrackList &tracks, TimePos timeStart, int clipNum=-1)
Protected Attributes inherited from lmms::TrackContainer
QReadWriteLock m_tracksMutex

Member Enumeration Documentation

◆ PlayMode

enum class lmms::Song::PlayMode
strong
Enumerator
None 
Song 
Pattern 
MidiClip 
AutomationClip 
Count 

Constructor & Destructor Documentation

◆ Song() [1/2]

lmms::Song::Song ( )
private

◆ Song() [2/2]

lmms::Song::Song ( const Song & )
private

◆ ~Song()

lmms::Song::~Song ( )
overrideprivate

Member Function Documentation

◆ addAutomationTrack

void lmms::Song::addAutomationTrack ( )
privateslot

◆ addController()

void lmms::Song::addController ( Controller * c)

◆ addPatternTrack

void lmms::Song::addPatternTrack ( )
slot

◆ addSampleTrack

void lmms::Song::addSampleTrack ( )
privateslot

◆ automatedValuesAt()

AutomatedValueMap lmms::Song::automatedValuesAt ( TimePos time,
int clipNum = -1 ) const
overridevirtual

Reimplemented from lmms::TrackContainer.

◆ clearErrors()

void lmms::Song::clearErrors ( )

◆ clearProject

void lmms::Song::clearProject ( )
slot

◆ collectError()

void lmms::Song::collectError ( const QString error)

◆ controllerAdded

void lmms::Song::controllerAdded ( lmms::Controller * )
signal

◆ controllerRemoved

void lmms::Song::controllerRemoved ( lmms::Controller * )
signal

◆ controllers()

const ControllerVector & lmms::Song::controllers ( ) const
inline

◆ createNewProject()

void lmms::Song::createNewProject ( )

◆ createNewProjectFromTemplate()

void lmms::Song::createNewProjectFromTemplate ( const QString & templ)

◆ currentBar()

bar_t lmms::Song::currentBar ( ) const
inlineprivate

◆ currentFrame()

f_cnt_t lmms::Song::currentFrame ( ) const
inlineprivate

◆ currentTick()

tick_t lmms::Song::currentTick ( ) const
inlineprivate

◆ errorSummary()

QString lmms::Song::errorSummary ( )

◆ exportProjectMidi()

void lmms::Song::exportProjectMidi ( QString const & exportFileName) const

◆ fixedClips()

virtual bool lmms::Song::fixedClips ( ) const
inlinevirtual

◆ getBars()

int lmms::Song::getBars ( ) const
inline

◆ getBeat()

int lmms::Song::getBeat ( ) const
inline

◆ getBeatTicks()

int lmms::Song::getBeatTicks ( ) const
inline

◆ getExportProgress()

int lmms::Song::getExportProgress ( ) const

◆ getFrames()

f_cnt_t lmms::Song::getFrames ( ) const
inline

◆ getKeymap()

std::shared_ptr< const Keymap > lmms::Song::getKeymap ( unsigned int index) const

◆ getLoadingTrackCount()

int lmms::Song::getLoadingTrackCount ( ) const
inline

◆ getLoopRenderCount()

int lmms::Song::getLoopRenderCount ( ) const
inline

◆ getMilliseconds() [1/2]

int lmms::Song::getMilliseconds ( ) const
inline

◆ getMilliseconds() [2/2]

int lmms::Song::getMilliseconds ( PlayMode playMode) const
inline

Returns the elapsed milliseconds since the start of the song This function attempts to give the correct value even despite mid-song tempo changes

◆ getPlayPos() [1/2]

const TimePos & lmms::Song::getPlayPos ( ) const
inline

◆ getPlayPos() [2/2]

const TimePos & lmms::Song::getPlayPos ( PlayMode pm) const
inline

◆ getSaveOptions()

SaveOptions & lmms::Song::getSaveOptions ( )
inline

◆ getScale()

std::shared_ptr< const Scale > lmms::Song::getScale ( unsigned int index) const

◆ getTempo()

bpm_t lmms::Song::getTempo ( )

◆ getTicks()

int lmms::Song::getTicks ( ) const
inline

◆ getTimeline() [1/4]

auto lmms::Song::getTimeline ( ) -> Timeline &
inline

◆ getTimeline() [2/4]

auto lmms::Song::getTimeline ( ) const -> const Timeline &
inline

◆ getTimeline() [3/4]

auto lmms::Song::getTimeline ( PlayMode mode) -> Timeline &
inline

◆ getTimeline() [4/4]

auto lmms::Song::getTimeline ( PlayMode mode) const -> const Timeline &
inline

◆ getTimeSigModel()

MeterModel & lmms::Song::getTimeSigModel ( )
inline

◆ globalAutomationTrack()

AutomationTrack * lmms::Song::globalAutomationTrack ( )
inline

◆ guiSaveProject()

bool lmms::Song::guiSaveProject ( )

◆ guiSaveProjectAs()

bool lmms::Song::guiSaveProjectAs ( const QString & filename)

◆ hasErrors()

bool lmms::Song::hasErrors ( )

◆ insertBar

void lmms::Song::insertBar ( )
privateslot

◆ isCancelled()

bool lmms::Song::isCancelled ( )
inline

◆ isExportDone()

bool lmms::Song::isExportDone ( ) const

◆ isExporting()

bool lmms::Song::isExporting ( ) const
inline

◆ isLoadingProject()

bool lmms::Song::isLoadingProject ( ) const
inline

◆ isModified()

bool lmms::Song::isModified ( ) const
inline

◆ isPaused()

bool lmms::Song::isPaused ( ) const
inline

◆ isPlaying()

bool lmms::Song::isPlaying ( ) const
inline

◆ isRecording()

bool lmms::Song::isRecording ( ) const
inline

◆ isSavingProject()

bool lmms::Song::isSavingProject ( ) const

◆ isStopped()

bool lmms::Song::isStopped ( ) const
inline

◆ keymapListChanged

void lmms::Song::keymapListChanged ( int index)
signal

◆ length()

bar_t lmms::Song::length ( ) const
inline

◆ lengthChanged

void lmms::Song::lengthChanged ( int bars)
signal

◆ loadingCancelled()

void lmms::Song::loadingCancelled ( )
inline

◆ loadProject()

void lmms::Song::loadProject ( const QString & filename)

◆ mapPropertyFromModel() [1/3]

lmms::Song::mapPropertyFromModel ( int ,
getTempo ,
setTempo ,
m_tempoModel  )
private

◆ mapPropertyFromModel() [2/3]

lmms::Song::mapPropertyFromModel ( int ,
masterPitch ,
setMasterPitch ,
m_masterPitchModel  )
private

◆ mapPropertyFromModel() [3/3]

lmms::Song::mapPropertyFromModel ( int ,
masterVolume ,
setMasterVolume ,
m_masterVolumeModel  )
private

◆ masterVolumeChanged

void lmms::Song::masterVolumeChanged ( )
privateslot

◆ metronome()

Metronome & lmms::Song::metronome ( )
inline

◆ modified

void lmms::Song::modified ( )
signal

◆ nodeName()

QString lmms::Song::nodeName ( void ) const
inlineoverridevirtual

◆ playAndRecord

void lmms::Song::playAndRecord ( )
slot

◆ playbackPositionJumped

void lmms::Song::playbackPositionJumped ( )
signal

◆ playbackStateChanged

void lmms::Song::playbackStateChanged ( )
signal

◆ playMidiClip

void lmms::Song::playMidiClip ( const lmms::MidiClip * midiClipToPlay,
bool loop = true )
slot

◆ playMode()

PlayMode lmms::Song::playMode ( ) const
inline

◆ playPattern

void lmms::Song::playPattern ( )
slot

◆ playSong

void lmms::Song::playSong ( )
slot

◆ processAutomations()

void lmms::Song::processAutomations ( const TrackList & tracks,
TimePos timeStart,
f_cnt_t frames )
private

◆ processMetronome()

void lmms::Song::processMetronome ( size_t bufferOffset)
private

◆ processNextBuffer()

void lmms::Song::processNextBuffer ( )

◆ projectFileName()

const QString & lmms::Song::projectFileName ( ) const
inline

◆ projectFileNameChanged

void lmms::Song::projectFileNameChanged ( )
signal

◆ projectLoaded

void lmms::Song::projectLoaded ( )
signal

◆ record

void lmms::Song::record ( )
slot

◆ removeAllControllers()

void lmms::Song::removeAllControllers ( )
private

◆ removeBar

void lmms::Song::removeBar ( )
privateslot

◆ removeController()

void lmms::Song::removeController ( Controller * c)

◆ restoreControllerStates()

void lmms::Song::restoreControllerStates ( const QDomElement & element)
private

◆ restoreKeymapStates()

void lmms::Song::restoreKeymapStates ( const QDomElement & element)
private

◆ restoreScaleStates()

void lmms::Song::restoreScaleStates ( const QDomElement & element)
private

◆ saveControllerStates()

void lmms::Song::saveControllerStates ( QDomDocument & doc,
QDomElement & element )
private

◆ saveKeymapStates()

void lmms::Song::saveKeymapStates ( QDomDocument & doc,
QDomElement & element )
private

◆ savePlayStartPosition

void lmms::Song::savePlayStartPosition ( )
privateslot

◆ saveProjectFile()

bool lmms::Song::saveProjectFile ( const QString & filename,
bool withResources = false )

◆ saveScaleStates()

void lmms::Song::saveScaleStates ( QDomDocument & doc,
QDomElement & element )
private

◆ scaleListChanged

void lmms::Song::scaleListChanged ( int index)
signal

◆ setExportLoop()

void lmms::Song::setExportLoop ( bool exportLoop)
inline

◆ setKeymap()

void lmms::Song::setKeymap ( unsigned int index,
std::shared_ptr< Keymap > newMap )

◆ setLoadOnLaunch()

void lmms::Song::setLoadOnLaunch ( bool value)
inline

◆ setLoopRenderCount()

void lmms::Song::setLoopRenderCount ( int count)
inline

◆ setModified [1/2]

void lmms::Song::setModified ( )
slot

◆ setModified() [2/2]

void lmms::Song::setModified ( bool value)
private

◆ setPlayPos() [1/2]

void lmms::Song::setPlayPos ( tick_t ticks)
inline

◆ setPlayPos() [2/2]

void lmms::Song::setPlayPos ( tick_t ticks,
PlayMode playMode )
inline

◆ setProjectFileName()

void lmms::Song::setProjectFileName ( QString const & projectFileName)
private

◆ setRenderBetweenMarkers()

void lmms::Song::setRenderBetweenMarkers ( bool renderBetweenMarkers)
inline

◆ setScale()

void lmms::Song::setScale ( unsigned int index,
std::shared_ptr< Scale > newScale )

◆ setTempo

void lmms::Song::setTempo ( )
privateslot

◆ setTimeSignature

void lmms::Song::setTimeSignature ( )
privateslot

◆ startExport

void lmms::Song::startExport ( )
slot

◆ stop

void lmms::Song::stop ( )
slot

◆ stopExport

void lmms::Song::stopExport ( )
slot

◆ stopped

void lmms::Song::stopped ( )
signal

◆ syncKey()

const std::string & lmms::Song::syncKey ( ) const
inlinenoexcept

◆ tempoChanged

void lmms::Song::tempoChanged ( lmms::bpm_t newBPM)
signal

◆ tempoModel()

IntModel & lmms::Song::tempoModel ( )
inline

◆ ticksPerBar()

int lmms::Song::ticksPerBar ( ) const
inline

◆ timeSignatureChanged

void lmms::Song::timeSignatureChanged ( int oldTicksPerBar,
int ticksPerBar )
signal

◆ togglePause

void lmms::Song::togglePause ( )
slot

◆ updateFramesPerTick

void lmms::Song::updateFramesPerTick ( )
privateslot

◆ updateLength()

void lmms::Song::updateLength ( )

◆ Engine

friend class Engine
friend

◆ gui::ControllerRackView

friend class gui::ControllerRackView
friend

◆ gui::SongEditor

friend class gui::SongEditor
friend

Member Data Documentation

◆ m_controllers

ControllerVector lmms::Song::m_controllers
private

◆ m_errors

QHash<QString, int> lmms::Song::m_errors
private

◆ m_exportEffectiveLength

TimePos lmms::Song::m_exportEffectiveLength
private

◆ m_exporting

volatile bool lmms::Song::m_exporting
private

◆ m_exportLoop

volatile bool lmms::Song::m_exportLoop
private

◆ m_exportLoopBegin

TimePos lmms::Song::m_exportLoopBegin
private

◆ m_exportLoopEnd

TimePos lmms::Song::m_exportLoopEnd
private

◆ m_exportSongBegin

TimePos lmms::Song::m_exportSongBegin
private

◆ m_exportSongEnd

TimePos lmms::Song::m_exportSongEnd
private

◆ m_fileName

QString lmms::Song::m_fileName
private

◆ m_globalAutomationTrack

AutomationTrack* lmms::Song::m_globalAutomationTrack
private

◆ m_isCancelled

bool lmms::Song::m_isCancelled
private

◆ m_keymaps

std::shared_ptr<Keymap> lmms::Song::m_keymaps[MaxKeymapCount]
private

◆ m_length

bar_t lmms::Song::m_length
private

◆ m_loadingProject

bool lmms::Song::m_loadingProject
private

◆ m_loadOnLaunch

bool lmms::Song::m_loadOnLaunch
private

◆ m_loopMidiClip

bool lmms::Song::m_loopMidiClip
private

◆ m_loopRenderCount

int lmms::Song::m_loopRenderCount
private

◆ m_loopRenderRemaining

int lmms::Song::m_loopRenderRemaining
private

◆ m_masterPitchModel

IntModel lmms::Song::m_masterPitchModel
private

◆ m_masterVolumeModel

IntModel lmms::Song::m_masterVolumeModel
private

◆ m_metronome

Metronome lmms::Song::m_metronome
private

◆ m_midiClipToPlay

const MidiClip* lmms::Song::m_midiClipToPlay
private

◆ m_modified

bool lmms::Song::m_modified
private

◆ m_nLoadingTrack

int lmms::Song::m_nLoadingTrack
private

◆ m_oldAutomatedValues

AutomatedValueMap lmms::Song::m_oldAutomatedValues
private

◆ m_oldFileName

QString lmms::Song::m_oldFileName
private

◆ m_oldTicksPerBar

int lmms::Song::m_oldTicksPerBar
private

◆ m_paused

volatile bool lmms::Song::m_paused
private

◆ m_playing

volatile bool lmms::Song::m_playing
private

◆ m_playMode

PlayMode lmms::Song::m_playMode
private

◆ m_recording

volatile bool lmms::Song::m_recording
private

◆ m_renderBetweenMarkers

volatile bool lmms::Song::m_renderBetweenMarkers
private

◆ m_saveOptions

SaveOptions lmms::Song::m_saveOptions
private

◆ m_savingProject

bool lmms::Song::m_savingProject
private

◆ m_scales

std::shared_ptr<Scale> lmms::Song::m_scales[MaxScaleCount]
private

◆ m_tempoModel

IntModel lmms::Song::m_tempoModel
private

◆ m_timelines

std::array<Timeline, PlayModeCount> lmms::Song::m_timelines
private

◆ m_timeSigModel

MeterModel lmms::Song::m_timeSigModel
private

◆ m_vstSyncController

VstSyncController lmms::Song::m_vstSyncController
private

◆ PlayModeCount

auto lmms::Song::PlayModeCount = static_cast<std::size_t>(PlayMode::Count)
staticconstexpr

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