Elección dentro de una variable dependiendo de otra variable

Hola a tod@s
Hace tiempo que quería empezar con esto de Arduino y acabo de llegar a este mundillo y cada día se me ocurre algo nuevo que hacer.

Quería saber si es posible cambiar una variable dependiendo de otra variable.
Me explico, hay una variable que indica una selección, unos pulsadores, unos led que indican la selección y luego varias variables que son arrays para una melodía y su tempo:

int led1 = 3;
int button1 = 9;

int selection[] = {
    1, 2, 3
};

int melody1[] = {
    NOTE_A4, NOTE_C5, NOTE_E5, NOTE_F5, NOTE_A4, NOTE_A4, NOTE_E5, NOTE_D5
};

int melody_tempo1[] = {
    42, 42, 42, 42, 83, 83, 83, 42
};

*lo pongo así por simplificar, hay más variables, y led, button, melody, y melody_tempo existen varias veces con "1" "2" y "3"

Ya he creado un código que funciona correctamente, al hacer una pulsación lee el estado, activa el led, y reproduce la melodía leyendo las posiciones del Array de melodía y tempo mediante un "for".

El problema es que es el mismo código repetido tres veces, una por cada posible selección y ocupa bastante, el propio tamaño del código me limita el tamaño de la melodía y el poder meter más opciones, y realmente el único cambio en el groso del código es que las variables sean la 1, la 2 o la 3.

Así que intentando optimizarlo quiero poner el código de reproducción una sola vez y que cambien sus variables dependiendo de la selección, y al final escribo por aquí, porque a lo mejor estoy intentando de diferentes maneras, algo que realmente no es posible.

Ahora mismo estoy intentando crear arrays con las variables, para luego seleccionarlas, es decir:

int ledArray[] = {led1, led2, led3};
int melodyArray[] = {melody1, melody2, melody3};
int melody_tempoArray[] = {melody_tempo1, melody_tempo2, melody_tempo3};

pero en el código de reproducción queda un int array dentro de otro y Arduino IDE me da error al compilar, el código, que de nuevo simplifico para no repetir, es:

if (selection > 0){
      led = ledArray[selection];
      melody = melodyArray[selection];
      melody_tempo = melody_tempoArray[selection]
      melody_size = melody_sizeArray[selection]
      melody_BPM = melody_BPMArray[selection]

      for (int thisNote = 0; thisNote < melody_size + 1 ; thisNote++){
         digitalWrite(led, HIGH);
         noteDuration = (float) melody_tempo[thisNote] / melody_BPM;
         tone(buzzer, melody[thisNote], noteDuration);
      }
   }

A ver si alguien amablemente me puede iluminar el camino.

Ayudaría más que indicaras cual es el error y cual es la línea en que te da. O que pusieras todo el código, porque aveces el error es algún pequeño detalle que no tiene nada que ver con la complejidad del problema. Por ahora, lo que "veo a simple vista" es que tienes declarado selection como un array y luego lo usas como una variable "normal" en if (selection > 0). Prueba a declarar selection como un simple entero, así:

int selection = 0;

Y cambia el if ya que los valores "correctos" para selection son del 0 al 2. Los arrays tiene tres elementos, pero al primero se accede mediante el índice 0, el segundo elemento es el índice 1 y el tercer elemento es el índice 2. El if deberá de ser:

if ((selection >= 0) && (selection < 3)) {

Pero repito, sin el programa completo no es fácil ver qué problemas tienes.