25#ifndef LMMS_AUDIO_ENGINE_H
26#define LMMS_AUDIO_ENGINE_H
31#include <samplerate.h>
130 void setAudioDevice(
AudioDevice* _dev,
bool _needs_fifo,
bool startNow);
131 void storeAudioDevice();
132 void restoreAudioDevice();
237 bool criticalXRuns()
const;
262 void requestChangeInModel();
263 void doneChangeInModel();
270 static bool isAudioDevNameValid(QString
name);
271 static bool isMidiDevNameValid(QString
name);
#define nullptr
Definition DistrhoDefines.h:75
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static void run(LV2_Handle instance, uint32_t n_samples)
Definition bindings_test_plugin.c:112
Job between PlayHandle and MixerChannel.
Definition AudioBusHandle.h:55
Definition AudioDevice.h:44
RAII helper for requestChangesInModel. Used by AudioEngine::requestChangesGuard.
Definition AudioEngine.h:73
friend class AudioEngine
Definition AudioEngine.h:74
RequestChangesGuard(const RequestChangesGuard &)=delete
RequestChangesGuard(RequestChangesGuard &&other)
Definition AudioEngine.h:89
~RequestChangesGuard()
Definition AudioEngine.h:99
RequestChangesGuard(AudioEngine *audioEngine)
Definition AudioEngine.h:77
RequestChangesGuard & operator=(const RequestChangesGuard &)=delete
RequestChangesGuard()
Definition AudioEngine.h:84
AudioEngine * m_audioEngine
Definition AudioEngine.h:106
Definition AudioEngine.h:284
volatile bool m_writing
Definition AudioEngine.h:294
void write(SampleFrame *buffer)
void finish()
Definition AudioEngine.cpp:1067
Fifo * m_fifo
Definition AudioEngine.h:293
fifoWriter(AudioEngine *audioEngine, Fifo *fifo)
Definition AudioEngine.cpp:1056
AudioEngine * m_audioEngine
Definition AudioEngine.h:292
std::unique_ptr< SampleFrame[]> m_outputBufferRead
Definition AudioEngine.h:336
int m_inputBufferWrite
Definition AudioEngine.h:334
bool m_clearSignal
Definition AudioEngine.h:368
sample_rate_t m_baseSampleRate
Definition AudioEngine.h:332
Fifo * m_fifo
Definition AudioEngine.h:363
int m_inputBufferRead
Definition AudioEngine.h:333
LocklessList< PlayHandle * > m_newPlayHandles
Definition AudioEngine.h:346
QString m_midiClientName
Definition AudioEngine.h:360
std::vector< AudioEngineWorkerThread * > m_workers
Definition AudioEngine.h:340
bool audioDevStartFailed() const
Definition AudioEngine.h:123
int m_numWorkers
Definition AudioEngine.h:341
f_cnt_t inputBufferFrames() const
Definition AudioEngine.h:251
void clearNewPlayHandles()
Definition AudioEngine.cpp:439
bool renderOnly() const
Definition AudioEngine.h:116
friend class Engine
Definition AudioEngine.h:372
ConstPlayHandleList m_playHandlesToRemove
Definition AudioEngine.h:347
f_cnt_t m_framesPerPeriod
Definition AudioEngine.h:327
void startProcessing(bool needsFifo=true)
Definition AudioEngine.cpp:207
void addAudioBusHandle(AudioBusHandle *busHandle)
Definition AudioEngine.h:140
PlayHandleList m_playHandles
Definition AudioEngine.h:344
AudioEngineProfiler & profiler()
Definition AudioEngine.h:182
MidiClient * midiClient()
Definition AudioEngine.h:156
void initDevices()
Definition AudioEngine.cpp:188
void renderStageNoteSetup()
Definition AudioEngine.cpp:281
sample_rate_t baseSampleRate() const
Definition AudioEngine.h:197
QString m_audioDevName
Definition AudioEngine.h:355
MidiClient * tryMidiClients()
Definition AudioEngine.cpp:934
std::unique_ptr< SampleFrame[]> m_outputBufferWrite
Definition AudioEngine.h:337
std::recursive_mutex m_changeMutex
Definition AudioEngine.h:370
int cpuLoad() const
Definition AudioEngine.h:187
bool m_audioDevStartFailed
Definition AudioEngine.h:356
float m_masterGain
Definition AudioEngine.h:349
void renderStageEffects()
Definition AudioEngine.cpp:344
const SampleFrame * renderNextBuffer()
Definition AudioEngine.cpp:400
void doneChangeInModel()
Definition AudioEngine.cpp:657
AudioEngine(bool renderOnly)
Definition AudioEngine.cpp:74
FifoBuffer< SampleFrame * > Fifo
Definition AudioEngine.h:281
void doSetAudioDevice(AudioDevice *_dev)
Definition AudioEngine.cpp:467
void renderStageInstruments()
Definition AudioEngine.cpp:334
float masterGain() const
Definition AudioEngine.h:212
bool m_renderOnly
Definition AudioEngine.h:323
void swapBuffers()
Definition AudioEngine.cpp:421
bool hasFifoWriter() const
Definition AudioEngine.h:239
void stopProcessing()
Definition AudioEngine.cpp:225
void renderStageMix()
Definition AudioEngine.cpp:381
void qualitySettingsChanged()
int detailLoad(const AudioEngineProfiler::DetailType type) const
Definition AudioEngine.h:192
AudioDevice * audioDev()
Definition AudioEngine.h:133
AudioDevice * m_oldAudioDev
Definition AudioEngine.h:354
void nextAudioBuffer(const lmms::SampleFrame *buffer)
std::vector< AudioBusHandle * > m_audioBusHandles
Definition AudioEngine.h:325
f_cnt_t framesPerPeriod() const
Definition AudioEngine.h:176
fifoWriter * m_fifoWriter
Definition AudioEngine.h:364
sample_rate_t inputSampleRate() const
Definition AudioEngine.h:206
const SampleFrame * nextBuffer()
Definition AudioEngine.h:256
void clearInternal()
Definition AudioEngine.cpp:455
AudioDevice * tryAudioDevices()
Definition AudioEngine.cpp:786
f_cnt_t m_inputBufferFrames[2]
Definition AudioEngine.h:330
static sample_t clip(const sample_t s)
Definition AudioEngine.h:223
void setMasterGain(const float mo)
Definition AudioEngine.h:217
AudioDevice * m_audioDev
Definition AudioEngine.h:353
MidiClient * m_midiClient
Definition AudioEngine.h:359
SampleFrame * m_inputBuffer[2]
Definition AudioEngine.h:329
PlayHandleList & playHandles()
Definition AudioEngine.h:167
void clear()
Definition AudioEngine.cpp:431
const QString & audioDevName() const
Definition AudioEngine.h:119
sample_rate_t outputSampleRate() const
Definition AudioEngine.h:200
void requestChangeInModel()
Block until a change in model can be done (i.e. wait for audio thread).
Definition AudioEngine.cpp:651
f_cnt_t m_inputBufferSize[2]
Definition AudioEngine.h:331
RequestChangesGuard requestChangesGuard()
Definition AudioEngine.h:265
const QString & midiClientName() const
Definition AudioEngine.h:151
AudioEngineProfiler m_profiler
Definition AudioEngine.h:366
const SampleFrame * inputBuffer()
Definition AudioEngine.h:246
friend class ProjectRenderer
Definition AudioEngine.h:374
friend class AudioEngineWorkerThread
Definition AudioEngine.h:373
Definition AudioEngineProfiler.h:39
DetailType
Definition AudioEngineProfiler.h:58
Definition AudioEngineWorkerThread.h:41
Definition FifoBuffer.h:37
Definition LocklessList.h:37
Definition MidiClient.h:46
Definition PlayHandle.h:47
Flags< Type > Types
Definition PlayHandle.h:56
Definition SampleFrame.h:41
Base-class for all tracks.
Definition Track.h:68
unsigned s
Definition inflate.c:1555
static const char * name
Definition pugl.h:1582
Definition AudioAlsa.cpp:35
constexpr int BYTES_PER_FRAME
Definition AudioEngine.h:58
QList< PlayHandle * > PlayHandleList
Definition PlayHandle.h:162
constexpr f_cnt_t MAXIMUM_BUFFER_SIZE
Definition AudioEngine.h:54
std::uint32_t sample_rate_t
Definition LmmsTypes.h:42
float sample_t
Definition LmmsTypes.h:39
constexpr auto SUPPORTED_SAMPLERATES
Definition AudioEngine.h:62
constexpr int BYTES_PER_SAMPLE
Definition AudioEngine.h:56
constexpr int BYTES_PER_INT_SAMPLE
Definition AudioEngine.h:57
std::int16_t int_sample_t
Definition LmmsTypes.h:40
constexpr f_cnt_t DEFAULT_BUFFER_SIZE
Definition AudioEngine.h:53
QList< const PlayHandle * > ConstPlayHandleList
Definition PlayHandle.h:163
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
constexpr auto SUPPORTED_BITRATES
Definition AudioEngine.h:63
constexpr float OUTPUT_SAMPLE_MULTIPLIER
Definition AudioEngine.h:60
constexpr f_cnt_t MINIMUM_BUFFER_SIZE
Definition AudioEngine.h:52
mo
Definition zipinfo.c:2287