2 #include "AudioTools.h"
3 #include "SIDAudioSource.h"
7 namespace audio_tools {
20 p_size_source = &sizeSource;
21 player.setAudioSource(source);
22 player.setOutput(output);
29 p_size_source = &sizeSource;
30 player.setAudioSource(source);
31 player.setOutput(output);
42 player.setAudioInfo(info);
49 assert(cfg.channels>0);
50 assert(cfg.sample_rate>0);
51 assert(cfg.bits_per_sample==16);
54 player.setAutoNext(
false);
55 bool result = player.begin(index,
isActive);
71 AudioInfo audioInfo()
override {
return info; }
74 void play() { player.play(); }
77 void stop() { player.stop(); }
82 return player.previous(offset);
87 bool next(
int offset = 1) {
89 return player.next(offset);
94 int tune =sid.getStreamConfigdata().subtune;
103 return player.setIndex(idx);
109 return player.setPath(path);
128 float volume() {
return player.volume(); }
133 player.setSilenceOnInactive(active);
148 player.writeSilence(DEFAULT_BUFFER_SIZE);
153 if (state == Initial) {
172 AudioInfoSupport *p_info;
174 Vector<uint8_t> sid_data{0};
175 SizeSource *p_size_source =
nullptr;
176 enum proces_state_enum { Initial, Playing };
177 proces_state_enum state = Initial;
178 size_t timeout_sec = 0;
179 size_t playing_timout_ms = 0;
181 Print *getOutput() {
return player.getVolumeOutput(); }
187 int size = p_size_source->size();
188 sid_data.resize(size);
189 p_stream->readBytes(sid_data.data(), size);
190 LOGI(
"setSID size: %d", size);
191 if (size<MAX_FILE_SIZE){
192 sid.
setSID(sid_data.data(), size, 0);
195 LOGE(
"Song is too big!");
199 if (MEMORY_ALLOCATION_LOGIC!=4){
207 if (timeout_sec > 0) {
208 playing_timout_ms = millis() + (timeout_sec * 1000);
214 return (playing_timout_ms == 0) ? false : millis() > playing_timout_ms;
217 void moveNextOnEnd() {
225 StreamCopy *p_copy = &player.getStreamCopy();
226 p_copy->begin(*getOutput(), sid);
227 player.setActive(
true);