/** * ESP32 Soundboard * * Hendriks Projekt * * https://dev.xd0.de/hendrik/soundboard */ #include "Arduino.h" #include "keyboard.h" #include "sdcard.h" #include "sound.h" #include "ringbuf.h" #define VERSION "0.0" #define LED_PIN 21 #define BUF_LENGTH 1024 Keyboard keyboard; SDCard sdcard; Sound sound; Ringbuf ringbuf = Ringbuf((size_t) BUF_LENGTH); void sd_read_task(void *pvParameter) { sdcard.open("/T1.wav"); for ( ;; ) { uint16_t *start_ptr = ringbuf.getWrite(); size_t size_avail = ringbuf.getWriteAvail(); int num_samples = 0; if (size_avail > 0) { num_samples = sdcard.read(start_ptr, size_avail); ringbuf.setWrite(num_samples); } Serial.print(num_samples,DEC); Serial.println(" read samples from sdcard"); if (!sdcard.available()) break; // EOF vTaskDelay(20 / portTICK_PERIOD_MS); // 20ms } Serial.println("sdcard: EOF"); sdcard.close(); vTaskDelete( NULL ); } void i2s_write_task(void *pvParameter) { for ( ;; ) { TickType_t delay = 10 / portTICK_PERIOD_MS; // max delay: 10ms instead of portMAX_DELAY uint16_t *start_ptr = ringbuf.getRead(); size_t size_avail = ringbuf.getReadAvail(); int num_samples = 0; for (int i=0; i