Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
resampler.h
1// SPDX-FileCopyrightText: © 2023-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "zrythm-config.h"
7
8#include "utils/audio.h"
9#include "utils/types.h"
10
16
24{
25public:
26 enum class Quality
27 {
28 Quick,
29 Low,
30 Medium,
31 High,
32 VeryHigh,
33 };
34
45 const zrythm::utils::audio::AudioBuffer &in_frames,
46 const double input_rate,
47 const double output_rate,
48 const Quality quality,
49 size_t block_size = 1024);
50
51 ~Resampler ();
52
59 void process ();
60
64 bool is_done () const;
65
72
73private:
74 class Impl;
75 std::unique_ptr<Impl> pimpl_;
76};
77
Resampler(const zrythm::utils::audio::AudioBuffer &in_frames, const double input_rate, const double output_rate, const Quality quality, size_t block_size=1024)
Creates a new instance of a Resampler with the given settings.
bool is_done() const
Indicates whether resampling is finished.
zrythm::utils::audio::AudioBuffer get_out_frames() const
Gets the interleaved output frames.
void process()
To be called periodically until is_done() returns true.