/*
Ho riorganizzato il codice dividendolo in quattro funzioni principali:

- playMainTheme(): Suona il tema principale iniziale
- playBridge(): Suona la parte di transizione
- playVariation(): Suona una variazione del tema principale
- playFinale(): Suona la parte finale

Ogni funzione è responsabile di una sezione specifica della melodia. 
Nel loop() principale, queste funzioni vengono chiamate in sequenza con brevi pause tra una sezione e l'altra.

Ho anche aggiunto più note alla definizione iniziale e alcuni nuovi valori per la durata delle note (come halfNote).
Puoi facilmente modificare:

- La durata delle note cambiando i valori delle costanti all'inizio
- Le pause tra le sezioni modificando i delay() nel loop()
- Il pin del buzzer cambiando buzzerPin
*/

// Pin del buzzer
const int buzzerPin = 27;

// Definizione delle note
#define NOTE_E5  659
#define NOTE_DS5 622
#define NOTE_E4  330
#define NOTE_DS4 311
#define NOTE_B4  494
#define NOTE_D5  587
#define NOTE_C5  523
#define NOTE_A4  440
#define NOTE_C4  262
#define NOTE_G4  392
#define NOTE_F4  349
#define NOTE_A3  220

// Durata delle note
const int quarterNote = 200*4;  //semininima
const int eighthNote = 100*4;   //croma
const int sixteenthNote = 50*4; // semicroma
const int halfNote = 400*4;     // minima

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

// Prima parte della melodia (tema principale)
void playMainTheme() {
  // Prima misura
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_DS5, sixteenthNote);
  delay(sixteenthNote);
  
  // Seconda misura
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_DS5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_B4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_D5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_C5, sixteenthNote);
  delay(sixteenthNote);
  
  // Terza misura
  tone(buzzerPin, NOTE_A4, quarterNote);
  delay(quarterNote);
}

// Seconda parte della melodia (bridge)
void playBridge() {
  tone(buzzerPin, NOTE_C4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_A4, sixteenthNote);
  delay(sixteenthNote);
  
  tone(buzzerPin, NOTE_B4, quarterNote);
  delay(quarterNote);
  
  tone(buzzerPin, NOTE_E4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_G4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_B4, sixteenthNote);
  delay(sixteenthNote);
  
  tone(buzzerPin, NOTE_C5, quarterNote);
  delay(quarterNote);
}

// Terza parte della melodia (variazione)
void playVariation() {
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  
  tone(buzzerPin, NOTE_DS5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_DS5, sixteenthNote);
  delay(sixteenthNote);
  
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_DS5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_E5, sixteenthNote);
  delay(sixteenthNote);
  
  tone(buzzerPin, NOTE_B4, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_D5, sixteenthNote);
  delay(sixteenthNote);
  tone(buzzerPin, NOTE_C5, sixteenthNote);
  delay(sixteenthNote);
}

// Quarta parte della melodia (finale)
void playFinale() {
  tone(buzzerPin, NOTE_A4, eighthNote);
  delay(eighthNote);
  tone(buzzerPin, NOTE_C4, eighthNote);
  delay(eighthNote);
  tone(buzzerPin, NOTE_E4, eighthNote);
  delay(eighthNote);
  tone(buzzerPin, NOTE_A4, halfNote);
  delay(halfNote);
}

void loop() {
  // Suona la composizione completa
  playMainTheme();
  delay(100);
  playBridge();
  delay(100);
  playVariation();
  delay(100);
  playFinale();
  
  // Pausa prima di ripetere
  delay(1000);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
bz1:1
bz1:2
bz2:1
bz2:2