Deluge Firmware
1.3.0
Build date: 2026.08.16
Toggle main menu visibility
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
24
class
AudioFileReader
;
25
26
class
AudioFile :
public
Stealable {
27
public
:
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
56
protected
:
57
virtual
void
numReasonsIncreasedFromZero() {}
58
virtual
void
numReasonsDecreasedToZero(
char
const
* errorCode) {}
59
};
60
61
constexpr
size_t
afhs =
sizeof
(
AudioFile
);
AudioFileReader
Definition
audio_file_reader.h:28
AudioFile
Definition
audio_file.h:26
String
Definition
d_string.h:41