47class ModControllableAudio :
public ModControllable {
49 ModControllableAudio();
50 virtual ~ModControllableAudio();
51 virtual void cloneFrom(ModControllableAudio* other);
53 void processStutter(deluge::dsp::StereoBuffer<q31_t> buffer,
ParamManager* paramManager);
54 void processReverbSendAndVolume(deluge::dsp::StereoBuffer<q31_t> buffer, int32_t* reverbBuffer,
55 int32_t postFXVolume, int32_t postReverbVolume, int32_t reverbSendAmount,
56 int32_t pan = 0,
bool doAmplitudeIncrement =
false);
57 void writeAttributesToFile(
Serializer& writer);
61 void processSRRAndBitcrushing(deluge::dsp::StereoBuffer<q31_t> buffer, int32_t* postFXVolume,
63 static void writeParamAttributesToFile(
Serializer& writer,
ParamManager* paramManager,
bool writeAutomation,
64 int32_t* valuesForOverride =
nullptr);
66 int32_t* valuesForOverride =
nullptr);
68 int32_t readAutomationUpToPos);
70 virtual void wontBeRenderedForAWhile();
73 virtual ModFXType getModFXType() = 0;
74 virtual bool setModFXType(ModFXType newType);
75 bool offerReceivedCCToLearnedParamsForClip(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
77 bool offerReceivedCCToLearnedParamsForSong(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
79 bool offerReceivedPitchBendToLearnedParams(
MIDICable& cable, uint8_t channel, uint8_t data1, uint8_t data2,
85 uint8_t midiChannel,
Song* song);
87 virtual void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero(
Song* song) {}
98 int32_t withoutTrebleL;
100 int32_t withoutTrebleR;
107 bool sampleRateReductionOnLastTime;
108 uint8_t clippingAmount;
111 FilterRoute filterRoute;
114 ModFXType modFXType_;
119 uint32_t lowSampleRatePos{};
120 uint32_t highSampleRatePos{};
121 deluge::dsp::StereoSample<q31_t> lastSample;
122 deluge::dsp::StereoSample<q31_t> grabbedSample;
123 deluge::dsp::StereoSample<q31_t> lastGrabbedSample;
127 deluge::fast_vector<MIDIKnob> midi_knobs;
128 int32_t postReverbVolumeLastTime{};
131 void processFX(deluge::dsp::StereoBuffer<q31_t> buffer, ModFXType modFXType, int32_t modFXRate, int32_t modFXDepth,
133 ParamManager* paramManager,
bool anySoundComingIn, q31_t reverbSendAmount);
134 void switchDelayPingPong();
135 void switchDelayAnalog();
136 void switchDelaySyncType();
137 void switchDelaySyncLevel();
138 void switchLPFMode();
139 void switchHPFMode();
140 void clearModFXMemory();
148 char const* getFilterTypeDisplayName(FilterType currentFilterType);
149 char const* getFilterModeDisplayName(FilterType currentFilterType);
150 char const* getLPFModeDisplayName();
151 char const* getHPFModeDisplayName();
152 char const* getDelayTypeDisplayName();
153 char const* getDelayPingPongStatusDisplayName();
154 char const* getDelaySyncTypeDisplayName();
155 void getDelaySyncLevelDisplayName(
char* displayName);
156 char const* getSidechainDisplayName();
158 void displayFilterSettings(
bool on, FilterType currentFilterType);
159 void displayDelaySettings(
bool on);
160 void displaySidechainAndReverbSettings(
bool on);
169 void doEQ(
bool doBass,
bool doTreble, int32_t* inputL, int32_t* inputR, int32_t bassAmount, int32_t trebleAmount);
171 int32_t noteRowIndex);
172 void switchHPFModeWithOff();
173 void switchLPFModeWithOff();
175 void processGrainFX(deluge::dsp::StereoBuffer<q31_t> buffer, int32_t modFXRate, int32_t modFXDepth,
176 int32_t* postFXVolume,
UnpatchedParamSet* unpatchedParams,
bool anySoundComingIn,
Definition model_stack.h:231