diff --git a/soundcube-firmware/soundcube-firmware.ino b/soundcube-firmware/soundcube-firmware.ino index 321c462..8989fdd 100644 --- a/soundcube-firmware/soundcube-firmware.ino +++ b/soundcube-firmware/soundcube-firmware.ino @@ -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; diff --git a/soundcube-firmware/wavestream.h b/soundcube-firmware/wavestream.h index 046302b..3787f17 100644 --- a/soundcube-firmware/wavestream.h +++ b/soundcube-firmware/wavestream.h @@ -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; } }