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
|
// -------------------------------------------- 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;
|
||||||
|
|
||||||
|
|||||||
@ -106,18 +106,20 @@ 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);
|
|
||||||
adv = file.readBytes((char*)bufferStart, remains);
|
|
||||||
buffer.advance(adv);
|
|
||||||
|
|
||||||
if(!file.available() && loop) file.seek(44, SeekSet);
|
if(remains > 512){
|
||||||
if(!file.available() && !loop) {
|
adv = file.readBytes((char*)bufferStart, 512);
|
||||||
file.seek(44, SeekSet);
|
buffer.advance(adv);
|
||||||
return false;
|
|
||||||
}
|
if(!file.available() && loop) file.seek(44, SeekSet);
|
||||||
|
if(!file.available() && !loop) {
|
||||||
|
file.seek(44, SeekSet);
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user