diff --git a/soundcube-firmware/soundcube-firmware.ino b/soundcube-firmware/soundcube-firmware.ino index f9282f5..b5ea39f 100644 --- a/soundcube-firmware/soundcube-firmware.ino +++ b/soundcube-firmware/soundcube-firmware.ino @@ -424,20 +424,5 @@ void setup1(){ } void loop1(){ - if(streams_loaded) { - for (int i = 0; i < NSTREAMS; i++) { - if(!ringbuffer[i].isFull()){ - int cnt = 0; - while (!ringbuffer[i].isFull() && cnt < 10000) { - uint8_t samplebyte[2]; - streams[i].read(samplebyte, 2); - if(!streams[i].available()) streams[i].seek(44, SeekSet); - - int16_t sample = (samplebyte[1] << 8) + samplebyte[0]; - ringbuffer[i].push(sample); - cnt++; - } - } - } - } + } \ No newline at end of file diff --git a/soundcube-firmware/wavestream.h b/soundcube-firmware/wavestream.h index 6ae4f10..0e42a25 100644 --- a/soundcube-firmware/wavestream.h +++ b/soundcube-firmware/wavestream.h @@ -64,6 +64,18 @@ struct WaveFile{ return true; } + bool readblock(int16_t samplebuffer[]){ + uint8_t samplebyte[blockalign]; + + file.read(samplebyte, blockalign); + if(!file.available() && loop) file.seek(44, SeekSet); + + int16_t sample = (samplebyte[1] << 8) + samplebyte[0]; + ringbuffer[i].push(sample); + + } + + bool loop = false; uint16_t format = 0; uint32_t length = 0; uint16_t channels = 0; @@ -97,5 +109,18 @@ class WaveStream{ private: WaveFile wavefiles[8]; + + void stream(){ + for (int i = 0; i < NSTREAMS; i++) { + if(!wavefiles[i].buffer.isFull()){ + int cnt = 0; + while (!wavefiles[i].buffer.isFull() && cnt < 10000) { + wavefiles[i].readblock(samplebyte); + + cnt++; + } + } + } + } }; \ No newline at end of file