Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
audio_file.h
1/*
2 * Copyright © 2020-2023 Synthstrom Audible Limited
3 *
4 * This file is part of The Synthstrom Audible Deluge Firmware.
5 *
6 * The Synthstrom Audible Deluge Firmware is free software: you can redistribute it and/or modify it under the
7 * terms of the GNU General Public License as published by the Free Software Foundation,
8 * either version 3 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along with this program.
15 * If not, see <https://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19
20#include "definitions_cxx.hpp"
21#include "memory/stealable.h"
22#include "util/d_string.h"
23
24class AudioFileReader;
25
26class AudioFile : public Stealable {
27public:
28 AudioFile(AudioFileType newType) : type(newType) {}
29 ~AudioFile() override = default;
30
31 Error loadFile(AudioFileReader* reader, bool isAiff, bool makeWaveTableWorkAtAllCosts);
32 virtual void finalizeAfterLoad(uint32_t fileSize) {}
33
34 void addReason();
35 void removeReason(char const* errorCode);
36
37 // Stealable implementation (partial)
38 // Also implemented by children (WaveTable/Sample)
39 [[nodiscard]] StealableQueue getAppropriateQueue() const override;
40
41 String filePath;
42
43 const AudioFileType type;
44 uint8_t numChannels{};
45 String loadedFromAlternatePath; // We now need to store this, since "alternate" files can now just have the same
46 // filename (in special folder) as the original. So we need to remember which format
47 // the name took.
48 int32_t numReasonsToBeLoaded{}; // This functionality should probably be merged between AudioFile and Cluster.
49
50 constexpr static bool isSample(const AudioFile* file) { return file->type == AudioFileType::SAMPLE; }
51 constexpr static bool isWaveTable(const AudioFile* file) { return file->type == AudioFileType::WAVETABLE; }
52
53protected:
54 virtual void numReasonsIncreasedFromZero() {}
55 virtual void numReasonsDecreasedToZero(char const* errorCode) {}
56};
57
58constexpr size_t afhs = sizeof(AudioFile);
Definition audio_file_reader.h:28
Definition audio_file.h:26
Definition d_string.h:46