Wrong tone playing on Piezo element

So I have this bit of code (im using Arduino Uno):

void playerInput() //when player presses button
{
if(digitalRead(ledPin[0]) == HIGH) {
digitalWrite(whiteLed, HIGH);
tone(11,1000,300); //score point tone ERROR - SEEMS TO PLAY LOSING TONE EVEN ON A WIN
delay(30000);
digitalWrite(whiteLed, LOW);
digitalWrite(ledPin[0], LOW);
}
else if (digitalRead(ledPin[0]) == LOW) {
tone(11,250,400); //lose score tone
delay(40000);
}
}

When the player presses their button at the correct time, the white LED should light up and the piezo should play the correct sound (a higher pitch). If they press it at the wrong time it doesnt light up and the incorrect sound plays (lower pitch). However when they press it at the correct time, the white LED DOES light up, but the piezo plays the incorrect sound. Am I missing something with the Tone() function? Please help! If you need to see any more of the code please ask. Thanks in advance.

However when they press it at the correct time, the white LED DOES light up,

Are you sure the white LED is turned-on by HIGH? Maybe it's turned-on by LOW?

(ledPin[0])

What does that evaluate to? Usually square brackets indicate an array.

if(digitalRead(ledPin[0]) == HIGH)

Are you reading an LED? Is that an input or an output? Usually, your software "knows" an output or LED state so there's no reason to read it.

Please read this:-
How to use this forum
Because your post is breaking the rules about posting code.

It also tells you to post ALL your code. If you need to ask then you don't know enough to pick out the problem bit and we can't understand it without the whole thing.

A 30 and 40 second delay is going to make anything hard to debug.

else if (digitalRead(ledPin[0]) == LOW)

just else is all you need here.