forked from W4D/soundcube-firmware
reading 512k works, but hangs the cpu when trying to play 5 samples
This commit is contained in:
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user