#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
AudioInputI2S i2s2; //xy=105,63
AudioInputUSB usb1; //xy=200,69 (must set Tools > USB Type to Audio)
AudioOutputUSB usb2;
AudioPlayQueue pqueue4;
AudioRecordQueue rqueue1;
AudioOutputI2S i2s1; //xy=365,94
AudioConnection patchCord1(usb1, 0, rqueue1, 0);
AudioConnection patchCord4(pqueue4, 0, usb2, 0);
int ret = 0;
int i = 0;
int j = 0;
short array1[AUDIO_BLOCK_SAMPLES];
short array2[AUDIO_BLOCK_SAMPLES];
byte *bytearray1 = (byte *)array1;
byte *bytearray2 = (byte *)array2;
byte s1RxBuffer[25600];
byte s1TxBuffer[25600];
void setup()
{
// Serial.begin(9600);
Serial.println("Begin");
Serial1.addMemoryForRead(s1RxBuffer, sizeof(s1RxBuffer));
Serial1.addMemoryForWrite(s1TxBuffer, sizeof(s1TxBuffer));
Serial1.begin(2000000);
Serial1.clear();
AudioMemory(64);
rqueue1.begin();
// pqueue4.setBehaviour(AudioPlayQueue::NON_STALLING);
// pqueue4.setMaxBuffers(128);
// pqueue4.setBehaviour(AudioPlayQueue::ORIGINAL);
}
void loop()
{
Serial.print("loop: ");
ret = rqueue1.available();
Serial.print(" rqueue ");
Serial.print(ret);
while (ret >= 1)
{
Serial.print(" write ");
Serial.print(ret);
void *rb = rqueue1.readBuffer();
Serial.print(" rb ");
Serial.print((long)rb, HEX);
memcpy(&array1[j * 128], rb, 2 * AUDIO_BLOCK_SAMPLES);
rqueue1.freeBuffer();
for (int i = 0; i < AUDIO_BLOCK_SAMPLES * 2; i++)
{
Serial1.write((byte)bytearray1[i]);
}
ret = rqueue1.available();
}
ret = Serial1.available();
Serial.print(" | serial ");
Serial.print(ret);
while (ret >= 2 * AUDIO_BLOCK_SAMPLES)
{
Serial.print(" read ");
Serial.print(ret);
for (int i = 0; i < AUDIO_BLOCK_SAMPLES * 2; i++)
{
if (Serial1.available())
{
bytearray2[i] = (byte)Serial1.read();
}
}
if (pqueue4.available())
{
void *pb = pqueue4.getBuffer();
Serial.print(" pb ");
Serial.print((long)pb, HEX);
memcpy(pb, &array2[j * 128], 2 * AUDIO_BLOCK_SAMPLES);
pqueue4.playBuffer();
}
ret = Serial1.available();
}
Serial.print(" | mem ");
Serial.print(AudioMemoryUsage());
Serial.print(" max ");
Serial.print(AudioMemoryUsageMax());
Serial.println();
delay(10);
}