47class ModControllableAudio :
public ModControllable {
49 ModControllableAudio();
50 virtual ~ModControllableAudio();
51 virtual void cloneFrom(ModControllableAudio* other);
53 void processStutter(std::span<StereoSample> buffer,
ParamManager* paramManager);
54 void processReverbSendAndVolume(std::span<StereoSample> buffer, int32_t* reverbBuffer, int32_t postFXVolume,
55 int32_t postReverbVolume, int32_t reverbSendAmount, int32_t pan = 0,
56 bool doAmplitudeIncrement =
false);
57 void writeAttributesToFile(
Serializer& writer);
61 void processSRRAndBitcrushing(std::span<StereoSample> buffer, int32_t* postFXVolume,
ParamManager* paramManager);
62 static void writeParamAttributesToFile(
Serializer& writer,
ParamManager* paramManager,
bool writeAutomation,
63 int32_t* valuesForOverride =
nullptr);
65 int32_t* valuesForOverride =
nullptr);
67 int32_t readAutomationUpToPos);
69 virtual void wontBeRenderedForAWhile();
72 virtual ModFXType getModFXType() = 0;
73 virtual bool setModFXType(ModFXType newType);
74 bool offerReceivedCCToLearnedParamsForClip(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
76 bool offerReceivedCCToLearnedParamsForSong(
MIDICable& cable, uint8_t channel, uint8_t ccNumber, uint8_t value,
78 bool offerReceivedPitchBendToLearnedParams(
MIDICable& cable, uint8_t channel, uint8_t data1, uint8_t data2,
84 uint8_t midiChannel,
Song* song);
86 virtual void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero(
Song* song) {}
97 int32_t withoutTrebleL;
99 int32_t withoutTrebleR;
106 bool sampleRateReductionOnLastTime;
107 uint8_t clippingAmount;
110 FilterRoute filterRoute;
113 ModFXType modFXType_;
118 uint32_t lowSampleRatePos{};
119 uint32_t highSampleRatePos{};
126 deluge::fast_vector<MIDIKnob> midi_knobs;
127 int32_t postReverbVolumeLastTime{};
130 void processFX(std::span<StereoSample> buffer, ModFXType modFXType, int32_t modFXRate, int32_t modFXDepth,
132 bool anySoundComingIn, q31_t reverbSendAmount);
133 void switchDelayPingPong();
134 void switchDelayAnalog();
135 void switchDelaySyncType();
136 void switchDelaySyncLevel();
137 void switchLPFMode();
138 void switchHPFMode();
139 void clearModFXMemory();
147 char const* getFilterTypeDisplayName(FilterType currentFilterType);
148 char const* getFilterModeDisplayName(FilterType currentFilterType);
149 char const* getLPFModeDisplayName();
150 char const* getHPFModeDisplayName();
151 char const* getDelayTypeDisplayName();
152 char const* getDelayPingPongStatusDisplayName();
153 char const* getDelaySyncTypeDisplayName();
154 void getDelaySyncLevelDisplayName(
char* displayName);
155 char const* getSidechainDisplayName();
157 void displayFilterSettings(
bool on, FilterType currentFilterType);
158 void displayDelaySettings(
bool on);
159 void displaySidechainAndReverbSettings(
bool on);
168 void doEQ(
bool doBass,
bool doTreble, int32_t* inputL, int32_t* inputR, int32_t bassAmount, int32_t trebleAmount);
170 int32_t noteRowIndex);
171 void switchHPFModeWithOff();
172 void switchLPFModeWithOff();
174 void processGrainFX(std::span<StereoSample> buffer, int32_t modFXRate, int32_t modFXDepth, int32_t* postFXVolume,
Definition model_stack.h:231