Deluge Firmware
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Song Class Referencefinal

#include <song.h>

Inheritance diagram for Song:
Inheritance graph
Collaboration diagram for Song:
Collaboration graph

Public Member Functions

 Song ()
 
 ~Song ()
 
bool mayDoubleTempo ()
 
bool ensureAtLeastOneSessionClip ()
 
void transposeAllScaleModeClips (int offset)
 
bool anyScaleModeClips ()
 
void setRootNote (int newRootNote, InstrumentClip *clipToAvoidAdjustingScrollFor=NULL)
 
void addModeNote (uint8_t modeNote)
 
void addMajorDependentModeNotes (uint8_t i, bool preferHigher, bool notesWithinOctavePresent[])
 
bool yNoteIsYVisualWithinOctave (int yNote, int yVisualWithinOctave)
 
uint8_t getYNoteWithinOctaveFromYNote (int yNote)
 
void changeMusicalMode (uint8_t yVisualWithinOctave, int8_t change)
 
int getYVisualFromYNote (int yNote, bool inKeyMode)
 
int getYNoteFromYVisual (int yVisual, bool inKeyMode)
 
bool mayMoveModeNote (int16_t yVisualWithinOctave, int8_t newOffset)
 
bool modeContainsYNote (int yNote)
 
ParamManagerForTimelinefindParamManagerForDrum (Kit *kit, Drum *drum, Clip *stopTraversalAtClip=NULL)
 
void setupPatchingForAllParamManagersForDrum (SoundDrum *drum)
 
void setupPatchingForAllParamManagersForInstrument (SoundInstrument *sound)
 
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForInstrument (MIDIDevice *device, SoundInstrument *instrument)
 
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForDrum (MIDIDevice *device, SoundDrum *drum, Kit *kit)
 
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForEverything (MIDIDevice *device)
 
int cycleThroughScales ()
 
int getCurrentPresetScale ()
 
void setTempoFromNumSamples (double newTempoSamples, bool shouldLogAction)
 
void setupDefault ()
 
void setBPM (float tempoBPM, bool shouldLogAction)
 
void setTempoFromParams (int32_t magnitude, int8_t whichValue, bool shouldLogAction)
 
void deleteSoundsWhichWontSound ()
 
void deleteClipObject (Clip *clip, bool songBeingDestroyedToo=false, int instrumentRemovalInstruction=INSTRUMENT_REMOVAL_DELETE_OR_HIBERNATE_IF_UNUSED)
 
int getMaxMIDIChannelSuffix (int channel)
 
void addOutput (Output *output, bool atStart=true)
 
void deleteOutputThatIsInMainList (Output *output, bool stopAnyAuditioningFirst=true)
 
void markAllInstrumentsAsEdited ()
 
InstrumentgetInstrumentFromPresetSlot (int instrumentType, int presetNumber, int presetSubSlotNumber, char const *name, char const *dirPath, bool searchHibernatingToo=true, bool searchNonHibernating=true)
 
AudioOutputgetAudioOutputFromName (String *name)
 
void setupPatchingForAllParamManagers ()
 
void replaceInstrument (Instrument *oldInstrument, Instrument *newInstrument, bool keepNoteRowsWithMIDIInput=true)
 
void stopAllMIDIAndGateNotesPlaying ()
 
void stopAllAuditioning ()
 
void deleteOrHibernateOutput (Output *output)
 
uint32_t getLivePos ()
 
int32_t getLoopLength ()
 
InstrumentgetNonAudioInstrumentToSwitchTo (int newInstrumentType, int availabilityRequirement, int16_t newSlot, int8_t newSubSlot, bool *instrumentWasAlreadyInSong)
 
void removeSessionClipLowLevel (Clip *clip, int clipIndex)
 
void changeSwingInterval (int newValue)
 
int convertSyncLevelFromFileValueToInternalValue (int fileValue)
 
int convertSyncLevelFromInternalValueToFileValue (int internalValue)
 
bool getAnyClipsSoloing ()
 
uint32_t getInputTickScale ()
 
ClipgetSyncScalingClip ()
 
void setInputTickScaleClip (Clip *clip)
 
void setClipLength (Clip *clip, uint32_t newLength, Action *action, bool mayReSyncClip=true)
 
void doubleClipLength (InstrumentClip *clip, Action *action=NULL)
 
ClipgetClipWithOutput (Output *output, bool mustBeActive=false, Clip *excludeClip=NULL)
 
int readFromFile ()
 
void writeToFile ()
 
void loadAllSamples (bool mayActuallyReadFiles=true)
 
bool modeContainsYNoteWithinOctave (uint8_t yNoteWithinOctave)
 
void renderAudio (StereoSample *outputBuffer, int numSamples, int32_t *reverbBuffer, int32_t sideChainHitPending)
 
bool isYNoteAllowed (int yNote, bool inKeyMode)
 
void setTimePerTimerTick (uint64_t newTimeBig, bool shouldLogAction=false)
 
bool hasAnySwing ()
 
void resyncLFOsAndArpeggiators ()
 
void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero (Sound *sound)
 
bool areAllClipsInSectionPlaying (int section)
 
void removeYNoteFromMode (int yNoteWithinOctave)
 
void turnSoloingIntoJustPlaying (bool getRidOfArmingToo=true)
 
void reassessWhetherAnyClipsSoloing ()
 
float getTimePerTimerTickFloat ()
 
uint32_t getTimePerTimerTickRounded ()
 
int getNumOutputs ()
 
ClipgetNextSessionClipWithOutput (int offset, Output *output, Clip *prevClip)
 
ParamManagergetBackedUpParamManagerForExactClip (ModControllableAudio *modControllable, Clip *clip, ParamManager *stealInto=NULL)
 
ParamManagergetBackedUpParamManagerPreferablyWithClip (ModControllableAudio *modControllable, Clip *clip, ParamManager *stealInto=NULL)
 
void backUpParamManager (ModControllableAudio *modControllable, Clip *clip, ParamManagerForTimeline *paramManager, bool shouldStealExpressionParamsToo=false)
 
void moveInstrumentToHibernationList (Instrument *instrument)
 
void deleteOrHibernateOutputIfNoClips (Output *output)
 
void removeInstrumentFromHibernationList (Instrument *instrument)
 
bool doesOutputHaveActiveClipInSession (Output *output)
 
bool doesNonAudioSlotHaveActiveClipInSession (int instrumentType, int slot, int subSlot=-1)
 
bool doesOutputHaveAnyClips (Output *output)
 
void deleteBackedUpParamManagersForClip (Clip *clip)
 
void deleteBackedUpParamManagersForModControllable (ModControllableAudio *modControllable)
 
void deleteHibernatingInstrumentWithSlot (int instrumentType, char const *name)
 
void loadCrucialSamplesOnly ()
 
ClipgetSessionClipWithOutput (Output *output, int requireSection=-1, Clip *excludeClip=NULL, int *clipIndex=NULL, bool excludePendingOverdubs=false)
 
void restoreClipStatesBeforeArrangementPlay ()
 
void deleteOrAddToHibernationListOutput (Output *output)
 
int getLowestSectionWithNoSessionClipForOutput (Output *output)
 
void assertActiveness (ModelStackWithTimelineCounter *modelStack, int32_t endInstanceAtTime=-1)
 
bool isClipActive (Clip *clip)
 
void sendAllMIDIPGMs ()
 
void sortOutWhichClipsAreActiveWithoutSendingPGMs (ModelStack *modelStack, int playbackWillStartInArrangerAtPos)
 
void deactivateAnyArrangementOnlyClips ()
 
ClipgetLongestClip (bool includePlayDisabled, bool includeArrangementOnly)
 
ClipgetLongestActiveClipWithMultipleOrFactorLength (int32_t targetLength, bool revertToAnyActiveClipIfNone=true, Clip *excludeClip=NULL)
 
int getOutputIndex (Output *output)
 
void setHibernatingMIDIInstrument (MIDIInstrument *newInstrument)
 
void deleteHibernatingMIDIInstrument ()
 
MIDIInstrumentgrabHibernatingMIDIInstrument (int newSlot, int newSubSlot)
 
NoteRowfindNoteRowForDrum (Kit *kit, Drum *drum, Clip *stopTraversalAtClip=NULL)
 
bool getAnyOutputsSoloingInArrangement ()
 
void reassessWhetherAnyOutputsSoloingInArrangement ()
 
bool isOutputActiveInArrangement (Output *output)
 
OutputgetOutputFromIndex (int index)
 
void ensureAllInstrumentsHaveAClipOrBackedUpParamManager (char const *errorMessageNormal, char const *errorMessageHibernating)
 
int placeFirstInstancesOfActiveClips (int32_t pos)
 
void endInstancesOfActiveClips (int32_t pos, bool detachClipsToo=false)
 
void clearArrangementBeyondPos (int32_t pos, Action *action)
 
void deletingClipInstanceForClip (Output *output, Clip *clip, Action *action, bool shouldPickNewActiveClip)
 
bool arrangementHasAnyClipInstances ()
 
void resumeClipsClonedForArrangementRecording ()
 
bool isPlayingAutomationNow ()
 
bool backtrackingCouldLoopBackToEnd ()
 
int32_t getPosAtWhichPlaybackWillCut (ModelStackWithTimelineCounter const *modelStack)
 
void getActiveModControllable (ModelStackWithTimelineCounter *modelStack)
 
void expectEvent ()
 
TimelineCountergetTimelineCounterToRecordTo ()
 
int32_t getLastProcessedPos ()
 
void setParamsInAutomationMode (bool newState)
 
bool canOldOutputBeReplaced (Clip *clip, int *availabilityRequirement=NULL)
 
void instrumentSwapped (Instrument *newInstrument)
 
InstrumentchangeInstrumentType (Instrument *oldInstrument, int newInstrumentType)
 
AudioOutputgetFirstAudioOutput ()
 
AudioOutputcreateNewAudioOutput (Output *replaceOutput=NULL)
 
void getNoteLengthName (char *text, uint32_t noteLength, bool clarifyPerColumn=false)
 
void replaceOutputLowLevel (Output *newOutput, Output *oldOutput)
 
void removeSessionClip (Clip *clip, int clipIndex, bool forceClipsAboveToMoveVertically=false)
 
bool deletePendingOverdubs (Output *onlyWithOutput=NULL, int *originalClipIndex=NULL, bool createConsequencesForOtherLinearlyRecordingClips=false)
 
ClipgetPendingOverdubWithOutput (Output *output)
 
ClipgetClipWithOutputAboutToBeginLinearRecording (Output *output)
 
ClipcreatePendingNextOverdubBelowClip (Clip *clip, int clipIndex, int newOverdubNature)
 
bool hasAnyPendingNextOverdubs ()
 
OutputgetNextAudioOutput (int offset, Output *oldOutput, int availabilityRequirement)
 
void deleteOutput (Output *output)
 
void cullAudioClipVoice ()
 
int getYScrollSongViewWithoutPendingOverdubs ()
 
int removeOutputFromMainList (Output *output, bool stopAnyAuditioningFirst=true)
 
void swapClips (Clip *newClip, Clip *oldClip, int clipIndex)
 
ClipreplaceInstrumentClipWithAudioClip (Clip *oldClip, int clipIndex)
 
void setDefaultVelocityForAllInstruments (uint8_t newDefaultVelocity)
 
void midiDeviceBendRangeUpdatedViaMessage (ModelStack *modelStack, MIDIDevice *device, int channelOrZone, int whichBendRange, int bendSemitones)
 
int addInstrumentsToFileItems (int instrumentType)
 
uint32_t getQuarterNoteLength ()
 
uint32_t getBarLength ()
 
ModelStackWithThreeMainThingssetupModelStackWithSongAsTimelineCounter (void *memory)
 
ModelStackWithTimelineCountersetupModelStackWithCurrentClip (void *memory)
 
ModelStackWithThreeMainThingsaddToModelStack (ModelStack *modelStack)
 
- Public Member Functions inherited from TimelineCounter
 TimelineCounter ()
 
virtual ~TimelineCounter ()
 
virtual int32_t getLastProcessedPos ()=0
 
virtual uint32_t getLivePos ()=0
 
virtual int32_t getLoopLength ()=0
 
virtual bool isPlayingAutomationNow ()=0
 
virtual bool backtrackingCouldLoopBackToEnd ()=0
 
virtual int32_t getPosAtWhichPlaybackWillCut (ModelStackWithTimelineCounter const *modelStack)=0
 
virtual bool possiblyCloneForArrangementRecording (ModelStackWithTimelineCounter *modelStack)
 
virtual void getActiveModControllable (ModelStackWithTimelineCounter *modelStack)=0
 
virtual void expectEvent ()=0
 
virtual TimelineCountergetTimelineCounterToRecordTo ()=0
 
virtual void instrumentBeenEdited ()
 

Public Attributes

GlobalEffectableForSong globalEffectable
 
ClipArray sessionClips
 
ClipArray arrangementOnlyClips
 
OutputfirstOutput
 
InstrumentfirstHibernatingInstrument
 
ClipcurrentClip
 
OrderedResizeableArrayWithMultiWordKey backedUpParamManagers
 
uint32_t xZoom [2]
 
int32_t xScroll [2]
 
int32_t xScrollForReturnToSongView
 
int32_t xZoomForReturnToSongView
 
bool tripletsOn
 
uint32_t tripletsLevel
 
uint64_t timePerTimerTickBig
 
int32_t divideByTimePerTimerTick
 
int insideWorldTickMagnitude
 
int insideWorldTickMagnitudeOffsetFromBPM
 
int8_t swingAmount
 
uint8_t swingInterval
 
Section sections [MAX_NUM_SECTIONS]
 
uint8_t modeNotes [12]
 
uint8_t numModeNotes
 
int16_t rootNote
 
uint16_t slot
 
int8_t subSlot
 
String name
 
bool affectEntire
 
int songViewYScroll
 
int arrangementYScroll
 
uint8_t sectionToReturnToAfterSongEnd
 
bool wasLastInArrangementEditor
 
int32_t lastClipInstanceEnteredStartPos
 
bool arrangerAutoScrollModeActive
 
MIDIInstrumenthibernatingMIDIInstrument
 
bool outputClipInstanceListIsCurrentlyInvalid
 
bool paramsInAutomationMode
 
bool inClipMinderViewOnLoad
 
int32_t unautomatedParamValues [MAX_NUM_UNPATCHED_PARAMS]
 
String dirPath
 
ClipsyncScalingClip
 
bool anyClipsSoloing
 
bool anyOutputsSoloingInArrangement
 
float reverbRoomSize
 
float reverbDamp
 
float reverbWidth
 
int32_t reverbPan
 
int32_t reverbCompressorVolume
 
int32_t reverbCompressorShape
 
int32_t reverbCompressorAttack
 
int32_t reverbCompressorRelease
 
uint8_t reverbCompressorSync
 
- Public Attributes inherited from TimelineCounter
ParamManagerForTimeline paramManager
 

Constructor & Destructor Documentation

◆ Song()

Song::Song ( )

◆ ~Song()

Song::~Song ( )

Member Function Documentation

◆ addInstrumentsToFileItems()

int Song::addInstrumentsToFileItems ( int  instrumentType)

◆ addMajorDependentModeNotes()

void Song::addMajorDependentModeNotes ( uint8_t  i,
bool  preferHigher,
bool  notesWithinOctavePresent[] 
)

◆ addModeNote()

void Song::addModeNote ( uint8_t  modeNote)

◆ addOutput()

void Song::addOutput ( Output output,
bool  atStart = true 
)

◆ addToModelStack()

ModelStackWithThreeMainThings * Song::addToModelStack ( ModelStack modelStack)

◆ anyScaleModeClips()

bool Song::anyScaleModeClips ( )

◆ areAllClipsInSectionPlaying()

bool Song::areAllClipsInSectionPlaying ( int  section)

◆ arrangementHasAnyClipInstances()

bool Song::arrangementHasAnyClipInstances ( )

◆ assertActiveness()

void Song::assertActiveness ( ModelStackWithTimelineCounter modelStack,
int32_t  endInstanceAtTime = -1 
)

◆ backtrackingCouldLoopBackToEnd()

bool Song::backtrackingCouldLoopBackToEnd ( )
virtual

Implements TimelineCounter.

◆ backUpParamManager()

void Song::backUpParamManager ( ModControllableAudio modControllable,
Clip clip,
ParamManagerForTimeline paramManager,
bool  shouldStealExpressionParamsToo = false 
)

◆ canOldOutputBeReplaced()

bool Song::canOldOutputBeReplaced ( Clip clip,
int *  availabilityRequirement = NULL 
)

◆ changeInstrumentType()

Instrument * Song::changeInstrumentType ( Instrument oldInstrument,
int  newInstrumentType 
)

◆ changeMusicalMode()

void Song::changeMusicalMode ( uint8_t  yVisualWithinOctave,
int8_t  change 
)

◆ changeSwingInterval()

void Song::changeSwingInterval ( int  newValue)

◆ clearArrangementBeyondPos()

void Song::clearArrangementBeyondPos ( int32_t  pos,
Action action 
)

◆ convertSyncLevelFromFileValueToInternalValue()

int Song::convertSyncLevelFromFileValueToInternalValue ( int  fileValue)

◆ convertSyncLevelFromInternalValueToFileValue()

int Song::convertSyncLevelFromInternalValueToFileValue ( int  internalValue)

◆ createNewAudioOutput()

AudioOutput * Song::createNewAudioOutput ( Output replaceOutput = NULL)

◆ createPendingNextOverdubBelowClip()

Clip * Song::createPendingNextOverdubBelowClip ( Clip clip,
int  clipIndex,
int  newOverdubNature 
)

◆ cullAudioClipVoice()

void Song::cullAudioClipVoice ( )

◆ cycleThroughScales()

int Song::cycleThroughScales ( )

◆ deactivateAnyArrangementOnlyClips()

void Song::deactivateAnyArrangementOnlyClips ( )

◆ deleteBackedUpParamManagersForClip()

void Song::deleteBackedUpParamManagersForClip ( Clip clip)

◆ deleteBackedUpParamManagersForModControllable()

void Song::deleteBackedUpParamManagersForModControllable ( ModControllableAudio modControllable)

◆ deleteClipObject()

void Song::deleteClipObject ( Clip clip,
bool  songBeingDestroyedToo = false,
int  instrumentRemovalInstruction = INSTRUMENT_REMOVAL_DELETE_OR_HIBERNATE_IF_UNUSED 
)

◆ deleteHibernatingInstrumentWithSlot()

void Song::deleteHibernatingInstrumentWithSlot ( int  instrumentType,
char const *  name 
)

◆ deleteHibernatingMIDIInstrument()

void Song::deleteHibernatingMIDIInstrument ( )

◆ deleteOrAddToHibernationListOutput()

void Song::deleteOrAddToHibernationListOutput ( Output output)

◆ deleteOrHibernateOutput()

void Song::deleteOrHibernateOutput ( Output output)

◆ deleteOrHibernateOutputIfNoClips()

void Song::deleteOrHibernateOutputIfNoClips ( Output output)

◆ deleteOutput()

void Song::deleteOutput ( Output output)

◆ deleteOutputThatIsInMainList()

void Song::deleteOutputThatIsInMainList ( Output output,
bool  stopAnyAuditioningFirst = true 
)

◆ deletePendingOverdubs()

bool Song::deletePendingOverdubs ( Output onlyWithOutput = NULL,
int *  originalClipIndex = NULL,
bool  createConsequencesForOtherLinearlyRecordingClips = false 
)

◆ deleteSoundsWhichWontSound()

void Song::deleteSoundsWhichWontSound ( )

◆ deletingClipInstanceForClip()

void Song::deletingClipInstanceForClip ( Output output,
Clip clip,
Action action,
bool  shouldPickNewActiveClip 
)

◆ doesNonAudioSlotHaveActiveClipInSession()

bool Song::doesNonAudioSlotHaveActiveClipInSession ( int  instrumentType,
int  slot,
int  subSlot = -1 
)

◆ doesOutputHaveActiveClipInSession()

bool Song::doesOutputHaveActiveClipInSession ( Output output)

◆ doesOutputHaveAnyClips()

bool Song::doesOutputHaveAnyClips ( Output output)

◆ doubleClipLength()

void Song::doubleClipLength ( InstrumentClip clip,
Action action = NULL 
)

◆ endInstancesOfActiveClips()

void Song::endInstancesOfActiveClips ( int32_t  pos,
bool  detachClipsToo = false 
)

◆ ensureAllInstrumentsHaveAClipOrBackedUpParamManager()

void Song::ensureAllInstrumentsHaveAClipOrBackedUpParamManager ( char const *  errorMessageNormal,
char const *  errorMessageHibernating 
)

◆ ensureAtLeastOneSessionClip()

bool Song::ensureAtLeastOneSessionClip ( )

◆ ensureInaccessibleParamPresetValuesWithoutKnobsAreZero()

void Song::ensureInaccessibleParamPresetValuesWithoutKnobsAreZero ( Sound sound)

◆ expectEvent()

void Song::expectEvent ( )
virtual

Implements TimelineCounter.

◆ findNoteRowForDrum()

NoteRow * Song::findNoteRowForDrum ( Kit kit,
Drum drum,
Clip stopTraversalAtClip = NULL 
)

◆ findParamManagerForDrum()

ParamManagerForTimeline * Song::findParamManagerForDrum ( Kit kit,
Drum drum,
Clip stopTraversalAtClip = NULL 
)

◆ getActiveModControllable()

void Song::getActiveModControllable ( ModelStackWithTimelineCounter modelStack)
virtual

Implements TimelineCounter.

◆ getAnyClipsSoloing()

bool Song::getAnyClipsSoloing ( )

◆ getAnyOutputsSoloingInArrangement()

bool Song::getAnyOutputsSoloingInArrangement ( )

◆ getAudioOutputFromName()

AudioOutput * Song::getAudioOutputFromName ( String name)

◆ getBackedUpParamManagerForExactClip()

ParamManager * Song::getBackedUpParamManagerForExactClip ( ModControllableAudio modControllable,
Clip clip,
ParamManager stealInto = NULL 
)

◆ getBackedUpParamManagerPreferablyWithClip()

ParamManager * Song::getBackedUpParamManagerPreferablyWithClip ( ModControllableAudio modControllable,
Clip clip,
ParamManager stealInto = NULL 
)

◆ getBarLength()

uint32_t Song::getBarLength ( )

◆ getClipWithOutput()

Clip * Song::getClipWithOutput ( Output output,
bool  mustBeActive = false,
Clip excludeClip = NULL 
)

◆ getClipWithOutputAboutToBeginLinearRecording()

Clip * Song::getClipWithOutputAboutToBeginLinearRecording ( Output output)

◆ getCurrentPresetScale()

int Song::getCurrentPresetScale ( )

◆ getFirstAudioOutput()

AudioOutput * Song::getFirstAudioOutput ( )

◆ getInputTickScale()

uint32_t Song::getInputTickScale ( )

◆ getInstrumentFromPresetSlot()

Instrument * Song::getInstrumentFromPresetSlot ( int  instrumentType,
int  presetNumber,
int  presetSubSlotNumber,
char const *  name,
char const *  dirPath,
bool  searchHibernatingToo = true,
bool  searchNonHibernating = true 
)

◆ getLastProcessedPos()

int32_t Song::getLastProcessedPos ( )
virtual

Implements TimelineCounter.

◆ getLivePos()

uint32_t Song::getLivePos ( )
virtual

Implements TimelineCounter.

◆ getLongestActiveClipWithMultipleOrFactorLength()

Clip * Song::getLongestActiveClipWithMultipleOrFactorLength ( int32_t  targetLength,
bool  revertToAnyActiveClipIfNone = true,
Clip excludeClip = NULL 
)

◆ getLongestClip()

Clip * Song::getLongestClip ( bool  includePlayDisabled,
bool  includeArrangementOnly 
)

◆ getLoopLength()

int32_t Song::getLoopLength ( )
virtual

Implements TimelineCounter.

◆ getLowestSectionWithNoSessionClipForOutput()

int Song::getLowestSectionWithNoSessionClipForOutput ( Output output)

◆ getMaxMIDIChannelSuffix()

int Song::getMaxMIDIChannelSuffix ( int  channel)

◆ getNextAudioOutput()

Output * Song::getNextAudioOutput ( int  offset,
Output oldOutput,
int  availabilityRequirement 
)

◆ getNextSessionClipWithOutput()

Clip * Song::getNextSessionClipWithOutput ( int  offset,
Output output,
Clip prevClip 
)

◆ getNonAudioInstrumentToSwitchTo()

Instrument * Song::getNonAudioInstrumentToSwitchTo ( int  newInstrumentType,
int  availabilityRequirement,
int16_t  newSlot,
int8_t  newSubSlot,
bool *  instrumentWasAlreadyInSong 
)

◆ getNoteLengthName()

void Song::getNoteLengthName ( char *  text,
uint32_t  noteLength,
bool  clarifyPerColumn = false 
)

◆ getNumOutputs()

int Song::getNumOutputs ( )

◆ getOutputFromIndex()

Output * Song::getOutputFromIndex ( int  index)

◆ getOutputIndex()

int Song::getOutputIndex ( Output output)

◆ getPendingOverdubWithOutput()

Clip * Song::getPendingOverdubWithOutput ( Output output)

◆ getPosAtWhichPlaybackWillCut()

int32_t Song::getPosAtWhichPlaybackWillCut ( ModelStackWithTimelineCounter const *  modelStack)
virtual

Implements TimelineCounter.

◆ getQuarterNoteLength()

uint32_t Song::getQuarterNoteLength ( )

◆ getSessionClipWithOutput()

Clip * Song::getSessionClipWithOutput ( Output output,
int  requireSection = -1,
Clip excludeClip = NULL,
int *  clipIndex = NULL,
bool  excludePendingOverdubs = false 
)

◆ getSyncScalingClip()

Clip * Song::getSyncScalingClip ( )

◆ getTimelineCounterToRecordTo()

TimelineCounter * Song::getTimelineCounterToRecordTo ( )
virtual

Implements TimelineCounter.

◆ getTimePerTimerTickFloat()

float Song::getTimePerTimerTickFloat ( )

◆ getTimePerTimerTickRounded()

uint32_t Song::getTimePerTimerTickRounded ( )

◆ getYNoteFromYVisual()

int Song::getYNoteFromYVisual ( int  yVisual,
bool  inKeyMode 
)

◆ getYNoteWithinOctaveFromYNote()

uint8_t Song::getYNoteWithinOctaveFromYNote ( int  yNote)

◆ getYScrollSongViewWithoutPendingOverdubs()

int Song::getYScrollSongViewWithoutPendingOverdubs ( )

◆ getYVisualFromYNote()

int Song::getYVisualFromYNote ( int  yNote,
bool  inKeyMode 
)

◆ grabHibernatingMIDIInstrument()

MIDIInstrument * Song::grabHibernatingMIDIInstrument ( int  newSlot,
int  newSubSlot 
)

◆ grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForDrum()

void Song::grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForDrum ( MIDIDevice device,
SoundDrum drum,
Kit kit 
)

◆ grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForInstrument()

void Song::grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForInstrument ( MIDIDevice device,
SoundInstrument instrument 
)

◆ grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForEverything()

void Song::grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForEverything ( MIDIDevice device)

◆ hasAnyPendingNextOverdubs()

bool Song::hasAnyPendingNextOverdubs ( )

◆ hasAnySwing()

bool Song::hasAnySwing ( )

◆ instrumentSwapped()

void Song::instrumentSwapped ( Instrument newInstrument)

◆ isClipActive()

bool Song::isClipActive ( Clip clip)

◆ isOutputActiveInArrangement()

bool Song::isOutputActiveInArrangement ( Output output)

◆ isPlayingAutomationNow()

bool Song::isPlayingAutomationNow ( )
virtual

Implements TimelineCounter.

◆ isYNoteAllowed()

bool Song::isYNoteAllowed ( int  yNote,
bool  inKeyMode 
)

◆ loadAllSamples()

void Song::loadAllSamples ( bool  mayActuallyReadFiles = true)

◆ loadCrucialSamplesOnly()

void Song::loadCrucialSamplesOnly ( )

◆ markAllInstrumentsAsEdited()

void Song::markAllInstrumentsAsEdited ( )

◆ mayDoubleTempo()

bool Song::mayDoubleTempo ( )

◆ mayMoveModeNote()

bool Song::mayMoveModeNote ( int16_t  yVisualWithinOctave,
int8_t  newOffset 
)

◆ midiDeviceBendRangeUpdatedViaMessage()

void Song::midiDeviceBendRangeUpdatedViaMessage ( ModelStack modelStack,
MIDIDevice device,
int  channelOrZone,
int  whichBendRange,
int  bendSemitones 
)

◆ modeContainsYNote()

bool Song::modeContainsYNote ( int  yNote)

◆ modeContainsYNoteWithinOctave()

bool Song::modeContainsYNoteWithinOctave ( uint8_t  yNoteWithinOctave)

◆ moveInstrumentToHibernationList()

void Song::moveInstrumentToHibernationList ( Instrument instrument)

◆ placeFirstInstancesOfActiveClips()

int Song::placeFirstInstancesOfActiveClips ( int32_t  pos)

◆ readFromFile()

int Song::readFromFile ( )

◆ reassessWhetherAnyClipsSoloing()

void Song::reassessWhetherAnyClipsSoloing ( )

◆ reassessWhetherAnyOutputsSoloingInArrangement()

void Song::reassessWhetherAnyOutputsSoloingInArrangement ( )

◆ removeInstrumentFromHibernationList()

void Song::removeInstrumentFromHibernationList ( Instrument instrument)

◆ removeOutputFromMainList()

int Song::removeOutputFromMainList ( Output output,
bool  stopAnyAuditioningFirst = true 
)

◆ removeSessionClip()

void Song::removeSessionClip ( Clip clip,
int  clipIndex,
bool  forceClipsAboveToMoveVertically = false 
)

◆ removeSessionClipLowLevel()

void Song::removeSessionClipLowLevel ( Clip clip,
int  clipIndex 
)

◆ removeYNoteFromMode()

void Song::removeYNoteFromMode ( int  yNoteWithinOctave)

◆ renderAudio()

void Song::renderAudio ( StereoSample outputBuffer,
int  numSamples,
int32_t *  reverbBuffer,
int32_t  sideChainHitPending 
)

◆ replaceInstrument()

void Song::replaceInstrument ( Instrument oldInstrument,
Instrument newInstrument,
bool  keepNoteRowsWithMIDIInput = true 
)

◆ replaceInstrumentClipWithAudioClip()

Clip * Song::replaceInstrumentClipWithAudioClip ( Clip oldClip,
int  clipIndex 
)

◆ replaceOutputLowLevel()

void Song::replaceOutputLowLevel ( Output newOutput,
Output oldOutput 
)

◆ restoreClipStatesBeforeArrangementPlay()

void Song::restoreClipStatesBeforeArrangementPlay ( )

◆ resumeClipsClonedForArrangementRecording()

void Song::resumeClipsClonedForArrangementRecording ( )

◆ resyncLFOsAndArpeggiators()

void Song::resyncLFOsAndArpeggiators ( )

◆ sendAllMIDIPGMs()

void Song::sendAllMIDIPGMs ( )

◆ setBPM()

void Song::setBPM ( float  tempoBPM,
bool  shouldLogAction 
)

◆ setClipLength()

void Song::setClipLength ( Clip clip,
uint32_t  newLength,
Action action,
bool  mayReSyncClip = true 
)

◆ setDefaultVelocityForAllInstruments()

void Song::setDefaultVelocityForAllInstruments ( uint8_t  newDefaultVelocity)

◆ setHibernatingMIDIInstrument()

void Song::setHibernatingMIDIInstrument ( MIDIInstrument newInstrument)

◆ setInputTickScaleClip()

void Song::setInputTickScaleClip ( Clip clip)

◆ setParamsInAutomationMode()

void Song::setParamsInAutomationMode ( bool  newState)

◆ setRootNote()

void Song::setRootNote ( int  newRootNote,
InstrumentClip clipToAvoidAdjustingScrollFor = NULL 
)

◆ setTempoFromNumSamples()

void Song::setTempoFromNumSamples ( double  newTempoSamples,
bool  shouldLogAction 
)

◆ setTempoFromParams()

void Song::setTempoFromParams ( int32_t  magnitude,
int8_t  whichValue,
bool  shouldLogAction 
)

◆ setTimePerTimerTick()

void Song::setTimePerTimerTick ( uint64_t  newTimeBig,
bool  shouldLogAction = false 
)

◆ setupDefault()

void Song::setupDefault ( )

◆ setupModelStackWithCurrentClip()

ModelStackWithTimelineCounter * Song::setupModelStackWithCurrentClip ( void *  memory)

◆ setupModelStackWithSongAsTimelineCounter()

ModelStackWithThreeMainThings * Song::setupModelStackWithSongAsTimelineCounter ( void *  memory)

◆ setupPatchingForAllParamManagers()

void Song::setupPatchingForAllParamManagers ( )

◆ setupPatchingForAllParamManagersForDrum()

void Song::setupPatchingForAllParamManagersForDrum ( SoundDrum drum)

◆ setupPatchingForAllParamManagersForInstrument()

void Song::setupPatchingForAllParamManagersForInstrument ( SoundInstrument sound)

◆ sortOutWhichClipsAreActiveWithoutSendingPGMs()

void Song::sortOutWhichClipsAreActiveWithoutSendingPGMs ( ModelStack modelStack,
int  playbackWillStartInArrangerAtPos 
)

◆ stopAllAuditioning()

void Song::stopAllAuditioning ( )

◆ stopAllMIDIAndGateNotesPlaying()

void Song::stopAllMIDIAndGateNotesPlaying ( )

◆ swapClips()

void Song::swapClips ( Clip newClip,
Clip oldClip,
int  clipIndex 
)

◆ transposeAllScaleModeClips()

void Song::transposeAllScaleModeClips ( int  offset)

◆ turnSoloingIntoJustPlaying()

void Song::turnSoloingIntoJustPlaying ( bool  getRidOfArmingToo = true)

◆ writeToFile()

void Song::writeToFile ( )

◆ yNoteIsYVisualWithinOctave()

bool Song::yNoteIsYVisualWithinOctave ( int  yNote,
int  yVisualWithinOctave 
)

Member Data Documentation

◆ affectEntire

bool Song::affectEntire

◆ anyClipsSoloing

bool Song::anyClipsSoloing

◆ anyOutputsSoloingInArrangement

bool Song::anyOutputsSoloingInArrangement

◆ arrangementOnlyClips

ClipArray Song::arrangementOnlyClips

◆ arrangementYScroll

int Song::arrangementYScroll

◆ arrangerAutoScrollModeActive

bool Song::arrangerAutoScrollModeActive

◆ backedUpParamManagers

OrderedResizeableArrayWithMultiWordKey Song::backedUpParamManagers

◆ currentClip

Clip* Song::currentClip

◆ dirPath

String Song::dirPath

◆ divideByTimePerTimerTick

int32_t Song::divideByTimePerTimerTick

◆ firstHibernatingInstrument

Instrument* Song::firstHibernatingInstrument

◆ firstOutput

Output* Song::firstOutput

◆ globalEffectable

GlobalEffectableForSong Song::globalEffectable

◆ hibernatingMIDIInstrument

MIDIInstrument* Song::hibernatingMIDIInstrument

◆ inClipMinderViewOnLoad

bool Song::inClipMinderViewOnLoad

◆ insideWorldTickMagnitude

int Song::insideWorldTickMagnitude

◆ insideWorldTickMagnitudeOffsetFromBPM

int Song::insideWorldTickMagnitudeOffsetFromBPM

◆ lastClipInstanceEnteredStartPos

int32_t Song::lastClipInstanceEnteredStartPos

◆ modeNotes

uint8_t Song::modeNotes[12]

◆ name

String Song::name

◆ numModeNotes

uint8_t Song::numModeNotes

◆ outputClipInstanceListIsCurrentlyInvalid

bool Song::outputClipInstanceListIsCurrentlyInvalid

◆ paramsInAutomationMode

bool Song::paramsInAutomationMode

◆ reverbCompressorAttack

int32_t Song::reverbCompressorAttack

◆ reverbCompressorRelease

int32_t Song::reverbCompressorRelease

◆ reverbCompressorShape

int32_t Song::reverbCompressorShape

◆ reverbCompressorSync

uint8_t Song::reverbCompressorSync

◆ reverbCompressorVolume

int32_t Song::reverbCompressorVolume

◆ reverbDamp

float Song::reverbDamp

◆ reverbPan

int32_t Song::reverbPan

◆ reverbRoomSize

float Song::reverbRoomSize

◆ reverbWidth

float Song::reverbWidth

◆ rootNote

int16_t Song::rootNote

◆ sections

Section Song::sections[MAX_NUM_SECTIONS]

◆ sectionToReturnToAfterSongEnd

uint8_t Song::sectionToReturnToAfterSongEnd

◆ sessionClips

ClipArray Song::sessionClips

◆ slot

uint16_t Song::slot

◆ songViewYScroll

int Song::songViewYScroll

◆ subSlot

int8_t Song::subSlot

◆ swingAmount

int8_t Song::swingAmount

◆ swingInterval

uint8_t Song::swingInterval

◆ syncScalingClip

Clip* Song::syncScalingClip

◆ timePerTimerTickBig

uint64_t Song::timePerTimerTickBig

◆ tripletsLevel

uint32_t Song::tripletsLevel

◆ tripletsOn

bool Song::tripletsOn

◆ unautomatedParamValues

int32_t Song::unautomatedParamValues[MAX_NUM_UNPATCHED_PARAMS]

◆ wasLastInArrangementEditor

bool Song::wasLastInArrangementEditor

◆ xScroll

int32_t Song::xScroll[2]

◆ xScrollForReturnToSongView

int32_t Song::xScrollForReturnToSongView

◆ xZoom

uint32_t Song::xZoom[2]

◆ xZoomForReturnToSongView

int32_t Song::xZoomForReturnToSongView

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