Sound activated LED matrix If / Else fails to work as expected

Components:

2No 8x8 LED matrix with MAX7219
1No electec microphone LM393

Attempted functioning:

LED matrix displays a face across the two LED matrix, top one eyes, bottom one mouth.
When sound is detected the IF sensor value = high, loops and displays the animation.
When no sound, ELSE should give a straight line face no animation.

I can see the switch from HIGH / LOW when watching the serial monitor (so hardware works) when running.

Code compiles fine, no warnings, no errors, uploads fine, then loops through the different facial animations, sound input makes no difference. I am quite stuck, can you see anything obviously wrong or offer any pointers please.

Forum and google fu have failed me so far.

Thank you in advance for your time and any pointers you are able to give me.

#include "LedControl.h"

const int digitalInPin = 22; //electrc microphone pin
LedControl lc=LedControl(23,18,5,2);  // Pin and # of Displays
unsigned long delayTime=250;  // Delay between Frames

void setup()
{
  lc.shutdown(0,false);  // Wake up display 1
  lc.shutdown(1,false);  // Wake up display 2
  lc.setIntensity(0,5);  // Set intensity levels display 1
  lc.setIntensity(1,5);  // Set intensity levels display 2
  lc.clearDisplay(0);  // Clear Display 1
  lc.clearDisplay(1);  // Clear Display 2
  Serial.begin(9600); //add noise sensor value 
  pinMode(digitalInPin, INPUT); //references digital input pin defined, const int digitalInPin = 34;
}

// Put values in arrays
byte face1a[] =
{ 
  B00000000,
  B11100111,
  B10111101,
  B11100111,
  B00000000,
  B00010100,
  B00010000,
  B00011000
};

byte face1b[] =
{
  B00000000,
  B11100111,
  B10111101,
  B11100111,
  B00000000,
  B00010000,
  B00010000,
  B00011000
};
byte face1c[] =
{
  B00000000,
  B00000000,
  B01000010,
  B00000000,
  B00000000,
  B00010000,
  B00010000,
  B00011000
};

byte face1d[] =
{
B00000000,
  B00000000,
  B11100111,
  B00000000,
  B00000000,
  B00010000,
  B00010000,
  B00011000
};

byte face1e[] =
{
  B00000000,
  B00000000,
  B11100111,
  B11100111,
  B00000000,
  B00010000,
  B00010000,
  B00011000
};

byte face1f[] =
{
  B00000000,
  B00000000,
  B11100111,
  B11100111,
  B00000000,
  B00010000,
  B00010000,
  B00011000
};
byte face2a[] =
{
  B00000000, // First frame of face #2
  B00000000,
  B00000000,
  B00000000,
  B00000000,
  B00000000,
  B01111110,
  B00000000
};

byte face2b[] =
{
  B00000000,// Second frame of face #2
  B00000000,
  B00000000,
  B01111110,
  B01000010,
  B01000010,
  B01111110,
  B00000000
};

byte face2c[] =
{
  B00000000, //blankface
  B00000000,
  B00000000,
  B00000000,
  B00000000,
  B01111110,
  B01111110,
  B00000000
};


//  Take values in Arrays and Display them
void deskface1a()
{
  for (int i = 0; i < 8; i++)  
  {
    lc.setRow(0,i,face1a[i]);
  }
}

void deskface1b()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,face1b[i]);
  }
}

void deskface1c()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,face1c[i]);
  }
}

void deskface1d()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,face1d[i]);
  }
}
void deskface1e()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,face1e[i]);
  }
}
void deskface1f()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,face1f[i]);
  }
}
void deskface2a()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(1,i,face2a[i]);
  }
}

void deskface2b()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(1,i,face2b[i]);
  }
}

void deskface2c()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(1,i,face2c[i]);
  }
}

void loop()
{
   int sensorValue = digitalRead(digitalInPin);
if(sensorValue == HIGH)
{
// Put #1 frame on both Display
    Serial.println("Sound Detected!");
    deskface1a();
    delay(delayTime);
    deskface2a();
    delay(delayTime);

// Put #2 frame on both Display
    deskface1b();
    delay(delayTime);
    deskface2b();
    delay(delayTime);

// Put #2 frame on both Display
    deskface1c();
    delay(delayTime);
    deskface2b();
    delay(delayTime);

// Put #2 frame on both Display
    deskface1d();
    delay(delayTime);
    deskface2b();
    delay(delayTime);

// Put #2 frame on both Display
    deskface1e();
    delay(delayTime);
    deskface2b();
    delay(delayTime);

// Put #2 frame on both Display
    deskface1f();
    delay(delayTime);
    deskface2b();
    delay(delayTime);

}
else
{
// Put #2 frame on both Display
    Serial.println("All is quiet on the digital front!");
    deskface1b();
    delay(delayTime);
    deskface2c();
    delay(delayTime);
}}

sketch_may23c.ino (3.87 KB)

I can see the switch from HIGH / LOW when watching the serial monitor (so hardware works) when running.

seems that the if/else is working.
is the display not working as expected?