4#ifndef __IO_AUDIO_FILE_H__
5#define __IO_AUDIO_FILE_H__
7#include "zrythm-config.h"
12#include "utils/audio.h"
14namespace zrythm::utils::audio
17struct AudioFileMetadata
20 AudioFileMetadata () =
default;
22 AudioFileMetadata (
const std::string &path);
50 AudioFile () =
default;
58 AudioFile (fs::path filepath,
bool for_writing =
false)
59 :
filepath_ (std::move (filepath)), for_writing_ (for_writing)
89 size_t num_frames_to_read);
105 std::optional<size_t> samplerate);
113 void ensure_file_is_open ();
121 std::unique_ptr<juce::AudioFormatReader> reader_;
122 std::unique_ptr<juce::AudioFormatWriter> writer_;
124 bool for_writing_ =
false;
RAII class to read and write audio files (or their metadata).
AudioFileMetadata read_metadata()
Reads the metadata for the specified file.
fs::path filepath_
Absolute path.
AudioFile(fs::path filepath, bool for_writing=false)
Creates a new instance of an AudioFile for the given path.
void read_samples_interleaved(bool in_parts, float *samples, size_t start_from, size_t num_frames_to_read)
Reads the file into an internal float array (interleaved).
void read_full(zrythm::utils::audio::AudioBuffer &buffer, std::optional< size_t > samplerate)
Simple blocking API for reading and optionally resampling audio files.