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 const float * const * inputChannelData,
18 int numInputChannels,
19 float * const * outputChannelData,
20 int numOutputChannels,
21 int numSamples)>;
22 using DeviceAboutToStartCallback = std::function<void ()>;
23 using DeviceStoppedCallback = std::function<void ()>;
24
25 AudioCallback (
26 EngineProcessCallback process_cb,
27 DeviceAboutToStartCallback device_about_to_start_cb,
28 DeviceStoppedCallback device_stopped_cb);
29
30public:
32 const float * const * input_channel_data,
33 int num_input_channels,
34 float * const * output_channel_data,
35 int num_output_channels,
36 int num_samples) noexcept override;
37 void about_to_start () override;
38 void stopped () override;
39 void error (std::string_view error_message) override;
40
41private:
42 EngineProcessCallback process_cb_;
43 std::optional<DeviceAboutToStartCallback> device_about_to_start_cb_;
44 std::optional<DeviceStoppedCallback> device_stopped_cb_;
45};
46} // 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(const float *const *input_channel_data, int num_input_channels, float *const *output_channel_data, int num_output_channels, int num_samples) noexcept override
Called when the audio device wants to process a block of audio data.
Pure-abstract audio callback interface.