34class Kit final :
public Instrument,
public GlobalEffectableForClip {
41 Drum* getNextDrum(
Drum* fromSoundSource);
42 Drum* getPrevDrum(
Drum* fromSoundSource);
43 bool writeDataToFile(
Serializer& writer,
Clip* clipForSavingOutputOnly,
Song* song)
override;
44 void addDrum(
Drum* newDrum);
45 Error readFromFile(
Deserializer& reader,
Song* song,
Clip* clip, int32_t readAutomationUpToPos)
override;
48 int32_t getDrumIndex(
Drum* drum);
49 Drum* getDrumFromIndex(int32_t index);
50 Drum* getDrumFromIndexAllowNull(int32_t index);
52 Error loadAllAudioFiles(
bool mayActuallyReadFiles)
override;
53 void cutAllSound()
override;
54 void renderOutput(
ModelStack* modelStack, deluge::dsp::StereoBuffer<q31_t> buffer, int32_t* reverbBuffer,
55 int32_t reverbAmountAdjust, int32_t sideChainHitPending,
bool shouldLimitDelayFeedback,
56 bool isClipActive)
override;
59 uint8_t channel, uint8_t ccNumber, uint8_t value,
bool* doingMidiThru)
override;
61 MIDIMatchType match, uint8_t channel, uint8_t ccNumber, uint8_t value,
bool* doingMidiThru,
63 void offerReceivedCCToModControllable(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
65 void offerReceivedCCToLearnedParams(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
69 uint8_t channel, uint8_t data1, uint8_t data2,
bool* doingMidiThru)
override;
71 uint8_t data1, uint8_t data2, MIDIMatchType match, uint8_t channel,
74 MIDIMatchType match, uint8_t channel, uint8_t data1, uint8_t data2,
81 MIDIMatchType match, uint8_t channel, uint8_t value);
84 int32_t channel, int32_t value, int32_t noteCode,
bool* doingMidiThru)
override;
87 MIDIMatchType match, uint8_t channel, uint8_t value);
90 MIDIMatchType match, int32_t channel, int32_t value, int32_t noteCode,
94 int32_t channel, int32_t note, int32_t velocity,
bool shouldRecordNotes,
95 bool* doingMidiThru)
override;
97 int32_t note, int32_t velocity,
bool shouldRecordNotes,
bool* doingMidiThru,
100 int32_t note, int32_t velocity,
bool shouldRecordNotes,
bool* doingMidiThru,
103 void processParamFromInputMIDIChannel(int32_t cc, int32_t newValue,
106 void beenEdited(
bool shouldMoveToEmptySlot =
true)
override;
108 void resyncLFOs()
override;
109 void removeDrumFromKitArpeggiator(int32_t drumIndex);
110 void removeDrum(
Drum* drum);
112 SoundDrum* getDrumFromName(
char const* name,
bool onlyIfNoNoteRow =
false);
113 Error makeDrumNameUnique(
String* name, int32_t startAtNumber);
117 void deleteBackedUpParamManagers(
Song* song)
override;
118 void prepareForHibernationOrDeletion()
override;
119 int32_t doTickForwardForArp(
ModelStack* modelStack, int32_t currentPos)
override;
120 void loadCrucialAudioFilesOnly()
override;
121 GateDrum* getGateDrumForChannel(int32_t gateChannel);
122 void resetDrumTempValues();
123 void setupWithoutActiveClip(
ModelStack* modelStack)
override;
124 void getThingWithMostReverb(
Sound** soundWithMostReverb,
ParamManager** paramManagerWithMostReverb,
125 GlobalEffectableForClip** globalEffectableWithMostReverb,
126 int32_t* highestReverbAmountFound)
override;
127 uint8_t* getModKnobMode()
override {
return &modKnobMode; }
128 Output* toOutput()
override {
return this; }
130 bool isNoteRowStillAuditioningAsLinearRecordingEnded(
NoteRow* noteRow)
override;
131 bool allowNoteTails(
NoteRow* noteRow);
132 void stopAnyAuditioning(
ModelStack* modelStack)
override;
133 bool isAnyAuditioningHappening()
override;
135 int16_t
const* mpeValues, int32_t fromMIDIChannel = MIDI_CHANNEL_NONE);
137 void offerBendRangeUpdate(
ModelStack* modelStack,
MIDICable& cable, int32_t channelOrZone, int32_t whichBendRange,
138 int32_t bendSemitones)
override;
141 deluge::dsp::StereoBuffer<q31_t> globalEffectableBuffer,
142 int32_t* bufferToTransferTo, int32_t* reverbBuffer, int32_t reverbAmountAdjust,
143 int32_t sideChainHitPending,
bool shouldLimitDelayFeedback,
bool isClipActive,
144 int32_t pitchAdjust, int32_t amplitudeAtStart, int32_t amplitudeAtEnd)
override;
146 char const* getXMLTag()
override {
return "kit"; }
155 bool affectEntire,
bool useMenuStack)
override;
167 int16_t
const* mpeValues, int32_t fromMIDIChannel = MIDI_CHANNEL_NONE,
168 uint32_t sampleSyncLength = 0, int32_t ticksLate = 0, uint32_t samplesLate = 0);
172 bool isKit()
override {
return true; }
176 int32_t readAutomationUpToPos);
178 int32_t* selectedDrumIndex, int32_t* drumIndex,
Song* song);
179 void removeDrumFromLinkedList(
Drum* drum);
180 void drumRemoved(
Drum* drum);
181 void possiblySetSelectedDrumAndRefreshUI(
Drum* thisDrum);
185 ParamManager* paramManager, deluge::dsp::StereoBuffer<q31_t> output);
187 void renderNonAudioArpPostOutput(deluge::dsp::StereoBuffer<q31_t> output);