SD Fail when Trying to Play WAV Files

Hello,
I am relatively new to Arduino and am trying to use an SD Card with my Arduino UNO. I connected my SD card reader to my Arduino UNO as follows:
Gnd - Gnd
3.3v - 3.3v
CS - 4
MOSI - 11
SCK - 13
MISO - 12
Gnd - Gnd

This is the code I'm using:

#include "SD.h"
#define SD_ChipSelectPin 4
#include "TMRpcm.h"
#include "SPI.h"

TMRpcm tmrpcm;

void setup(){
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
}

void loop(){
tmrpcm.setVolume(9);
tmrpcm.play("Recording_1_converted.wav");
}

The code successfully uploads, but when I run the program, the SD Card fails every time. I'm not sure as to whether this is a code problem or a wiring problem, and I'm sorry about how much of a noob I am.

Thanks in advance,
Kohan

("Recording_1_converted.wav"Does that look like a valid filename?

Oh, sorry. I changed it to "recordingconverted.wav", but the SD Card still fails.

"recordingconverted.wav"Does that look like a valid filename?

Oh, I'm sorry I was unaware of the character limits, but even after changing it to "test.wav", the SD card fails.

Post your code (use code tags this time) and post the serial output.

#include "SD.h"
#define SD_ChipSelectPin 4
#include "TMRpcm.h"
#include "SPI.h"

TMRpcm tmrpcm;

void setup(){
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
}

void loop(){  
tmrpcm.setVolume(9);
tmrpcm.play("test.wav");
}

The Serial Monitor just says SD Fail

So, nothing at all to do with the filename.

Shouldn't be

Any ideas?

Defining pin 10 as an OUTPUT could help.

Note about Slave Select (SS) pin on AVR based boards

All AVR based boards have an SS pin that is useful when they act as a slave controlled by an external master. Since this library supports only master mode, this pin should be set always as OUTPUT otherwise the SPI interface could be put automatically into slave mode by hardware, rendering the library inoperative.

It is, however, possible to use any pin as the Slave Select (SS) for the devices. For example, the Arduino Ethernet shield uses pin 4 to control the SPI connection to the on-board SD card, and pin 10 to control the connection to the Ethernet controller.

I set pin 10 (connected to CS) as output, but SD fail is still written to the Serial monitor

#include "SD.h"
#define SD_ChipSelectPin 10
#include "TMRpcm.h"
#include "SPI.h"

TMRpcm tmrpcm;

void setup(){
pinMode(10, OUTPUT);
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
}

void loop(){  
tmrpcm.setVolume(9);
tmrpcm.play("test.wav");
}

I also connected pin 10 to CS

The obvious first step is to determine whether you have a hardware problem or a pin conflict problem.

Run one of the SD examples that does not include TMRpcm.h. If you get past the failure to initialize, then you have a resource conflict. If not, you have a hardware problem.