Encoder im zusammenführen (Array)

hab ich so versucht

#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>

Encoder enc[] = {
                  Encoder(42, 43),
                  Encoder(44, 45),
                  Encoder(46, 47),
                  Encoder(48, 49),
                };
/*/
Encoder enc100 (42, 43);
Encoder enc101 (44, 45);
Encoder enc102 (46, 47);
Encoder enc103 (48, 49);
/*/

byte controlChange = 176;
byte controllerENCNummer [] = {100,101,102,103};
byte encoderWert [4] = {0};
byte newPos [4] = {0};

void setup() {
   
  Serial.begin(9600);
  Serial1.begin(31250);
}

 byte position[8]  = {0};
 
 
void loop() {

     encoder(0);
     encoder(1);
     encoder(2);
     encoder(3);
  
      
}
   void encoder (byte x) {   
            
   newPos[x] = enc[x].read();
   encoderWert[x]  = newPos[x] % 128 ;
    
          if (newPos[x] != position[x]) {   position[x] = newPos[x];  
             sendeMIDI(controlChange, controllerENCNummer[x], encoderWert[x]);
    
                                                     }     }  




 void sendeMIDI(int statusByte, int dataByte1, int dataByte2)  {
 Serial1.write(statusByte);
 Serial1.write(dataByte1);
 Serial1.write(dataByte2);

}

aber bei der Abfrage habe ich ab Encoder 101 immer 2 Encoder gleichzeitig.
Heißt Encoder 100
Encoder 100+101
Encoder 101+102
Encoder 102

aber nicht
Encoder 100
Encoder 101
Encoder 102
Encoder 103

Aber bei der einfachen Abfrage die ich nach dem // stehen habe, funktioniert das.

Aber ich finde den Fehler nicht.