Deluge Firmware 1.3.0
Build date: 2025.07.02
Loading...
Searching...
No Matches
AudioOutput Class Referencefinal
Inheritance diagram for AudioOutput:
Collaboration diagram for AudioOutput:

Public Member Functions

void cloneFrom (ModControllableAudio *other) override
void renderOutput (ModelStack *modelStack, std::span< StereoSample > buffer, int32_t *reverbBuffer, int32_t reverbAmountAdjust, int32_t sideChainHitPending, bool shouldLimitDelayFeedback, bool isClipActive) override
bool renderGlobalEffectableForClip (ModelStackWithTimelineCounter *modelStack, std::span< StereoSample > globalEffectableBuffer, int32_t *bufferToTransferTo, int32_t *reverbBuffer, int32_t reverbAmountAdjust, int32_t sideChainHitPending, bool shouldLimitDelayFeedback, bool isClipActive, int32_t pitchAdjust, int32_t amplitudeAtStart, int32_t amplitudeAtEnd) override
void resetEnvelope ()
bool matchesPreset (OutputType otherType, int32_t channel, int32_t channelSuffix, char const *otherName, char const *dirPath) override
ModControllabletoModControllable () override
uint8_t * getModKnobMode () override
void cutAllSound () override
void getThingWithMostReverb (Sound **soundWithMostReverb, ParamManagerForTimeline **paramManagerWithMostReverb, Kit **kitWithMostReverb, int32_t *highestReverbAmountFound)
Error readFromFile (Deserializer &reader, Song *song, Clip *clip, int32_t readAutomationUpToPos) override
bool writeDataToFile (Serializer &writer, Clip *clipForSavingOutputOnly, Song *song) override
void deleteBackedUpParamManagers (Song *song) override
bool setActiveClip (ModelStackWithTimelineCounter *modelStack, PgmChangeSend maySendMIDIPGMs=PgmChangeSend::ONCE) override
bool isSkippingRendering () override
OutputtoOutput () override
void getThingWithMostReverb (Sound **soundWithMostReverb, ParamManager **paramManagerWithMostReverb, GlobalEffectableForClip **globalEffectableWithMostReverb, int32_t *highestReverbAmountFound) override
void offerReceivedCCToLearnedParams (MIDICable &cable, uint8_t channel, uint8_t ccNumber, uint8_t value, ModelStackWithTimelineCounter *modelStack) override
bool offerReceivedPitchBendToLearnedParams (MIDICable &cable, uint8_t channel, uint8_t data1, uint8_t data2, ModelStackWithTimelineCounter *modelStack) override
 Pitch bend is available in the mod matrix as X and shouldn't be learned to params anymore (post 4.0)
char const * getXMLTag () override
OutputgetOutputRecordingFrom ()
void clearRecordingFrom () override
void setOutputRecordingFrom (Output *toRecordfrom)
ModelStackWithAutoParamgetModelStackWithParam (ModelStackWithTimelineCounter *modelStack, Clip *clip, int32_t paramID, deluge::modulation::params::Kind paramKind, bool affectEntire, bool useMenuStack) override
void scrollAudioOutputMode (int offset)
Public Member Functions inherited from Output
 Output (OutputType newType)
ClipgetActiveClip () const
virtual void setupWithoutActiveClip (ModelStack *modelStack)
void pickAnActiveClipForArrangementPos (ModelStack *modelStack, int32_t arrangementPos, PgmChangeSend maySendMIDIPGMs)
void pickAnActiveClipIfPossible (ModelStack *modelStack, bool searchSessionClipsIfNeeded=true, PgmChangeSend maySendMIDIPGMs=PgmChangeSend::ONCE, bool setupWithoutActiveClipIfNeeded=true)
void detachActiveClip (Song *currentSong)
bool clipHasInstance (Clip *clip)
bool isEmpty (bool displayPopup=true)
void clipLengthChanged (Clip *clip, int32_t oldLength)
ClipgetClipFromName (String *name)
 If there's a clip matching the name on this output, returns it.
virtual int32_t doTickForwardForArp (ModelStack *modelStack, int32_t currentPos)
void endAnyArrangementRecording (Song *song, int32_t actualEndPos, uint32_t timeRemainder)
virtual bool readTagFromFile (Deserializer &reader, char const *tagName)
void writeToFile (Clip *clipForSavingOutputOnly, Song *song)
virtual Error loadAllAudioFiles (bool mayActuallyReadFiles)
virtual void loadCrucialAudioFilesOnly ()
virtual void resyncLFOs ()
virtual void sendMIDIPGM ()
virtual void prepareForHibernationOrDeletion ()
virtual ParamManagergetParamManager (Song *song)
virtual char const * getNameXMLTag ()
virtual void offerReceivedNote (ModelStackWithTimelineCounter *modelStackWithTimelineCounter, MIDICable &cable, bool on, int32_t channel, int32_t note, int32_t velocity, bool shouldRecordNotes, bool *doingMidiThru)
virtual void offerReceivedPitchBend (ModelStackWithTimelineCounter *modelStackWithTimelineCounter, MIDICable &cable, uint8_t channel, uint8_t data1, uint8_t data2, bool *doingMidiThru)
virtual void offerReceivedCC (ModelStackWithTimelineCounter *modelStackWithTimelineCounter, MIDICable &cable, uint8_t channel, uint8_t ccNumber, uint8_t value, bool *doingMidiThru)
virtual void offerReceivedAftertouch (ModelStackWithTimelineCounter *modelStackWithTimelineCounter, MIDICable &cable, int32_t channel, int32_t value, int32_t noteCode, bool *doingMidiThru)
virtual void stopAnyAuditioning (ModelStack *modelStack)
virtual void offerBendRangeUpdate (ModelStack *modelStack, MIDICable &cable, int32_t channelOrZone, int32_t whichBendRange, int32_t bendSemitones)
Error possiblyBeginArrangementRecording (Song *song, int32_t newPos)
void endArrangementPlayback (Song *song, int32_t actualEndPos, uint32_t timeRemainder)
virtual bool needsEarlyPlayback () const
bool hasRecorder ()
bool shouldRenderInSong ()
void setRenderingToAudioOutput (bool monitoring, Output *output)
 disable rendering to the song buffer if this clip is the input to an audio output that's monitoring
bool addRecorder (SampleRecorder *newRecorder)
bool removeRecorder ()
OutputgetOutputRecordingThis ()
Public Member Functions inherited from GlobalEffectableForClip
int32_t getSidechainVolumeAmountAsPatchCableDepth (ParamManager *paramManager)
void modButtonAction (uint8_t whichModButton, bool on, ParamManagerForTimeline *paramManager) final
bool modEncoderButtonAction (uint8_t whichModEncoder, bool on, ModelStackWithThreeMainThings *modelStack) final
void getThingWithMostReverb (Clip *activeClip, Sound **soundWithMostReverb, ParamManager **paramManagerWithMostReverb, GlobalEffectableForClip **globalEffectableWithMostReverb, int32_t *highestReverbAmountFound)
q31_t saturate (q31_t data, uint32_t *workingValue)
Public Member Functions inherited from GlobalEffectable
void cloneFrom (ModControllableAudio *other) override
ModelStackWithAutoParamgetParamFromModEncoder (int32_t whichModEncoder, ModelStackWithThreeMainThings *modelStack, bool allowCreation=true) override
void setupFilterSetConfig (int32_t *postFXVolume, ParamManager *paramManager)
void processFilters (std::span< StereoSample > buffer)
void compensateVolumeForResonance (ParamManagerForTimeline *paramManager)
void processFXForGlobalEffectable (std::span< StereoSample > buffer, int32_t *postFXVolume, ParamManager *paramManager, const Delay::State &delayWorkingState, bool anySoundComingIn, q31_t verbAmount)
void writeAttributesToFile (Serializer &writer, bool writeToFile)
void writeTagsToFile (Serializer &writer, ParamManager *paramManager, bool writeToFile)
Error readTagFromFile (Deserializer &reader, char const *tagName, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos, ArpeggiatorSettings *arpSettings, Song *song) override
Delay::State createDelayWorkingState (ParamManager &paramManager, bool shouldLimitDelayFeedback=false, bool soundComingIn=true)
bool isEditingComp () override
int32_t getKnobPosForNonExistentParam (int32_t whichModEncoder, ModelStackWithAutoParam *modelStack) override
ActionResult modEncoderActionForNonExistentParam (int32_t offset, int32_t whichModEncoder, ModelStackWithAutoParam *modelStack) override
ModFXType getModFXType () override
Public Member Functions inherited from ModControllableAudio
void processStutter (std::span< StereoSample > buffer, ParamManager *paramManager)
void processReverbSendAndVolume (std::span< StereoSample > buffer, int32_t *reverbBuffer, int32_t postFXVolume, int32_t postReverbVolume, int32_t reverbSendAmount, int32_t pan=0, bool doAmplitudeIncrement=false)
void writeAttributesToFile (Serializer &writer)
void writeTagsToFile (Serializer &writer)
void processSRRAndBitcrushing (std::span< StereoSample > buffer, int32_t *postFXVolume, ParamManager *paramManager)
virtual void wontBeRenderedForAWhile ()
void beginStutter (ParamManagerForTimeline *paramManager)
void endStutter (ParamManagerForTimeline *paramManager)
virtual bool setModFXType (ModFXType newType)
bool offerReceivedCCToLearnedParamsForClip (MIDICable &cable, uint8_t channel, uint8_t ccNumber, uint8_t value, ModelStackWithTimelineCounter *modelStack, int32_t noteRowIndex=-1)
bool offerReceivedCCToLearnedParamsForSong (MIDICable &cable, uint8_t channel, uint8_t ccNumber, uint8_t value, ModelStackWithThreeMainThings *modelStackWithThreeMainThings)
bool offerReceivedPitchBendToLearnedParams (MIDICable &cable, uint8_t channel, uint8_t data1, uint8_t data2, ModelStackWithTimelineCounter *modelStack, int32_t noteRowIndex=-1)
virtual bool learnKnob (MIDICable *cable, ParamDescriptor paramDescriptor, uint8_t whichKnob, uint8_t modKnobMode, uint8_t midiChannel, Song *song)
bool unlearnKnobs (ParamDescriptor paramDescriptor, Song *song)
virtual void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero (Song *song)
bool isBitcrushingEnabled (ParamManager *paramManager)
bool isSRREnabled (ParamManager *paramManager)
bool hasBassAdjusted (ParamManager *paramManager)
bool hasTrebleAdjusted (ParamManager *paramManager)
ModelStackWithAutoParamgetParamFromMIDIKnob (MIDIKnob &knob, ModelStackWithThreeMainThings *modelStack) override
 Check that autoParam isn't NULL, after calling this.
Public Member Functions inherited from ModControllable
virtual bool isKit ()
virtual bool isSong ()
virtual bool valueChangedEnoughToMatter (int32_t old_value, int32_t new_value, deluge::modulation::params::Kind kind, uint32_t paramID)
virtual bool allowNoteTails (ModelStackWithSoundFlags *modelStack, bool disregardSampleLoop=false)
virtual void polyphonicExpressionEventOnChannelOrNote (int32_t newValue, int32_t expressionDimension, int32_t channelOrNoteNumber, MIDICharacteristic whichCharacteristic)
virtual void monophonicExpressionEvent (int32_t newValue, int32_t expressionDimension)

Public Attributes

Envelope envelope
int32_t amplitudeLastTime
int32_t overrideAmplitudeEnvelopeReleaseRate
AudioInputChannel inputChannel {AudioInputChannel::UNSET}
 Audio channel used for recording and monitoring.
int16_t outputRecordingFromIndex {-1}
AudioOutputMode mode {AudioOutputMode::player}
Public Attributes inherited from Output
ClipInstanceVector clipInstances
String name
Outputnext
const OutputType type
bool mutedInArrangementMode
bool mutedInArrangementModeBeforeStemExport
bool exportStem
bool soloingInArrangementMode
bool inValidState
bool wasCreatedForAutoOverdub
bool armedForRecording
int16_t colour {0}
uint8_t modKnobMode
bool alreadyGotItsNewClip
bool isGettingSoloingClip
bool nextClipFoundShouldGetArmed
bool recordingInArrangement
Public Attributes inherited from GlobalEffectableForClip
std::array< uint32_t, 2 > lastSaturationTanHWorkingValue = {2147483648u, 2147483648u}
Public Attributes inherited from GlobalEffectable
dsp::filter::FilterSet filterSet
ModFXParam currentModFXParam
FilterType currentFilterType
bool editingComp
CompParam currentCompParam
Public Attributes inherited from ModControllableAudio
int32_t bassFreq {}
int32_t trebleFreq {}
int32_t withoutTrebleL
int32_t bassOnlyL
int32_t withoutTrebleR
int32_t bassOnlyR
Delay delay
StutterConfig stutterConfig
bool sampleRateReductionOnLastTime
uint8_t clippingAmount
FilterMode lpfMode
FilterMode hpfMode
FilterRoute filterRoute
ModFXType modFXType_
ModFXProcessor modfx {}
RMSFeedbackCompressor compressor
GranularProcessorgrainFX {nullptr}
uint32_t lowSampleRatePos {}
uint32_t highSampleRatePos {}
StereoSample lastSample
StereoSample grabbedSample
StereoSample lastGrabbedSample
SideChain sidechain
deluge::fast_vector< MIDIKnobmidi_knobs
int32_t postReverbVolumeLastTime {}

Protected Member Functions

ClipcreateNewClipForArrangementRecording (ModelStack *modelStack) override
bool wantsToBeginArrangementRecording () override
bool willRenderAsOneChannelOnlyWhichWillNeedCopying () override
Protected Member Functions inherited from GlobalEffectableForClip
int32_t getParameterFromKnob (int32_t whichModEncoder) final
void renderOutput (ModelStackWithTimelineCounter *modelStack, ParamManager *paramManagerForClip, std::span< StereoSample > output, int32_t *reverbBuffer, int32_t reverbAmountAdjust, int32_t sideChainHitPending, bool shouldLimitDelayFeedback, bool isClipActive, OutputType outputType, SampleRecorder *recorder)
Protected Member Functions inherited from GlobalEffectable
ModFXType getActiveModFXType (ParamManager *paramManager)
Protected Member Functions inherited from ModControllableAudio
void processFX (std::span< StereoSample > buffer, ModFXType modFXType, int32_t modFXRate, int32_t modFXDepth, const Delay::State &delayWorkingState, int32_t *postFXVolume, ParamManager *paramManager, bool anySoundComingIn, q31_t reverbSendAmount)
void switchDelayPingPong ()
void switchDelayAnalog ()
void switchDelaySyncType ()
void switchDelaySyncLevel ()
void switchLPFMode ()
void switchHPFMode ()
void clearModFXMemory ()
char const * getFilterTypeDisplayName (FilterType currentFilterType)
char const * getFilterModeDisplayName (FilterType currentFilterType)
char const * getLPFModeDisplayName ()
char const * getHPFModeDisplayName ()
char const * getDelayTypeDisplayName ()
char const * getDelayPingPongStatusDisplayName ()
char const * getDelaySyncTypeDisplayName ()
void getDelaySyncLevelDisplayName (char *displayName)
char const * getSidechainDisplayName ()
void displayFilterSettings (bool on, FilterType currentFilterType)
void displayDelaySettings (bool on)
void displaySidechainAndReverbSettings (bool on)
void displayOtherModKnobSettings (uint8_t whichModButton, bool on)
 displays names of parameters assigned to gold knobs
bool enableGrain ()
void disableGrain ()

Protected Attributes

OutputoutputRecordingFrom {nullptr}
 Which output to record from. Only valid when inputChannel is AudioInputChannel::SPECIFIC_OUTPUT.
Protected Attributes inherited from Output
bool recorderIsEchoing {false}
OutputoutputRecordingThisOutput {nullptr}
ClipactiveClip {nullptr}
SampleRecorderrecorder {nullptr}
Protected Attributes inherited from GlobalEffectable
int maxCompParam = 0
Protected Attributes inherited from ModControllableAudio
deluge::modulation::params::Kind unpatchedParamKind_
Protected Attributes inherited from ModControllable
deluge::modulation::params::Kind unpatchedParamKind_

Additional Inherited Members

Static Public Member Functions inherited from GlobalEffectable
static void initParams (ParamManager *paramManager)
static void initParamsForAudioClip (ParamManagerForTimeline *paramManager)
static void writeParamAttributesToFile (Serializer &writer, ParamManager *paramManager, bool writeAutomation, int32_t *valuesForOverride=nullptr)
static void writeParamTagsToFile (Serializer &writer, ParamManager *paramManager, bool writeAutomation, int32_t *valuesForOverride=nullptr)
static void readParamsFromFile (Deserializer &reader, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos)
static bool readParamTagFromFile (Deserializer &reader, char const *tagName, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos)
Static Public Member Functions inherited from ModControllableAudio
static void writeParamAttributesToFile (Serializer &writer, ParamManager *paramManager, bool writeAutomation, int32_t *valuesForOverride=nullptr)
static void writeParamTagsToFile (Serializer &writer, ParamManager *paramManager, bool writeAutomation, int32_t *valuesForOverride=nullptr)
static bool readParamTagFromFile (Deserializer &reader, char const *tagName, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos)
static void initParams (ParamManager *paramManager)

Member Function Documentation

◆ clearRecordingFrom()

void AudioOutput::clearRecordingFrom ( )
inlineoverridevirtual

Reimplemented from Output.

◆ cloneFrom()

void AudioOutput::cloneFrom ( ModControllableAudio * other)
overridevirtual

Reimplemented from ModControllableAudio.

◆ createNewClipForArrangementRecording()

Clip * AudioOutput::createNewClipForArrangementRecording ( ModelStack * modelStack)
overrideprotectedvirtual

Implements Output.

◆ cutAllSound()

void AudioOutput::cutAllSound ( )
overridevirtual

Reimplemented from Output.

◆ deleteBackedUpParamManagers()

void AudioOutput::deleteBackedUpParamManagers ( Song * song)
overridevirtual

Reimplemented from Output.

◆ getModelStackWithParam()

ModelStackWithAutoParam * AudioOutput::getModelStackWithParam ( ModelStackWithTimelineCounter * modelStack,
Clip * clip,
int32_t paramID,
deluge::modulation::params::Kind paramKind,
bool affectEntire,
bool useMenuStack )
overridevirtual

Implements Output.

◆ getModKnobMode()

uint8_t * AudioOutput::getModKnobMode ( )
inlineoverridevirtual

Reimplemented from ModControllable.

◆ getThingWithMostReverb()

void AudioOutput::getThingWithMostReverb ( Sound ** soundWithMostReverb,
ParamManager ** paramManagerWithMostReverb,
GlobalEffectableForClip ** globalEffectableWithMostReverb,
int32_t * highestReverbAmountFound )
overridevirtual

Reimplemented from Output.

◆ getXMLTag()

char const * AudioOutput::getXMLTag ( )
inlineoverridevirtual

Implements Output.

◆ isSkippingRendering()

bool AudioOutput::isSkippingRendering ( )
overridevirtual

Reimplemented from Output.

◆ matchesPreset()

bool AudioOutput::matchesPreset ( OutputType otherType,
int32_t channel,
int32_t channelSuffix,
char const * otherName,
char const * dirPath )
inlineoverridevirtual

Implements Output.

◆ offerReceivedCCToLearnedParams()

void AudioOutput::offerReceivedCCToLearnedParams ( MIDICable & cable,
uint8_t channel,
uint8_t ccNumber,
uint8_t value,
ModelStackWithTimelineCounter * modelStack )
inlineoverridevirtual

Reimplemented from Output.

◆ offerReceivedPitchBendToLearnedParams()

bool AudioOutput::offerReceivedPitchBendToLearnedParams ( MIDICable & cable,
uint8_t channel,
uint8_t data1,
uint8_t data2,
ModelStackWithTimelineCounter * modelStack )
inlineoverridevirtual

Pitch bend is available in the mod matrix as X and shouldn't be learned to params anymore (post 4.0)

Reimplemented from Output.

◆ readFromFile()

Error AudioOutput::readFromFile ( Deserializer & reader,
Song * song,
Clip * clip,
int32_t readAutomationUpToPos )
overridevirtual

Reimplemented from Output.

◆ renderGlobalEffectableForClip()

bool AudioOutput::renderGlobalEffectableForClip ( ModelStackWithTimelineCounter * modelStack,
std::span< StereoSample > globalEffectableBuffer,
int32_t * bufferToTransferTo,
int32_t * reverbBuffer,
int32_t reverbAmountAdjust,
int32_t sideChainHitPending,
bool shouldLimitDelayFeedback,
bool isClipActive,
int32_t pitchAdjust,
int32_t amplitudeAtStart,
int32_t amplitudeAtEnd )
overridevirtual

◆ renderOutput()

void AudioOutput::renderOutput ( ModelStack * modelStack,
std::span< StereoSample > buffer,
int32_t * reverbBuffer,
int32_t reverbAmountAdjust,
int32_t sideChainHitPending,
bool shouldLimitDelayFeedback,
bool isClipActive )
overridevirtual

Implements Output.

◆ setActiveClip()

bool AudioOutput::setActiveClip ( ModelStackWithTimelineCounter * modelStack,
PgmChangeSend maySendMIDIPGMs = PgmChangeSend::ONCE )
overridevirtual

Reimplemented from Output.

◆ toModControllable()

ModControllable * AudioOutput::toModControllable ( )
inlineoverridevirtual

Reimplemented from Output.

◆ toOutput()

Output * AudioOutput::toOutput ( )
inlineoverridevirtual

◆ wantsToBeginArrangementRecording()

bool AudioOutput::wantsToBeginArrangementRecording ( )
overrideprotectedvirtual

Reimplemented from Output.

◆ willRenderAsOneChannelOnlyWhichWillNeedCopying()

bool AudioOutput::willRenderAsOneChannelOnlyWhichWillNeedCopying ( )
overrideprotectedvirtual

Reimplemented from GlobalEffectableForClip.

◆ writeDataToFile()

bool AudioOutput::writeDataToFile ( Serializer & writer,
Clip * clipForSavingOutputOnly,
Song * song )
overridevirtual

Reimplemented from Output.

Member Data Documentation

◆ outputRecordingFromIndex

int16_t AudioOutput::outputRecordingFromIndex {-1}

Only used during loading - index changes as outputs are added/removed and this won't get updated. Pointer stays accurate through those changes.

int16 so it packs nicely with echoing below


The documentation for this class was generated from the following files:
  • src/deluge/processing/audio_output.h
  • src/deluge/processing/audio_output.cpp