After 3 or 4 brutal days of trying, failing and trying some more I started back again at the WavFilePlayer example and built it up into a test sketch to try and work out why I was getting clicks and pops when loading more than 2 wav files at the same time. I was sure this wasn't the case when I started out.

The problem is that if you use folders to put your wavs in the loading performance becomes terrible. This code will happily load and play 8 stereo wavs at 48k on the T4: (impressive!!)

Code:
playSdWav1.play("3BAB1.wav");
  playSdWav2.play("3BAB2.wav");
  playSdWav3.play("3BAB3.wav");
  playSdWav4.play("3BAB4.wav");
  playSdWav5.play("3BAD.wav");
  playSdWav6.play("3BAA.wav");
  playSdWav7.play("3BAS.wav");
  playSdWav8.play("3BAB2.wav");
but this code clicks, pops and sounds terrible on the first couple of wavs

Code:
playSdWav1.play("BA/3BAB1.wav");
  playSdWav2.play("BA/3BAB2.wav");
  playSdWav3.play("BA/3BAB3.wav");
  playSdWav4.play("BA/3BAB4.wav");
  playSdWav5.play("BA/3BAD.wav");
  playSdWav6.play("BA/3BAA.wav");
  playSdWav7.play("BA/3BAS.wav");
  playSdWav8.play("BA/3BAB2.wav");
Why is this? and what can I do to solve the problem? I am using SDIO, T4, SD.h on the latest Teensyduino

edit, full sketch here:

Code:
// Simple WAV file player example

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

// GUItool: begin automatically generated code
AudioPlaySdWav           playSdWav1;     //xy=265,249
AudioPlaySdWav           playSdWav2;     //xy=271,336
AudioPlaySdWav           playSdWav3;     //xy=287,412
AudioPlaySdWav           playSdWav4;     //xy=295,473
AudioPlaySdWav           playSdWav5;     //xy=310,689
AudioPlaySdWav           playSdWav6;     //xy=318,772
AudioPlaySdWav           playSdWav7;     //xy=321,852
AudioPlaySdWav           playSdWav8;     //xy=332,959
AudioMixer4              mixer2;         //xy=581,360
AudioMixer4              mixer4;         //xy=584,597
AudioMixer4              mixer3;         //xy=586,476
AudioMixer4              mixer1;         //xy=590,254
AudioMixer4              mixer6;         //xy=697,845
AudioMixer4              mixer5;         //xy=703,736
AudioOutputI2S           i2s1;           //xy=851,287
AudioConnection          patchCord1(playSdWav1, 0, mixer1, 0);
AudioConnection          patchCord2(playSdWav1, 1, mixer2, 0);
AudioConnection          patchCord3(playSdWav2, 0, mixer3, 2);
AudioConnection          patchCord4(playSdWav2, 1, mixer4, 2);
AudioConnection          patchCord5(playSdWav3, 0, mixer3, 0);
AudioConnection          patchCord6(playSdWav3, 1, mixer4, 0);
AudioConnection          patchCord7(playSdWav4, 0, mixer3, 1);
AudioConnection          patchCord8(playSdWav4, 1, mixer4, 1);
AudioConnection          patchCord9(playSdWav5, 0, mixer3, 3);
AudioConnection          patchCord10(playSdWav5, 1, mixer4, 3);
AudioConnection          patchCord11(playSdWav6, 0, mixer5, 0);
AudioConnection          patchCord12(playSdWav6, 1, mixer6, 0);
AudioConnection          patchCord13(playSdWav7, 0, mixer5, 1);
AudioConnection          patchCord14(playSdWav7, 1, mixer6, 1);
AudioConnection          patchCord15(playSdWav8, 0, mixer5, 2);
AudioConnection          patchCord16(playSdWav8, 1, mixer6, 3);
AudioConnection          patchCord17(mixer2, 0, i2s1, 1);
AudioConnection          patchCord18(mixer1, 0, i2s1, 0);
// GUItool: end automatically generated code




// Use these with the Teensy Audio Shield
//#define SDCARD_CS_PIN    10
//#define SDCARD_MOSI_PIN  7
//#define SDCARD_SCK_PIN   14

// Use these with the Teensy 3.5 & 3.6 SD card
#define SDCARD_CS_PIN    BUILTIN_SDCARD
#define SDCARD_MOSI_PIN  11  // not actually used
#define SDCARD_SCK_PIN   13  // not actually used

// Use these for the SD+Wiz820 or other adaptors
//#define SDCARD_CS_PIN    4
//#define SDCARD_MOSI_PIN  11
//#define SDCARD_SCK_PIN   13
int inByte = 0;
byte  newDATAin = 1;


void setup() {
  Serial.begin(115200);

  mixer1.gain(1, 0.2);
  mixer1.gain(2, 0.2);
  mixer1.gain(3, 0.2);
  mixer1.gain(4, 0.2);

  mixer2.gain(1, 0.2);
  mixer2.gain(2, 0.2);
  mixer2.gain(3, 0.2);
  mixer2.gain(4, 0.2);

  // Audio connections require memory to work.  For more
  // detailed information, see the MemoryAndCpuUsage example
  AudioMemory(150);


  SPI.setMOSI(SDCARD_MOSI_PIN);
  SPI.setSCK(SDCARD_SCK_PIN);
  if (!(SD.begin(SDCARD_CS_PIN))) {
    // stop here, but print a message repetitively
    while (1) {
      Serial.println("Unable to access the SD card");
      delay(500);
    }
  }
}



void loop() {
  

  // Simply wait for the file to finish playing.
  //while (playSdWav1.isPlaying()) {

     switch (Serial.read()) {
      
   case 's': {
    //Serial.println("s");
   playSdWav1.stop();
   playSdWav2.stop();
   playSdWav3.stop();
   playSdWav4.stop();
   playSdWav5.stop();
   playSdWav6.stop();
   playSdWav7.stop();
   playSdWav8.stop();
   }
        break;

        case 't': {
  playSdWav1.play("3BAB1.wav");
  playSdWav2.play("3BAB2.wav");
  playSdWav3.play("3BAB3.wav");
  playSdWav4.play("3BAB4.wav");
  playSdWav5.play("3BAD.wav");
  playSdWav6.play("3BAA.wav");
  playSdWav7.play("3BAS.wav");
  playSdWav8.play("3BAB2.wav");
  
  delay(5);
        }
      break;

              case 'u': {
  playSdWav1.play("BA/3BAB1.wav");
  playSdWav2.play("BA/3BAB2.wav");
  playSdWav3.play("BA/3BAB3.wav");
  playSdWav4.play("BA/3BAB4.wav");
  playSdWav5.play("BA/3BAD.wav");
  playSdWav6.play("BA/3BAA.wav");
  playSdWav7.play("BA/3BAS.wav");
  playSdWav8.play("BA/3BAB2.wav");
  
  delay(5);
        }
      break;
   
}



}
only the first wav player is attached to the output for this test to avoid everything playing at once and sounding crazy