Pseudo code conversion problem?

THIS CODE IS IN TWO PARTS

PART 1

The following program reads an incoming voltage from an audio input circuit, converts it to frequency, then prints it to the serial monitor:

//clipping indicator variables
boolean clipping = 0;
int low = 11;
int middle = 10;
int high = 9;
//data storage variables
byte newData = 0;
byte prevData = 0;
unsigned int time = 0;//keeps time and sends vales to store in timer[] occasionally
int timer[10];//sstorage for timing of events
int slope[10];//storage for slope of events
unsigned int totalTimer;//used to calculate period
unsigned int period;//storage for period of wave
byte index = 0;//current storage index
float frequency;//storage for frequency calculations
int maxSlope = 0;//used to calculate max slope as trigger point
int newSlope;//storage for incoming slope data

//variables for decided whether you have a match
byte noMatch = 0;//counts how many non-matches you've received to reset variables if it's been too long
byte slopeTol = 3;//slope tolerance- adjust this if you need
int timerTol = 10;//timer tolerance- adjust this if you need

//variables for amp detection
unsigned int ampTimer = 0;
byte maxAmp = 0;
byte checkMaxAmp;
byte ampThreshold = 45;//raise if you have a very noisy signal

void setup(){
  
  Serial.begin(9600);
  
  pinMode(13,OUTPUT);//led indicator pin
  pinMode(12,OUTPUT);//output pin
  pinMode(11,OUTPUT);//output pin
  pinMode(10,OUTPUT);//output pin
  pinMode(9,OUTPUT);//output pin
  
  cli();//diable interrupts
  
  //set up continuous sampling of analog pin 0 at 38.5kHz
 
  //clear ADCSRA and ADCSRB registers
  ADCSRA = 0;
  ADCSRB = 0;
  
  ADMUX |= (1 << REFS0); //set reference voltage
  ADMUX |= (1 << ADLAR); //left align the ADC value- so we can read highest 8 bits from ADCH register only
  
  ADCSRA |= (1 << ADPS2) | (1 << ADPS0); //set ADC clock with 32 prescaler- 16mHz/32=500kHz
  ADCSRA |= (1 << ADATE); //enabble auto trigger
  ADCSRA |= (1 << ADIE); //enable interrupts when measurement complete
  ADCSRA |= (1 << ADEN); //enable ADC
  ADCSRA |= (1 << ADSC); //start ADC measurements
  
  sei();//enable interrupts
}

ISR(ADC_vect) {//when new ADC value ready
  
  PORTB &= B11101111;//set pin 12 low
  prevData = newData;//store previous value
  newData = ADCH;//get value from A0
  if (prevData < 127 && newData >=127){//if increasing and crossing midpoint
    newSlope = newData - prevData;//calculate slope
    if (abs(newSlope-maxSlope)<slopeTol){//if slopes are ==
      //record new data and reset time
      slope[index] = newSlope;
      timer[index] = time;
      time = 0;
      if (index == 0){//new max slope just reset
        PORTB |= B00010000;//set pin 12 high
        noMatch = 0;
        index++;//increment index
      }
      else if (abs(timer[0]-timer[index])<timerTol && abs(slope[0]-newSlope)<slopeTol){//if timer duration and slopes match
        //sum timer values
        totalTimer = 0;
        for (byte i=0;i<index;i++){
          totalTimer+=timer[i];
        }
        period = totalTimer;//set period
        //reset new zero index values to compare with
        timer[0] = timer[index];
        slope[0] = slope[index];
        index = 1;//set index to 1
        PORTB |= B00010000;//set pin 12 high
        noMatch = 0;
      }
      else{//crossing midpoint but not match
        index++;//increment index
        if (index > 9){
          reset();
        }
      }
    }
    else if (newSlope>maxSlope){//if new slope is much larger than max slope
      maxSlope = newSlope;
      time = 0;//reset clock
      noMatch = 0;
      index = 0;//reset index
    }
    else{//slope not steep enough
      noMatch++;//increment no match counter
      if (noMatch>9){
        reset();
      }
    }
  }
    
  if (newData == 0 || newData == 1023){//if clipping
    PORTB |= B00100000;//set pin 13 high- turn on clipping indicator led
    clipping = 1;//currently clipping
  }
  
  time++;//increment timer at rate of 38.5kHz
  
  ampTimer++;//increment amplitude timer
  if (abs(127-ADCH)>maxAmp){
    maxAmp = abs(127-ADCH);
  }
  if (ampTimer==1000){
    ampTimer = 0;
    checkMaxAmp = maxAmp;
    maxAmp = 0;
  }
  
}

void reset(){//clea out some variables
  index = 0;//reset index
  noMatch = 0;//reset match couner
  maxSlope = 0;//reset slope
}


void checkClipping(){//manage clipping indicator LED
  if (clipping){//if currently clipping
    PORTB &= B11011111;//turn off clipping indicator led
    clipping = 0;
  }
}


void loop(){
  
  checkClipping();
  
  if (checkMaxAmp>ampThreshold){
    frequency = 38462/float(period);//calculate frequency timer rate/period
  
    //print results
    Serial.print(frequency);
    Serial.println(" hz");
  
  delay(100);//delete this if you want
  
  //do other stuff here
  }
}

The following pseudo code compares three consecutive readings to each other to see eliminate the noise signals:

prevPrevValue = 0
prevValue = 0
currentValue = 0
listeningforfreqs = true (this changes to false when you dont want to listen for frequencies any more)
threshold = 50 (choose some number of Hz that you are happy for it to change by)
changed_freq = false
stayed_changed = true

while listeningforfreqs
    currentValue = read in the current frequency
    if  abs(prevValue - prevPrevValue)> threshold)
        changed_freq = true This means the frequency has changed in the previous reading
        if abs(currentValue-prevValue)<threshold
            stayed_change = true This means the frequency has changed and isn't just noise as the 
            previous 
            value was similar too
            print your prevValue frequency!
            prevValue = currentValue
            prevPrevValue = prevValue
        end

    else
        prevValue = currentValue
        prevPrevValue = prevValue
end

PART 2

(typo in part 1, meant to say 'eliminate' not 'see eliminate')

When I converted this to code and included it in the original code, the serial monitor did not print anything in either of the following arrangements (only void loop was changed, so that's all I included):

Arrangement 1:

void loop(){
 
  checkClipping();
 
  if (checkMaxAmp>ampThreshold){
    frequency = 38462/float(period);//calculate frequency timer rate/period
  
int prevPrevValue = 0;
int prevValue = 0;
int currentValue = 0;
int listeningForFreqs = true; /*this cahnges to false when you
don't want to listen for frequencies anymore */
int threshold = 5;
int changed_freq = false;
int stayed_changed = true;
 
  while (listeningForFreqs) {
     currentValue = frequency;
     if (abs(prevValue - prevPrevValue)>threshold){
      changed_freq = true;
      Serial.print ("changed_freq = true;");
      if (abs(currentValue - prevValue)<threshold){
        stayed_changed = true;/* this means the frequency has
        changed and isn't just noise as the previous value was
        similar too */
        Serial.print (prevValue);
        Serial.println (" hz");
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
      else {    
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
     }
  }
  }
}

Arrangement 2:

void loop(){
 
  checkClipping();
 
  if (checkMaxAmp>ampThreshold){
    frequency = 38462/float(period);//calculate frequency timer rate/period
  }

int prevPrevValue = 0;
int prevValue = 0;
int currentValue = 0;
int listeningForFreqs = true; /*this cahnges to false when you
don't want to listen for frequencies anymore */
int threshold = 5;
int changed_freq = false;
int stayed_changed = true;
 
  while (listeningForFreqs) {
     currentValue = frequency;
     if (abs(prevValue - prevPrevValue)>threshold){
      changed_freq = true;
      Serial.print ("changed_freq = true;");
      if (abs(currentValue - prevValue)<threshold){
        stayed_changed = true;/* this means the frequency has
        changed and isn't just noise as the previous value was
        similar too */
        Serial.print (prevValue);
        Serial.println (" hz");
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
      else {    
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
     }
  }
}

Arrangement 3:

void loop(){
 
  checkClipping();
 
  if (checkMaxAmp>ampThreshold){
    frequency = 38462/float(period);//calculate frequency timer rate/period

Serial.print (frequency);
Serial.println (" hz"); // I'm aware this will print the unfiltered readings, but the reason I included it was to see if it would print at all
  
int prevPrevValue = 0;
int prevValue = 0;
int currentValue = 0;
int listeningForFreqs = true; /*this changes to false when you
don't want to listen for frequencies anymore */
int threshold = 5;
int changed_freq = false;
int stayed_changed = true;
 
  while (listeningForFreqs) {
     currentValue = frequency;
     if (abs(prevValue - prevPrevValue)>threshold){
      changed_freq = true;
      Serial.print ("changed_freq = true;");
      if (abs(currentValue - prevValue)<threshold){
        stayed_changed = true;/* this means the frequency has
        changed and isn't just noise as the previous value was
        similar too */
        Serial.print (prevValue);
        Serial.println (" hz");
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
      else {    
        prevPrevValue = prevValue;
        prevValue = currentValue;
      }
     }
  }
  }
}

Why is this not printing anything?

Please just post a single complete program that represents your best attempt and tell us in detail what it actually does and what you want it to do that is different. It will make it much easier to focus on the parts you need help with rather than wasting time on things that you can do.

Sorry, but I'm too lazy to read 5 different parts that seem to cover the same ground.

...R