forked from W4D/soundcube-firmware
cpu overloading playing 8 streams at once
This commit is contained in:
@ -6,11 +6,11 @@ class RingBuffer{
|
|||||||
RingBuffer() {}
|
RingBuffer() {}
|
||||||
RingBuffer(size_t size) : bufferSize(size) {}
|
RingBuffer(size_t size) : bufferSize(size) {}
|
||||||
|
|
||||||
void setSize(size_t size) {
|
void setSize(size_t size) {
|
||||||
bufferSize = size;
|
bufferSize = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void begin(){
|
void begin(){
|
||||||
buffer = new T[bufferSize];
|
buffer = new T[bufferSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -97,12 +97,13 @@ size_t tape_write = 0;
|
|||||||
|
|
||||||
void codec_transmit() {
|
void codec_transmit() {
|
||||||
for(int i = 0; i < count; i++){
|
for(int i = 0; i < count; i++){
|
||||||
int16_t sample = 0;
|
|
||||||
int j = active % NSTREAMS;
|
int j = active % NSTREAMS;
|
||||||
sample = stream[j].get();
|
for(int k = 0; k < NSTREAMS; k++){
|
||||||
buffer[i] = sample >> 2;
|
int16_t sample = 0;
|
||||||
|
sample = stream[k].get();
|
||||||
|
buffer[i] += sample >> 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i2s.write((const uint8_t *)&buffer, count * sizeof(int16_t));
|
i2s.write((const uint8_t *)&buffer, count * sizeof(int16_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +270,7 @@ void setup() {
|
|||||||
Serial.print(stream[i].wavefile.blockalign);
|
Serial.print(stream[i].wavefile.blockalign);
|
||||||
Serial.println(" bytes");
|
Serial.println(" bytes");
|
||||||
|
|
||||||
stream[i].play();
|
//stream[i].play();
|
||||||
stream[i].wavefile.loop = true;
|
stream[i].wavefile.loop = true;
|
||||||
} else {
|
} else {
|
||||||
Serial.println("file loading error");
|
Serial.println("file loading error");
|
||||||
@ -370,6 +371,7 @@ void loop() {
|
|||||||
Serial.println("vol down");
|
Serial.println("vol down");
|
||||||
codec.volumeDown();
|
codec.volumeDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(buttons[CVOUTL]) {
|
if(buttons[CVOUTL]) {
|
||||||
Serial.println("vol up");
|
Serial.println("vol up");
|
||||||
codec.volumeUp();
|
codec.volumeUp();
|
||||||
@ -386,21 +388,26 @@ void loop() {
|
|||||||
dac.setValue(1, !dactest ? 0 : 65535);
|
dac.setValue(1, !dactest ? 0 : 65535);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(buttons[SELECT]){
|
||||||
|
stream[active % NSTREAMS].toggle();
|
||||||
|
}
|
||||||
|
|
||||||
Serial.println(codec.getVolumeL());
|
Serial.println(codec.getVolumeL());
|
||||||
|
|
||||||
for(int i = 0; i < NSTREAMS; i++){
|
//for(int i = 0; i < NSTREAMS; i++){
|
||||||
stream[i].pause();
|
// stream[i].pause();
|
||||||
}
|
// }
|
||||||
stream[active % NSTREAMS].play();
|
//stream[active % NSTREAMS].play();
|
||||||
|
|
||||||
buttonChanged = false;
|
buttonChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//ac.setValue(0, dactest ? 0 : sin((float)millis() / 100.0f) * 32768 + 32768);
|
//dac.setValue(0, dactest ? 0 : sin((float)millis() / 100.0f) * 32768 + 32768);
|
||||||
|
|
||||||
// empty LED matrix
|
// empty LED matrix
|
||||||
for (int i = 0; i < 13; i++) {
|
for (int i = 0; i < 13; i++) {
|
||||||
ui_leds[lut_matrix[i]] = CRGB(0, 0, 0);
|
ui_leds[lut_matrix[i]] = CRGB(0, 0, 0);
|
||||||
|
if(stream[i % NSTREAMS].isPlaying()) ui_leds[lut_matrix[i % NSTREAMS]] = CRGB(0, 50, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set active LED matrix LED
|
// set active LED matrix LED
|
||||||
@ -427,21 +434,3 @@ void loop() {
|
|||||||
//delay(20); // wait 1ms
|
//delay(20); // wait 1ms
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup1(){
|
|
||||||
// while(1){
|
|
||||||
// if(streams_loaded){
|
|
||||||
// int16_t l, r;
|
|
||||||
// i2s.read16(&l, &r);
|
|
||||||
|
|
||||||
// int j = active % NSTREAMS;
|
|
||||||
// l = stream[j].get() >> 2;
|
|
||||||
// r = stream[j].get() >> 2;
|
|
||||||
|
|
||||||
// i2s.write16(l, r);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop1(){
|
|
||||||
}
|
|
||||||
@ -119,6 +119,8 @@ class WaveStream{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void toggle(){playing = !playing;}
|
||||||
|
|
||||||
void play(){playing = true;}
|
void play(){playing = true;}
|
||||||
|
|
||||||
void stop(){
|
void stop(){
|
||||||
@ -142,6 +144,10 @@ class WaveStream{
|
|||||||
return playing ? wavefile.get() : 0;
|
return playing ? wavefile.get() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isPlaying(){
|
||||||
|
return playing;
|
||||||
|
}
|
||||||
|
|
||||||
//private:
|
//private:
|
||||||
|
|
||||||
WaveFile wavefile;
|
WaveFile wavefile;
|
||||||
|
|||||||
Reference in New Issue
Block a user