Reproducir múltiples archivos .wav simultáneamente

Hola muy buenas, les pondré en contexto; por fallas en la fabricación de mi teclado/piano made in who knows, éste pasó a mejor vida, lo único que sobrevivió fueron los altavoces y el PCB de las teclas. Mi idea es reutilizar estos elementos para construir un piano desde cero digamos.

Hasta ahora he logrado multiplexar el bus de datos del PCB sin problemas, pero el tema principal es éste: necesito una forma de reproducir el sonido de las notas cuando yo toco el piano, la cuestión es, cómo reproducir el sonido cuando hay más de una tecla siendo presionada, para la cual tomé como base el ejemplo que hay en la librería Audio, "SimpleAudioPlayer". Leí por ahí que la librería SD permite abrir múltiples archivos, y en efecto logre hacer que sonaran hasta 3 notas a la vez, he aquí el código.

#include <SD.h>
#include <SPI.h>
#include <Audio.h>


void setup() {
  // debug output at 9600 baud
  Serial.begin(9600);

  // setup SD-card
  Serial.print("Initializing SD card...");
  if (!SD.begin(40)) {    //Lo puse en el pin 40 porque en realidad no tengo una shield o módulo para tarjetas SD, solo soldé los cables directamente al adaptador que venía con la microSD
    Serial.println(" failed!");
    while(true);
  }
  Serial.println(" done.");
  // hi-speed SPI transfers

  // 44100Hz stereo => 88200 sample rate       //11025Hz stereo => 22050 sample rate
  // 100 mSec of prebuffering.
  Audio.begin(22050, 100);
}

void loop() {

  // open wave file from sdcard
  File myFile = SD.open("C4.wav");
  if (!myFile) {
    // if the file didn't open, print an error and stop
    Serial.println("error opening C4.wav");
    while (true);
  }
  File myFile1 = SD.open("E4.wav");
  if (!myFile1) {
    // if the file didn't open, print an error and stop
    Serial.println("error opening E4.wav");
    while (true);
  }
  File myFile2 = SD.open("G4.wav");
  if (!myFile2) {
    // if the file didn't open, print an error and stop
    Serial.println("error opening G4.wav");
    while (true);
  }
  /*File myFile3 = SD.open("C5.wav");
  if (!myFile3) {
    // if the file didn't open, print an error and stop
    Serial.println("error opening C5.wav");
    while (true);
  }
*/
  const int S = 1024; // Number of samples to read in block
  short buffer[S];
  short buffer1[S];
  short buffer2[S];
  //short buffer3[S];
  Serial.println("Playing");
  // until the file is not finished
  while (myFile.available() || myFile1.available() || myFile2.available()/* || myFile3.available()*/) {
    
    
    // read from the file into buffer
    myFile.read(buffer, sizeof(buffer));
    myFile1.read(buffer1, sizeof(buffer1));
    myFile2.read(buffer2, sizeof(buffer2));
   // myFile2.read(buffer3, sizeof(buffer3));
    // Prepare samples
    for(int i=0; i<=1024; i++){buffer[i] += buffer1[i]; buffer[i] += buffer2[i];/* buffer[i] += buffer3[i];*/} //combine all buffers for multi-sampling
    int volume = 1024;
    Audio.prepare(buffer, S, volume);
    Audio.prepare(buffer1, S, volume);
    Audio.prepare(buffer2, S, volume);
    //Audio.prepare(buffer3, S, volume);
    // Feed samples to audio
    
    Audio.write(buffer, S);


  }
  myFile.close();
  myFile1.close();
  myFile2.close();
 // myFile3.close();

  Serial.println("End of file. Thank you for listening!");
  while (true) ;
}

Lo que hago es básicamente abrir los 3 archivos, obtener el buffer de la forma de onda de cada audio, sumarlos y en el resultado sonarán los tres audios combinados (a través de la salidas DAC), lo mismo con el resto de buffers. Sin embargo, cuando intento reproducir 4 notas (descomentando lo relativo a "myFile3" y "buffer3") el audio resulta distorsionándose, lo que percibo es que el 4to audio es como si se retroalimentára hasta el absoluto ruido, luego se desacopla y se silencia, y vuelve a retroalimentarse, así sucesivamente.

Tengo una placa Arduino Due, la cual creo yo es suficientemente potente para lo que quiero hacer, sin embargo, me pregunto si habrá alguna otra forma más eficaz para resolver este problema, si solo es cuestión de un par de líneas (y/o alguna errata), o si existe alguna otra placa (que seguramente existe), que sea más adecuada para esta tarea, tampoco pretendo hacer un overkill con una Raspberry Pi por ejemplo. Estaré atento a sus opiniones, de antemano muchas gracias.

Mauricio T.