How to get a button state change within a for loop?
You aren't reading the state of the button within your loop.

You only read it the once at the top of your loop():

void loop() {
  // read the state of the pushbutton value:
  switchState = digitalRead(buttonPin);


You need to replicate that every time you want a new reading from the button - so in your loop you need to add that digitalRead line:

// Play tone after light fully bright
for(int i = 1; i&lt;100; i++){
  // Turn off tone on button press
  switchState = digitalRead(buttonPin);
  if (switchState == HIGH) {
    noTone(TONE);
    break;
  }
  tone(TONE, notes[random(0,3)]);
  delay(100);
}


Or you can do away with the variable altogether and just test the return value of the digitalRead:

// Play tone after light fully bright
for(int i = 1; i&lt;100; i++){
  // Turn off tone on button press
  if (digitalRead(buttonPin) == HIGH) {
    noTone(TONE);
    break;
  }
  tone(TONE, notes[random(0,3)]);
  delay(100);
}