... Et comme la musique est le plaisir de plusieurs personnes, la programmation aussi elle a ses propres adorateurs, et comme il y a plusieurs geeks qui aiment programmer et qui font de la musique , FENEC Team a pensé de joindre l'utile à l'agréable en vous proposant de faire des composition musicales sous l'ancien compilateur Pascal (Turbo Pascal) qui compile les programment en MS-DOS. C'est vrai qu'en essayant de composer de la musique avec du code PASCAL n'est pas avancé tel que la composition sur Fruity Loop ou sur Qbase mais ses logiciels sont faits à base des algorithmes similaires sous d'autres langages.
- En suivant cette publication purement FENECCIENNE :) vous allez faire des mélodies qui vont être jouées sur le baffle qui fait le bip de démarrage (le baffle intégré dans l'ordinateur).
- Avant de commencer dans le code source on va vous fournir quelques informations que vous pouvez considérer comme culture générale:
"TOUT SON QU'ON ÉCOUTÉ A SA PROPRE FRÉQUENCE" , oui et elle (fréquence) est mesurée en Dimension Inverse du temps et son unité est (s-1) ou (1⁄s) dite Hertz.
Dans ce programme on va apprendre à écouter une fréquence quelconque avec le turbo pascal .La syntaxe est très simple :
BEGIN
Sound (Frequence);
END;
Mais attendez , il faut pas y aller si vite, il faut d'abord savoir qu'elle se trouve dans la bibliothèque appelé CRT qui est dédiée avec le Compilateur. Pour l'appeler il faut utiliser uses avant touts les implantations du programme. et sachez que n'importe quel fréquence est jouée suivant un temps qu'on doit définir en utilisant la syntaxe (Procédure) suivante DELAY (Duree); et il faut annoncer la fin de tout son en utilisant la procédure NOSOUND;
Donc la syntaxe finale pour jouer une fréquence est la suivante:
BEGIN
Sound (Frequence);
Delay (temps);
NoSound;
END;
Les Variables Frequence et temps sont de type integer et pour la variable temps elle vaut 1000 pour représenter 1 Seconde donc si vous mettez 500 le son va être jouer sur un temps de une demi seconde.
Pour les fréquences des notes musicales voilà un tableau simplifié en valeur entières:
- On vous conseil d'utiliser des procédures pour jouer le solfège facilement On va vous mettre un peut de code source d'un Programme Complet et simple pour la Composition d'une petite Mélodie.
_________________________________________________________
Program Solfege;
Uses CRT; //Bibliotheque contenant la procédure Sound
Procedure Doo; // Procedure qui joue la note Do. (Do est un mot réservé, utilisez Do1 ou Doo)
Begin
Sound (262); // Fréquence de la Note Do
Delay (250); // 1000 vaut 1 seconde - 250 vaut 1/4 de secondes
NoSound; // Arrêt obligatoire du son;
End;
Procedure Re;
Begin
Sound (294); Delay (250); NoSound;
End;
Procedure Mi;
Begin
Sound (330); Delay (250); NoSound;
End;
Procedure Fa;
Begin
Sound (349); Delay (250); NoSound;
End;
Procedure Sol;
Begin
Sound (392); Delay (250); NoSound;
End;
Procedure La;
Begin
Sound (440); Delay (250); NoSound;
End;
Procedure Si;
Begin
Sound (494); Delay (250); NoSound;
End;
Begin
Writeln ('Cliquez sur entrer pour Commencer la mélodie "My heart will go on (Titanic)" ');
ReadLn;
Fa; Sol; La; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo;
Writeln ('Fin de la mélodie. c''est à titre d''essay' );
Readln;
End.
_________________________________________________________
D'accord, D'accord elle respecte pas les temps d'arrêt , parce que le temps est rétréci qu'on l'a pas optimisé c'est juste affaire de gestion de délai , il faut ajouter un paramètre temps comme variable locale dans les procédure des notes exemple avec la note Doo:
Procedure Doo (T: integer);
Begin
Sound (262);
while T<=0 do T:=T+500 // On ajoute 1/2 seconde on cas de faute lors de la saisie de délai
Delay (T); // 1000 vaut 1 seconde
NoSound;
End;
- Avant de commencer dans le code source on va vous fournir quelques informations que vous pouvez considérer comme culture générale:
"TOUT SON QU'ON ÉCOUTÉ A SA PROPRE FRÉQUENCE" , oui et elle (fréquence) est mesurée en Dimension Inverse du temps et son unité est (s-1) ou (1⁄s) dite Hertz.
Dans ce programme on va apprendre à écouter une fréquence quelconque avec le turbo pascal .La syntaxe est très simple :
BEGIN
Sound (Frequence);
END;
Mais attendez , il faut pas y aller si vite, il faut d'abord savoir qu'elle se trouve dans la bibliothèque appelé CRT qui est dédiée avec le Compilateur. Pour l'appeler il faut utiliser uses avant touts les implantations du programme. et sachez que n'importe quel fréquence est jouée suivant un temps qu'on doit définir en utilisant la syntaxe (Procédure) suivante DELAY (Duree); et il faut annoncer la fin de tout son en utilisant la procédure NOSOUND;
Donc la syntaxe finale pour jouer une fréquence est la suivante:
BEGIN
Sound (Frequence);
Delay (temps);
NoSound;
END;
Les Variables Frequence et temps sont de type integer et pour la variable temps elle vaut 1000 pour représenter 1 Seconde donc si vous mettez 500 le son va être jouer sur un temps de une demi seconde.
Pour les fréquences des notes musicales voilà un tableau simplifié en valeur entières:
NOTE | Octaves | |||
---|---|---|---|---|
1 | 2 | 3 | 4 | |
Do | 131 | 262 | 523 | 1047 |
Ré | 147 | 294 | 587 | 1175 |
Mi | 165 | 330 | 659 | 1319 |
Fa | 176 | 349 | 698 | 1397 |
Sol | 196 | 392 | 784 | 1568 |
La | 220 | 440 | 880 | 1720 |
Si | 247 | 494 | 988 | 1976 |
- On vous conseil d'utiliser des procédures pour jouer le solfège facilement On va vous mettre un peut de code source d'un Programme Complet et simple pour la Composition d'une petite Mélodie.
_________________________________________________________
Program Solfege;
Uses CRT; //Bibliotheque contenant la procédure Sound
Procedure Doo; // Procedure qui joue la note Do. (Do est un mot réservé, utilisez Do1 ou Doo)
Begin
Sound (262); // Fréquence de la Note Do
Delay (250); // 1000 vaut 1 seconde - 250 vaut 1/4 de secondes
NoSound; // Arrêt obligatoire du son;
End;
Procedure Re;
Begin
Sound (294); Delay (250); NoSound;
End;
Procedure Mi;
Begin
Sound (330); Delay (250); NoSound;
End;
Procedure Fa;
Begin
Sound (349); Delay (250); NoSound;
End;
Procedure Sol;
Begin
Sound (392); Delay (250); NoSound;
End;
Procedure La;
Begin
Sound (440); Delay (250); NoSound;
End;
Procedure Si;
Begin
Sound (494); Delay (250); NoSound;
End;
Begin
Writeln ('Cliquez sur entrer pour Commencer la mélodie "My heart will go on (Titanic)" ');
ReadLn;
Fa; Sol; La; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo;
Writeln ('Fin de la mélodie. c''est à titre d''essay' );
Readln;
End.
_________________________________________________________
D'accord, D'accord elle respecte pas les temps d'arrêt , parce que le temps est rétréci qu'on l'a pas optimisé c'est juste affaire de gestion de délai , il faut ajouter un paramètre temps comme variable locale dans les procédure des notes exemple avec la note Doo:
Procedure Doo (T: integer);
Begin
Sound (262);
while T<=0 do T:=T+500 // On ajoute 1/2 seconde on cas de faute lors de la saisie de délai
Delay (T); // 1000 vaut 1 seconde
NoSound;
End;
Une idée qui est venue maintenant, pourquoi pas ajouter un petit contrôleur de durée de la mélodie, c'est très facil. On va essayer en retouchant le code précédent:
__________________________________________________________
Program Solfege;
USES CRT; //Bibliotheque contenant la procédure Sound
VAR i,sec,rest:integer;
Procedure Doo; // Procedure qui joue la note Do. (Do est un mot réservé, utilisez Do1 ou Doo)
Begin
Sound (262); // Fréquence de la Note Do
Delay (250); // 1000 vaut 1 seconde - 250 vaut 1/4 de secondes
NoSound; // Arrêt obligatoire du son;
inc(i); // équivalent à i:=i+1
End;
Procedure Re;
Begin
Sound (294); Delay (250); NoSound;
inc(i);
End;
Procedure Mi;
Begin
Sound (330); Delay (250); NoSound;
inc(i);
End;
Procedure Fa;
Begin
Sound (349); Delay (250); NoSound;
inc(i);
End;
Procedure Sol;
Begin
Sound (392); Delay (250); NoSound;
inc(i);
End;
Procedure La;
Begin
Sound (440); Delay (250); NoSound;
inc(i);
End;
Procedure Si;
Begin
Sound (494); Delay (250); NoSound;
inc(i);
End;
Begin
Writeln ('Cliquez sur entrer pour Commencer la mélodie "My heart will go on (Titanic)" ');
ReadLn;
i:=0; // On initialise le temps de début à 0;
Fa; Sol; La; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo;
Writeln ('Fin de la mélodie.' );
sec:= i div 4; rest:= i mod 4;
Writeln ('La mélodie a durée : ',sec,' Secondes et ',rest,' 10 èmes de secondes');
Readln;
End.
USES CRT; //Bibliotheque contenant la procédure Sound
VAR i,sec,rest:integer;
Procedure Doo; // Procedure qui joue la note Do. (Do est un mot réservé, utilisez Do1 ou Doo)
Begin
Sound (262); // Fréquence de la Note Do
Delay (250); // 1000 vaut 1 seconde - 250 vaut 1/4 de secondes
NoSound; // Arrêt obligatoire du son;
inc(i); // équivalent à i:=i+1
End;
Procedure Re;
Begin
Sound (294); Delay (250); NoSound;
inc(i);
End;
Procedure Mi;
Begin
Sound (330); Delay (250); NoSound;
inc(i);
End;
Procedure Fa;
Begin
Sound (349); Delay (250); NoSound;
inc(i);
End;
Procedure Sol;
Begin
Sound (392); Delay (250); NoSound;
inc(i);
End;
Procedure La;
Begin
Sound (440); Delay (250); NoSound;
inc(i);
End;
Procedure Si;
Begin
Sound (494); Delay (250); NoSound;
inc(i);
End;
Begin
Writeln ('Cliquez sur entrer pour Commencer la mélodie "My heart will go on (Titanic)" ');
ReadLn;
i:=0; // On initialise le temps de début à 0;
Fa; Sol; La; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo; La; Doo; Doo; Re; Doo; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Fa; Fa; Fa; Mi; Fa; Fa; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Re; Doo;
Fa; Sol; Doo; Doo; Si; La; Sol; La; Si; La; Sol; Fa; Mi; Fa; Mi; Mi; Fa; Sol; La; Si; La; Sol;
Fa; Sol; La; Sol; Fa; Sol; Doo; Si; La; Fa; Re; Doo;
Mi; Sol; Sol; La; Si; La; Sol; Fa; Sol; Doo;
Writeln ('Fin de la mélodie.' );
sec:= i div 4; rest:= i mod 4;
Writeln ('La mélodie a durée : ',sec,' Secondes et ',rest,' 10 èmes de secondes');
Readln;
End.
__________________________________________________________
le tableau détaillé des fréquences de notes musical vous pouver le trouver dans wikipédia juste tapez Note musical, on est fatigué après ce long article :) Désolé.
- Article est rédigé par Fenec Team.
Je vais me faire une jolie berceuse :)
RépondreSupprimerlooool .. mais avec le son du bippeur xD
RépondreSupprimerBonjour,
RépondreSupprimerIntéressant et simple !
j'ai fait un copier/coller du programme pour faire des essais :-)
voici les notes de Mon beau Sapin Roi des Forêts:
do4 fa4 fa4 fa4 sol4 la4 la4 la4 la4 sol4 la4 la4# mi4
sol4 fa4 do5 do5 la4 ré5 do5 do5 la4# la4# la4# la4# sol4
do5 la4# la4# la4 la4 do4 fa4 fa4 fa4 sol4 la4 la4 la4
la4 sol4 la4 la4# mi4 sol4 fa4
et voici comment faire une carte musicale Happy Birthday avec un minuscule
microcontroleur PICF200 sur ce lien
http://picatout-jd.blogspot.fr/2013/01/carte-de-voeux-musicale.html