reading 512k works, but hangs the cpu when trying to play 5 samples

This commit is contained in:
Sebastian
2025-06-30 10:35:18 +02:00
parent d44210ce59
commit cef092f494
2 changed files with 17 additions and 15 deletions

View File

@ -353,7 +353,7 @@ Vibration vibration;
// -------------------------------------------- SETUP 0
void setup() {
i2s.setSysClk(48000);
//i2s.setSysClk(48000);
delay(500);
@ -770,9 +770,9 @@ void loop(){
}
if(streams_loaded) {
// for(int i = 0; i < NSTREAMS; i++){
stream[streamcnt].stream();
// }
for(int i = 0; i < NSTREAMS; i++){
stream[i].streamChunk();
}
}
streamcnt = (streamcnt + 1) % 16;

View File

@ -106,18 +106,20 @@ struct WaveFile{
return true;
}
bool readblockDMA128(){
bool readblockSD(){
void *bufferStart = buffer.getWritePointer();
remains = min(buffer.remains(), 128);
adv = file.readBytes((char*)bufferStart, remains);
buffer.advance(adv);
remains = buffer.remains();
if(!file.available() && loop) file.seek(44, SeekSet);
if(!file.available() && !loop) {
file.seek(44, SeekSet);
return false;
}
if(remains > 512){
adv = file.readBytes((char*)bufferStart, 512);
buffer.advance(adv);
if(!file.available() && loop) file.seek(44, SeekSet);
if(!file.available() && !loop) {
file.seek(44, SeekSet);
return false;
}
}
return true;
}
@ -186,7 +188,7 @@ class WaveStream{
void streamChunk(){
if(!wavefile.buffer.isFull()){
bool ok = wavefile.readblockDMA128();
bool ok = wavefile.readblockSD();
if(!ok) playing = false;
}
}