PWM Audio with reading data from SD card

Whoa...something is not right here. You cannot call SD.open() in every call in the interrupt routine (ISR). The SD.open() call should happen only once in your program, when you open the file. From that point on there should only be calls to SD.read().

And the while (myFile.available()) in the ISR should be if (myFile.available()) else you will just burn through all samples in your file every time there is an interrupt.

--
The QuadRAM shield: add 512 kilobytes of external RAM to your Arduino Mega/Mega2560