|
Zrythm
a highly automated and intuitive digital audio workstation
|
The audio engine. More...
#include "zrythm-config.h"#include "dsp/control_room.h"#include "dsp/exporter.h"#include "dsp/ext_port.h"#include "dsp/hardware_processor.h"#include "dsp/pan.h"#include "dsp/pool.h"#include "dsp/sample_processor.h"#include "dsp/transport.h"#include "utils/types.h"#include "zix/sem.h"

Go to the source code of this file.
Data Structures | |
| struct | AudioEngineEvent |
| Audio engine event. More... | |
| struct | AudioEnginePositionInfo |
| struct | AudioEngine |
| The audio engine. More... | |
| struct | EngineState |
Macros | |
| #define | BLOCK_LENGTH 4096 |
| #define | MIDI_BUF_SIZE 1024 |
| #define | MIDI_IN_NUM_EVENTS AUDIO_ENGINE->midi_in->midi_events->num_events |
| #define | AUDIO_ENGINE (PROJECT->audio_engine) |
| #define | MANUAL_PRESS_EVENTS (AUDIO_ENGINE->midi_editor_manual_press->midi_events) |
| #define | DENORMAL_PREVENTION_VAL(engine_) (engine_->denormal_prevention_val) |
| #define | engine_is_in_active_project(self) (self->project == PROJECT) |
| #define | engine_set_run(engine, _run) g_atomic_int_set (&(engine)->run, _run) |
| Set whether engine should process (true) or skip (false). | |
| #define | engine_get_run(engine) g_atomic_int_get (&(engine)->run) |
| #define | engine_has_handled_buffer_size_change(engine) ((engine)->audio_backend != AudioBackend::AUDIO_BACKEND_JACK || ((engine)->audio_backend == AudioBackend::AUDIO_BACKEND_JACK && g_atomic_int_get (&(engine)->handled_jack_buffer_size_change) == 1)) |
| #define | ENGINE_MAX_EVENTS 100 |
| #define | engine_queue_push_back_event(q, x) mpmc_queue_push_back (q, (void *) x) |
| #define | engine_queue_dequeue_event(q, x) mpmc_queue_dequeue (q, (void **) x) |
| #define | ENGINE_EVENTS_PUSH(et, _arg, _uint_arg, _float_arg) |
| Push events. | |
| #define | engine_is_port_own(self, port) |
| Returns 1 if the port is an engine port or control room port, otherwise 0. | |
Typedefs | |
| typedef struct WindowsMmeDevice | WindowsMmeDevice |
Enumerations | |
| enum class | AudioEngineEventType { AUDIO_ENGINE_EVENT_BUFFER_SIZE_CHANGE , AUDIO_ENGINE_EVENT_SAMPLE_RATE_CHANGE } |
| Audio engine event type. More... | |
| enum class | AudioEngineBufferSize { AUDIO_ENGINE_BUFFER_SIZE_16 , AUDIO_ENGINE_BUFFER_SIZE_32 , AUDIO_ENGINE_BUFFER_SIZE_64 , AUDIO_ENGINE_BUFFER_SIZE_128 , AUDIO_ENGINE_BUFFER_SIZE_256 , AUDIO_ENGINE_BUFFER_SIZE_512 , AUDIO_ENGINE_BUFFER_SIZE_1024 , AUDIO_ENGINE_BUFFER_SIZE_2048 , AUDIO_ENGINE_BUFFER_SIZE_4096 } |
| Buffer sizes to be used in combo boxes. More... | |
| enum class | AudioEngineSamplerate { AUDIO_ENGINE_SAMPLERATE_22050 , AUDIO_ENGINE_SAMPLERATE_32000 , AUDIO_ENGINE_SAMPLERATE_44100 , AUDIO_ENGINE_SAMPLERATE_48000 , AUDIO_ENGINE_SAMPLERATE_88200 , AUDIO_ENGINE_SAMPLERATE_96000 , AUDIO_ENGINE_SAMPLERATE_192000 } |
| Samplerates to be used in comboboxes. More... | |
| enum class | AudioBackend { AUDIO_BACKEND_DUMMY , AUDIO_BACKEND_DUMMY_LIBSOUNDIO , AUDIO_BACKEND_ALSA , AUDIO_BACKEND_ALSA_LIBSOUNDIO , AUDIO_BACKEND_ALSA_RTAUDIO , AUDIO_BACKEND_JACK , AUDIO_BACKEND_JACK_LIBSOUNDIO , AUDIO_BACKEND_JACK_RTAUDIO , AUDIO_BACKEND_PULSEAUDIO , AUDIO_BACKEND_PULSEAUDIO_LIBSOUNDIO , AUDIO_BACKEND_PULSEAUDIO_RTAUDIO , AUDIO_BACKEND_COREAUDIO_LIBSOUNDIO , AUDIO_BACKEND_COREAUDIO_RTAUDIO , AUDIO_BACKEND_SDL , AUDIO_BACKEND_WASAPI_LIBSOUNDIO , AUDIO_BACKEND_WASAPI_RTAUDIO , AUDIO_BACKEND_ASIO_RTAUDIO } |
| enum class | BounceMode { BounceMode::BOUNCE_OFF , BounceMode::BOUNCE_ON , BounceMode::BOUNCE_INHERIT } |
| Mode used when bouncing, either during exporting or when bouncing tracks or regions to audio. More... | |
| enum class | MidiBackend { MIDI_BACKEND_DUMMY , MIDI_BACKEND_ALSA , MIDI_BACKEND_ALSA_RTMIDI , MIDI_BACKEND_JACK , MIDI_BACKEND_JACK_RTMIDI , MIDI_BACKEND_WINDOWS_MME , MIDI_BACKEND_WINDOWS_MME_RTMIDI , MIDI_BACKEND_COREMIDI_RTMIDI , MIDI_BACKEND_WINDOWS_UWP_RTMIDI } |
| enum class | AudioEngineJackTransportType { AUDIO_ENGINE_JACK_TIMEBASE_MASTER , AUDIO_ENGINE_JACK_TRANSPORT_CLIENT , AUDIO_ENGINE_NO_JACK_TRANSPORT } |
Functions | |
| __attribute__ ((unused)) static const char *audio_backend_str[] | |
| void | engine_realloc_port_buffers (AudioEngine *self, nframes_t buf_size) |
| COLD | NONNULL_ARGS (1) void automation_tracklist_init_loaded(AutomationTracklist *self |
| Inits a loaded AutomationTracklist. | |
| COLD WARN_UNUSED_RESULT AudioEngine * | engine_new (Project *project) |
| Create a new audio engine. | |
| void | engine_wait_for_pause (AudioEngine *self, EngineState *state, bool force_pause, bool with_fadeout) |
| void | engine_resume (AudioEngine *self, EngineState *state) |
| void | engine_wait_n_cycles (AudioEngine *self, int n) |
| Waits for n processing cycles to finish. | |
| void | engine_append_ports (AudioEngine *self, GPtrArray *ports) |
| void | engine_pre_setup (AudioEngine *self) |
| Sets up the audio engine before the project is initialized/loaded. | |
| void | engine_setup (AudioEngine *self) |
| Sets up the audio engine after the project is initialized/loaded. | |
| COLD void | engine_activate (AudioEngine *self, bool activate) |
| Activates the audio engine to start processing and receiving events. | |
| void | engine_update_frames_per_tick (AudioEngine *self, const int beats_per_bar, const bpm_t bpm, const sample_rate_t sample_rate, bool thread_check, bool update_from_ticks, bool bpm_change) |
| Updates frames per tick based on the time sig, the BPM, and the sample rate. | |
| int | engine_process_events (AudioEngine *self) |
| GSourceFunc to be added using idle add. | |
| NONNULL HOT bool | engine_process_prepare (AudioEngine *self, nframes_t nframes) |
| To be called by each implementation to prepare the structures before processing. | |
| NONNULL HOT int | engine_process (AudioEngine *self, const nframes_t total_frames_to_process) |
| Processes current cycle. | |
| NONNULL HOT void | engine_post_process (AudioEngine *self, const nframes_t roll_nframes, const nframes_t nframes) |
| To be called after processing for common logic. | |
| NONNULL void | engine_fill_out_bufs (AudioEngine *self, const nframes_t nframes) |
| Called to fill in the external buffers at the end of the processing cycle. | |
| int | engine_buffer_size_enum_to_int (AudioEngineBufferSize buffer_size) |
| Returns the int value corresponding to the given AudioEngineBufferSize. | |
| int | engine_samplerate_enum_to_int (AudioEngineSamplerate samplerate) |
| Returns the int value corresponding to the given AudioEngineSamplerate. | |
| void | engine_set_buffer_size (AudioEngine *self, uint32_t buf_size) |
| Request the backend to set the buffer size. | |
| const char * | engine_audio_backend_to_string (AudioBackend backend) |
| Returns the audio backend as a string. | |
| AudioBackend | engine_audio_backend_from_string (const char *str) |
| MidiBackend | engine_midi_backend_from_string (const char *str) |
| void | engine_reset_bounce_mode (AudioEngine *self) |
| Reset the bounce mode on the engine, all tracks and regions to OFF. | |
| void | engine_set_default_backends (bool reset_to_dummy) |
| Detects the best backends on the system and sets them to GSettings. | |
| COLD NONNULL AudioEngine * | engine_clone (const AudioEngine *src) |
| Clones the audio engine. | |
| COLD NONNULL void | engine_free (AudioEngine *self) |
| Closes any connections and free's data. | |
Variables | |
| COLD Project * | project |
| COLD Project GError ** | error |
The audio engine.
Definition in file engine.h.