diff --git a/soundcube-firmware/ringbuffer.h b/soundcube-firmware/ringbuffer.h index 8b78b68..99531f6 100644 --- a/soundcube-firmware/ringbuffer.h +++ b/soundcube-firmware/ringbuffer.h @@ -77,7 +77,7 @@ class RingBuffer{ counter -= 2; rp2040.memcpyDMA(target, &buffer[read], 4); read += 2; - if(read == bufferSize) read = 0; + if(read >= bufferSize) read = 0; } } diff --git a/soundcube-firmware/soundcube-firmware.ino b/soundcube-firmware/soundcube-firmware.ino index 22fc9d0..76472b7 100644 --- a/soundcube-firmware/soundcube-firmware.ino +++ b/soundcube-firmware/soundcube-firmware.ino @@ -760,7 +760,7 @@ void loop(){ // if(cnt == 16) cnt = 0; if(streams_loaded) { for(int i = 0; i < NSTREAMS; i++){ - stream[i].streamChunk(); + stream[i].stream(); } } // int16_t sample_l = 0; diff --git a/soundcube-firmware/wavestream.h b/soundcube-firmware/wavestream.h index fcfa46a..13467fa 100644 --- a/soundcube-firmware/wavestream.h +++ b/soundcube-firmware/wavestream.h @@ -109,8 +109,9 @@ struct WaveFile{ bool readblockDMA128(){ void *bufferStart = buffer.getWritePointer(); - file.read((uint8_t*)bufferStart, 128); - buffer.advance(128); + int adv = 128; + adv = file.read((uint8_t*)bufferStart, 128); + buffer.advance(adv); if(!file.available() && loop) file.seek(44, SeekSet); if(!file.available() && !loop) { @@ -173,7 +174,7 @@ class WaveStream{ void stream(){ int cnt = 0; - while (!wavefile.buffer.isFull() && cnt < 128 && playing) { + while (!wavefile.buffer.isFull() && cnt < 128) { bool ok = wavefile.readblockDMA(); if(!ok) playing = false; cnt += 2;