Hallo,
ich habe ein paar Tests mit Deinem Code gemacht und diesen soweit verstanden.
Leider konnte ich mein Problem bisher nicht lösen, konnte aber den Fehlerbereich eingrenzen.
Ich habe mit dieser Zeile ein Problem:
index_value = pgm_read_byte_near(&(melodies[current_melody][read_index]));
Wenn ich anstatt current_melody einfach eine 1 schreibe, wird der Code unter Verwendung von melody_01 wie erwartet durchlaufen.
Scheinbar gibt es also ein Problem mit der Variablen current_melody, von der ich nach Tests an mehreren Stellen definitiv sagen kann dass sie den Wert 1 hat.
current_melody hatte ich ursprünglich als byte definiert. Jedoch funktioniert es auch als int oder unsigned int nicht.
Gruß Chris