33class GlobalEffectableForClip :
public GlobalEffectable {
35 GlobalEffectableForClip();
37 int32_t getSidechainVolumeAmountAsPatchCableDepth(
ParamManager* paramManager);
40 virtual Output* toOutput() = 0;
41 void getThingWithMostReverb(
Clip* activeClip,
Sound** soundWithMostReverb,
43 GlobalEffectableForClip** globalEffectableWithMostReverb,
44 int32_t* highestReverbAmountFound);
46 int32_t getShiftAmountForSaturation() {
return (clippingAmount >= 3) ? (clippingAmount - 3) : 0; }
50 [[gnu::always_inline]] q31_t
saturate(q31_t data, uint32_t* workingValue, int32_t shiftAmount) {
52 return getTanHAntialiased(data, workingValue, 3 + clippingAmount) << (shiftAmount);
55 std::array<uint32_t, 2> lastSaturationTanHWorkingValue = {2147483648u, 2147483648u};
58 int32_t getParameterFromKnob(int32_t whichModEncoder)
final;
59 void renderOutput(ModelStackWithTimelineCounter* modelStack, ParamManager* paramManagerForClip,
60 std::span<StereoSample> output, int32_t* reverbBuffer, int32_t reverbAmountAdjust,
61 int32_t sideChainHitPending,
bool shouldLimitDelayFeedback,
bool isClipActive,
62 OutputType outputType, SampleRecorder* recorder);
64 virtual bool renderGlobalEffectableForClip(ModelStackWithTimelineCounter* modelStack,
65 std::span<StereoSample> globalEffectableBuffer,
66 int32_t* bufferToTransferTo, int32_t* reverbBuffer,
67 int32_t reverbAmountAdjust, int32_t sideChainHitPending,
68 bool shouldLimitDelayFeedback,
bool isClipActive, int32_t pitchAdjust,
69 int32_t amplitudeAtStart, int32_t amplitudeAtEnd) = 0;
71 virtual bool willRenderAsOneChannelOnlyWhichWillNeedCopying() {
return false; }
73 bool renderedLastTime =
false;
Definition model_stack.h:231