Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
audio_file_writer.h
1// SPDX-FileCopyrightText: © 2025-2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <filesystem>
7
8#include "utils/units.h"
9
10#include <QPromise>
11
12#include <juce_audio_basics/juce_audio_basics.h>
13#include <juce_audio_formats/juce_audio_formats.h>
14
15namespace zrythm::utils
16{
17
19{
20public:
22 {
23 juce::AudioFormatWriterOptions writer_options_{};
24 units::sample_t block_length_ = units::samples (4096);
25 };
26
35 static QFuture<void> write_async (
36 WriteOptions options,
37 const std::filesystem::path &file_path,
38 juce::AudioSampleBuffer &&buffer);
39
40private:
49 static void write (
50 QPromise<void> &promise,
51 WriteOptions options,
52 const std::filesystem::path &file_path,
53 juce::AudioSampleBuffer &&buffer);
54};
55
56} // namespace zrythm::utils
static QFuture< void > write_async(WriteOptions options, const std::filesystem::path &file_path, juce::AudioSampleBuffer &&buffer)
Executes write() asynchronously and returns a QFuture to control the task.
String utilities.