Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
audio_callback.h
1// SPDX-FileCopyrightText: © 2025-2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <functional>
7#include <optional>
8
9#include "dsp/iaudio_callback.h"
10
11namespace zrythm::dsp
12{
13class AudioCallback : public IAudioCallback
14{
15public:
16 using EngineProcessCallback = std::function<void (
17 std::span<const float * const> inputChannels,
18 std::span<float * const> outputChannels,
19 units::sample_u32_t numSamples)>;
20 using DeviceAboutToStartCallback = std::function<void ()>;
21 using DeviceStoppedCallback = std::function<void ()>;
22
23 AudioCallback (
24 EngineProcessCallback process_cb,
25 DeviceAboutToStartCallback device_about_to_start_cb,
26 DeviceStoppedCallback device_stopped_cb);
27
28public:
30 std::span<const float * const> input_channels,
31 std::span<float * const> output_channels,
32 units::sample_u32_t num_samples) noexcept override;
33 void about_to_start () override;
34 void stopped () override;
35 void error (std::string_view error_message) override;
36
37private:
38 EngineProcessCallback process_cb_;
39 std::optional<DeviceAboutToStartCallback> device_about_to_start_cb_;
40 std::optional<DeviceStoppedCallback> device_stopped_cb_;
41};
42} // namespace zrythm::dsp
void error(std::string_view error_message) override
Called when an error occurs with the audio device.
void about_to_start() override
Called when the audio device is about to start processing.
void stopped() override
Called when the audio device has stopped.
void process_audio(std::span< const float *const > input_channels, std::span< float *const > output_channels, units::sample_u32_t num_samples) noexcept override
Called when the audio device wants to process a block of audio data.
Pure-abstract audio callback interface.