Flicker on outputs of 2 of 4 shift registers-TPIC6B595 driving LEDs

So this is the first of more "advanced" projects I've taken on with the Arduino. What I am currently trying to accomplish is a VU meter, consisting of 32 LEDs, where the first and last LED are on at the same time, the second and second last are on simultaneously at higher input signal amplitude, etc. After failing to create a program to sample audio with analogRead and output the values with speed I was happy with, I set up a stereo jack cord to an Op-Amp, the op amp has a potentiometer for gain control to make full use of the display at different volume levels, the output of the op-amp feeds 2 LM3916 bar/dot display driver, and the 16 outputs from this feed D0-D9 and A0-A6 of the Arduino. I have 4 TPIC6B595 shift registers connected such that the serial out on each IC feeds data from one IC to the next. Each output is sinking current for an LED (later to be several LEDs). Sorry about the long winded description but I thought it may be relevant.

The Problem: All of this is working perfectly and I am happy with it, except the LEDs connected to the second and third shift register outputs in the chain are considerably more dim than the LEDs connected to the first and last in the chain. The dim LEDs have a PWM-like flicker to them.

I have/have tried: -Powered by ATX power supply. Several decoupling caps are on each breadboard to no avail. -Added additional power and ground leads to each breadboard to ensure it wasn't just a lack of power causing the problem. -Added additional grounds as close as possible to the IC pins hoping it was just a lack of current -Checked +5v to both ICs-both getting power -Read online sometimes a capacitor on the latchPin line can help. Tried a .01uF as well as a .1uF from latchPin to power and latchPin to ground

Have not tried -Swap out ICs

Is this an easy fix/programming issue or something as simple as capacitors I should have? I am stumped on this one. Worst case scenario I will separate the center 2 registers and run them off a separate Arduino but of course if I can run off of one I would rather. Sorry about my very redundant code, I should have implemented loops and arrays but it seems to work as is.

Thanks for the help :)

int clockPin   = 12; 
int dataPin    = 11; 
int latchPin   = 13; 
int buttonPin  = 10;
int VU0        = 0;
int VU1        = 1;
int VU2        = 2;
int VU3        = 3;
int VU4        = 4;
int VU5        = 5;
int VU6        = 6;
int VU7        = 7;
int VU8        = 8;
int VU9        = 9;
int VU10       = A0;
int VU11       = A1;
int VU12       = A2;
int VU13       = A3;
int VU14       = A4;
int VU15       = A5;

int VU0val  = 0;
int VU1val  = 0;
int VU2val  = 0;
int VU3val  = 0;
int VU4val  = 0;
int VU5val  = 0;
int VU6val  = 0;
int VU7val  = 0;
int VU8val  = 0;
int VU9val  = 0;
int VU10val = 0;
int VU11val = 0;
int VU12val = 0;
int VU13val = 0;
int VU14val = 0;
int VU15val = 0;

void setup() {
Serial.begin(9600);
pinMode(latchPin,  OUTPUT);
pinMode(clockPin,  OUTPUT);
pinMode(dataPin,   OUTPUT);
pinMode(VU0,        INPUT_PULLUP);
pinMode(VU1,        INPUT_PULLUP);
pinMode(VU2,        INPUT_PULLUP);
pinMode(VU3,        INPUT_PULLUP);
pinMode(VU4,        INPUT_PULLUP);
pinMode(VU5,        INPUT_PULLUP);
pinMode(VU6,        INPUT_PULLUP);
pinMode(VU7,        INPUT_PULLUP);
pinMode(VU8,        INPUT_PULLUP);
pinMode(VU9,        INPUT_PULLUP);
pinMode(VU10,       INPUT_PULLUP);
pinMode(VU11,       INPUT_PULLUP);
pinMode(VU12,       INPUT_PULLUP);
pinMode(VU13,       INPUT_PULLUP);
pinMode(VU14,       INPUT_PULLUP);
pinMode(VU15,       INPUT_PULLUP);
}

void loop() {
  
VU0val  = digitalRead(VU0);
VU1val  = digitalRead(VU1);
VU2val  = digitalRead(VU2);
VU3val  = digitalRead(VU3);
VU4val  = digitalRead(VU4);
VU5val  = digitalRead(VU5);
VU6val  = digitalRead(VU6);
VU7val  = digitalRead(VU7);
VU8val  = digitalRead(VU8);
VU9val  = digitalRead(VU9);
VU10val = digitalRead(VU10);
VU11val = digitalRead(VU11);
VU12val = digitalRead(VU12);
VU13val = digitalRead(VU13);
VU14val = digitalRead(VU14);
VU15val = digitalRead(VU15);

if (VU15val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 255);        //reg2
    shiftOut(dataPin, clockPin, 255);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU14val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 254);        //reg2
    shiftOut(dataPin, clockPin, 127);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU13val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 252);        //reg2
    shiftOut(dataPin, clockPin, 63);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU12val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 248);        //reg2
    shiftOut(dataPin, clockPin, 31);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU11val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 240);        //reg2
    shiftOut(dataPin, clockPin, 15);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU10val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 224);        //reg2
    shiftOut(dataPin, clockPin, 7);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU9val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 192);        //reg2
    shiftOut(dataPin, clockPin, 3);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU8val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 128);        //reg2
    shiftOut(dataPin, clockPin, 1);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
if (VU7val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 255);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU6val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 254);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 127);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU5val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 252);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 63);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU4val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 248);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 31);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU3val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 240);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 15);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU2val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 224);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 7);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU1val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 192);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 3);         //reg4
    digitalWrite(latchPin, 1);
}
else if (VU0val == LOW) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 128);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 1);         //reg4
    digitalWrite(latchPin, 1);
}
else {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 0);       //reg1
    shiftOut(dataPin, clockPin, 0);        //reg2
    shiftOut(dataPin, clockPin, 0);       //reg3
    shiftOut(dataPin, clockPin, 0);         //reg4
    digitalWrite(latchPin, 1);
}
delay(25);

}


void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {	
      pinState= 0;
    }
    digitalWrite(myDataPin, pinState);
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
  }
  digitalWrite(myClockPin, 0);
}

Schematic?

Here is how it is leaving the arduino, D0-D9 and A0-A5 are all connected directly to pins of the 3916’s. Power supply was not included in schematic and also used standard 595 shift regester in schematic, using TPIC6B595 for higher power actually.

Some breadboard power rails don't have continuity all the way through, from one end to the other. They can be split. You might want to check yours.