note frequencies

maubarzi

sto solo scherzando non ti arrabbiare.

era un semplice indovinello.

Scusa se sono andato fuori tema.

Perchè dici che mi sto arrabbiando?
Anche io sto scherzando, rispondevo a @Datman che diceva che stiamo andando sempre più fuori tema.

L'indovinello mi è piaciuto, ho tirato fuori anche carta e penna per fare i conti...

Domani mi ingegnerò sùi RITMI e le MELODIE.

...comunque la soluzione all'indovinello si trova in india.

La soluzione e' semplicemente cambiare sottrazione con addizione nell'esposizione :stuck_out_tongue: :smiley:

30 Euro (103) ... meno 5 (25) ... PIU i 2 che tiene la cameriera (25+2=27, cioe' 39 ... :D)

A volte conta di piu la logica della matematica (ora qualche matematico mi spara :stuck_out_tongue: :D)
... ad esempio, "quante volte puoi togliere un biscotto da una scatola che contiene 100 biscotti ?" :wink:

OTTIMA RISPOSTA :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

lo sapevo che sapevi.

comunque sto ancora litigando con i ritmo. :drooling_face: :drooling_face: :drooling_face:

Puso:
comunque sto ancora litigando con i ritmo. :drooling_face: :drooling_face: :drooling_face:

... e ancora non hai detto quante volte puoi togliere un biscotto da una scatola che ne contiene 100 ... :stuck_out_tongue: :smiley:

No, scherzi a parte, in che senso litigando con il ritmo ? ... il ritmo lo decidi tu in base alla lunghezza delle note e delle pause ... non e' che ci devi litigare, devi solo decidere tu le lunghezze ...

0 biscotti senza ulteriori informazioni. :roll_eyes: :roll_eyes: :roll_eyes:

Ma se fossi un ladro mi verrebbe da dire 100. :smiling_imp: :smiling_imp: :smiling_imp: .......
oppure fino a che trovo 1 biscotto. :smiling_imp: :smiling_imp: :smiling_imp:

Per il rimo in realtà è un problema mio, che ho il ritmo di un sasso cementato....ma ci sto studiando sù.

Be', ma lo decidi comunque tu ... cioe', sia che usi un'array contenente durate diverse, sia che tu abbia un pezzo con le note tutte uguali e magari li ti basta un for temporizzato, e' comunque un qualcosa che decidi tu, quanto debbano durare ... ... il problema semmai potresti averlo con le note stesse, nel senso di fare attenzione ad usare delle frequenze corrette e non fare accoppiamenti "discordanti", se scrivi un pezzo tu, (a meno che tu non voglia ntenzionalmente musica "atonale", ma quella e' un'altra cosa) ...

(e no, per i biscotti e' sbagliato tutto, la risposta e' una sola volta ... perche' nel momento in cui da una scatola che contiene 100 togli 1, diventano 99, quindi non hai piu una scatola che contiene 100 da cui togliere ... e' piu logica che matematica :wink: )

Puso:
...

Poi magari mi studio cosa è un MIDI.

IL MIDI non è UN MIDI, perché è IL protocollo seriale che usano tutti gli strumenti musicali per comunicare tra loro (anche le tastierine da 50 euro). Se guardi nei connettori posteriori troverai IN, OUT e THRU

Etemenanki:
"quante volte puoi togliere un biscotto da una scatola che contiene 100 biscotti ?" :wink:

La risposta è infinite volte o meglio quante volte vuoi, basta rimetterlo a posto dopo ogni prelievo :wink:

devo ammettere il mio fallimento con la musica :sob: :sob: :sob:

avevo creato questo(fra mille tentativi),ma escono solo suoni strani.

String Nota="";
int Freqenza=0;
int Periodo=0;
int Time_Tone=0;
int Time_NoTone=0;
unsigned long Time_BUZZER_1=millis();

const byte Accordatura_1  =262;//C4-4DO
const byte Accordatura_2  =294;//D4-4RE
const byte Accordatura_3  =330;//E4-4MI
const byte Accordatura_4  =349;//F4-4FA
const byte Accordatura_5  =392;//G4-4SOL
const byte Accordatura_6  =440;//A4-4LA
const byte Accordatura_7  =494;//B4-4SI
const byte Accordatura_8  =277;
const byte Accordatura_9  =311;
const byte Accordatura_10 =370;
const byte Accordatura_11 =415;
const byte Accordatura_12 =466;

String Pirati_ai_Caraibi[] ={
                             "7MI","7SOL","7LA","7LA","",  "7LA","7SI","8DO","8DO","",  "8DO","8RE","7SI","7SI","",  "7LA","7SOL","7LA","",
                             "7MI","7SOL","7LA","7LA","",  "7LA","7SI","8DO","8DO","",  "8DO","8RE","7SI","7SI","",  "7LA","7SOL","7LA","",
                             
                             "7MI","7SOL","7LA","7LA","",  "7LA","8DO","8RE","8RE","",  "8RE","8MI","8FA","8FA","",  "8MI","8RE","8MI","7LA","",
                                                                                       
                             "7LA","7SI","8DO","8DO","",   "8DO","8MI","7LA","",        "7LA","8DO","7SI","7SI","",  "8DO","7LA","7SI","",
                             
                             "8MI","","","8FA","","",      "8MI","8MI","","8SOL","","8MI","8RE","","",
                             
                             "8RE","","","8DO","","",      "7SI","8DO","","7SI","","7LA"
                            };
                            
int Time_Pirati_ai_Caraibi[] ={
                               125,125,250,125,125,  125,125,250,125,125,  125,125,250,125,125,  125,125,375,125,
                               125,125,250,125,125,  125,125,250,125,125,  125,125,250,125,125,  125,125,375,125,
                           
                               125,125,250,125,125,  125,125,250,125,125,  125,125,250,125,125,  125,125,125,250,125,
                          
                               125,125,250,125,125,  250,125,250,125,      125,125,250,125,125,  125,125,375,375,
                          
                               250,125,375,250,125,375,  125,125,125,125,125,125,125,125,
                               375,250,125,375,250,125,  375,125,125,125,125,125,500
                              };
                            




int N_Nota=0;
int N_Tone_1=0;

void setup()
{
 Serial.begin(9600);
  pinMode(3,OUTPUT);
}


      

 void FREQ_BUZZER() 
{
 if(Nota=="0DO")  {Freqenza=Accordatura_1  /16;} 
 if(Nota=="0RE")  {Freqenza=Accordatura_2  /16;} 
 if(Nota=="0MI")  {Freqenza=Accordatura_3  /16;}
 if(Nota=="0FA")  {Freqenza=Accordatura_4  /16;}
 if(Nota=="0SOL") {Freqenza=Accordatura_5  /16;}
 if(Nota=="0LA")  {Freqenza=Accordatura_6  /16;}
 if(Nota=="0SI")  {Freqenza=Accordatura_7  /16;}
 if(Nota=="0DO#") {Freqenza=Accordatura_8  /16;} 
 if(Nota=="0RE#") {Freqenza=Accordatura_9  /16;} 
 if(Nota=="0FA#") {Freqenza=Accordatura_10 /16;}
 if(Nota=="0SOL#"){Freqenza=Accordatura_11 /16;}
 if(Nota=="0LA#") {Freqenza=Accordatura_12 /16;}
  
 if(Nota=="1DO")  {Freqenza=Accordatura_1   /8;} 
 if(Nota=="1RE")  {Freqenza=Accordatura_2   /8;} 
 if(Nota=="1MI")  {Freqenza=Accordatura_3   /8;}
 if(Nota=="1FA")  {Freqenza=Accordatura_4   /8;}
 if(Nota=="1SOL") {Freqenza=Accordatura_5   /8;}
 if(Nota=="1LA")  {Freqenza=Accordatura_6   /8;}
 if(Nota=="1SI")  {Freqenza=Accordatura_7   /8;}
 if(Nota=="1DO#") {Freqenza=Accordatura_8   /8;} 
 if(Nota=="1RE#") {Freqenza=Accordatura_9   /8;} 
 if(Nota=="1FA#") {Freqenza=Accordatura_10  /8;}
 if(Nota=="1SOL#"){Freqenza=Accordatura_11  /8;}
 if(Nota=="1LA#") {Freqenza=Accordatura_12  /8;}

 if(Nota=="2DO")  {Freqenza=Accordatura_1   /4;} 
 if(Nota=="2RE")  {Freqenza=Accordatura_2   /4;} 
 if(Nota=="2MI")  {Freqenza=Accordatura_3   /4;}
 if(Nota=="2FA")  {Freqenza=Accordatura_4   /4;}
 if(Nota=="2SOL") {Freqenza=Accordatura_5   /4;}
 if(Nota=="2LA")  {Freqenza=Accordatura_6   /4;}
 if(Nota=="2SI")  {Freqenza=Accordatura_7   /4;}
 if(Nota=="2DO#") {Freqenza=Accordatura_8   /4;} 
 if(Nota=="2RE#") {Freqenza=Accordatura_9   /4;} 
 if(Nota=="2FA#") {Freqenza=Accordatura_10  /4;}
 if(Nota=="2SOL#"){Freqenza=Accordatura_11  /4;}
 if(Nota=="2LA#") {Freqenza=Accordatura_12  /4;} 
 
 if(Nota=="3DO")  {Freqenza=Accordatura_1   /2;} 
 if(Nota=="3RE")  {Freqenza=Accordatura_2   /2;} 
 if(Nota=="3MI")  {Freqenza=Accordatura_3   /2;}
 if(Nota=="3FA")  {Freqenza=Accordatura_4   /2;}
 if(Nota=="3SOL") {Freqenza=Accordatura_5   /2;}
 if(Nota=="3LA")  {Freqenza=Accordatura_6   /2;}
 if(Nota=="3SI")  {Freqenza=Accordatura_7   /2;}
 if(Nota=="3DO#") {Freqenza=Accordatura_8   /2;} 
 if(Nota=="3RE#") {Freqenza=Accordatura_9   /2;} 
 if(Nota=="3FA#") {Freqenza=Accordatura_10  /2;}
 if(Nota=="3SOL#"){Freqenza=Accordatura_11  /2;}
 if(Nota=="3LA#") {Freqenza=Accordatura_12  /2;} 

 if(Nota=="4DO")  {Freqenza=Accordatura_1; } 
 if(Nota=="4RE")  {Freqenza=Accordatura_2; } 
 if(Nota=="4MI")  {Freqenza=Accordatura_3; }
 if(Nota=="4FA")  {Freqenza=Accordatura_4; }
 if(Nota=="4SOL") {Freqenza=Accordatura_5; }
 if(Nota=="4LA")  {Freqenza=Accordatura_6; }
 if(Nota=="4SI")  {Freqenza=Accordatura_7; }
 if(Nota=="4DO#") {Freqenza=Accordatura_8; } 
 if(Nota=="4RE#") {Freqenza=Accordatura_9; } 
 if(Nota=="4FA#") {Freqenza=Accordatura_10;}
 if(Nota=="4SOL#"){Freqenza=Accordatura_11;}
 if(Nota=="4LA#") {Freqenza=Accordatura_12;}

 if(Nota=="5DO")  {Freqenza=Accordatura_1   *2;} 
 if(Nota=="5RE")  {Freqenza=Accordatura_2   *2;} 
 if(Nota=="5MI")  {Freqenza=Accordatura_3   *2;}
 if(Nota=="5FA")  {Freqenza=Accordatura_4   *2;}
 if(Nota=="5SOL") {Freqenza=Accordatura_5   *2;}
 if(Nota=="5LA")  {Freqenza=Accordatura_6   *2;}
 if(Nota=="5SI")  {Freqenza=Accordatura_7   *2;}
 if(Nota=="5DO#") {Freqenza=Accordatura_8   *2;} 
 if(Nota=="5RE#") {Freqenza=Accordatura_9   *2;} 
 if(Nota=="5FA#") {Freqenza=Accordatura_10  *2;}
 if(Nota=="5SOL#"){Freqenza=Accordatura_11  *2;}
 if(Nota=="5LA#") {Freqenza=Accordatura_12  *2;} 

 if(Nota=="6DO")  {Freqenza=Accordatura_1   *4;} 
 if(Nota=="6RE")  {Freqenza=Accordatura_2   *4;} 
 if(Nota=="6MI")  {Freqenza=Accordatura_3   *4;}
 if(Nota=="6FA")  {Freqenza=Accordatura_4   *4;}
 if(Nota=="6SOL") {Freqenza=Accordatura_5   *4;}
 if(Nota=="6LA")  {Freqenza=Accordatura_6   *4;}
 if(Nota=="6SI")  {Freqenza=Accordatura_7   *4;}
 if(Nota=="6DO#") {Freqenza=Accordatura_8   *4;} 
 if(Nota=="6RE#") {Freqenza=Accordatura_9   *4;} 
 if(Nota=="6FA#") {Freqenza=Accordatura_10  *4;}
 if(Nota=="6SOL#"){Freqenza=Accordatura_11  *4;}
 if(Nota=="6LA#") {Freqenza=Accordatura_12  *4;} 

 if(Nota=="7DO")  {Freqenza=Accordatura_1   *8;} 
 if(Nota=="7RE")  {Freqenza=Accordatura_2   *8;} 
 if(Nota=="7MI")  {Freqenza=Accordatura_3   *8;}
 if(Nota=="7FA")  {Freqenza=Accordatura_4   *8;}
 if(Nota=="7SOL") {Freqenza=Accordatura_5   *8;}
 if(Nota=="7LA")  {Freqenza=Accordatura_6   *8;}
 if(Nota=="7SI")  {Freqenza=Accordatura_7   *8;}
 if(Nota=="7DO#") {Freqenza=Accordatura_8   *8;} 
 if(Nota=="7RE#") {Freqenza=Accordatura_9   *8;} 
 if(Nota=="7FA#") {Freqenza=Accordatura_10  *8;}
 if(Nota=="7SOL#"){Freqenza=Accordatura_11  *8;}
 if(Nota=="7LA#") {Freqenza=Accordatura_12  *8;} 
 
 if(Nota=="8DO")  {Freqenza=Accordatura_1  *16;} 
 if(Nota=="8RE")  {Freqenza=Accordatura_2  *16;} 
 if(Nota=="8MI")  {Freqenza=Accordatura_3  *16;}
 if(Nota=="8FA")  {Freqenza=Accordatura_4  *16;}
 if(Nota=="8SOL") {Freqenza=Accordatura_5  *16;}
 if(Nota=="8LA")  {Freqenza=Accordatura_6  *16;}
 if(Nota=="8SI")  {Freqenza=Accordatura_7  *16;}
 if(Nota=="8DO#") {Freqenza=Accordatura_8  *16;} 
 if(Nota=="8RE#") {Freqenza=Accordatura_9  *16;} 
 if(Nota=="8FA#") {Freqenza=Accordatura_10 *16;}
 if(Nota=="8SOL#"){Freqenza=Accordatura_11 *16;}
 if(Nota=="8LA#") {Freqenza=Accordatura_12 *16;} 
 
} 


void SUPER_MARIO() 
{
 Nota=       Pirati_ai_Caraibi[N_Nota];
 Time_Tone=  Time_Pirati_ai_Caraibi[N_Tone_1];
 
 Periodo=Time_Tone*1.5;
 FREQ_BUZZER();

 tone(3,Freqenza,Periodo);
 delay(Periodo);
 N_Nota++;
 N_Tone_1++;
      
 if(N_Nota==104){N_Nota=0;}
 if(N_Tone_1==104){N_Tone_1=0;}
}

void loop() 
{
 

 for(int i=0;i<104;i++)
    {
     Periodo = Time_Pirati_ai_Caraibi[i] * 1.5;
     Nota = Pirati_ai_Caraibi[i];
     FREQ_BUZZER();
     tone(3,Freqenza,Periodo);
     delay(Periodo);
    }
          
    
 
}

credevo fosse un problema o delle note trovate o del mio buzzer o del mio orecchio :confused: :confused: :confused:

ed avevo già invocato metà dei santi del calendario >:( >:(

poi mio malgrado ho caricato un COPIA INCOLLA da uno schetc gia fatto...e funziona benissimo.

const int buzzer = 3; //Define pin 13, can use other PWM pins  (5,6 or 9)
                       //Note pins 3 and 11 can't be used when using the tone function in Arduino Uno
const int songspeed = 1.5; //Change to 2 for a slower version of the song, the bigger the number the slower the song
//*****************************************
#define NOTE_C4  262   //Defining note frequency
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_G4  392
#define NOTE_A4  440
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_D5  587
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784
#define NOTE_A5  880
#define NOTE_B5  988
//*****************************************
int notes[] = {       //Note of the song, 0 is a rest/pulse
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0, 
   NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
   NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
   
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_D5, NOTE_E5, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
   NOTE_C5, NOTE_A4, NOTE_B4, 0,

   NOTE_A4, NOTE_A4, 
   //Repeat of first part
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,

   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0, 
   NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
   NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
   
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_D5, NOTE_E5, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
   NOTE_C5, NOTE_A4, NOTE_B4, 0,
   //End of Repeat

   NOTE_E5, 0, 0, NOTE_F5, 0, 0,
   NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
   NOTE_D5, 0, 0, NOTE_C5, 0, 0,
   NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,

   NOTE_E5, 0, 0, NOTE_F5, 0, 0,
   NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
   NOTE_D5, 0, 0, NOTE_C5, 0, 0,
   NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
};
//*****************************************
int duration[] = {         //duration of each note (in ms) Quarter Note is set to 250 ms
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 125, 250, 125,

  125, 125, 250, 125, 125, 
  250, 125, 250, 125, 
  125, 125, 250, 125, 125,
  125, 125, 375, 375,

  250, 125,
  //Rpeat of First Part
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 125, 250, 125,

  125, 125, 250, 125, 125, 
  250, 125, 250, 125, 
  125, 125, 250, 125, 125,
  125, 125, 375, 375,
  //End of Repeat
  
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 125, 125, 125, 375,
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 500,

  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 125, 125, 125, 375,
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 500
};

void setup() {
  
}

void loop() {
for (int i=0;i<203;i++){              //203 is the total number of music notes in the song
  int wait = duration[i] * songspeed;
  tone(buzzer,notes[i],wait);          //tone(pin,frequency,duration)
  delay(wait);}                        //delay is used so it doesn't go to the next loop before tone is finished playing
  //You can click reset on Arduino to replay the song
}

e funziona benissimo....e sono arrivati gli altri santi del calendario.

Ma la cosa che mi da fastidio è che non capisco dove sbaglio. :confused: :confused: :sob: :sob:

steve-cr:
IL MIDI non è UN MIDI, perché è IL protocollo seriale che usano tutti gli strumenti musicali per comunicare tra loro (anche le tastierine da 50 euro). Se guardi nei connettori posteriori troverai IN, OUT e THRU

Nel suo caso intende (perché l'ho portato io sull'argomento) i "FILE MIDI". Se vuoile usare quelli, deve prendersi una qualche libreria per la loro manipolazione ed estrarre dai file la sola traccia di interesse. Oppure, per semplificare, usare un qualche programma su PC che prendendo una traccia di un file MIDI possa farne una esportazione delle sole note in un qualche formato, possibilmente gestibile in modo semplice su Arduino.

Puso:
poi mio malgrado ho caricato un COPIA INCOLLA da uno schetc gia fatto...e funziona benissimo.

Hai postato mentre scrivevo proprio questo...

Generalmente per un brano monofonico basta definire coppie nota-durata dove "nota" è il codice della nota (sarebbe preferibile un valore intero più che una stringa, ma va bene tutto) e "durata" la durata della nota in millisecondi (bastano anche centesimi di secondo, se non ci sono melodie molto rapide, diciamo per un classico 120 battute al minuto, se le note più brevi sono le semicrome, 1/16 di battuta, avremo durata di 120/60/16=125 millisecondi che se anche li si approssimasse a 12 centesimi non credo che Nuti storcerebbe il naso :slight_smile: ).

Se "nota" è vuota (o zero, o un simbolo convenzionale) può essere una pausa, della durata specificata).
Forse questo ti mancava?.. :wink:

quindi se ho capito bene il mio errore sta nella variabile " String Nota"??

;D ;D ;D ;D :-* :-* :-*

grazie docdoc ho corretto il mio errore (con piccole modifiche ovviamente rispetto ai vari esempi).

che ignorante sono stato,,,,,,se chiedo ad una String di avanzare, questa se non ho capito male avanza in binario sul codice ASCII...giusto??

comunque metto lo schetc modificato ed accorciato, che mi dovrebbe permettere una volta tradotto un spartito (ovviamente copiato siccome non sono la Mozart) di far suonare uno o più buzzer con ritmi e note diverse contemporaneamente.

Quì la prima parte quella accorciata,,,,la scelta dei nomi e le moltiplicazioni,,,,li ho preferiti per una rapida scrittura e visualizzazione,,,,,,,,
(ovviamente per capirli bisogna avere almeno la 3 Media ed aver fatto musica alle Medie).

//BUZZER_1
int N_Nota=0;
int N_Tone=0;

int Freqenza=0;
int Periodo=0;

unsigned long Time_BUZZER_1=millis();

#define DO   262//C4
#define DOd  277//....d...per Diesis...se mettevo il simbolo..# mi da errore
#define RE   294//D4
#define REd  311//....non ricordo a quale lettera\numero corrisponde...ci devo riguardare
#define MI   330//E4
#define FA   349//F4
#define FAd  370//
#define SOL  392//G4
#define SOLd 415//
#define LA   440//A4
#define LAd  466//
#define SI   494//B4


int Song_Pirati_ai_Caraibi[] ={
                               MI*8, SOL*8, LA*8, LA*8, 0,     LA*8, SI*8, DO*16, DO*16, 0,    DO*16, RE*16, SI*8, SI*8, 0,     LA*8, SOL*8, LA*8, 0,
                               MI*8, SOL*8, LA*8, LA*8, 0,     LA*8, SI*8, DO*16, DO*16, 0,    DO*16, RE*16, SI*8, SI*8, 0,     LA*8, SOL*8, LA*8, 0,
                             
                               MI*8, SOL*8, LA*8 ,LA*8, 0,     LA*8, DO*16, RE*16, RE*16,0,    RE*16, MI*16, FA*16, FA*16, 0,   MI*16, RE*16, MI*16, LA*8, 0,
                                                                                       
                               LA*8, SI*8, DO*16, DO*16, 0,    DO*16, MI*16, LA*8, 0,          LA*8, DO*16, SI*8, SI*8, 0,      DO*16, LA*8, SI*8, 0,
                             
                               MI*16 ,0, 0, FA*16, 0 ,0,       MI*16, MI*16, 0, SOL*16, 0, MI*16, RE*16, 0, 0,
                             
                               RE*16, 0, 0, DO*16 ,0, 0,       SI*8, DO*16, 0, SI*8 ,0, LA*8
                              };

int Time_Pirati_ai_Caraibi[] ={
                               125,125,250,125,125,            125,125,250,125,125,            125,125,250,125,125,             125,125,375,125,
                               125,125,250,125,125,            125,125,250,125,125,            125,125,250,125,125,             125,125,375,125,
                           
                               125,125,250,125,125,            125,125,250,125,125,            125,125,250,125,125,             125,125,125,250,125,
                          
                               125,125,250,125,125,            250,125,250,125,                125,125,250,125,125,             125,125,375,375,
                          
                               250,125,375,250,125,375,        125,125,125,125,125,125,125,125,
                               
                               375,250,125,375,250,125,        375,125,125,125,125,125,500
                              };

Qui la seconda parte con un piccolo trucchetto per cambiare note è tempi cambiando un solo parametro.
Ovviamente devo modificare il delay() con millis(),,,,,ma qui faccio presto.

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

void PIRATI_AI_CARAIBI() 
{
 Freqenza= Song_Pirati_ai_Caraibi[N_Nota]/8;//qui sta il trucchetto.....moltiplico oppure divido la frequenza 
 Periodo=  Time_Pirati_ai_Caraibi[N_Tone]*1;//posso farlo anche con i tempi
 
 tone(3,Freqenza,Periodo);

 delay(Periodo*1);//questo devo sostituirlo col millis()

 N_Nota++;
 N_Tone++;
      
 if(N_Nota==103){N_Nota=0;}
 if(N_Tone==103){N_Tone=0;}
}

void loop() 
{
  PIRATI_AI_CARAIBI() ;
}

Mi sento già un Direttore d'Orchestra 8) 8) 8) 8)

Potresti anche alternare nota e durata.

Per la nota la prima cifra potrebbe indicare la nota musicale (1=DO; 2=RE; 3=MI; ... 7=SI), la seconda indicare l'alterazione (0=senza alterazione; 1=#) e la terza indicare l'ottava. Ad esempio: 214=DO#4; 405=FA5.

Per la durata, potresti fare:
44=4/4
24=2/4
14=1/4
18=1/8
116=1/16
132=1/32

Quindi scrivere qualcosa del tipo:

int Pirati_ai_Caraibi[] ={304, 14, 504, 14, 604, 24, 604, 14, ... ... ...}

Naturalmente dovrai leggere due valori consecutivi per volta, incrementando n a passi di 2:

Nota=int Pirati_ai_Caraibi[n]
Durata=int Pirati_ai_Caraibi[n+1]

Se preferisci, per i tempi puoi usare un altro codice, ancora più semplice e intuitivo:
4=4/4
2=2/4
1=1/4
8=1/8
16=1/16
32=1/32

e verrebbe:

int Pirati_ai_Caraibi[] ={304, 1, 504, 1, 604, 2, 604, 1, ... ... ...}

Se metti l'alterazione per prima, limiti i valori a meno di 200 e puoi usare byte, dimezzando(!) l'occupazione di memoria (beh... riducendola a 2/3, se contiamo anche il tempo):

byte Pirati_ai_Caraibi[] ={034, 1, 054, 1, 064, 2, 064, 1, ... ... ...}

datman

qui vai sul complicato...(per me).......ho capito cosa intendi...(forse)....ma se ho capito farei comunque fatica a decifrare uno spartito qualsiasi,,,,,anche quelli non gia confezionati per un buzzer.

ho trovato piu comodo scrivere le note base e moltiplicarle per gli ottavi.
poi nel loop
giocare con divisione e moltiplicazione...sia per le note, che per i tempi.

Questo ..(spero)..dovrebbe darmi la possibilità di creare una sorta di orchestrina con vari buzzer...(ovviamente sostituendo delay() con millis()).

Ma Pirati_ai_Caraibi è il cinepanettone di quest'anno con Boldi e De Sica che festeggiano le feste ai caraibi?

Scusare, non ho resistito :wink: ora mi taccio!