How2: Whileloop with delays running at same time as above integer changing code

I have a while loop running, with delays and tones. Its condition is controlled by 5 inputs that are scripted above it. How do I run both at the same time?

More details: I am using an Uno. The 5 inputs are from a dtmf decoder. They are analog inputs if you were wondering about the critical level integer. What the dtmf part comes out to is 11 being the DTMFread if * is pressed.

if (analogRead(STQ) > criticallevel){
  DTMFread = 0;
  if (analogRead(Q1 > criticallevel){
    DTMFread = DTMFread + 1;
  }
  if (analogRead(Q2 > criticallevel){
    DTMFread = DTMFread + 2;
  }if (analogRead(Q3 > criticallevel){
    DTMFread = DTMFread + 4;
  }if (analogRead(Q4 > criticallevel){
    DTMFread = DTMFread + 8;
  }
 }
  while (DTMFread != 11){
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_G4,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_C6,400);
    delay(100);
    tone(spkr,NOTE_C6,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_G4,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_B3,400);
    delay(100);
    tone(spkr,NOTE_A3,400);
    delay(100);
    tone(spkr,NOTE_G4,400);
    delay(2100);
  }

Below what is shown I have the if statement for DMTFread being 11. What I am trying to do is have both parts of the script running at once. Currently the tone prevents the DTMFread integer from changing.

You are sadly mistaken. The outputs from the DTMF decoder are digital, not analog. So you should be using digitalRead to input them.

The one I have is analog, I think it was made like that to be closer to 5v and ground on the Uno. Can I script the analog pin as digitalRead?

Here I found a link, hopefully this will be helpful.

That doesn't answer the question though despite being important. The script still needs to background run the variables and the while loop with delays and tones. I am still at loss.

Troymako:
How do I run both at the same time?

You can't. You have written blocking code. The delay function means nothing happens, so can't do some other thing.

You need to rewrite your code so that instead of waiting in a useless delay, the program spends its time checking your decoder and only deals with the tones when it is time to change tones.

Look at the "Blink Without Delay" example that comes with the IDE for an example of how to time things without using the delay. In this way you can make things appear to be happening at the same time.

Troymako:
The one I have is analog, I think it was made like that to be closer to 5v and ground on the Uno.

Wrong. I'm trying to help you here. I can tell from the code that it's digital. What is the decoder chip part number or board type? Do you have information or a link?

Ah, never mind... it's an MT8870. It has 4 digital outputs and an output enable.
http://www.microsemi.com/document-portal/doc_view/126495-msan108-appnote

For doing a few things at the same time have a look at the demo Several Things at a Time

...R