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 {
137#define logAction(string) logAudioAction(string, __FILE__, __LINE__)
139using VoicePool = deluge::memory::ObjectPool<Voice, deluge::memory::fast_allocator>;
140using VoiceSamplePool = deluge::memory::ObjectPool<VoiceSample, deluge::memory::fast_allocator>;
141using TimeStretcherPool = deluge::memory::ObjectPool<TimeStretcher, deluge::memory::fast_allocator>;
144void routineWithClusterLoading(
bool mayProcessUserActionsBetween =
false);
148void previewSample(String* path, FilePointer* filePointer,
bool shouldActuallySound);
149void stopAnyPreviewing();
151void songSwapAboutToHappen();
152void killAllVoices(
bool deletingSong =
false);
153void logAudioAction(
char const*
string,
const char* file,
int line);
155void getReverbParamsFromSong(Song* song);
157VoiceSample* solicitVoiceSample();
158void voiceSampleUnassigned(VoiceSample* voiceSample);
160TimeStretcher* solicitTimeStretcher();
161void timeStretcherUnassigned(TimeStretcher* timeStretcher);
163LiveInputBuffer* getOrCreateLiveInputBuffer(OscType inputType,
bool mayCreate);
165void doRecorderCardRoutines();
167int32_t getNumSamplesLeftToOutputFromPreviousRender();
169void registerSideChainHit(int32_t strength);
171SampleRecorder* getNewRecorder(int32_t numChannels, AudioRecordingFolder folderID, AudioInputChannel mode,
172 bool keepFirstReasons,
bool writeLoopPoints, int32_t buttonPressLatency,
173 bool shouldNormalize, Output* outputRecordingFrom, RecorderConfig config = {});
174void discardRecorder(SampleRecorder* recorder);
175bool isAnyInternalRecordingHappening();
179uint8_t logNextIndex = 0;
180uint32_t logAbsoluteIndex = 0;
181char* getEmptyLogEntry();
184int32_t getNumAudio();
185int32_t getNumVoices();
186bool doSomeOutputting();
187void updateReverbParams();
189extern bool headphonesPluggedIn;
190extern bool micPluggedIn;
191extern bool lineInPluggedIn;
192extern bool renderInStereo;
193extern uint32_t audioSampleTimer;
194extern bool mustUpdateReverbParamsBeforeNextRender;
195extern bool bypassCulling;
196extern uint32_t i2sTXBufferPos;
197extern uint32_t i2sRXBufferPos;
198extern int32_t cpuDireness;
199extern InputMonitoringMode inputMonitoringMode;
200extern bool audioRoutineLocked;
201extern bool routineBeenCalled;
202extern uint8_t numHopsEndedThisRoutineCall;
203extern SideChain reverbSidechain;
204extern uint32_t timeThereWasLastSomeReverb;
205extern deluge::fast_vector<Sound*> sounds;
206extern deluge::dsp::Reverb reverb;
207extern uint32_t nextVoiceState;
208extern SoundDrum* sampleForPreview;
209extern int32_t reverbSidechainVolume;
210extern int32_t reverbSidechainShape;
211extern int32_t reverbPan;
212extern SampleRecorder* firstRecorder;
213extern Metronome metronome;
214extern RMSFeedbackCompressor mastercompressor;
215extern uint32_t timeLastSideChainHit;
216extern int32_t sizeLastSideChainHit;
217extern StereoFloatSample approxRMSLevel;
218extern AbsValueFollower envelopeFollower;
219extern TaskID routine_task_id;
220void feedReverbBackdoorForGrain(
int index, q31_t value);
223bool 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:53
Definition sidechain.h:27
Definition sound_drum.h:28
Definition time_stretcher.h:37
Definition voice_sample.h:36
Definition stereo_sample.h:25