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

Public Member Functions

void killAllVoices () override
 Immediately ends all active voices.
bool isDrum () override
void noteOn (ModelStackWithThreeMainThings *modelStack, uint8_t velocity, int16_t const *mpeValues, int32_t fromMIDIChannel=MIDI_CHANNEL_NONE, uint32_t sampleSyncLength=0, int32_t ticksLate=0, uint32_t samplesLate=0) override
void noteOff (ModelStackWithThreeMainThings *modelStack, int32_t velocity=kDefaultLiftValue) override
void setupPatchingForAllParamManagers (Song *song) override
bool readTagFromFile (Deserializer &reader, char const *tagName) override
Error loadAllSamples (bool mayActuallyReadFiles) override
void writeToFile (Serializer &writer, bool savingSong, ParamManager *paramManager) override
void writeToFileAsInstrument (bool savingSong, ParamManager *paramManager)
void getName (char *buffer) override
Error readFromFile (Deserializer &reader, Song *song, Clip *clip, int32_t readAutomationUpToPos) override
void choke (ModelStackWithSoundFlags *modelStack) override
void setSkippingRendering (bool newSkipping) override
uint8_t * getModKnobMode () override
void drumWontBeRenderedForAWhile () override
ModControllabletoModControllable () override
void expressionEvent (int32_t newValue, int32_t expressionDimension) override
void polyphonicExpressionEventOnChannelOrNote (int32_t newValue, int32_t expressionDimension, int32_t channelOrNoteNumber, MIDICharacteristic whichCharacteristic) override
ArpeggiatorBasegetArp () override
ArpeggiatorSettingsgetArpSettings (InstrumentClip *clip=nullptr) override
void resetTimeEnteredState ()
bool allowNoteTails (ModelStackWithSoundFlags *modelStack, bool disregardSampleLoop=false) override
bool anyNoteIsOn () override
bool hasActiveVoices () const override
 Does this sound have any active voices?
void prepareForHibernation () override
Public Member Functions inherited from Sound
ModFXType getModFXType () override
bool setModFXType (ModFXType newType) final
void patchedParamPresetValueChanged (uint8_t p, ModelStackWithSoundFlags *modelStack, int32_t oldValue, int32_t newValue)
void render (ModelStackWithThreeMainThings *modelStack, std::span< StereoSample > output, int32_t *reverbBuffer, int32_t sideChainHitPending, int32_t reverbAmountAdjust=134217728, bool shouldLimitDelayFeedback=false, int32_t pitchAdjust=kMaxSampleValue, SampleRecorder *recorder=nullptr)
void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero (Song *song) final
void ensureInaccessibleParamPresetValuesWithoutKnobsAreZero (ModelStackWithThreeMainThings *modelStack)
void ensureInaccessibleParamPresetValuesWithoutKnobsAreZeroWithMinimalDetails (ParamManager *paramManager)
void ensureParamPresetValueWithoutKnobIsZero (ModelStackWithAutoParam *modelStack)
void ensureParamPresetValueWithoutKnobIsZeroWithMinimalDetails (ParamManager *paramManager, int32_t p)
PatchCableAcceptance maySourcePatchToParam (PatchSource s, uint8_t p, ParamManager *paramManager)
void resyncGlobalLFOs ()
int8_t getKnobPos (uint8_t p, ParamManagerForTimeline *paramManager, uint32_t timePos, TimelineCounter *counter)
int32_t getKnobPosBig (int32_t p, ParamManagerForTimeline *paramManager, uint32_t timePos, TimelineCounter *counter)
bool learnKnob (MIDICable *cable, ParamDescriptor paramDescriptor, uint8_t whichKnob, uint8_t modKnobMode, uint8_t midiChannel, Song *song) final
bool hasFilters ()
void sampleZoneChanged (MarkerType markerType, int32_t s, ModelStackWithSoundFlags *modelStack)
void setNumUnison (int32_t newNum, ModelStackWithSoundFlags *modelStack)
void setUnisonDetune (int32_t newAmount, ModelStackWithSoundFlags *modelStack)
void setUnisonStereoSpread (int32_t newAmount)
void setModulatorTranspose (int32_t m, int32_t value, ModelStackWithSoundFlags *modelStack)
void setModulatorCents (int32_t m, int32_t value, ModelStackWithSoundFlags *modelStack)
Error readFromFile (Deserializer &reader, ModelStackWithModControllable *modelStack, int32_t readAutomationUpToPos, ArpeggiatorSettings *arpSettings)
void writeToFile (Serializer &writer, bool savingSong, ParamManager *paramManager, ArpeggiatorSettings *arpSettings, const char *pathAttribute=NULL)
void voiceUnassigned (ModelStackWithSoundFlags *modelStack)
bool isSourceActiveCurrently (int32_t s, ParamManagerForTimeline *paramManager)
bool isSourceActiveEverDisregardingMissingSample (int32_t s, ParamManager *paramManager)
bool isSourceActiveEver (int32_t s, ParamManager *paramManager)
bool isNoiseActiveEver (ParamManagerForTimeline *paramManager)
void noteOn (ModelStackWithThreeMainThings *modelStack, ArpeggiatorBase *arpeggiator, int32_t noteCode, int16_t const *mpeValues, uint32_t sampleSyncLength=0, int32_t ticksLate=0, uint32_t samplesLate=0, int32_t velocity=64, int32_t fromMIDIChannel=16)
void noteOff (ModelStackWithThreeMainThings *modelStack, ArpeggiatorBase *arpeggiator, int32_t noteCode)
void allNotesOff (ModelStackWithThreeMainThings *modelStack, ArpeggiatorBase *arpeggiator)
void noteOffPostArpeggiator (ModelStackWithSoundFlags *modelStack, int32_t noteCode=-32768)
void noteOnPostArpeggiator (ModelStackWithSoundFlags *modelStack, int32_t newNoteCodeBeforeArpeggiation, int32_t newNoteCodeAfterArpeggiation, int32_t velocity, int16_t const *mpeValues, uint32_t sampleSyncLength, int32_t ticksLate, uint32_t samplesLate, int32_t fromMIDIChannel=16)
int16_t getMaxOscTranspose (InstrumentClip *clip)
int16_t getMinOscTranspose ()
void setSynthMode (SynthMode value, Song *song)
SynthMode getSynthMode () const
void setupAsSample (ParamManagerForTimeline *paramManager)
void recalculateAllVoicePhaseIncrements (ModelStackWithSoundFlags *modelStack)
Error loadAllAudioFiles (bool mayActuallyReadFiles)
bool envelopeHasSustainCurrently (int32_t e, ParamManagerForTimeline *paramManager)
bool envelopeHasSustainEver (int32_t e, ParamManagerForTimeline *paramManager)
bool renderingOscillatorSyncCurrently (ParamManagerForTimeline *paramManager)
bool renderingOscillatorSyncEver (ParamManager *paramManager)
void setupAsBlankSynth (ParamManager *paramManager, bool is_dx=false)
void setupAsDefaultSynth (ParamManager *paramManager)
void modButtonAction (uint8_t whichModButton, bool on, ParamManagerForTimeline *paramManager) final
bool modEncoderButtonAction (uint8_t whichModEncoder, bool on, ModelStackWithThreeMainThings *modelStack) final
int32_t hasAnyTimeStretchSyncing (ParamManagerForTimeline *paramManager, bool getSampleLength=false, int32_t note=0)
int32_t hasCutOrLoopModeSamples (ParamManagerForTimeline *paramManager, int32_t note, bool *anyLooping=nullptr)
bool hasCutModeSamples (ParamManagerForTimeline *paramManager)
bool allowsVeryLateNoteStart (InstrumentClip *clip, ParamManagerForTimeline *paramManager)
void fastReleaseAllVoices (ModelStackWithSoundFlags *modelStack)
void recalculatePatchingToParam (uint8_t p, ParamManagerForTimeline *paramManager)
void doneReadingFromFile ()
void compensateVolumeForResonance (ModelStackWithThreeMainThings *modelStack)
ModelStackWithAutoParamgetParamFromModEncoder (int32_t whichModEncoder, ModelStackWithThreeMainThings *modelStack, bool allowCreation=true) final
void reassessRenderSkippingStatus (ModelStackWithSoundFlags *modelStack, bool shouldJustCutModFX=false)
void getThingWithMostReverb (Sound **soundWithMostReverb, ParamManager **paramManagerWithMostReverb, GlobalEffectableForClip **globalEffectableWithMostReverb, int32_t *highestReverbAmountFound, ParamManagerForTimeline *paramManager)
void detachSourcesFromAudioFiles ()
int32_t getSmoothedPatchedParamValue (int32_t p, ParamManager &paramManager) const
void notifyValueChangeViaLPF (int32_t p, bool shouldDoParamLPF, ModelStackWithThreeMainThings const *modelStack, int32_t oldValue, int32_t newValue, bool fromAutomation)
void deleteMultiRange (int32_t s, int32_t r)
void wontBeRenderedForAWhile () override
ModelStackWithAutoParamgetParamFromMIDIKnob (MIDIKnob &knob, ModelStackWithThreeMainThings *modelStack) final
 Check that autoParam isn't NULL, after calling this.
void possiblySetupDefaultExpressionPatching (ParamManager *paramManager)
void saturate (int32_t *data, uint32_t *workingValue)
uint32_t getSyncedLFOPhaseIncrement (const LFOConfig &config)
size_t numActiveVoices () const
 Get the number of active voices.
const ActiveVoice & getLowestPriorityVoice () const
 Get the voice with the lowest priority.
const deluge::fast_vector< ActiveVoice > & voices () const
 Get the voices for this sound.
void freeActiveVoice (const ActiveVoice &voice, ModelStackWithSoundFlags *modelStack=nullptr, bool erase=true)
 Releases a given voice from the Sound.
Public Member Functions inherited from ModControllableAudio
virtual void cloneFrom (ModControllableAudio *other)
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)
virtual Error readTagFromFile (Deserializer &reader, char const *tagName, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos, ArpeggiatorSettings *arpSettings, Song *song)
void processSRRAndBitcrushing (std::span< StereoSample > buffer, int32_t *postFXVolume, ParamManager *paramManager)
void beginStutter (ParamManagerForTimeline *paramManager)
void endStutter (ParamManagerForTimeline *paramManager)
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)
bool unlearnKnobs (ParamDescriptor paramDescriptor, Song *song)
bool isBitcrushingEnabled (ParamManager *paramManager)
bool isSRREnabled (ParamManager *paramManager)
bool hasBassAdjusted (ParamManager *paramManager)
bool hasTrebleAdjusted (ParamManager *paramManager)
Public Member Functions inherited from ModControllable
virtual bool isKit ()
virtual bool isSong ()
virtual bool isEditingComp ()
virtual bool valueChangedEnoughToMatter (int32_t old_value, int32_t new_value, deluge::modulation::params::Kind kind, uint32_t paramID)
virtual int32_t getKnobPosForNonExistentParam (int32_t whichModEncoder, ModelStackWithAutoParam *modelStack)
virtual ActionResult modEncoderActionForNonExistentParam (int32_t offset, int32_t whichModEncoder, ModelStackWithAutoParam *modelStack)
virtual void monophonicExpressionEvent (int32_t newValue, int32_t expressionDimension)
Public Member Functions inherited from Drum
 Drum (DrumType newType)
virtual void prepareDrumToHaveNoActiveClip ()
void writeMIDICommandsToFile (Serializer &writer)
bool readDrumTagFromFile (Deserializer &reader, char const *tagName)
void recordNoteOnEarly (int32_t velocity, bool noteTailsAllowed)
void expressionEventPossiblyToRecord (ModelStackWithTimelineCounter *modelStack, int16_t newValue, int32_t expressionDimension, int32_t level)
void getCombinedExpressionInputs (int16_t *combined)

Public Attributes

String name
String path
bool nameIsDiscardable = false
Public Attributes inherited from Sound
Patcher patcher
ParamLPF paramLPF {}
Source sources [kNumSources]
std::array< int32_t, deluge::modulation::params::kNumParams - deluge::modulation::params::FIRST_GLOBAL > paramFinalValues {}
std::array< int32_t, util::to_underlying(kFirstLocalSource)> globalSourceValues {}
uint32_t sourcesChanged {}
LFO globalLFO1
LFO globalLFO3
LFOConfig lfoConfig [LFO_COUNT]
bool invertReversed {}
ModKnob modKnobs [kNumModButtons][kNumPhysicalModKnobs]
int32_t sideChainSendLevel = 0
PolyphonyMode polyphonic = PolyphonyMode::POLY
uint8_t maxVoiceCount = 8
int16_t transpose = 0
uint8_t numUnison = 1
int8_t unisonDetune = 8
uint8_t unisonStereoSpread = 0
uint8_t outputMidiChannel = MIDI_CHANNEL_NONE
uint8_t outputMidiNoteForDrum = MIDI_NOTE_NONE
int16_t modulatorTranspose [kNumModulators] = {0, -12}
int8_t modulatorCents [kNumModulators] = {0, 0}
PhaseIncrementFineTuner modulatorTransposers [kNumModulators]
PhaseIncrementFineTuner unisonDetuners [kMaxNumVoicesUnison]
int32_t unisonPan [kMaxNumVoicesUnison] {}
SynthMode synthMode = SynthMode::SUBTRACTIVE
bool modulator1ToModulator0 = false
int32_t volumeNeutralValueForUnison {0}
int32_t lastNoteCode = std::numeric_limits<int32_t>::min()
bool oscillatorSync = false
VoicePriority voicePriority = VoicePriority::MEDIUM
bool skippingRendering = true
std::bitset< kNumExpressionDimensions > expressionSourcesChangedAtSynthLevel {0}
std::array< int32_t, kNumExpressionDimensions > monophonicExpressionValues {}
std::array< uint32_t, kNumSources > oscRetriggerPhase {}
std::array< uint32_t, kNumModulators > modulatorRetriggerPhase {}
uint32_t timeStartedSkippingRenderingModFX {0}
uint32_t timeStartedSkippingRenderingLFO {0}
uint32_t timeStartedSkippingRenderingArp {0}
uint32_t startSkippingRenderingAtTime = 0
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 {}
Public Attributes inherited from Drum
Kitkit
const DrumType type
bool noteRowAssignedTemp
uint8_t earlyNoteVelocity
bool earlyNoteStillActive
bool auditioned
uint8_t lastMIDIChannelAuditioned
int8_t lastExpressionInputsReceived [2][kNumExpressionDimensions]
Drumnext
LearnedMIDI midiInput
LearnedMIDI muteMIDICommand
ArpeggiatorForDrum arpeggiator
ArpeggiatorSettings arpSettings

Additional Inherited Members

Public Types inherited from Sound
using ActiveVoice = AudioEngine::VoicePool::pointer_type
Static Public Member Functions inherited from Sound
static void writeParamsToFile (Serializer &writer, ParamManager *paramManager, bool writeAutomation)
static void readParamsFromFile (Deserializer &reader, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos)
static bool readParamTagFromFile (Deserializer &reader, char const *tagName, ParamManagerForTimeline *paramManager, int32_t readAutomationUpToPos)
static void initParams (ParamManager *paramManager)
static Error createParamManagerForLoading (ParamManagerForTimeline *paramManager)
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)
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 inherited from ModControllableAudio
deluge::modulation::params::Kind unpatchedParamKind_
Protected Attributes inherited from ModControllable
deluge::modulation::params::Kind unpatchedParamKind_

Member Function Documentation

◆ allowNoteTails()

bool Sound::allowNoteTails ( ModelStackWithSoundFlags * modelStack,
bool disregardSampleLoop = false )
overridevirtual

Reimplemented from Sound.

◆ anyNoteIsOn()

bool Sound::anyNoteIsOn ( )
overridevirtual

Reimplemented from Sound.

◆ choke()

void SoundDrum::choke ( ModelStackWithSoundFlags * modelStack)
overridevirtual

Reimplemented from Drum.

◆ drumWontBeRenderedForAWhile()

void SoundDrum::drumWontBeRenderedForAWhile ( )
overridevirtual

Reimplemented from Drum.

◆ expressionEvent()

void SoundDrum::expressionEvent ( int32_t newValue,
int32_t expressionDimension )
overridevirtual

Reimplemented from Drum.

◆ getArp()

ArpeggiatorBase * SoundDrum::getArp ( )
inlineoverridevirtual

Implements Sound.

◆ getArpSettings()

ArpeggiatorSettings * SoundDrum::getArpSettings ( InstrumentClip * clip = nullptr)
inlineoverridevirtual

Implements Sound.

◆ getModKnobMode()

uint8_t * SoundDrum::getModKnobMode ( )
overridevirtual

Reimplemented from ModControllable.

◆ getName()

void SoundDrum::getName ( char * buffer)
inlineoverridevirtual

Implements Drum.

◆ hasActiveVoices()

bool Sound::hasActiveVoices ( ) const
inlinenodiscardoverridevirtual

Does this sound have any active voices?

Reimplemented from Sound.

◆ isDrum()

bool SoundDrum::isDrum ( )
inlineoverridevirtual

Reimplemented from Sound.

◆ killAllVoices()

void SoundDrum::killAllVoices ( )
overridevirtual

Immediately ends all active voices.

Reimplemented from Sound.

◆ loadAllSamples()

Error SoundDrum::loadAllSamples ( bool mayActuallyReadFiles)
overridevirtual

Reimplemented from Drum.

◆ noteOff()

void SoundDrum::noteOff ( ModelStackWithThreeMainThings * modelStack,
int32_t velocity = kDefaultLiftValue )
overridevirtual

Implements Drum.

◆ noteOn()

void SoundDrum::noteOn ( ModelStackWithThreeMainThings * modelStack,
uint8_t velocity,
int16_t const * mpeValues,
int32_t fromMIDIChannel = MIDI_CHANNEL_NONE,
uint32_t sampleSyncLength = 0,
int32_t ticksLate = 0,
uint32_t samplesLate = 0 )
overridevirtual

Implements Drum.

◆ polyphonicExpressionEventOnChannelOrNote()

void SoundDrum::polyphonicExpressionEventOnChannelOrNote ( int32_t newValue,
int32_t expressionDimension,
int32_t channelOrNoteNumber,
MIDICharacteristic whichCharacteristic )
overridevirtual

Reimplemented from Sound.

◆ prepareForHibernation()

void Sound::prepareForHibernation ( )
overridevirtual

Reimplemented from Sound.

◆ readFromFile()

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

Implements Drum.

◆ readTagFromFile()

bool SoundDrum::readTagFromFile ( Deserializer & reader,
char const * tagName )
overridevirtual

Implements Sound.

◆ setSkippingRendering()

void SoundDrum::setSkippingRendering ( bool newSkipping)
overridevirtual

Reimplemented from Sound.

◆ setupPatchingForAllParamManagers()

void SoundDrum::setupPatchingForAllParamManagers ( Song * song)
overridevirtual

Reimplemented from Sound.

◆ toModControllable()

ModControllable * SoundDrum::toModControllable ( )
inlineoverridevirtual

Reimplemented from Drum.

◆ writeToFile()

void SoundDrum::writeToFile ( Serializer & writer,
bool savingSong,
ParamManager * paramManager )
overridevirtual

Implements Drum.


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