Ayuda con una librería para generar una señal de clock

Hola buenas a todos, estoy trabajando en una librería que genere señales de clock para eurorack.

Lo que pasa es que bueno, la librería tiene varios iniciadores, y dependiendo del iniciador la librería sabe cuantas señales tiene que crear(máximo 16) , después esta librería regresa una variable de 16 bits con el estado acutal de la señal (1 o 0) para el máximo de 16 señales.

Todo sirve bien si inicio hasta 8 señales, pero en el momento que inicio de 9 a 16, sirven todas la que inicie menos la 1 y la 8, se quedan atascadas.

y hay dos variables que se escriben solas, deberían ser 0 las dos, pero si leo su valor me regresa (0b0000000100000001) los bits 1 y 8 mágicamente cambiaron a 1 jajaja, lo mas raro es que no los he cambiado en ninguna parte del código( ni en la librería, ni en el sketch).

Adjunto el archivo de la librería para ver si alguien me pude ayudar a ver que es lo que estoy haciendo mal.

Este es el sketch que estoy usando si quieren ver exactamente lo que sucede:

#include <ShiftRegister.h>
#include <BPM_Clock.h>

float BPM = 124;

BPM_Clock Clock = BPM_Clock(BPM, 1, 1, 1, 1, 1, 1, 1, 1,   1,1,1,1,1,1,1,1);
ShiftRegister ClockOutput = ShiftRegister(7,8,9);

uint32_t Time;

void setup() 
{


}

void loop() {
  Time = micros();
  Clock.Refresh(Time);
  RefreshClockOutput();
}

void RefreshClockOutput()
{
  //Serial.println(Clock.ClockStates,BIN);
  ClockOutput.write(uint16_t(Clock.ClockStates));
}

Edit:

Ya lo solucioné, quito los archivos adjuntos…