arduino-audio-tools
Loading...
Searching...
No Matches
AudioSourceSDMMC.h
Go to the documentation of this file.
1#pragma once
2
3#include "AudioLogger.h"
5#include "FS.h"
6#include "SD_MMC.h"
8
9namespace audio_tools {
10
34public:
36 AudioSourceSDMMC(const char *startFilePath = "/", const char *ext = ".mp3", bool setupIndex=true) {
38 exension = ext;
40 }
41
43 end();
44 }
45
46 virtual bool begin() override {
47 TRACED();
48 if (!is_sd_setup) {
49 if (!SD_MMC.begin("/sdcard", true)) {
50 LOGE("SD_MMC.begin failed");
51 return false;
52 }
53 is_sd_setup = true;
54 }
56 idx_pos = 0;
57 return is_sd_setup;
58 }
59
60 void end() {
61 file.close();
62 SD_MMC.end();
63 is_sd_setup = false;
64 }
65
66
67 virtual Stream *nextStream(int offset = 1) override {
68 LOGI("nextStream: %d", offset);
69 return selectStream(idx_pos + offset);
70 }
71
72 virtual Stream *selectStream(int index) override {
73 LOGI("selectStream: %d", index);
74 file.close();
75 idx_pos = index;
77 if (file_name==nullptr) return nullptr;
78 LOGI("Using file %s", file_name);
80 return file ? &file : nullptr;
81 }
82
83 virtual Stream *selectStream(const char *path) override {
84 file.close();
85 file = SD_MMC.open(path);
87 LOGI("-> selectStream: %s", path);
88 return file ? &file : nullptr;
89 }
90
93 void setFileFilter(const char *filter) { file_name_pattern = filter; }
94
96 int index() { return idx_pos; }
97
99 const char *toStr() { return file_name; }
100
101 // provides default setting go to the next
102 virtual bool isAutoNext() { return true; }
103
105 virtual void setPath(const char *p) { start_path = p; }
106
108 long size() { return idx.size();}
109
110protected:
113 size_t idx_pos = 0;
114 const char *file_name;
115 const char *exension = nullptr;
116 const char *start_path = nullptr;
117 const char *file_name_pattern = "*";
118 bool setup_index = true;
119 bool is_sd_setup = false;
120};
121
122} // namespace audio_tools
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30
Definition Arduino.h:136
Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.
Definition AudioSource.h:17
ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino...
Definition AudioSourceSDMMC.h:33
int index()
Provides the current index position.
Definition AudioSourceSDMMC.h:96
virtual ~AudioSourceSDMMC()
Definition AudioSourceSDMMC.h:42
const char * exension
Definition AudioSourceSDMMC.h:115
long size()
Provides the number of files (The max index is size()-1): WARNING this is very slow if you have a lot...
Definition AudioSourceSDMMC.h:108
bool is_sd_setup
Definition AudioSourceSDMMC.h:119
virtual Stream * selectStream(int index) override
Definition AudioSourceSDMMC.h:72
virtual bool begin() override
Reset actual stream and move to root.
Definition AudioSourceSDMMC.h:46
File file
Definition AudioSourceSDMMC.h:112
size_t idx_pos
Definition AudioSourceSDMMC.h:113
const char * start_path
Definition AudioSourceSDMMC.h:116
const char * toStr()
provides the actual file name
Definition AudioSourceSDMMC.h:99
const char * file_name
Definition AudioSourceSDMMC.h:114
virtual void setPath(const char *p)
Allows to "correct" the start path if not defined in the constructor.
Definition AudioSourceSDMMC.h:105
SDDirect< fs::SDMMCFS, fs::File > idx
Definition AudioSourceSDMMC.h:111
AudioSourceSDMMC(const char *startFilePath="/", const char *ext=".mp3", bool setupIndex=true)
Default constructor.
Definition AudioSourceSDMMC.h:36
virtual bool isAutoNext()
Returns default setting go to the next.
Definition AudioSourceSDMMC.h:102
virtual Stream * nextStream(int offset=1) override
Returns next audio stream.
Definition AudioSourceSDMMC.h:67
void end()
Definition AudioSourceSDMMC.h:60
bool setup_index
Definition AudioSourceSDMMC.h:118
void setFileFilter(const char *filter)
Definition AudioSourceSDMMC.h:93
const char * file_name_pattern
Definition AudioSourceSDMMC.h:117
virtual Stream * selectStream(const char *path) override
Returns audio stream by path: The index is not changed!
Definition AudioSourceSDMMC.h:83
We access the files directy with an index. The index is determined by a recurseve tree walk thru the ...
Definition SDDirect.h:22
long size()
Provides the number of files.
Definition SDDirect.h:50
void begin(const char *startDir, const char *extension, const char *file_name_pattern)
Definition SDDirect.h:26
Arduino File API for Zephyr.
Definition ZephyrFile.h:23
void close()
Definition ZephyrFile.h:67
const char * name() const
Definition ZephyrFile.h:200
bool open(const char *file_path, fs_mode_t mode=FS_O_READ)
Definition ZephyrFile.h:44
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:508