maubarzi
sto solo scherzando non ti arrabbiare.
era un semplice indovinello.
Scusa se sono andato fuori tema.
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
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 :D)
... ad esempio, "quante volte puoi togliere un biscotto da una scatola che contiene 100 biscotti ?"
OTTIMA RISPOSTA
lo sapevo che sapevi.
comunque sto ancora litigando con i ritmo.
Puso:
comunque sto ancora litigando con i ritmo.![]()
![]()
... e ancora non hai detto quante volte puoi togliere un biscotto da una scatola che ne contiene 100 ...
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.
Ma se fossi un ladro mi verrebbe da dire 100.
.......
oppure fino a che trovo 1 biscotto.
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 )
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 ?"
La risposta è infinite volte o meglio quante volte vuoi, basta rimetterlo a posto dopo ogni prelievo
devo ammettere il mio fallimento con la musica
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
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.
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 ).
Se "nota" è vuota (o zero, o un simbolo convenzionale) può essere una pausa, della durata specificata).
Forse questo ti mancava?..
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 ora mi taccio!