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
11#include "juce_wrapper.h"
12
18
26{
27public:
28 enum class Quality
29 {
30 Quick,
31 Low,
32 Medium,
33 High,
34 VeryHigh,
35 };
36
47 const zrythm::utils::audio::AudioBuffer &in_frames,
48 const double input_rate,
49 const double output_rate,
50 const Quality quality,
51 size_t block_size = 1024);
52
53 ~Resampler ();
54
61 void process ();
62
66 bool is_done () const;
67
74
75private:
76 class Impl;
77 std::unique_ptr<Impl> pimpl_;
78};
79
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.