Deluge Firmware
1.3.0
Build date: 2026.08.23
Toggle main menu visibility
Loading...
Searching...
No Matches
sound_drum.h
1
/*
2
* Copyright © 2014-2023 Synthstrom Audible Limited
3
*
4
* This file is part of The Synthstrom Audible Deluge Firmware.
5
*
6
* The Synthstrom Audible Deluge Firmware is free software: you can redistribute it and/or modify it under the
7
* terms of the GNU General Public License as published by the Free Software Foundation,
8
* either version 3 of the License, or (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
* See the GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along with this program.
15
* If not, see <https://www.gnu.org/licenses/>.
16
*/
17
18
#pragma once
19
20
#include "definitions_cxx.hpp"
21
#include "model/drum/drum.h"
22
#include "modulation/arpeggiator.h"
23
#include "processing/sound/sound.h"
24
#include "util/d_string.h"
25
26
class
ModelStackWithTimelineCounter
;
27
28
class
SoundDrum final :
public
Sound,
public
Drum {
29
public
:
30
String
path;
31
bool
nameIsDiscardable =
false
;
32
33
SoundDrum() : Drum(DrumType::SOUND) {}
34
35
using
Sound::allowNoteTails;
36
using
Sound::anyNoteIsOn;
37
using
Sound::hasActiveVoices
;
38
using
Sound::prepareForHibernation;
39
void
killAllVoices
()
override
;
40
41
bool
isDrum()
override
{
return
true
; }
42
void
noteOn(
ModelStackWithThreeMainThings
* modelStack, uint8_t velocity, int16_t
const
* mpeValues,
43
int32_t fromMIDIChannel = MIDI_CHANNEL_NONE, uint32_t sampleSyncLength = 0, int32_t ticksLate = 0,
44
uint32_t samplesLate = 0)
override
;
45
void
noteOff(
ModelStackWithThreeMainThings
* modelStack, int32_t velocity = kDefaultLiftValue)
override
;
46
47
void
setupPatchingForAllParamManagers(
Song
* song)
override
;
48
bool
readTagFromFile(
Deserializer
& reader,
char
const
* tagName)
override
;
49
Error loadAllSamples(
bool
mayActuallyReadFiles)
override
;
50
void
writeToFile(
Serializer
& writer,
bool
savingSong,
ParamManager
* paramManager)
override
;
51
void
writeToFileAsInstrument(
bool
savingSong,
ParamManager
* paramManager);
52
std::string getDrumName()
override
;
53
Error readFromFile(
Deserializer
& reader,
Song
* song,
Clip
* clip, int32_t readAutomationUpToPos)
override
;
54
void
choke(
ModelStackWithSoundFlags
* modelStack)
override
;
55
void
setSkippingRendering(
bool
newSkipping)
override
;
56
uint8_t* getModKnobMode()
override
;
57
void
drumWontBeRenderedForAWhile()
override
;
58
ModControllable* toModControllable()
override
{
return
this
; }
59
60
void
expressionEvent(int32_t newValue, int32_t expressionDimension)
override
;
61
void
polyphonicExpressionEventOnChannelOrNote(int32_t newValue, int32_t expressionDimension,
62
int32_t channelOrNoteNumber,
63
MIDICharacteristic whichCharacteristic)
override
;
64
65
ArpeggiatorBase
* getArp()
override
{
return
&arpeggiator; }
66
ArpeggiatorSettings
* getArpSettings(
InstrumentClip
* clip =
nullptr
)
override
{
return
&arpSettings; }
67
void
resetTimeEnteredState();
68
const
char
* getName()
override
{
return
drumName.c_str(); }
69
};
ArpeggiatorBase
Definition
arpeggiator.h:220
ArpeggiatorSettings
Definition
arpeggiator.h:48
Clip
Definition
clip.h:46
Deserializer
Definition
storage_manager.h:185
InstrumentClip
Definition
instrument_clip.h:48
ModelStackWithSoundFlags
Definition
model_stack.h:287
ModelStackWithThreeMainThings
Definition
model_stack.h:231
ModelStackWithTimelineCounter
Definition
model_stack.h:129
ParamManager
Definition
param_manager.h:45
Serializer
Definition
storage_manager.h:119
Song
Definition
song.h:103
SoundDrum::killAllVoices
void killAllVoices() override
Immediately ends all active voices.
Definition
sound_drum.cpp:106
Sound::hasActiveVoices
bool hasActiveVoices() const override
Does this sound have any active voices?
Definition
sound.h:298
String
Definition
d_string.h:41