100 void setBPM(
float tempoBPM,
bool shouldLogAction);
205 void renderAudio(
StereoSample *outputBuffer,
int numSamples, int32_t* reverbBuffer, int32_t sideChainHitPending);
277 void getNoteLengthName(
char *text, uint32_t noteLength,
bool clarifyPerColumn =
false);
280 bool deletePendingOverdubs(
Output* onlyWithOutput = NULL,
int* originalClipIndex = NULL,
bool createConsequencesForOtherLinearlyRecordingClips =
false);
314 void inputTickScalePotentiallyJustChanged(uint32_t oldScale);
315 int readClipsFromFile(
ClipArray* clipArray);
316 void addInstrumentToHibernationList(
Instrument* instrument);
317 void deleteAllBackedUpParamManagers(
bool shouldAlsoEmptyVector =
true);
318 void deleteAllBackedUpParamManagersWithClips();
319 void deleteAllOutputs(
Output** prevPointer);
320 void setupClipIndexesForSaving();
Definition: Arpeggiator.h:28
Definition: AudioOutput.h:27
Definition: ClipArray.h:25
Definition: GlobalEffectableForSong.h:23
Definition: InstrumentClip.h:54
Definition: instrument.h:45
Definition: LearnedMIDI.h:30
Definition: MIDIDevice.h:74
Definition: MIDIInstrument.h:35
Definition: ModControllableAudio.h:46
Definition: ModelStack.h:123
Definition: ModelStack.h:243
Definition: ModelStack.h:130
Definition: OrderedResizeableArrayWithMultiWordKey.h:26
Definition: ParamManager.h:166
Definition: ParamManager.h:50
Section()
Definition: song.h:56
int16_t numRepetitions
Definition: song.h:54
LearnedMIDI launchMIDICommand
Definition: song.h:53
void setupDefault()
Definition: song.cpp:184
void setupPatchingForAllParamManagers()
Definition: song.cpp:2889
AudioOutput * getFirstAudioOutput()
Definition: song.cpp:3999
ParamManager * getBackedUpParamManagerForExactClip(ModControllableAudio *modControllable, Clip *clip, ParamManager *stealInto=NULL)
Definition: song.cpp:2917
void loadAllSamples(bool mayActuallyReadFiles=true)
Definition: song.cpp:1715
void setTimePerTimerTick(uint64_t newTimeBig, bool shouldLogAction=false)
Definition: song.cpp:1872
~Song()
Definition: song.cpp:141
void transposeAllScaleModeClips(int offset)
Definition: song.cpp:367
int getYNoteFromYVisual(int yVisual, bool inKeyMode)
Definition: song.cpp:616
int32_t xZoomForReturnToSongView
Definition: song.h:138
bool ensureAtLeastOneSessionClip()
Definition: song.cpp:288
Clip * getClipWithOutput(Output *output, bool mustBeActive=false, Clip *excludeClip=NULL)
Definition: song.cpp:824
void doubleClipLength(InstrumentClip *clip, Action *action=NULL)
Definition: song.cpp:803
int32_t lastClipInstanceEnteredStartPos
Definition: song.h:176
ModelStackWithThreeMainThings * addToModelStack(ModelStack *modelStack)
Definition: song.cpp:4708
ClipArray arrangementOnlyClips
Definition: song.h:126
bool modeContainsYNoteWithinOctave(uint8_t yNoteWithinOctave)
Definition: song.cpp:557
ParamManager * getBackedUpParamManagerPreferablyWithClip(ModControllableAudio *modControllable, Clip *clip, ParamManager *stealInto=NULL)
Definition: song.cpp:2943
int32_t reverbPan
Definition: song.h:306
Clip * getLongestClip(bool includePlayDisabled, bool includeArrangementOnly)
Definition: song.cpp:3453
float reverbWidth
Definition: song.h:305
bool canOldOutputBeReplaced(Clip *clip, int *availabilityRequirement=NULL)
Definition: song.cpp:3800
bool arrangementHasAnyClipInstances()
Definition: song.cpp:3758
int32_t getPosAtWhichPlaybackWillCut(ModelStackWithTimelineCounter const *modelStack)
Definition: song.cpp:4575
void deleteSoundsWhichWontSound()
Definition: song.cpp:1765
void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero(Sound *sound)
Definition: song.cpp:2304
Song()
Definition: song.cpp:75
int getOutputIndex(Output *output)
Definition: song.cpp:2844
void removeInstrumentFromHibernationList(Instrument *instrument)
Definition: song.cpp:2722
String dirPath
Definition: song.h:190
void setInputTickScaleClip(Clip *clip)
Definition: song.cpp:715
GlobalEffectableForSong globalEffectable
Definition: song.h:123
void writeToFile()
Definition: song.cpp:894
void backUpParamManager(ModControllableAudio *modControllable, Clip *clip, ParamManagerForTimeline *paramManager, bool shouldStealExpressionParamsToo=false)
Definition: song.cpp:2981
uint8_t modeNotes[12]
Definition: song.h:160
bool isYNoteAllowed(int yNote, bool inKeyMode)
Definition: song.cpp:599
bool doesOutputHaveAnyClips(Output *output)
Definition: song.cpp:3188
Clip * getSessionClipWithOutput(Output *output, int requireSection=-1, Clip *excludeClip=NULL, int *clipIndex=NULL, bool excludePendingOverdubs=false)
Definition: song.cpp:853
void expectEvent()
Definition: song.cpp:4591
void setTempoFromParams(int32_t magnitude, int8_t whichValue, bool shouldLogAction)
Definition: song.cpp:2349
bool wasLastInArrangementEditor
Definition: song.h:175
AudioOutput * createNewAudioOutput(Output *replaceOutput=NULL)
Definition: song.cpp:4010
uint8_t getYNoteWithinOctaveFromYNote(int yNote)
Definition: song.cpp:546
bool isOutputActiveInArrangement(Output *output)
Definition: song.cpp:3507
uint32_t getLivePos()
Definition: song.cpp:4595
uint8_t numModeNotes
Definition: song.h:161
bool doesOutputHaveActiveClipInSession(Output *output)
Definition: song.cpp:3154
void replaceOutputLowLevel(Output *newOutput, Output *oldOutput)
Definition: song.cpp:4106
void renderAudio(StereoSample *outputBuffer, int numSamples, int32_t *reverbBuffer, int32_t sideChainHitPending)
Definition: song.cpp:1815
Clip * getClipWithOutputAboutToBeginLinearRecording(Output *output)
Definition: song.cpp:4365
bool modeContainsYNote(int yNote)
Definition: song.cpp:552
MIDIInstrument * hibernatingMIDIInstrument
Definition: song.h:180
void swapClips(Clip *newClip, Clip *oldClip, int clipIndex)
Definition: song.cpp:4443
void getActiveModControllable(ModelStackWithTimelineCounter *modelStack)
Definition: song.cpp:4580
ModelStackWithThreeMainThings * setupModelStackWithSongAsTimelineCounter(void *memory)
Definition: song.cpp:4700
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForInstrument(MIDIDevice *device, SoundInstrument *instrument)
Definition: song.cpp:2063
int readFromFile()
Definition: song.cpp:1062
void deleteBackedUpParamManagersForClip(Clip *clip)
Definition: song.cpp:3031
int getYScrollSongViewWithoutPendingOverdubs()
Definition: song.cpp:4338
void sendAllMIDIPGMs()
Definition: song.cpp:3295
int32_t xScroll[2]
Definition: song.h:136
bool arrangerAutoScrollModeActive
Definition: song.h:178
uint8_t sectionToReturnToAfterSongEnd
Definition: song.h:173
int placeFirstInstancesOfActiveClips(int32_t pos)
Definition: song.cpp:3615
void setParamsInAutomationMode(bool newState)
Definition: song.cpp:3765
void sortOutWhichClipsAreActiveWithoutSendingPGMs(ModelStack *modelStack, int playbackWillStartInArrangerAtPos)
Definition: song.cpp:3304
void removeSessionClipLowLevel(Clip *clip, int clipIndex)
Definition: song.cpp:4298
void restoreClipStatesBeforeArrangementPlay()
Definition: song.cpp:3205
MIDIInstrument * grabHibernatingMIDIInstrument(int newSlot, int newSubSlot)
Definition: song.cpp:3526
int32_t divideByTimePerTimerTick
Definition: song.h:143
void stopAllAuditioning()
Definition: song.cpp:3560
void midiDeviceBendRangeUpdatedViaMessage(ModelStack *modelStack, MIDIDevice *device, int channelOrZone, int whichBendRange, int bendSemitones)
Definition: song.cpp:4655
void turnSoloingIntoJustPlaying(bool getRidOfArmingToo=true)
Definition: song.cpp:2431
void instrumentSwapped(Instrument *newInstrument)
Definition: song.cpp:3830
void setBPM(float tempoBPM, bool shouldLogAction)
Definition: song.cpp:2342
uint32_t getQuarterNoteLength()
Definition: song.cpp:4556
int32_t getLastProcessedPos()
Definition: song.cpp:4604
bool getAnyClipsSoloing()
Definition: song.cpp:2412
void setDefaultVelocityForAllInstruments(uint8_t newDefaultVelocity)
Definition: song.cpp:4621
void resumeClipsClonedForArrangementRecording()
Definition: song.cpp:3669
int8_t swingAmount
Definition: song.h:154
bool outputClipInstanceListIsCurrentlyInvalid
Definition: song.h:182
int32_t reverbCompressorVolume
Definition: song.h:307
uint16_t slot
Definition: song.h:164
Clip * getSyncScalingClip()
Definition: song.cpp:711
Clip * getNextSessionClipWithOutput(int offset, Output *output, Clip *prevClip)
Definition: song.cpp:872
OrderedResizeableArrayWithMultiWordKey backedUpParamManagers
Definition: song.h:133
uint32_t xZoom[2]
Definition: song.h:135
int16_t rootNote
Definition: song.h:162
int getNumOutputs()
Definition: song.cpp:2865
int cycleThroughScales()
Definition: song.cpp:2216
float reverbDamp
Definition: song.h:304
void cullAudioClipVoice()
Definition: song.cpp:4418
ParamManagerForTimeline * findParamManagerForDrum(Kit *kit, Drum *drum, Clip *stopTraversalAtClip=NULL)
Definition: song.cpp:1958
int32_t xScrollForReturnToSongView
Definition: song.h:137
Section sections[MAX_NUM_SECTIONS]
Definition: song.h:157
float getTimePerTimerTickFloat()
Definition: song.cpp:2464
void deleteOutput(Output *output)
Definition: song.cpp:2693
bool anyOutputsSoloingInArrangement
Definition: song.h:252
uint8_t reverbCompressorSync
Definition: song.h:311
bool anyScaleModeClips()
Definition: song.cpp:389
int addInstrumentsToFileItems(int instrumentType)
Definition: song.cpp:4663
bool isClipActive(Clip *clip)
Definition: song.cpp:3290
uint32_t tripletsLevel
Definition: song.h:140
Instrument * changeInstrumentType(Instrument *oldInstrument, int newInstrumentType)
Definition: song.cpp:3888
void setClipLength(Clip *clip, uint32_t newLength, Action *action, bool mayReSyncClip=true)
Definition: song.cpp:767
int getMaxMIDIChannelSuffix(int channel)
Definition: song.cpp:2380
Clip * replaceInstrumentClipWithAudioClip(Clip *oldClip, int clipIndex)
Definition: song.cpp:4459
bool mayMoveModeNote(int16_t yVisualWithinOctave, int8_t newOffset)
Definition: song.cpp:629
Clip * getPendingOverdubWithOutput(Output *output)
Definition: song.cpp:4353
void changeMusicalMode(uint8_t yVisualWithinOctave, int8_t change)
Definition: song.cpp:565
int32_t getLoopLength()
Definition: song.cpp:4613
uint32_t getBarLength()
Definition: song.cpp:4560
void moveInstrumentToHibernationList(Instrument *instrument)
Definition: song.cpp:2700
uint32_t getTimePerTimerTickRounded()
Definition: song.cpp:2468
Output * getOutputFromIndex(int index)
Definition: song.cpp:2854
int convertSyncLevelFromFileValueToInternalValue(int fileValue)
Definition: song.cpp:4634
AudioOutput * getAudioOutputFromName(String *name)
Definition: song.cpp:2786
void deleteClipObject(Clip *clip, bool songBeingDestroyedToo=false, int instrumentRemovalInstruction=INSTRUMENT_REMOVAL_DELETE_OR_HIBERNATE_IF_UNUSED)
Definition: song.cpp:2358
void setHibernatingMIDIInstrument(MIDIInstrument *newInstrument)
Definition: song.cpp:3511
void changeSwingInterval(int newValue)
Definition: song.cpp:4514
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForAllParamManagersForDrum(MIDIDevice *device, SoundDrum *drum, Kit *kit)
Definition: song.cpp:2105
Instrument * firstHibernatingInstrument
Definition: song.h:129
Clip * getLongestActiveClipWithMultipleOrFactorLength(int32_t targetLength, bool revertToAnyActiveClipIfNone=true, Clip *excludeClip=NULL)
Definition: song.cpp:3474
void deletingClipInstanceForClip(Output *output, Clip *clip, Action *action, bool shouldPickNewActiveClip)
Definition: song.cpp:3727
Instrument * getInstrumentFromPresetSlot(int instrumentType, int presetNumber, int presetSubSlotNumber, char const *name, char const *dirPath, bool searchHibernatingToo=true, bool searchNonHibernating=true)
Definition: song.cpp:2799
void deleteHibernatingMIDIInstrument()
Definition: song.cpp:3517
bool isPlayingAutomationNow()
Definition: song.cpp:4567
void removeYNoteFromMode(int yNoteWithinOctave)
Definition: song.cpp:651
bool anyClipsSoloing
Definition: song.h:220
TimelineCounter * getTimelineCounterToRecordTo()
Definition: song.cpp:4617
uint8_t swingInterval
Definition: song.h:155
void loadCrucialSamplesOnly()
Definition: song.cpp:1743
void reassessWhetherAnyOutputsSoloingInArrangement()
Definition: song.cpp:2874
int insideWorldTickMagnitudeOffsetFromBPM
Definition: song.h:152
void replaceInstrument(Instrument *oldInstrument, Instrument *newInstrument, bool keepNoteRowsWithMIDIInput=true)
Definition: song.cpp:2570
void deleteHibernatingInstrumentWithSlot(int instrumentType, char const *name)
Definition: song.cpp:2748
void resyncLFOsAndArpeggiators()
Definition: song.cpp:1913
bool tripletsOn
Definition: song.h:139
bool yNoteIsYVisualWithinOctave(int yNote, int yVisualWithinOctave)
Definition: song.cpp:541
void assertActiveness(ModelStackWithTimelineCounter *modelStack, int32_t endInstanceAtTime=-1)
Definition: song.cpp:3241
void endInstancesOfActiveClips(int32_t pos, bool detachClipsToo=false)
Definition: song.cpp:3638
int getLowestSectionWithNoSessionClipForOutput(Output *output)
Definition: song.cpp:3222
int songViewYScroll
Definition: song.h:170
bool paramsInAutomationMode
Definition: song.h:184
int getCurrentPresetScale()
Definition: song.cpp:2286
int32_t reverbCompressorAttack
Definition: song.h:309
void grabVelocityToLevelFromMIDIDeviceAndSetupPatchingForEverything(MIDIDevice *device)
Definition: song.cpp:2153
void markAllInstrumentsAsEdited()
Definition: song.cpp:2776
int insideWorldTickMagnitude
Definition: song.h:149
void getNoteLengthName(char *text, uint32_t noteLength, bool clarifyPerColumn=false)
Definition: song.cpp:4139
int convertSyncLevelFromInternalValueToFileValue(int internalValue)
Definition: song.cpp:4646
void setRootNote(int newRootNote, InstrumentClip *clipToAvoidAdjustingScrollFor=NULL)
Definition: song.cpp:406
bool getAnyOutputsSoloingInArrangement()
Definition: song.cpp:2884
bool doesNonAudioSlotHaveActiveClipInSession(int instrumentType, int slot, int subSlot=-1)
Definition: song.cpp:3167
float reverbRoomSize
Definition: song.h:303
void deleteOrAddToHibernationListOutput(Output *output)
Definition: song.cpp:2662
uint32_t getInputTickScale()
Definition: song.cpp:704
int8_t subSlot
Definition: song.h:165
bool areAllClipsInSectionPlaying(int section)
Definition: song.cpp:689
bool backtrackingCouldLoopBackToEnd()
Definition: song.cpp:4571
void stopAllMIDIAndGateNotesPlaying()
Definition: song.cpp:3539
void deleteOrHibernateOutputIfNoClips(Output *output)
Definition: song.cpp:2734
void ensureAllInstrumentsHaveAClipOrBackedUpParamManager(char const *errorMessageNormal, char const *errorMessageHibernating)
Definition: song.cpp:3570
Clip * createPendingNextOverdubBelowClip(Clip *clip, int clipIndex, int newOverdubNature)
Definition: song.cpp:4380
void setupPatchingForAllParamManagersForInstrument(SoundInstrument *sound)
Definition: song.cpp:2029
bool hasAnySwing()
Definition: song.cpp:1909
NoteRow * findNoteRowForDrum(Kit *kit, Drum *drum, Clip *stopTraversalAtClip=NULL)
Definition: song.cpp:1921
void setupPatchingForAllParamManagersForDrum(SoundDrum *drum)
Definition: song.cpp:1964
void clearArrangementBeyondPos(int32_t pos, Action *action)
Definition: song.cpp:3692
bool mayDoubleTempo()
Definition: song.cpp:281
void reassessWhetherAnyClipsSoloing()
Definition: song.cpp:2416
bool hasAnyPendingNextOverdubs()
Definition: song.cpp:4405
ClipArray sessionClips
Definition: song.h:125
Instrument * getNonAudioInstrumentToSwitchTo(int newInstrumentType, int availabilityRequirement, int16_t newSlot, int8_t newSubSlot, bool *instrumentWasAlreadyInSong)
Definition: song.cpp:4154
int32_t reverbCompressorShape
Definition: song.h:308
int32_t unautomatedParamValues[MAX_NUM_UNPATCHED_PARAMS]
Definition: song.h:188
void removeSessionClip(Clip *clip, int clipIndex, bool forceClipsAboveToMoveVertically=false)
Definition: song.cpp:4206
void deleteBackedUpParamManagersForModControllable(ModControllableAudio *modControllable)
Definition: song.cpp:3136
bool affectEntire
Definition: song.h:168
void addMajorDependentModeNotes(uint8_t i, bool preferHigher, bool notesWithinOctavePresent[])
Definition: song.cpp:521
int arrangementYScroll
Definition: song.h:171
uint64_t timePerTimerTickBig
Definition: song.h:142
Clip * currentClip
Definition: song.h:131
void deleteOutputThatIsInMainList(Output *output, bool stopAnyAuditioningFirst=true)
Definition: song.cpp:2496
void deactivateAnyArrangementOnlyClips()
Definition: song.cpp:3442
void deleteOrHibernateOutput(Output *output)
Definition: song.cpp:2677
bool inClipMinderViewOnLoad
Definition: song.h:186
void setTempoFromNumSamples(double newTempoSamples, bool shouldLogAction)
Definition: song.cpp:2325
void addModeNote(uint8_t modeNote)
Definition: song.cpp:515
ModelStackWithTimelineCounter * setupModelStackWithCurrentClip(void *memory)
Definition: song.cpp:4704
int removeOutputFromMainList(Output *output, bool stopAnyAuditioningFirst=true)
Definition: song.cpp:2507
int getYVisualFromYNote(int yNote, bool inKeyMode)
Definition: song.cpp:604
bool deletePendingOverdubs(Output *onlyWithOutput=NULL, int *originalClipIndex=NULL, bool createConsequencesForOtherLinearlyRecordingClips=false)
Definition: song.cpp:4310
String name
Definition: song.h:166
int32_t reverbCompressorRelease
Definition: song.h:310
Output * getNextAudioOutput(int offset, Output *oldOutput, int availabilityRequirement)
Definition: song.cpp:4074
Clip * syncScalingClip
Definition: song.h:207
void addOutput(Output *output, bool atStart=true)
Definition: song.cpp:2473
Output * firstOutput
Definition: song.h:128
Definition: sounddrum.h:29
Definition: soundinstrument.h:31
Definition: AudioSample.h:25
Definition: TimelineCounter.h:29
ParamManagerForTimeline paramManager
Definition: TimelineCounter.h:47
#define MAX_NUM_SECTIONS
Definition: definitions.h:542
#define MAX_NUM_UNPATCHED_PARAMS
Definition: definitions.h:477
#define INSTRUMENT_REMOVAL_DELETE_OR_HIBERNATE_IF_UNUSED
Definition: definitions.h:732
Song * preLoadedSong
Definition: Deluge.cpp:124
Song * currentSong
Definition: Deluge.cpp:123
ModControllableAudio * modControllable
Definition: song.h:64
Clip * clip
Definition: song.h:65
ParamManager paramManager
Definition: song.h:66