20#include "OSLikeStuff/scheduler_api.h"
21#include "definitions_cxx.hpp"
22#include "dsp/compressor/rms_feedback.h"
23#include "dsp/envelope_follower/absolute_value.h"
24#include "memory/fast_allocator.h"
25#include "memory/object_pool.h"
26#include "model/output.h"
27#include "util/containers.h"
52namespace deluge::dsp {
133#define DO_AUDIO_LOG 0
135namespace AudioEngine {
136using VoicePool = deluge::memory::ObjectPool<Voice, deluge::memory::fast_allocator>;
137using VoiceSamplePool = deluge::memory::ObjectPool<VoiceSample, deluge::memory::fast_allocator>;
138using TimeStretcherPool = deluge::memory::ObjectPool<TimeStretcher, deluge::memory::fast_allocator>;
141void routineWithClusterLoading(
bool mayProcessUserActionsBetween =
false);
145void previewSample(String* path, FilePointer* filePointer,
bool shouldActuallySound);
146void stopAnyPreviewing();
148void songSwapAboutToHappen();
149void killAllVoices(
bool deletingSong =
false);
150void logAction(
char const*
string);
151void logAction(int32_t number);
153void getReverbParamsFromSong(Song* song);
155VoiceSample* solicitVoiceSample();
156void voiceSampleUnassigned(VoiceSample* voiceSample);
158TimeStretcher* solicitTimeStretcher();
159void timeStretcherUnassigned(TimeStretcher* timeStretcher);
161LiveInputBuffer* getOrCreateLiveInputBuffer(OscType inputType,
bool mayCreate);
163void doRecorderCardRoutines();
165int32_t getNumSamplesLeftToOutputFromPreviousRender();
167void registerSideChainHit(int32_t strength);
169SampleRecorder* getNewRecorder(int32_t numChannels, AudioRecordingFolder folderID, AudioInputChannel mode,
170 bool keepFirstReasons,
bool writeLoopPoints, int32_t buttonPressLatency,
171 bool shouldNormalize, Output* outputRecordingFrom);
172void discardRecorder(SampleRecorder* recorder);
173bool isAnyInternalRecordingHappening();
177uint8_t logNextIndex = 0;
178uint32_t logAbsoluteIndex = 0;
179char* getEmptyLogEntry();
182int32_t getNumAudio();
183int32_t getNumVoices();
184bool doSomeOutputting();
185void updateReverbParams();
187extern bool headphonesPluggedIn;
188extern bool micPluggedIn;
189extern bool lineInPluggedIn;
190extern bool renderInStereo;
191extern uint32_t audioSampleTimer;
192extern bool mustUpdateReverbParamsBeforeNextRender;
193extern bool bypassCulling;
194extern uint32_t i2sTXBufferPos;
195extern uint32_t i2sRXBufferPos;
196extern int32_t cpuDireness;
197extern InputMonitoringMode inputMonitoringMode;
198extern bool audioRoutineLocked;
199extern bool routineBeenCalled;
200extern uint8_t numHopsEndedThisRoutineCall;
201extern SideChain reverbSidechain;
202extern uint32_t timeThereWasLastSomeReverb;
203extern deluge::fast_vector<Sound*> sounds;
204extern deluge::dsp::Reverb reverb;
205extern uint32_t nextVoiceState;
206extern SoundDrum* sampleForPreview;
207extern int32_t reverbSidechainVolume;
208extern int32_t reverbSidechainShape;
209extern int32_t reverbPan;
210extern SampleRecorder* firstRecorder;
211extern Metronome metronome;
212extern deluge::dsp::RMSFeedbackCompressor mastercompressor;
213extern uint32_t timeLastSideChainHit;
214extern int32_t sizeLastSideChainHit;
215extern deluge::dsp::StereoSample<float> approxRMSLevel;
216extern deluge::dsp::AbsValueFollower envelopeFollower;
217extern TaskID routine_task_id;
219void feedReverbBackdoorForGrain(
int index, q31_t value);
222bool allowedToStartVoice();
Definition instrument.h:44
Definition metronome.h:25
Definition model_stack.h:287
Definition param_manager.h:174
Definition sample_recorder.h:50
Definition sidechain.h:27
Definition sound_drum.h:28
Definition time_stretcher.h:37
Definition voice_sample.h:36
Definition absolute_value.h:26
Definition rms_feedback.h:27