" MIDI.sendProgramChange(10, 1); " is transmitted auto in code

i am so sorry to repeat my question . i don't want waste your costly time . but i have to do so for edit topic title to get best solution from expert.
please look at this part of code

    int val = analogRead(0);   
                if (CC_Mode =="ON")  { SLIDE1 =   map(val,100,950,1,22);  }
              if (val<100) {  SLIDE1=0;  }
              if (val>950) {  SLIDE1=23;  }
               
              if  (SLIDE1 !=SLIDE1_OLD) {
                if  ((SLIDE1>0) && (SLIDE1<23))  
                 { 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOff(Last_Note,0,ch); } 
                     int New_Note = White_Note [SLIDE1-1] ;  // TRANS_KEY MISSING 
                      MIDI.sendProgramChange(78, 1); 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOn(New_Note,127,ch);  }
                    Last_Note = New_Note;     
                  }
                    else 
                    {
                    for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
                    for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }
                       MIDI.sendProgramChange(PATCH, 1);    
                      }  
           SLD_SCN (SLIDE1);  
                SLIDE1_OLD = SLIDE1;   
              }

here i wrote in 11th line MIDI.sendProgramChange(78, 1); if i don't do so
current selected patch will be ignored & all Notes will be played on patch no.11 .
Ques:
i wrote in 29th line MIDI.sendProgramChange(PATCH, 1); here my int "PATCH" is not equal to 10, "PATCH" changed is assigned from another button inputs . but i am getting command MIDI.sendProgramChange(10, 1); Automatic after running this function

  for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
  for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }

instead of MIDI.sendProgramChange(PATCH, 1); please how it is occur????
in fact i am useing this funtion

  for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
  for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }

to stop any playing note or voice in last.
Q1: is this funtion is my problem ??
Q2: if yes can i use another function to do so ??
Function MIDI.sendProgramChange(10, 1); is occured only when slide Pot connected to A0 is moved And "SLIDE1" is changed to 0 or 23.
I seemed you can find any missing in above code.
if you don't see missing in above code ,you can also read my full code . sorry for lenthy code.

#include <RH_ASK.h>     
#include <MIDI.h>
#include <Keypad.h>                   
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include<EEPROM.h>


#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define NUMFLAKES     10 // Number of snowflakes in the animation example  -96,-97,-98,-99

#define KEY_UP    -115
#define KEY_DOWN  -113
#define KEY_ZERO  -114
#define KEY_FIND_SCN  -110
#define A    -106
#define B    -107
#define C    -109
#define D    -108
#define AA    -96
#define BB    -97
#define CC    -98
#define DD    -99
#define PATCH_UP    -126
#define PATCH_DOWN  -127
#define MONO        -125
#define POLY        -124
#define DRUM        -116
#define KEY_128     -128
#define ORANGE_A    -123
#define ORANGE_B    -122
#define BLUE_A      -121
#define BLUE_B      -120
#define Bank_WriteA      -119
#define Bank_WriteB      -118
#define Key_Mode_Sw    -117
#define KEY_128    -128

char *data;    //  RF

const byte ROWS = 16; 
const byte COLS = 10; 
char keys[ROWS][COLS] = {
{1,2,3,4,5,6,7,8,9,10},
{11,12,13,14,15,16,17,18,19,20},
{21,22,23,24,25,26,27,28,29,30},
{31,32,33,34,35,36,37,38,39,40},
{41,42,43,44,45,46,47,48,49,50},
{51,52,53,54,55,56,57,58,59,60},
{61,62,63,64,65,66,67,68,69,70},
{71,72,73,74,75,76,77,78,79,80},
{81,82,83,84,85,86,87,88,89,90},
{91,92,93,94,95,96,97,98,99,100},
{101,102,103,104,105,106,107,108,109,110},
{111,112,113,114,115,116,117,118,119,120},
{121,122,123,124,125,126,127,128,129,130},
{131,132,133,134,135,136,137,138,139,140},
{141,142,143,144,145,146,147,148,149,150},
{151,152,153,154,155,156,157,158,159,160}
};
byte rowPins[ROWS] = {4,5,6,7,8,9,10,11,12,14,15,16,17,22,23,24}; 
byte colPins[COLS] = {32,33,34,35,36,37,38,39,40,41}; 

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String msg;
MIDI_CREATE_DEFAULT_INSTANCE();
       byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,50,0xF7}; // 0x28         // byte sysexArray[8] = {0xF0, 0x7F, 0x7F, 0x04, 0x04, 0x0, 0x50, 0xF7};   //   MIDI.sendSysEx(8, sysexArray, true); 
  byte User[8] = {0xB0,0x00,0x55,0x90,0x20,0x00,0xC0,0x00}; 
  RH_ASK driver(2000, 2, A1, 5); // ESP8266 or ESP32: do not use pin 11  rx_2 ,tx_A1

   int UP = 0;
   int DOWN = 0;
  int Bank = 61;
  String  Key_Mode;
  String  CC_Mode;
  int PATCH = 0;
 int SHIFT1 = 0;
 long COUNT = 0;
 int  TRANS_KEY = 0;
 int  TRANS_KEY_Old = 0;
 int KEY_SHIFT_MODE = 0;
 int NOTE_NUMBER = 0;
 int RAG_NOTE[15] = {49,51,52,54,56,57,59,61,63,64,66,68,69,71,73 };
 int Bells_DRBR[22] = {61,63,64,66,68,69,71,73,75,76,78,80,81,83,85,87,88,90,92,93,95,97 }; // 22 notes
 int White_Note [] = { 48,50,52,53,55,57,59,60,62,64,65,67,69,71,72,74,76,77,79,81,83,84 };

  int last_val = 0;
 int SLIDE1 = 0;
 int SLIDE1_OLD = 0;
 int Last_Note = 0;
 int Pitch_Value = 0;
 byte C_Status = 0;
 byte D_Status = 0;
 byte Last_Gear = 0; 
 int   my_value = 0; 
 int AAA[128];  
 
// -----------------------------------------------------------------------------

void setup() {
     Serial.begin(9600);   
int data = 1;
         if (!driver.init())  
         Serial.println("init failed"); 
         
  for (int i = 1; i < 128 + 1; i++)  {   
    AAA[i]=0 ; }
    pinMode(LED_BUILTIN, OUTPUT);
     kpd.setHoldTime(1000); 
    MIDI.begin(4);
     MIDI.turnThruOff();
     digitalWrite(13,LOW);
    if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
 display.display();
 display.clearDisplay();

    msg = "";
    Key_Mode="Bank";
    CC_Mode =="OFF";
  WEL_COME_SCN ();
   delay(1000);
for (int i = 1; i < 128 + 1; i++) {
  AAA[i] = EEPROM.read(i);
}
 MAIN_SCN ();
}

void SCN (int gg) {
  display.clearDisplay();
  display.setTextSize(1);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(0,0);             // Start at top-left corner
  display.println(gg);
  display.setCursor(50,0);             // Start at top-left corner
  display.println(msg);
  display.setCursor(0,16);             // Start at top-left corner
  display.println(analogRead(A0));
  display.display();
  
}

void loop() {       
               int val = analogRead(0);   
                if (CC_Mode =="ON")  { SLIDE1 =   map(val,100,950,1,22);  }
              if (val<100) {  SLIDE1=0;  }
              if (val>950) {  SLIDE1=23;  }
               
              if  (SLIDE1 !=SLIDE1_OLD) {
                if  ((SLIDE1>0) && (SLIDE1<23))  
                 { 
               //   Serial.println(SLIDE1);
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOff(Last_Note,0,ch); } 
                     int New_Note = White_Note [SLIDE1-1] ;   
                      MIDI.sendProgramChange(78, 1); 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOn(New_Note,127,ch);  }
                    Last_Note = New_Note;     
                  }
                    else 
                    {
                    for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
                    for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }
                       MIDI.sendProgramChange(PATCH, 1);    
                      }  
           SLD_SCN (SLIDE1);  
                SLIDE1_OLD = SLIDE1;   
              }

          
    if (kpd.getKeys())
    {
        for (int i=0; i<LIST_MAX; i++)   
        {      int mykey = kpd.key[i].kchar;
            if (( kpd.key[i].stateChanged ) && (mykey < 128 )  &&  (mykey > 0 ) && (mykey != 13))
            {
                switch (kpd.key[i].kstate) {  
                    case PRESSED:
         if     (Key_Mode == "Perform")        {      Perform_Mode (mykey);  MAIN_SCN ();    }   
        else if (Key_Mode == "Bank")        {   Bank_Mode (mykey); }      MAIN_SCN ();
                break;
                    case RELEASED:  
                  //   if     (Key_Mode == "Perform")        {      Perform_Mode_Released (mykey);  MAIN_SCN ();    } 
                   if (Key_Mode == "Bank")        {   Bank_Mode_Released (mykey); }      MAIN_SCN ();
                break;
                }
            }
            // ----------------------------------------------------------------------------------------------
                  if (( kpd.key[i].stateChanged ) && (mykey == KEY_128)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     if     (Key_Mode == "Perform")  { PATCH = 127;     MIDI.sendProgramChange(PATCH, 1);       MAIN_SCN (); }
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == PATCH_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH++;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                    if (DOWN==1) {PATCH = PATCH+10;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }       UP = 1; 
                break;
                 case HOLD:               break;
                  case RELEASED:     UP = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == PATCH_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH--;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                     if (UP==1) {PATCH = PATCH-10;     MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }   DOWN = 1; 
                break;
                  case HOLD:                break;
                  case RELEASED:     DOWN = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == KEY_FIND_SCN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                       MIDI.sendProgramChange(10, 1);  
                    FIND_SCN ();
                    KEY_SHIFT_MODE = 1;
                break;
                    case RELEASED:
                     KEY_SHIFT_MODE = 0;
                     All_Note_Off ();                  MIDI.sendProgramChange(PATCH, 1);     MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == KEY_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY++;  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == KEY_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY--;   MAIN_SCN ();      data = 31;   
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                    if (( kpd.key[i].stateChanged ) && ((mykey == KEY_ZERO) || (mykey == -112) || (mykey == -111))) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY = 0;
                    MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == A)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                     data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();       
                break;
                 case HOLD:   
                data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == B)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED: 
               data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == C)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              if (D_Status==0)  {  data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;}
              if (D_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full
                  C_Status = 1;
                break;
                 case HOLD:   
          //     data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                if (D_Status==0)  {  data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (D_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                C_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                   if (( kpd.key[i].stateChanged ) && (mykey == D)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:    //41
              if (C_Status==0)  {  data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 41;}
              if (C_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full 
               D_Status = 1;
                break;
                 case HOLD:   
            //   data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   // 42
                  if (C_Status==0)  {  data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (C_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                 D_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == AA)) // --------------------------------------       P
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                 data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == CC)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                 data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;
                break;
                 case HOLD:   
               data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
            data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DD)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  Last_Gear = 41;
                break;
                 case HOLD:   
               data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == Key_Mode_Sw)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DRUM)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteA)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();    Key_Mode="Bank";     MAIN_SCN ();       break;
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();   Key_Mode="Bank";     MAIN_SCN ();    break;
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == MONO)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:     for (int i=1; i<11; i++) { MIDI.sendControlChange(126,0,i); } // (cc#,value,channel)    MONO       
                    break;     // CC# 126
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == POLY)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:      for (int i=1; i<11; i++) {  MIDI.sendControlChange(127,0,i); } // (cc#,value,channel)     POLY      
                    break;  //  CC#127
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     MIDI.sendProgramChange(111, 1); 
                 for (int i=21; i>(-1); i--) { 
                  MIDI.sendNoteOn((Bells_DRBR[i]+TRANS_KEY),127,1); 
                 delay(100); 
                 MIDI.sendNoteOff((Bells_DRBR[i]+TRANS_KEY),0,1); }  // (note,velocity,channel)
                        MIDI.sendProgramChange(PATCH, 1);
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_B )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                    if (CC_Mode =="OFF")    {   CC_Mode ="ON";  }
                    else {    CC_Mode ="OFF";  }
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BLUE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                break;
                 case RELEASED: 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------

        }
    }   

        if (MIDI.read())                // Is there a MIDI message incoming ?  
    {        COUNT++;
                         //  digitalWrite(13,HIGH);  
                           byte A_TYPE = MIDI.getType();
                           byte A_CHANNEL = MIDI.getChannel();  // channel 
                           byte A_NOTE =  MIDI.getData1();  // note number
                           byte A_VOL = MIDI.getData2(); // velocity
                           
        if ((A_TYPE==144) && (A_CHANNEL == 4)&& (KEY_SHIFT_MODE==1) ) { //                           A_TYPE=144 noteOn    128 NoteOff    ///     
         TRANS_KEY = (A_NOTE-73) + TRANS_KEY_Old;                                  //  ......52 = -12........64 = 0........76 = +12.......COARSE TUNE
                                  
 display.clearDisplay();
  display.setTextSize(1);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(0,0);       display.println(A_TYPE);          display.setCursor(50,0);       display.println(A_CHANNEL);      display.setCursor(90,0);      display.println( A_NOTE);  
  display.setCursor(0,16);       display.println(A_VOL);          display.setCursor(50,16);            display.print( "Event-");  display.print( COUNT);
  display.display();  
    }       
    }
        

   if ( TRANS_KEY != TRANS_KEY_Old )  {

         byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,(TRANS_KEY+64),0xF7};  
             MIDI.sendSysEx(8,sysexArray,true);
             MAIN_SCN ();
    TRANS_KEY_Old = TRANS_KEY;
   }



         ////   if (UP == 1) {PATCH =PATCH+10;    MIDI.sendProgramChange(PATCH, 1); delay  }
          //  if (DOWN == 1) {PATCH--;    MIDI.sendProgramChange(PATCH, 1);  }
            if (PATCH < 0) { PATCH = 127; }
            if (PATCH > 127) { PATCH = 0; }
     
   
}  // End loop      ####################################################################################################################################################
    void  All_Note_Off ()   {
     for (int ch = 0; ch < 16 + 1; ch++) {  MIDI.sendControlChange(ch,123,0);  } //  (ch ,cc ,value)
                             }  
  void FIND_SCN () 
  {  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println("Key ??");
  display.display();
  }
    void SCN_SLIDE ()   {
  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println(SLIDE1);
  display.display();
    }
      void MAIN_SCN ()   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);            
  if   (TRANS_KEY > 0) { display.print("+");     }
    display.print(TRANS_KEY);
    display.setTextSize(1);
    display.setCursor(60,0);     
    display.print(Key_Mode);
    display.print("__");
    display.print(Bank);
    display.setCursor(70,12); 
    display.print("P:");    
    display.print(PATCH+1);
   // display.print(""); 
     display.setCursor(70,21);   
    display.print(CC_Mode);
    display.display();
    }
          void SLD_SCN (int NUMBER_KEY)   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);             
    display.print(NUMBER_KEY);
    display.display();
    }
    void function () {

      MIDI.sendControlChange(94,127,1);  // (cc#,value,channel)
    }
     void WEL_COME_SCN ()   {
    display.clearDisplay();
    display.setTextSize(2);              
    display.setTextColor(SSD1306_WHITE);         
    display.setCursor(0,0);              
    display.println("Ex ctrl");
    display.display();  }

  
void Bank_Mode (int Bank_Key)  {
  for (int i = 1; i < 128 + 1; i++) {
    if ((Bank_Key == i)  && (Bank_Key != 1)) {
      MIDI.sendProgramChange(AAA[i], 1);
      Bank = i;
      PATCH = AAA[i];
    }
      if (Bank_Key == 1)   {       for (int i=0; i<16; i++) {  MIDI.sendControlChange(127,0,i); } } // (cc#,value,channel)     POLY   
  }
}
         void Perform_Mode (int mykey)
         {PATCH = mykey-1;  MIDI.sendProgramChange(PATCH, 1);}                                                                                 

       void   Bank_Mode_Released (int Bank_Key1)   {

        if (Bank_Key1==1)  {     for (int i=0; i<16; i++) { MIDI.sendControlChange(126,0,i); }  } // (cc#,value,channel)    MONO    
       }
          void  Write_Bank () {
  for (int i = 1; i < 128; i++) {
    if (Bank == i) {
         EEPROM.write(i, PATCH);
         AAA[i] = PATCH;
         Write_Bank_SCN (); 
         delay(1000);  
         MAIN_SCN ();
         }
        }
       }
                                                                                                     
          

            void  Write_Bank_SCN ()  {
   display.clearDisplay();
  display.setTextSize(2);              
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);              
    display.print("Write Done");
  display.display();
              
            }

 

i try to read about midi with arduino but i could not solve it myself
I ask to Arduino Midi Expert.... please check it , what code i can try in above code ???
thank you

In setup() this is wrong:

    for (int i = 1; i < 128 + 1; i++) {
        AAA[i]=0 ;
    }

AAA is declared to have 128 elements. In C/C++ they are indexed from zero to 127.
Your code will store zero in AAA[128] which exists outside the array. This can lead to unpredictable behaviour.
Later on you read eeprom data into the AAA array:

    for (int i = 1; i < 128 + 1; i++) {
        AAA[i] = EEPROM.read(i);
    }

The index needs to be zero to 127 here as well. But make sure that the EEPROM addresses will be correct.
You make the same indexing mistake in the Bank_Mode function - find and fix it too.

Pete

Thank you Supremo,,,
EEPROM.read /write function doesn't distrub me it is working fine.
Please give your advice on

for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
  for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }

Functions. Are you seeing some thing , why it is throwing ProgramChange #10 midi message in last????

No, it is not. You are writing data outside the bounds of your array. Once your program does that, you have entered into "undefined behavior" which means anything can happen with your code. Most likely, you are stomping on some other global variable that happens to be located just beyond your array which could produce the issue you are seeing. @el_supremo pointed this all out. Fix it.

Thank you....
I tried it replace array code

   for (int i = 1; i < 128 + 1; i++) {
        AAA[i] = EEPROM.read(i);
    }

with

   for (int i = 0; i < 128 ; i++) {
        AAA[i] = EEPROM.read(i);
    }

in Entire sketch where i used array [0-127]

#include <RH_ASK.h>     // ok working RadioHead 1.83
#include <MIDI.h>
#include <Keypad.h>                   
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include<EEPROM.h>


#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32  
#define OLED_RESET     -1 
#define SCREEN_ADDRESS 0x3C  
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define NUMFLAKES     10  

#define KEY_UP    -115
#define KEY_DOWN  -113
#define KEY_ZERO  -114
#define KEY_FIND_SCN  -110
#define A    -106
#define B    -107
#define C    -109
#define D    -108
#define AA    -96
#define BB    -97
#define CC    -98
#define DD    -99
#define PATCH_UP    -126
#define PATCH_DOWN  -127
#define MONO        -125
#define POLY        -124
#define DRUM        -116
#define KEY_128     -128
#define ORANGE_A    -123
#define ORANGE_B    -122
#define BLUE_A      -121
#define BLUE_B      -120
#define Bank_WriteA      -119
#define Bank_WriteB      -118
#define Key_Mode_Sw    -117
#define KEY_128    -128

char *data;    //  RF

const byte ROWS = 16; 
const byte COLS = 10; 
char keys[ROWS][COLS] = {
{1,2,3,4,5,6,7,8,9,10},
{11,12,13,14,15,16,17,18,19,20},
{21,22,23,24,25,26,27,28,29,30},
{31,32,33,34,35,36,37,38,39,40},
{41,42,43,44,45,46,47,48,49,50},
{51,52,53,54,55,56,57,58,59,60},
{61,62,63,64,65,66,67,68,69,70},
{71,72,73,74,75,76,77,78,79,80},
{81,82,83,84,85,86,87,88,89,90},
{91,92,93,94,95,96,97,98,99,100},
{101,102,103,104,105,106,107,108,109,110},
{111,112,113,114,115,116,117,118,119,120},
{121,122,123,124,125,126,127,128,129,130},
{131,132,133,134,135,136,137,138,139,140},
{141,142,143,144,145,146,147,148,149,150},
{151,152,153,154,155,156,157,158,159,160}
};
byte rowPins[ROWS] = {4,5,6,7,8,9,10,11,12,14,15,16,17,22,23,24}; 
byte colPins[COLS] = {32,33,34,35,36,37,38,39,40,41}; 

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String msg;
MIDI_CREATE_DEFAULT_INSTANCE();
       byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,50,0xF7}; // 0x28         // byte sysexArray[8] = {0xF0, 0x7F, 0x7F, 0x04, 0x04, 0x0, 0x50, 0xF7};   //   MIDI.sendSysEx(8, sysexArray, true); 
  byte User[8] = {0xB0,0x00,0x55,0x90,0x20,0x00,0xC0,0x00}; 
  RH_ASK driver(2000, 2, A1, 5); // ESP8266 or ESP32: do not use pin 11  rx_2 ,tx_A1

   int UP = 0;
   int DOWN = 0;
  int Bank = 61;
  String  Key_Mode;
  String  CC_Mode;
  int PATCH = 0;
 int SHIFT1 = 0;
 long COUNT = 0;
 int  TRANS_KEY = 0;
 int  TRANS_KEY_Old = 0;
 int KEY_SHIFT_MODE = 0;
 int NOTE_NUMBER = 0;
 int RAG_NOTE[15] = {49,51,52,54,56,57,59,61,63,64,66,68,69,71,73 };
 int Bells_DRBR[22] = {61,63,64,66,68,69,71,73,75,76,78,80,81,83,85,87,88,90,92,93,95,97 }; // 22 notes
 int White_Note [] = { 48,50,52,53,55,57,59,60,62,64,65,67,69,71,72,74,76,77,79,81,83,84 };

  int last_val = 0;
 int SLIDE1 = 0;
 int SLIDE1_OLD = 0;
 int Last_Note = 0;
 int Pitch_Value = 0;
 byte C_Status = 0;
 byte D_Status = 0;
 byte Last_Gear = 0; 
 int   my_value = 0; 
 int AAA[127];  
 
// -----------------------------------------------------------------------------

void setup() {
     Serial.begin(9600);    // Debugging only
int data = 1;
         if (!driver.init())  // RF
         Serial.println("init failed");  // RF
         
  for (int i = 0; i < 128; i++)  {   
    AAA[i]=0 ; }
    pinMode(LED_BUILTIN, OUTPUT);
     kpd.setHoldTime(1000); 
    MIDI.begin(4);
     MIDI.turnThruOff();
     digitalWrite(13,LOW);
    if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
 display.display();
 display.clearDisplay();

    msg = "";
    Key_Mode="Bank";
    CC_Mode =="OFF";
  WEL_COME_SCN ();
   delay(1000);
for (int i = 0; i < 128; i++) {
  AAA[i] = EEPROM.read(i);
}
 MAIN_SCN ();
}

void SCN (int gg) {
  display.clearDisplay();
  display.setTextSize(1);              
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);             
  display.println(gg);
  display.setCursor(50,0);              
  display.println(msg);
  display.setCursor(0,16);           
  display.println(analogRead(A0));
  display.display();
  
}

void loop() {       //  from @blh64
               int val = analogRead(0);   //  int val = analogRead(0);         A3 pin for External Strip-
                if (CC_Mode =="ON")  { SLIDE1 =   map(val,100,950,1,22);  }
              if (val<100) {  SLIDE1=0;  }
              if (val>950) {  SLIDE1=23;  }
               
              if  (SLIDE1 !=SLIDE1_OLD) {
                if  ((SLIDE1>0) && (SLIDE1<23))  
                 { 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOff(Last_Note,0,ch); } 
                     int New_Note = White_Note [SLIDE1-1] ;   
                      MIDI.sendProgramChange(78, 1); 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOn(New_Note,127,ch);  }
                    Last_Note = New_Note;     
                  }
                    else 
                    {
                    for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
                    for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }
                       MIDI.sendProgramChange(PATCH, 1);    Serial.println("w"); 
                      }  
           SLD_SCN (SLIDE1);  
                SLIDE1_OLD = SLIDE1;   
              }

          
    if (kpd.getKeys())
    {
        for (int i=0; i<LIST_MAX; i++)   
        {      int mykey = kpd.key[i].kchar;
            if (( kpd.key[i].stateChanged ) && (mykey < 128 )  &&  (mykey > 0 ) && (mykey != 13))
            {
                switch (kpd.key[i].kstate) {  
                    case PRESSED:
         if     (Key_Mode == "Perform")        {      Perform_Mode (mykey);  MAIN_SCN ();    }   
        else if (Key_Mode == "Bank")        {   Bank_Mode (mykey); }      MAIN_SCN ();
                break;
                    case RELEASED:  
                  //   if     (Key_Mode == "Perform")        {      Perform_Mode_Released (mykey);  MAIN_SCN ();    } 
                   if (Key_Mode == "Bank")        {   Bank_Mode_Released (mykey); }      MAIN_SCN ();
                break;
                }
            }
            // ----------------------------------------------------------------------------------------------
                  if (( kpd.key[i].stateChanged ) && (mykey == KEY_128)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     if     (Key_Mode == "Perform")  { PATCH = 127;     MIDI.sendProgramChange(PATCH, 1);       MAIN_SCN (); }
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == PATCH_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH++;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                    if (DOWN==1) {PATCH = PATCH+10;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }       UP = 1; 
                break;
                 case HOLD:               break;
                  case RELEASED:     UP = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == PATCH_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH--;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                     if (UP==1) {PATCH = PATCH-10;     MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }   DOWN = 1; 
                break;
                  case HOLD:                break;
                  case RELEASED:     DOWN = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == KEY_FIND_SCN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                       MIDI.sendProgramChange(10, 1);  
                    FIND_SCN ();
                    KEY_SHIFT_MODE = 1;
                break;
                    case RELEASED:
                     KEY_SHIFT_MODE = 0;
                     All_Note_Off ();                  MIDI.sendProgramChange(PATCH, 1);     MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == KEY_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY++;  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == KEY_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY--;   MAIN_SCN ();      data = 31;   
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                    if (( kpd.key[i].stateChanged ) && ((mykey == KEY_ZERO) || (mykey == -112) || (mykey == -111))) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY = 0;
                    MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == A)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                     data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();       
                break;
                 case HOLD:   
                data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == B)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED: 
               data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == C)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              if (D_Status==0)  {  data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;}
              if (D_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full
                  C_Status = 1;
                break;
                 case HOLD:   
          //     data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                if (D_Status==0)  {  data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (D_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                C_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                   if (( kpd.key[i].stateChanged ) && (mykey == D)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:    //41
              if (C_Status==0)  {  data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 41;}
              if (C_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full 
               D_Status = 1;
                break;
                 case HOLD:   
            //   data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   // 42
                  if (C_Status==0)  {  data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (C_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                 D_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == AA)) // --------------------------------------       P
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                 data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == CC)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                 data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;
                break;
                 case HOLD:   
               data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
            data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DD)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  Last_Gear = 41;
                break;
                 case HOLD:   
               data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == Key_Mode_Sw)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DRUM)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteA)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();    Key_Mode="Bank";     MAIN_SCN ();       break;
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();   Key_Mode="Bank";     MAIN_SCN ();    break;
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == MONO)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:     for (int i=1; i<11; i++) { MIDI.sendControlChange(126,0,i); } // (cc#,value,channel)    MONO       
                    break;     // CC# 126
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == POLY)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:      for (int i=1; i<11; i++) {  MIDI.sendControlChange(127,0,i); } // (cc#,value,channel)     POLY      
                    break;  //  CC#127
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     MIDI.sendProgramChange(111, 1); 
                 for (int i=21; i>(-1); i--) { 
                  MIDI.sendNoteOn((Bells_DRBR[i]+TRANS_KEY),127,1); 
                 delay(100); 
                 MIDI.sendNoteOff((Bells_DRBR[i]+TRANS_KEY),0,1); }  // (note,velocity,channel)
                        MIDI.sendProgramChange(PATCH, 1);
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_B )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                    if (CC_Mode =="OFF")    {   CC_Mode ="ON";  }
                    else {    CC_Mode ="OFF";  }
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BLUE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                break;
                 case RELEASED: 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------

        }
    }   

        if (MIDI.read())                
    {        COUNT++;  
                           byte A_TYPE = MIDI.getType();
                           byte A_CHANNEL = MIDI.getChannel();  // channel 
                           byte A_NOTE =  MIDI.getData1();  // note number
                           byte A_VOL = MIDI.getData2(); // velocity
                           
        if ((A_TYPE==144) && (A_CHANNEL == 4)&& (KEY_SHIFT_MODE==1) ) { //                           A_TYPE=144 noteOn    128 NoteOff         
         TRANS_KEY = (A_NOTE-73) + TRANS_KEY_Old;                                  //  ......52 = -12........64 = 0........76 = +12.......COARSE TUNE
                                  
 display.clearDisplay();
  display.setTextSize(1);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);       display.println(A_TYPE);          display.setCursor(50,0);       display.println(A_CHANNEL);      display.setCursor(90,0);      display.println( A_NOTE);  
  display.setCursor(0,16);       display.println(A_VOL);          display.setCursor(50,16);            display.print( "Event-");  display.print( COUNT);
  display.display();  
    }       
    }
        

   if ( TRANS_KEY != TRANS_KEY_Old )  {

         byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,(TRANS_KEY+64),0xF7};  
             MIDI.sendSysEx(8,sysexArray,true);
             MAIN_SCN ();
    TRANS_KEY_Old = TRANS_KEY;
   }

 
            if (PATCH < 0) { PATCH = 127; }
            if (PATCH > 127) { PATCH = 0; }
     
   
}  // End loop      ####################################################################################################################################################
    void  All_Note_Off ()   {
     for (int ch = 0; ch < 16 + 1; ch++) {  MIDI.sendControlChange(ch,123,0);  } //  (ch ,cc ,value)
                             }  
  void FIND_SCN () 
  {  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println("Key ??");
  display.display();
  }
    void SCN_SLIDE ()   {
  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println(SLIDE1);
  display.display();
    }
      void MAIN_SCN ()   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);            
  if   (TRANS_KEY > 0) { display.print("+");     }
    display.print(TRANS_KEY);
    display.setTextSize(1);
    display.setCursor(60,0);     
    display.print(Key_Mode);
    display.print("__");
    display.print(Bank);
    display.setCursor(70,12); 
    display.print("P:");    
    display.print(PATCH+1);
   // display.print(""); 
     display.setCursor(70,21);   
    display.print(CC_Mode);
    display.display();
    }
          void SLD_SCN (int NUMBER_KEY)   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);             
    display.print(NUMBER_KEY);
    display.display();
    }
    void function () {

      MIDI.sendControlChange(94,127,1);  // (cc#,value,channel)
    }
     void WEL_COME_SCN ()   {
    display.clearDisplay();
    display.setTextSize(2);              
    display.setTextColor(SSD1306_WHITE);         
    display.setCursor(0,0);              
    display.println("MIDI ctrl");
    display.display();  }

  
void Bank_Mode (int Bank_Key)  {
  for (int i = 0; i < 128; i++) {
    if ((Bank_Key == i)  && (Bank_Key != 1)) {
      MIDI.sendProgramChange(AAA[i], 1);
      Bank = i;
      PATCH = AAA[i];
    }
      if (Bank_Key == 1)   {       for (int i=0; i<16; i++) {  MIDI.sendControlChange(127,0,i); } } // (cc#,value,channel)     POLY   
  }
}
         void Perform_Mode (int mykey)
         {PATCH = mykey-1;  MIDI.sendProgramChange(PATCH, 1);}                                                                                 

       void   Bank_Mode_Released (int Bank_Key1)   {

        if (Bank_Key1==1)  {     for (int i=0; i<16; i++) { MIDI.sendControlChange(126,0,i); }  } // (cc#,value,channel)    MONO    
       }
          void  Write_Bank () {
  for (int i = 0; i < 128; i++) {
    if (Bank == i) {
         EEPROM.write(i, PATCH);
         AAA[i] = PATCH;
         Write_Bank_SCN (); 
         delay(1000);  
         MAIN_SCN ();
         }
        }
       }
                                                                                                     
          

            void  Write_Bank_SCN ()  {
   display.clearDisplay();
  display.setTextSize(2);              
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);              
    display.print("Write Done");
  display.display();
              
            }

but could not get it be fixed. ProgChange #10 is coming till now.
???

yes ,,,,, Today i tried it with this simple code

#include <MIDI.h>


  MIDI_CREATE_DEFAULT_INSTANCE(); 
  int PATCH = 51;
  int White_Note [] = { 48,50,52,53,55,57,59,60,62,64,65,67,69,71,72,74,76,77,79,81,83,84 };
  int SLIDE1 = 0;
  int SLIDE1_OLD = 0;
  int Last_Note = 0;

void setup() {
         MIDI.begin(4);
         MIDI.turnThruOff();
          }

void loop() {    
               int val = analogRead(0);   
               { SLIDE1 =   map(val,100,950,1,22);  }
              if (val<100)  {  SLIDE1=0;  }
              if (val>950)   {  SLIDE1=23;  }
               
              if  (SLIDE1 !=SLIDE1_OLD) {
                if  ((SLIDE1>0) && (SLIDE1<23))  
                 { 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOff(Last_Note,0,ch); } 
                     int New_Note = White_Note [SLIDE1-1] ;   
                      MIDI.sendProgramChange(78, 1); 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOn(New_Note,127,ch);  }
                    Last_Note = New_Note;     
                  }
                    else 
                    {
                    for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
                    for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }
                       MIDI.sendProgramChange(PATCH, 1);    
                      }  
                SLIDE1_OLD = SLIDE1;   
              }
             }

in this simple code i have no problem ,slide rolling goes up/down correctly ,succesfully i got progchange with variable "PATCH".
but what problem is in my below code. i have everything Necessary in my code.
could you tell me , what part of code cause MIDI.sendProgramChange(10, 1);
even i changed my array[] in this code:

#include <RH_ASK.h>     // ok working RadioHead 1.83
#include <MIDI.h>
#include <Keypad.h>                   
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include<EEPROM.h>


#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32  
#define OLED_RESET     -1 
#define SCREEN_ADDRESS 0x3C  
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define NUMFLAKES     10  

#define KEY_UP    -115
#define KEY_DOWN  -113
#define KEY_ZERO  -114
#define KEY_FIND_SCN  -110
#define A    -106
#define B    -107
#define C    -109
#define D    -108
#define AA    -96
#define BB    -97
#define CC    -98
#define DD    -99
#define PATCH_UP    -126
#define PATCH_DOWN  -127
#define MONO        -125
#define POLY        -124
#define DRUM        -116
#define KEY_128     -128
#define ORANGE_A    -123
#define ORANGE_B    -122
#define BLUE_A      -121
#define BLUE_B      -120
#define Bank_WriteA      -119
#define Bank_WriteB      -118
#define Key_Mode_Sw    -117
#define KEY_128    -128

char *data;    //  RF

const byte ROWS = 16; 
const byte COLS = 10; 
char keys[ROWS][COLS] = {
{1,2,3,4,5,6,7,8,9,10},
{11,12,13,14,15,16,17,18,19,20},
{21,22,23,24,25,26,27,28,29,30},
{31,32,33,34,35,36,37,38,39,40},
{41,42,43,44,45,46,47,48,49,50},
{51,52,53,54,55,56,57,58,59,60},
{61,62,63,64,65,66,67,68,69,70},
{71,72,73,74,75,76,77,78,79,80},
{81,82,83,84,85,86,87,88,89,90},
{91,92,93,94,95,96,97,98,99,100},
{101,102,103,104,105,106,107,108,109,110},
{111,112,113,114,115,116,117,118,119,120},
{121,122,123,124,125,126,127,128,129,130},
{131,132,133,134,135,136,137,138,139,140},
{141,142,143,144,145,146,147,148,149,150},
{151,152,153,154,155,156,157,158,159,160}
};
byte rowPins[ROWS] = {4,5,6,7,8,9,10,11,12,14,15,16,17,22,23,24}; 
byte colPins[COLS] = {32,33,34,35,36,37,38,39,40,41}; 

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String msg;
MIDI_CREATE_DEFAULT_INSTANCE();
       byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,50,0xF7}; // 0x28         // byte sysexArray[8] = {0xF0, 0x7F, 0x7F, 0x04, 0x04, 0x0, 0x50, 0xF7};   //   MIDI.sendSysEx(8, sysexArray, true); 
  byte User[8] = {0xB0,0x00,0x55,0x90,0x20,0x00,0xC0,0x00}; 
  RH_ASK driver(2000, 2, A1, 5); // ESP8266 or ESP32: do not use pin 11  rx_2 ,tx_A1

   int UP = 0;
   int DOWN = 0;
  int Bank = 61;
  String  Key_Mode;
  String  CC_Mode;
  int PATCH = 0;
 int SHIFT1 = 0;
 long COUNT = 0;
 int  TRANS_KEY = 0;
 int  TRANS_KEY_Old = 0;
 int KEY_SHIFT_MODE = 0;
 int NOTE_NUMBER = 0;
 int RAG_NOTE[15] = {49,51,52,54,56,57,59,61,63,64,66,68,69,71,73 };
 int Bells_DRBR[22] = {61,63,64,66,68,69,71,73,75,76,78,80,81,83,85,87,88,90,92,93,95,97 }; // 22 notes
 int White_Note [] = { 48,50,52,53,55,57,59,60,62,64,65,67,69,71,72,74,76,77,79,81,83,84 };

  int last_val = 0;
 int SLIDE1 = 0;
 int SLIDE1_OLD = 0;
 int Last_Note = 0;
 int Pitch_Value = 0;
 byte C_Status = 0;
 byte D_Status = 0;
 byte Last_Gear = 0; 
 int   my_value = 0; 
 int AAA[127];  
 
// -----------------------------------------------------------------------------

void setup() {

int data = 1;
         if (!driver.init())  // RF
         Serial.println("init failed");  // RF
         
  for (int i = 0; i < 128; i++)  {   
    AAA[i]=0 ; }
    pinMode(LED_BUILTIN, OUTPUT);
     kpd.setHoldTime(1000); 
    MIDI.begin(4);
     MIDI.turnThruOff();
     digitalWrite(13,LOW);
    if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
 display.display();
 display.clearDisplay();

    msg = "";
    Key_Mode="Bank";
    CC_Mode =="OFF";
  WEL_COME_SCN ();
   delay(1000);
for (int i = 0; i < 128; i++) {
  AAA[i] = EEPROM.read(i);
}
 MAIN_SCN ();
}

void SCN (int gg) {
  display.clearDisplay();
  display.setTextSize(1);              
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);             
  display.println(gg);
  display.setCursor(50,0);              
  display.println(msg);
  display.setCursor(0,16);           
  display.println(analogRead(A0));
  display.display();
  
}

void loop() {       //  from @blh64
               int val = analogRead(0);   //  int val = analogRead(0);         A3 pin for External Strip-
                if (CC_Mode =="ON")  { SLIDE1 =   map(val,100,950,1,22);  }
              if ((val<100) && (CC_Mode =="ON")) {  SLIDE1=0;  }
              if ((val>950)  && (CC_Mode =="ON"))  {  SLIDE1=23;  }
               
              if  (SLIDE1 !=SLIDE1_OLD) {
                if  ((SLIDE1>0) && (SLIDE1<23))  
                 { 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOff(Last_Note,0,ch); } 
                     int New_Note = White_Note [SLIDE1-1] ;   
                      MIDI.sendProgramChange(78, 1); 
                  for (int ch=0; ch<16; ch++)  {  MIDI.sendNoteOn(New_Note,127,ch);  }
                    Last_Note = New_Note;     
                  }
                    else 
                    {
                    for (int ch=0; ch<16; ch++) {  MIDI.sendControlChange(120,0,ch);  }
                    for (int ch=0; ch<16; ch++)   {   MIDI.sendControlChange(123,0,ch);  }
                       MIDI.sendProgramChange(PATCH, 1);    
                      }  
           SLD_SCN (SLIDE1);  
                SLIDE1_OLD = SLIDE1;   
              }

          
    if (kpd.getKeys())
    {
        for (int i=0; i<LIST_MAX; i++)   
        {      int mykey = kpd.key[i].kchar;
            if (( kpd.key[i].stateChanged ) && (mykey < 128 )  &&  (mykey > 0 ) && (mykey != 13))
            {
                switch (kpd.key[i].kstate) {  
                    case PRESSED:
         if     (Key_Mode == "Perform")        {      Perform_Mode (mykey);  MAIN_SCN ();    }   
        else if (Key_Mode == "Bank")        {   Bank_Mode (mykey); }      MAIN_SCN ();
                break;
                    case RELEASED:  
                  //   if     (Key_Mode == "Perform")        {      Perform_Mode_Released (mykey);  MAIN_SCN ();    } 
                   if (Key_Mode == "Bank")        {   Bank_Mode_Released (mykey); }      MAIN_SCN ();
                break;
                }
            }
            // ----------------------------------------------------------------------------------------------
                  if (( kpd.key[i].stateChanged ) && (mykey == KEY_128)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     if     (Key_Mode == "Perform")  { PATCH = 127;     MIDI.sendProgramChange(PATCH, 1);       MAIN_SCN (); }
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == PATCH_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH++;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                    if (DOWN==1) {PATCH = PATCH+10;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }       UP = 1; 
                break;
                 case HOLD:               break;
                  case RELEASED:     UP = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == PATCH_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    PATCH--;    MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN ();
                     if (UP==1) {PATCH = PATCH-10;     MIDI.sendProgramChange(PATCH, 1);   MAIN_SCN (); }   DOWN = 1; 
                break;
                  case HOLD:                break;
                  case RELEASED:     DOWN = 0;              break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == KEY_FIND_SCN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                       MIDI.sendProgramChange(10, 1);  
                    FIND_SCN ();
                    KEY_SHIFT_MODE = 1;
                break;
                    case RELEASED:
                     KEY_SHIFT_MODE = 0;
                     All_Note_Off ();                  MIDI.sendProgramChange(PATCH, 1);     MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == KEY_UP)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY++;  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == KEY_DOWN)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY--;   MAIN_SCN ();      data = 31;   
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                    if (( kpd.key[i].stateChanged ) && ((mykey == KEY_ZERO) || (mykey == -112) || (mykey == -111))) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                    TRANS_KEY = 0;
                    MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == A)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED: 
                     data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();       
                break;
                 case HOLD:   
                data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == B)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED: 
               data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                if (( kpd.key[i].stateChanged ) && (mykey == C)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              if (D_Status==0)  {  data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;}
              if (D_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full
                  C_Status = 1;
                break;
                 case HOLD:   
          //     data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                if (D_Status==0)  {  data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (D_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                C_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
                   if (( kpd.key[i].stateChanged ) && (mykey == D)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:    //41
              if (C_Status==0)  {  data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 41;}
              if (C_Status==1)  {  data = 10;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speeed  full 
               D_Status = 1;
                break;
                 case HOLD:   
            //   data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   // 42
                  if (C_Status==0)  {  data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();   }
              if (C_Status==1)  {  data = 5;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); } // Speed  LOW
                 D_Status = 0;
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == AA)) // --------------------------------------       P
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 11;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 13;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 12;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
               data = 21;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                 case HOLD:   
               data = 23;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                 data = 22;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == CC)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                 data = 31;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); Last_Gear = 31;
                break;
                 case HOLD:   
               data = 33;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
            data = 32;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DD)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
              data = 41;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  Last_Gear = 41;
                break;
                 case HOLD:   
               data = 43;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent();  
                break;
                 case RELEASED:   
                data = 42;   driver.send((uint8_t *)&data, sizeof(data));    driver.waitPacketSent(); 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
               if (( kpd.key[i].stateChanged ) && (mykey == Key_Mode_Sw)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
              if (( kpd.key[i].stateChanged ) && (mykey == DRUM)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:   
                  if ( Key_Mode=="Perform") { Key_Mode="Bank";  }
                  else  if ( Key_Mode=="Bank") { Key_Mode="Perform";  }   
                  MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteA)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();    Key_Mode="Bank";     MAIN_SCN ();       break;
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == Bank_WriteB)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:         Write_Bank ();   Key_Mode="Bank";     MAIN_SCN ();    break;
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == MONO)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:     for (int i=1; i<11; i++) { MIDI.sendControlChange(126,0,i); } // (cc#,value,channel)    MONO       
                    break;     // CC# 126
                }   }
            // ----------------------------------------------------------------------------------------------
            if (( kpd.key[i].stateChanged ) && (mykey == POLY)) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:      for (int i=1; i<11; i++) {  MIDI.sendControlChange(127,0,i); } // (cc#,value,channel)     POLY      
                    break;  //  CC#127
                }   }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                     MIDI.sendProgramChange(111, 1); 
                 for (int i=21; i>(-1); i--) { 
                  MIDI.sendNoteOn((Bells_DRBR[i]+TRANS_KEY),127,1); 
                 delay(100); 
                 MIDI.sendNoteOff((Bells_DRBR[i]+TRANS_KEY),0,1); }  // (note,velocity,channel)
                        MIDI.sendProgramChange(PATCH, 1);
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == ORANGE_B )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                    if (CC_Mode =="OFF")    {   CC_Mode ="ON";  }
                    else {    CC_Mode ="OFF";  }
                         MAIN_SCN ();
                break;
                }  }
            // ----------------------------------------------------------------------------------------------
             if (( kpd.key[i].stateChanged ) && (mykey == BLUE_A )) // --------------------------------------
            {  switch (kpd.key[i].kstate) {  
                    case PRESSED:  
                break;
                 case RELEASED: 
                break;
                }  }
            // ----------------------------------------------------------------------------------------------

        }
    }   

        if (MIDI.read())                
    {        COUNT++;  
                           byte A_TYPE = MIDI.getType();
                           byte A_CHANNEL = MIDI.getChannel();  // channel 
                           byte A_NOTE =  MIDI.getData1();  // note number
                           byte A_VOL = MIDI.getData2(); // velocity
                           
        if ((A_TYPE==144) && (A_CHANNEL == 4)&& (KEY_SHIFT_MODE==1) ) { //                           A_TYPE=144 noteOn    128 NoteOff         
         TRANS_KEY = (A_NOTE-73) + TRANS_KEY_Old;                                  //  ......52 = -12........64 = 0........76 = +12.......COARSE TUNE
                                  
 display.clearDisplay();
  display.setTextSize(1);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);       display.println(A_TYPE);          display.setCursor(50,0);       display.println(A_CHANNEL);      display.setCursor(90,0);      display.println( A_NOTE);  
  display.setCursor(0,16);       display.println(A_VOL);          display.setCursor(50,16);            display.print( "Event-");  display.print( COUNT);
  display.display();  
    }       
    }
        

   if ( TRANS_KEY != TRANS_KEY_Old )  {

         byte sysexArray[8] = {0xF0,0x7F,0x7F,0x04,0x04,0x00,(TRANS_KEY+64),0xF7};  
             MIDI.sendSysEx(8,sysexArray,true);
             MAIN_SCN ();
    TRANS_KEY_Old = TRANS_KEY;
   }

 
            if (PATCH < 0) { PATCH = 127; }
            if (PATCH > 127) { PATCH = 0; }
     
   
}  // End loop      ####################################################################################################################################################
    void  All_Note_Off ()   {
     for (int ch = 0; ch < 16 + 1; ch++) {  MIDI.sendControlChange(ch,123,0);  } //  (ch ,cc ,value)
                             }  
  void FIND_SCN () 
  {  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println("Key ??");
  display.display();
  }
    void SCN_SLIDE ()   {
  display.clearDisplay();
  display.setTextSize(3);             
  display.setTextColor(SSD1306_WHITE);       
  display.setCursor(0,0);             
  display.println(SLIDE1);
  display.display();
    }
      void MAIN_SCN ()   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);            
  if   (TRANS_KEY > 0) { display.print("+");     }
    display.print(TRANS_KEY);
    display.setTextSize(1);
    display.setCursor(60,0);     
    display.print(Key_Mode);
    display.print("__");
    display.print(Bank);
    display.setCursor(70,12); 
    display.print("P:");    
    display.print(PATCH+1);
   // display.print(""); 
     display.setCursor(70,21);   
    display.print(CC_Mode);
    display.display();
    }
          void SLD_SCN (int NUMBER_KEY)   {
    display.clearDisplay();
    display.setTextSize(3);             
    display.setTextColor(SSD1306_WHITE);        
    display.setCursor(0,0);             
    display.print(NUMBER_KEY);
    display.display();
    }
    void function () {

      MIDI.sendControlChange(94,127,1);  // (cc#,value,channel)
    }
     void WEL_COME_SCN ()   {
    display.clearDisplay();
    display.setTextSize(2);              
    display.setTextColor(SSD1306_WHITE);         
    display.setCursor(0,0);              
    display.println("MIDI ctrl");
    display.display();  }

  
void Bank_Mode (int Bank_Key)  {
  for (int i = 0; i < 128; i++) {
    if ((Bank_Key == i)  && (Bank_Key != 1)) {
      MIDI.sendProgramChange(AAA[i], 1);
      Bank = i;
      PATCH = AAA[i];
    }
      if (Bank_Key == 1)   {       for (int i=0; i<16; i++) {  MIDI.sendControlChange(127,0,i); } } // (cc#,value,channel)     POLY   
  }
}
         void Perform_Mode (int mykey)
         {PATCH = mykey-1;  MIDI.sendProgramChange(PATCH, 1);}                                                                                 

       void   Bank_Mode_Released (int Bank_Key1)   {

        if (Bank_Key1==1)  {     for (int i=0; i<16; i++) { MIDI.sendControlChange(126,0,i); }  } // (cc#,value,channel)    MONO    
       }
          void  Write_Bank () {
  for (int i = 0; i < 128; i++) {
    if (Bank == i) {
         EEPROM.write(i, PATCH);
         AAA[i] = PATCH;
         Write_Bank_SCN (); 
         delay(1000);  
         MAIN_SCN ();
         }
        }
       }
                                                                                                     
          

            void  Write_Bank_SCN ()  {
   display.clearDisplay();
  display.setTextSize(2);              
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,0);              
    display.print("Write Done");
  display.display();
              
            }

 
 

please check if possible
????

What Arduino board are you using?

In your new code, you shrunk the size of your AAA array

so now when you iterate from 0..127

You have the exact same problem. You are still writing beyond the last element in the array by 1. You need to keep the array declaration as 128 elements

int AAA[128];

and then iterate from 0..127.

I would suggest you take some time and study how C/C++ works.

Thank you,,,,,,, blh64
Thank you,,, el supremo
Thanks a lot,,, it solved. Reply from el_supremo pull my interest in array study.I am sorry I used wrong array size. As I set it int AAA[128]; now it is working. Thank it taught me correct size /use of array according to numbers of elements. Sorry I was consider 0 as 1st .
Thank you again. ,,, issue got solved...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.