var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-37320067-1']); _gaq.push(['_setDomainName', 'fenec.net']); _gaq.push(['_setAllowLinker', true]); _gaq.push(['_setCampNameKey', 'Fenec team']); _gaq.push(['_setCampSourceKey', 'fenec.net']); _gaq.push(['_setCampTermKey', 'Fenec']); _gaq.push(['_setCampContentKey', 'Technologie']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();

Composer de la musique en programmant, Le plaisir de Turbo Pascal

... 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 (1s) 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:


NOTEOctaves
1234
Do1312625231047
1472945871175
Mi1653306591319
Fa1763496981397
Sol1963927841568
La2204408801720
Si2474949881976

- 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.
__________________________________________________________
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.

3 commentaires:

  1. Je vais me faire une jolie berceuse :)

    RépondreSupprimer
  2. looool .. mais avec le son du bippeur xD

    RépondreSupprimer
  3. Bonjour,
    Inté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

    RépondreSupprimer