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"
55namespace deluge::dsp {
134#define DO_AUDIO_LOG 0
136namespace AudioEngine {
137using VoicePool = deluge::memory::ObjectPool<Voice, deluge::memory::fast_allocator>;
138using VoiceSamplePool = deluge::memory::ObjectPool<VoiceSample, deluge::memory::fast_allocator>;
139using TimeStretcherPool = deluge::memory::ObjectPool<TimeStretcher, deluge::memory::fast_allocator>;
142void routineWithClusterLoading(
bool mayProcessUserActionsBetween =
false);
146void previewSample(String* path, FilePointer* filePointer,
bool shouldActuallySound);
147void stopAnyPreviewing();
149void songSwapAboutToHappen();
150void killAllVoices(
bool deletingSong =
false);
151void logAction(
char const*
string);
152void logAction(int32_t number);
154void getReverbParamsFromSong(Song* song);
156VoiceSample* solicitVoiceSample();
157void voiceSampleUnassigned(VoiceSample* voiceSample);
159TimeStretcher* solicitTimeStretcher();
160void timeStretcherUnassigned(TimeStretcher* timeStretcher);
162LiveInputBuffer* getOrCreateLiveInputBuffer(OscType inputType,
bool mayCreate);
164void doRecorderCardRoutines();
166int32_t getNumSamplesLeftToOutputFromPreviousRender();
168void registerSideChainHit(int32_t strength);
170SampleRecorder* getNewRecorder(int32_t numChannels, AudioRecordingFolder folderID, AudioInputChannel mode,
171 bool keepFirstReasons,
bool writeLoopPoints, int32_t buttonPressLatency,
172 bool shouldNormalize, Output* outputRecordingFrom);
173void discardRecorder(SampleRecorder* recorder);
174bool isAnyInternalRecordingHappening();
178uint8_t logNextIndex = 0;
179uint32_t logAbsoluteIndex = 0;
180char* getEmptyLogEntry();
183int32_t getNumAudio();
184int32_t getNumVoices();
185bool doSomeOutputting();
186void updateReverbParams();
188extern bool headphonesPluggedIn;
189extern bool micPluggedIn;
190extern bool lineInPluggedIn;
191extern bool renderInStereo;
192extern uint32_t audioSampleTimer;
193extern bool mustUpdateReverbParamsBeforeNextRender;
194extern bool bypassCulling;
195extern uint32_t i2sTXBufferPos;
196extern uint32_t i2sRXBufferPos;
197extern int32_t cpuDireness;
198extern InputMonitoringMode inputMonitoringMode;
199extern bool audioRoutineLocked;
200extern bool routineBeenCalled;
201extern uint8_t numHopsEndedThisRoutineCall;
202extern SideChain reverbSidechain;
203extern uint32_t timeThereWasLastSomeReverb;
204extern deluge::fast_vector<Sound*> sounds;
205extern deluge::dsp::Reverb reverb;
206extern uint32_t nextVoiceState;
207extern SoundDrum* sampleForPreview;
208extern int32_t reverbSidechainVolume;
209extern int32_t reverbSidechainShape;
210extern int32_t reverbPan;
211extern SampleRecorder* firstRecorder;
212extern Metronome metronome;
213extern RMSFeedbackCompressor mastercompressor;
214extern uint32_t timeLastSideChainHit;
215extern int32_t sizeLastSideChainHit;
216extern StereoFloatSample approxRMSLevel;
217extern AbsValueFollower envelopeFollower;
218extern TaskID routine_task_id;
219void feedReverbBackdoorForGrain(
int index, q31_t value);
222bool allowedToStartVoice();
Definition absolute_value.h:24
Definition instrument.h:45
Definition metronome.h:26
Definition model_stack.h:287
Definition param_manager.h:174
Definition rms_feedback.h:26
Definition sample_recorder.h:49
Definition sidechain.h:27
Definition sound_drum.h:28
Definition time_stretcher.h:37
Definition voice_sample.h:36
Definition stereo_sample.h:25