04 Projet Gestion Son

6

Click here to load reader

Transcript of 04 Projet Gestion Son

Page 1: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 1/6

Delphi : Projet Musique

Objectif de ce projet, réaliser un programme qui va permettre de jouer des sons soità l’aide de la souris, soit à l’aide du clavier.

Voici la première interface à réaliser

 A l'aide des fiches précédentes, toutes présentes dans ton cahier, réalise tout ceque tu peux de cette interface, dépose et personnalise les composants que tuconnais déjà.

Laisse libre court à ton imagination pour donner à l’interface l’aspect qui te convient(couleurs, police, etc…), mais respecte les lettres en dessous des notes, celat'évitera passablement de travail plus tard. N'oublie pas d'enregistrer régulièrementton projet.

Une fois que tu es arrivé au bout de tes connaissances, lis attentivement la suite dece document et essaye de réaliser tes premiers boutons musicaux.

Une fois n’est pas coutume, nous allons modifier la propriété « Name » des boutons,afin de les retrouver plus facilement.Tout comme pour le « Caption », cliquer  sur la propriété Name et nommer  lebouton de manière claire (par exemple : Button3Si pour le bouton du Si de latroisième octave)

La partie la plus facile de l’interface est maintenant réalisée.

Réfléchi maintenant à ce qu’il faut faire pour que le programme puisse jouer de la

musique !

Delphi Projet Sons page 1GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004

Page 2: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 2/6

Le son dans Windows et donc dans Delphi

Il faut se souvenir que chaque son est en fait une fréquence (vibration), plus cettefréquence est élevée, plus le son est aigu. Une deuxième composante fait que le sonest court ou long, c’est la durée.

Windows possède une fonction qui permet de reproduire des sons en fonction de cesdeux composantes, elle a cette « forme » :

Windows.Beep(fréquence en Hz, durée en mill iseconde)

C'est cette fonction que nous allons utiliser dans notre programme.

Une des solutions pour attribuer le son à un bouton est de :

1 double cliquer  sur le bouton concerné

2 écrire cette commande dans la procédure en indiquant la bonnefréquence et la bonne durée.Par exemple pour le premier Do : Windows.Beep(262,500) ;

La durée standard est de 500 millisecondes

Le tableau des fréquences est le suivant :

Octave Do Do# Ré Ré# Mi Fa Fa# Sol Sol# La La# Si

1ère  65 69 73 78 83 87 92 98 104 110 117 123

2ème  131 139 147 156 165 175 185 196 208 220 233 247

3ème

  262

277

294

311

330 349

370

392

415

440

466

494

4ème  523 554 587 622 659 698 740 784 831 880 932 988

5ème  1047 1109 1175 1245 1319 1397 1480 1568 1661 1760 1865 1976

6ème  2093 2217 2349 2489 2637 2794 1960 3136 3322 3520 3729 3951

7ème  4186 4435 4699 4978 5274 5588 5920 6272 6645 7040 7459 7902

8ème  8372 8870 9397 9956 10548 11175 11840 12544 13290 14080 17917 15804

Réalise ce travail pour la troisième octave (cadre noir, les premières notes de Do à

Si) de notre interface.Si tu as le temps et surtout afin que ton programme soit presque conforme à unpiano, rajoute les notes intermédiaires (celle dans les colonnes en gris).

N'est-ce pas un peu fastidieux ? Ne pourrait-il pas y avoir une solution plus simple ?

Essaye également de réfléchir comment associer les sons que tu viens de définir àune touche du clavier et comment associer une mélodie à un bouton !

Note toutes tes idées sur une feuille de papier !

Delphi Projet Sons page 2GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004

Page 3: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 3/6

Si tu as eu le temps, voici ce à quoi pourrait ressembler ton interface à ce point dudéveloppement

Réponses aux questions de la page 2Il serait en effet plus simple de créer des procédures pour chaque note de musique,cela permettrait de les associer à un bouton, à une touche et de composer plusfacilement une procédure.

Voici comment faire :

1) Il faut tout d'abord indiquer à Delphi qu'il va pouvoir utiliser une nouvelleprocédure "personnelle" .Cela se fait dans la zone entre var  et Implementation  Pour chaque procédure que tu vas créer, il te faut rajouter une ligne

semblable à celle ci-dessous (de la même manière que nous avionsdéclaré des variables lors du précédent projet

varForm1: TForm1; procedure do4;procedure re4;procedure mi4;procedure fa4;procedure sol4;

procedure la4;procedure si4;

implementation 

Exemples pouvant être uti lisés, où :

procedure  indique que l'on va créerun petit programmeutilisable

do4  est le nom de ceprogramme, ici il se référeà la note do de laquatrième octave

2) Il faut ensuite créer cette procédure Cela se fait dans la zone comprise entre {$R *.dfm} et end.Il faut retaper les phrases ci-dessous pour chaque procédure déclarée aupoint 1

procedure do4;begin 

windows.Beep(523, 500);end; 

Delphi Projet Sons page 3GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004

Page 4: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 4/6

3)  Associer une note à un bouton Dès lors il suffit de rajouter dans la procédure associée au boutond'indiquer le nom de la procédure à exécuter. Par exemple pour le Do de laquatrième octave, cela pourrait ressembler à cela :

procedure TForm1.Button4doClick(Sender: TObject);

begin do4;

end; 

4)  Associer une mélodie à un bouton  Dès lors il suffit de rajouter un composant bouton,de lui associer une procédure et de noter dans la procédure toutes lesnotes en suivant qui composent cette mélodiePour le début de Frère JacquesDo3;Re3;Mi3;Do3;Do3;Re3;Mi3;Do3;Mi3;Fa3;Sol3;Mi3;Fa3;Sol3;……

5)  Associer une procédure à l'appui sur une touche du c lavier  Il faut indiquer à Delphi que l'appui sur une touche va devoir exécuter uneprocédure. Mais avant cela il indiquer à la fiche que l'on veut tester leclavier.

a. Cliquer n'importe où dans la fiche

b. Affecter la valeur True à la propriété KeyPreview  

c. Sélectionner l'onglet Evénements  dans l'inspecteur d'objet

d. Double-cliquer dans la case à coté du choix OnKeyPress  

e. Recopier la procédure suivante en l'adaptant à votre situationprocedure TForm1.FormKeyPress(Sender: TObject; var  Key: Char);

begin if  Key ='a' then windows.Beep(262, 500);if  Key = 'A' then windows.Beep(262, 500);if  (Key = 'd') or  (Key = 'D') then Windows.Beep(294,500);

end; 

C'est tout ce que tu as besoin de savoir pour terminer ton interface et essayer decréer ta, tes premières mélodies.

Bon courage, et n'oublie pas : une note sera mise sur la qualité (aspect visuel,disposition des éléments) de ton interface, sur son fonctionnement, ainsi que sur la

qualité de la page de code (Unit.pas).

Delphi Projet Sons page 4GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004

Page 5: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 5/6

Pour les plus rapides

Voici ce qu'il faut faire pour rajouter une image dans notre interface et rendre lestouches réactives.

 Ajouter une image :

1) Rajouter  un composant Image de l'onglet Supplément

2) Le déposer  sur l'interface en lui donnant unecertaine dimension, celle-ci pourra êtreadaptée par la suite à l'aide des poignées

3) Pour associer  une image à ce composant, double cliquer  sur la propriétéImage de ce composant, puis dans la nouvelle fenêtre qui s'est ouverte,

cliquer  sur le bouton

4) Choisir  dans votre dossier le fichier clavier.jpg  

5)  Adapter  la taille du composant à celui de l'image (562x151)

Pour pouvoir rendre les touches réactives

On va créer cette illusion en utilisant des composant label que l'on rendratransparents.

1)  Ajouter  un label par touche en prenant soin de le dimensionner avec le plusde précision possible (utiliser la touche Alt en même temps que vousdimensionnez le Label)

2) Mettre la valeur True à la propriété Transparent la valeur False à la propriété AutoSize et une couleur de votre choix à la propriété Color  

(cette couleur ne s'affichera pas dans un premier temps)

3) Effacer  son Caption,changer  son nom (propriété Name) pour pouvoir l'identifier plus facilement

(par exemple Label3Fa pour touche correspondante au Fa de la 3ème octave) 

Pour associer une note à cette touche

1) Double cliquer  sur le Label dans la procédure qui s'ouvre donner le nom de la procédure jouant la bonnenote (dans notre exemple Fa3;)

Delphi Projet Sons page 5GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004

Page 6: 04 Projet Gestion Son

8/19/2019 04 Projet Gestion Son

http://slidepdf.com/reader/full/04-projet-gestion-son 6/6

Pour rendre la touche colorée et que le nom de la note s'affiche aupassage de la souris

Pour cela il faut modifier différentes propriétés à la volée, tout cela se fait dans deuxprocédures (la première lorsque la souris arrive sur la touche (OnMouseEnter), laseconde lorsque la souris quitte la touche (OnMouseLeave). Pour atteindre cesprocédures on passera par l'onglet Evénements de l'Inspecteur d'Objets.

1) double cliquer  sur la case à droite de l'événement OnMouseEnter  

2) Dans la procédure qui s'ouvre taper  la ligne suivante :label3Fa.Transparent := false;label3Fa.Caption := 'Fa3'; 

La première partie rend le label "opaque" et la deuxième partie donne lavaleur 'Fa3' à la propriété Caption que nous avons effacée plus tôt. 

3) double cliquer  sur la case à droite de l'événement OnMouseLeave 

4) Dans la procédure qui s'ouvre taper  la ligne suivante :

label3Fa.Transparent := true;label3Fa.Caption := ' '; La première partie rend le label "transparent" et la deuxième partie redonneune valeur "vide" '' (2 apostrophes sans espaces) à la propriété Caption. 

Et voilà il ne vous reste qu'à répéter toutes ces opérations (depuis le sous titre Pourpouvoir rendre les touches réactives) pour chaque touche, c'est un travail long etfastidieux, mais le résultat en vaut la peine !!

Version terminée de l'interface proposée

Delphi Projet Sons page 6GE / 04_Projet_Gestion_Son.doc Imprimé, le 13 janvier 2004