Deluge Firmware 1.3.0
Build date: 2025.04.16
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: