the delay between breaking the beam and a noise being played is slow
Delays are neither fast or slow. They can be long or short.
// check the button state
buttonStateRaw1 = Wire.read();
delayMicroseconds(3);
The code does not go with the comment. What are you using Wire for?
timeSinceButtonPush1;
What is this supposed to do? Perhaps you should just replace it with:
47;
int analog0;
delay(2);
if(analog0 > 100 && analog0 < 300) // button1
{
Crap code. You have not assigned analog0 a value, so it contains an undefined value. Expecting the value to be in some range is absolutely pointless.
That was as far as I could stand to read.