Deluge Firmware 1.3.0
Build date: 2026.02.12
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 // Stealable implementation
40 bool mayBeStolen(void* thingNotToStealFrom = NULL) final;
41 void steal(char const* errorCode) final;
42 StealableQueue getAppropriateQueue() override;
43
44 String filePath;
45
46 const AudioFileType type;
47 uint8_t numChannels{};
48 String loadedFromAlternatePath; // We now need to store this, since "alternate" files can now just have the same
49 // filename (in special folder) as the original. So we need to remember which format
50 // the name took.
51 int32_t numReasonsToBeLoaded{}; // This functionality should probably be merged between AudioFile and Cluster.
52
53 constexpr static bool isSample(const AudioFile* file) { return file->type == AudioFileType::SAMPLE; }
54 constexpr static bool isWaveTable(const AudioFile* file) { return file->type == AudioFileType::WAVETABLE; }
55
56protected:
57 virtual void numReasonsIncreasedFromZero() {}
58 virtual void numReasonsDecreasedToZero(char const* errorCode) {}
59};
60
61constexpr size_t afhs = sizeof(AudioFile);
Definition audio_file_reader.h:28
Definition audio_file.h:26
Definition d_string.h:41