35class AudioClip final :
public Clip {
38 ~AudioClip()
override;
40 void expectNoFurtherTicks(
Song* song,
bool actuallySoundChange =
true)
override;
43 int32_t amplitudeIncrement, int32_t pitchAdjust);
45 bool shouldDeleteEmptyNoteRowsAtEndOfList =
false,
bool shouldRetainLinksToSounds =
false,
46 bool keepNoteRowsWithMIDIInput =
true,
bool shouldGrabMidiCommands =
false,
47 bool shouldBackUpExpressionParamsToo =
true)
override;
49 uint32_t xZoom,
RGB* image, uint8_t occupancyMask[],
bool addUndefinedArea,
50 int32_t noteRowIndexStart = 0, int32_t noteRowIndexEnd = 2147483647, int32_t xStart = 0,
51 int32_t xEnd = kDisplayWidth,
bool allowBlur =
true,
bool drawRepeats =
false)
override;
53 void loadSample(
bool mayActuallyReadFile);
54 bool wantsToBeginLinearRecording(
Song* song)
override;
55 bool isAbandonedOverdub()
override;
57 int32_t buttonLatencyForTempolessRecord)
override;
60 uint32_t timeRemainder, int32_t suggestedLength,
61 int32_t alternativeLongerLength)
override;
67 int64_t getSamplesFromTicks(int32_t ticks);
68 void unassignVoiceSample(
bool wontBeUsedAgain);
72 AudioClip* favourClipForCloningParamManager =
nullptr);
74 bool currentlyScrollableAndZoomable()
override;
75 void getScrollAndZoomInSamples(int32_t xScroll, int32_t xZoom, int64_t* xScrollSamples, int64_t* xZoomSamples);
77 bool clearSequenceAndMPE)
override;
78 bool getCurrentlyRecordingLinearly()
override;
79 void abortRecording()
override;
80 void setupPlaybackBounds();
81 uint64_t getCullImmunity();
83 void copyBasicsFrom(
Clip const* otherClip)
override;
84 bool willCloneOutputForOverdub()
override {
return overdubsShouldCloneOutput; }
85 void sampleZoneChanged(ModelStackWithTimelineCounter
const* modelStack);
86 int64_t getNumSamplesTilLoop(ModelStackWithTimelineCounter* modelStack);
87 void setPos(ModelStackWithTimelineCounter* modelStack, int32_t newPos,
bool useActualPosForParamManagers)
override;
89 bool shiftHorizontally(ModelStackWithTimelineCounter* modelStack, int32_t amount,
bool shiftAutomation,
90 bool shiftSequenceAndMPE)
override;
92 Error readFromFile(Deserializer& reader, Song* song)
override;
93 void writeDataToFile(Serializer& writer, Song* song)
override;
94 char const* getXMLTag()
override {
return "audioClip"; }
95 int32_t nextSampleRestartPos = 0;
96 SampleControls sampleControls;
98 SampleHolderForClip sampleHolder;
100 VoiceSample* voiceSample;
102 SamplePlaybackGuide guide;
104 String outputNameWhileLoading;
106 WaveformRenderData renderData;
108 SampleRecorder* recorder;
112 VoicePriority voicePriority;
120 uint32_t prefetchGenerationSeen = 0;
122 bool renderSidebar(uint32_t whichRows = 0,
RGB image[][kDisplayWidth + kSideBarWidth] =
nullptr,
123 uint8_t occupancyMask[][kDisplayWidth + kSideBarWidth] =
nullptr)
override {
124 return audioClipView.renderSidebar(whichRows, image, occupancyMask);
129 bool isEmpty(
bool displayPopup =
true)
override;
136 void removeClipFromSection(
AudioClip* clip);
137 void detachAudioClipFromOutput(
Song* song,
bool shouldRetainLinksToOutput,
bool shouldTakeParamManagerWith =
false);
139 void prefetchClustersAhead(
Sample* sample);
140 void clearSample(
Action* action);
bool shiftHorizontally(ModelStackWithTimelineCounter *modelStack, int32_t amount, bool shiftAutomation, bool shiftSequenceAndMPE) override
Return true if successfully shifted, as clip cannot be shifted past beginning.
Definition audio_clip.cpp:1425