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

View File

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