Anklang C++ API 0.0.0
Loading...
Searching...
No Matches
AudioEngine

#include "engine.hh"

Inheritance diagram for AudioEngine:
[legend]

Classes

class JobQueue

Public Member Functions

uint64_tblock_size () const
Stringengine_stats (uint64_t stats) const
uint64_tframe_counter () const
AudioProcessorPget_event_source ()
ProjectImplPget_project ()
doubleinyquist () const
voidipc_dispatch ()
boolipc_pending ()
uintnyquist () const
voidqueue_capture_start (CallbackS &, const String &filename, bool needsrunning)
voidqueue_capture_stop (CallbackS &)
uintsample_rate () const
voidset_autostop (uint64_t nsamples)
voidset_project (ProjectImplP project)
SpeakerArrangementspeaker_arrangement () const
voidstart_threads ()
voidstop_threads ()
const AudioTransport &transport () const
boolupdate_drivers (const String &pcm, uint latency_ms, const StringS &midis)
voidwakeup_thread_mt ()

Static Public Member Functions

static boolthread_is_engine ()

Public Attributes

JobQueueasync_jobs
JobQueueconst_jobs

Static Public Attributes

static const ThreadId &thread_id

Protected Member Functions

AudioEngine (AudioEngineThread &, AudioTransport &)
voidenable_output (AudioProcessor &aproc, bool onoff)
voidschedule_add (AudioProcessor &aproc, uint level)
voidschedule_queue_update ()
virtual~AudioEngine ()

Protected Attributes

std::atomic< size_t >processor_count_
std::atomic< uint64_t >render_stamp_
JobQueuesynchronized_jobs
AudioTransport &transport_

Detailed Description

Main handle for AudioProcessor administration and audio rendering. Use make_audio_engine() to create a new engine and start_threads() to run its synthesis threads. AudioEngine objects cannot be deleted, because other ref-counted objects may hold `AudioEngine&` members until after main(). Use async_jobs to have the engine execute arbitrary code. Use const_jobs for synchronous read-only data gathering, this may take quite long. Use main_rt_jobs (see main.hh) for obstruction free enqueueing of main_loop callbacks.

Constructor & Destructor Documentation

AudioEngine()

AudioEngine ( AudioEngineThread & audio_engine_thread,
AudioTransport & transport
)
explicitprotected

~AudioEngine()

~AudioEngine ( )
protectedvirtual

Member Function Documentation

enable_output()

void enable_output ( AudioProcessor & aproc,
bool onoff
)
protected

schedule_queue_update()

void schedule_queue_update ( )
protected

schedule_add()

void schedule_add ( AudioProcessor & aproc,
uint level
)
protected

start_threads()

void start_threads ( )

stop_threads()

void stop_threads ( )

wakeup_thread_mt()

void wakeup_thread_mt ( )

ipc_pending()

bool ipc_pending ( )

ipc_dispatch()

void ipc_dispatch ( )

get_event_source()

AudioProcessorP get_event_source ( )

set_project()

void set_project ( ProjectImplP project)

get_project()

ProjectImplP get_project ( )

frame_counter()

uint64_t frame_counter ( ) const

block_size()

uint64 block_size ( ) const

transport()

const AudioTransport & transport ( ) const

sample_rate()

uint sample_rate ( ) const

nyquist()

uint nyquist ( ) const

inyquist()

double inyquist ( ) const

speaker_arrangement()

SpeakerArrangement speaker_arrangement ( ) const

set_autostop()

void set_autostop ( uint64_t nsamples)

queue_capture_start()

void queue_capture_start ( CallbackS & callbacks,
const String & filename,
bool needsrunning
)

queue_capture_stop()

void queue_capture_stop ( CallbackS & callbacks)

update_drivers()

bool update_drivers ( const String & pcm,
uint latency_ms,
const StringS & midis
)

engine_stats()

String engine_stats ( uint64_t stats) const

thread_is_engine()

static bool thread_is_engine ( )
static

Member Data Documentation

processor_count_

std::atomic<size_t> processor_count_
protected

render_stamp_

std::atomic<uint64_t> render_stamp_
protected

transport_

AudioTransport& transport_
protected

thread_id

const ThreadId & thread_id
static

async_jobs

JobQueue async_jobs

Executed asynchronously, may modify AudioProcessor objects.

const_jobs

JobQueue const_jobs

Blocks during execution, must treat AudioProcessor objects read-only.

synchronized_jobs

JobQueue synchronized_jobs
protected