Vous êtes sur la page 1sur 31

2014

LA CONCEPTION ET LA
REALISATION DE
MEDIAPLAYER

Atef bentahar

[LA CONCEPTION ET LA
REALISATION DE
MEDIAPLAYER]
Un nouveau lecteur multimedia avec une nouvelle conception, il est programmé sous la plateforme
code gear 2009 (delphi).
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

1. INTODUCTION

Nous découvrerons dans ce chapitre un nouveau lecteur multimedia avec une


nouvelle conception, il est programmé sous la plate forme code gear 2009 (delphi).
Cette dernière permet une grande flixibilite de programmation délicate de
l’interface graphique basée sur les fonctions du système d’exploitation.
Nous allons clarifier les princips fondamentaux de la réalisation de ce lecteur, ses
caractéristiques, ses différentes fonctionalitées, ses tâches (nécessaires et
optionelles) ainsi que montrer les aventages et quelques limitations. Nous
choisissons Bentaplayer comme un nom pour ce nouveau lecteur.

2. C’EST QUOI BENTAPLAYER ?

Bentaplayer : Est un lecteur multimedia qui possède une interface graphique


permettant de lire les fichiers audios et vidéos et les écouter à travers des haut-
parleurs (enceintes). Il permet de lire la plusparts des formats de fichiers :

 audio comme :mp4 , mp3, mp2, wma, wav, asf, cda(cd audio),cde...ex
 vidéo comme :mp4 , avi, mpeg, mpg, mov, wmv…ex.

Son interface graphique non-ambigue est enrichi avec des animations qui
permettent une bonne présentation et une ambiance graphique adéquate, ainsi
que sa liste de lecture qui affiche d’une façon graduelle, de haut en bas et vise
versa. En plus, l’utilisateur peut modifier l’aparance du fond-écran (skin).

Bentaplayer possède deux modes d’interface graphique :

 mode normal.
 mode minimisé.

Bentaplayer a tous les éléments nécessaires pour faciliter son utilisation, il


affiche toutes les informations nécessaires pendant la lecture d’une piste telles
que le titre de la piste, durée, temps passé …ex.

A. Bentahar Page 1
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

3. PRESENTATION DE L’INTERFACE GRAPHIQUE DE


BENTAPLAYER

3.1. Les éléments de bentaplayer

Figure 1. Mode normal

Figure 2. Mode minimisé

Le tableau suivant décrit les différents éléments de ce lecteur :

1 Titre (bentaplayer + date +heure) 2 Adresse de la piste en cours


3 Ambiance graphique 4 Temps passé de la piste en cours (en
chiffre)
5 Durée de la piste 6 Temps total de la lecture des pistes
7 Position de la piste en cours 8 durée passée de la piste en cours (sur
la barre)
9 Ouvrir des fichiers audio\vidéo 10 lecture (play)\pause
(open)

A. Bentahar Page 2
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

11 Stop 12 Piste précédente (previous track)


13 Suivant (next track) 14 Activer la lecture aléatoire (random)
15 Activer la répétition d’une piste 16 Ajouter des pistes a la liste de lecteur
17 Supprimer des pistes de la liste de 18 Afficher la liste de lecture
lecture
19 La barre de volume 20 Changer l’apparence de l’arrière-plan
(skin)
21 Basculer en mode minimisé\mode 22 A propos
normal
23 Enregistrer (record)

Table 3.1. Composants de Bentaplayer

4. LES PRINCIPES FONDAMENTAUX DE PROGRAMMATION


DE BENTAPLAYER

La programmation de Bentaplayer est basée sur trois axes:


1) La Programmation relative au système d'exploitation : Est un type de
programmation qui vise au développement des programmes qui font partie du
système d’exploitation d’un ordinateur ou qui réalisent les fonctions.
Contrairement à la programmation des applications, elle s’intéresse pas au
traitement des données, mais aux interfaces, protocoles et à la gestion des
ressources, telles que le temps, son system, audio, périphériques audio/vidéo,
haut-parleur …ex.
Elle inclut, en outre, l’accès aux fichiers, la programmation du clavier, de l’écran
et, en général, la programmation de tous les périphériques qui font entrer ou
sortir de l’information d’un ordinateur.
Le module de MMSYSTEM fournit un ensemble de procédures et de fonctions
relatives au système d'exploitation. A noter que le comportement de ces
opérateurs peut être varié selon les systèmes. Pour utiliser ce module, la ligne
(uses 'mmsystem') doit être incluse dans l'en-tête du fichier source ( unité.pas).

2) Utilisation des composants de type "Timer" : Sont des composants non-


visuels dotés également de propriétés et de méthodes. Leur nombre est toutefois
assez limité. Les composants de type "Timer" sont disponibles dans la palette des

A. Bentahar Page 3
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

composants, dans l'onglet Système. Nous verrons que ce type de composant est
très utile. Il permet de définir une variable de temps qui s’incrémente à chaque
évènement "OnTimer" afin de réaliser ce tous ce qui dépend de l’animation et du
temps tels que:

 La date et l’heure
 La durée de la piste
 Position de la piste en cours
 Temps passé de piste en cours (en chiffre)
 Durée passé de piste en cours sur la barre
 Temps total de la lecture des pistes
 Temps d’enregistrement
 L’animation de l’adresse de la piste en cours
 L’animation de l’affichage de la liste de lecture
 Réaliser l’ambiance graphique

3) Utilisation des boutons animés : C’est l’animation de plusieurs images


pour qu’elles apparaissent comme un bouton.
Exemple :

Bouton désactivé : , bouton activé (mouse up)

Positionnement du curseur sur l’image (bouton)

Clic sur l’image (mouse down )

A. Bentahar Page 4
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

5. PARTIE PROGRAMMATION ET DESCRIPTION DE


FONCTIONNALITE DES ELEMENTS DE BENTAPLAYER

5.1. Initialisation du niveau de volume (son)

Pour contrôler le son, il nous faut:

Une procédure MPSetVolume qui affecter la valeur entière (Volume: Integer) au


niveau de volume (son) de Bentaplayer ;
procedure MPSetVolume(MP: TMediaPlayer;Volume: Integer);
var
p: MCI_DGV_SETAUDIO_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
p.dwValue := Volume;
p.dwOver := 0;
p.lpstrAlgorithm := nil;
p.lpstrQuality := nil;
mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or
MCI_DGV_SETAUDIO_ITEM, Cardinal(@p)) ;
end;
{Get Volume, range 0 - 1000}

Et une fonction MPGetvolume qui permet d’affecter la valeur de niveau de


volume (son) à une variable entière.
function MPGetVolume(MP: TMediaPlayer): Integer;
var
p: MCI_STATUS_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_STATUS_VOLUME;
mciSendCommand(MP.DeviceID, MCI_STATUS,
MCI_STATUS_ITEM,Cardinal(@p));
Result := p.dwReturn;
end;

A. Bentahar Page 5
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

5.2. Créer l'interface

Figure 3. L’interface de Bentaplayer (1ere exécution)

procedure TForm1.FormCreate(Sender: TObject);


begin
***Affecter la valeur de volumebar (figure 1 élément 19) au niveau de
volume (son) de mediaplayer***
MPSetVolume(MediaPlayer1, volumeBar.Position) ;

***les dimensions initiales de bentaplayer***


form1.Height:=241; form1.Width:=390;

***pour l’apparence graphique***


volumeBar.Visible:=false;
image58.Visible:=false;
imgopen.Picture.Graphic:=image17.Picture.Graphic;
image56.Picture.Graphic:=teteactive.Picture.Graphic;
image57.Picture.Graphic:=teteactive.Picture.Graphic;

*** Initialisation des valeurs des variables dont chacune sera expliquée
en ce qui suit***
afi:=0;reco:=0;med2:=0;aff:=0;index:=0;ti:=0;ren:=false;
t:=false;btnpause.Enabled:=false;io:=0;re:=0;rep:=0;ou:=0;
ra:=0;ha:=1;actutabrendom:=1;itabrandom:=1;u:=1;r:=0;

***Initialisation des valeurs de tableau (tab) à utiliser pour l’ambiance


graphique***
tab[0]:=image2.Picture.graphic;
tab[1]:=image3.Picture.graphic;
tab[2]:=image4.Picture.graphic;
tab[3]:=image3.Picture.graphic;
.
tab[33]:= image1.Picture.graphic;

***tabrendom : est un tableau pour enregistrer l’ordre des pistes lues


(cas de lecteur aléatoire)***
while itabrandom<=100 do

A. Bentahar Page 6
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

begin
tabrendom[itabrandom]:=-1;
itabrandom:=itabrandom+1;
end;
itabrandom:=1;
end;

L’interface nécessite la procédure TForm1.FormCreate dont on définit les dimensions


initiales de lecteur ainsi que les valeurs initiales des variables utilisées.

5.3. Afficher l’adresse de piste en cours

Pour afficher l’adresse de la piste en cours de lecture (l’élément 2 dans la figure 1


), on procède comme suit :

procedure TForm1.TimeradressepisteTimer(Sender: TObject);


begin
if adressepiste.Left>=-430 then
adressepiste.Left:=adressepiste.Left-5
else
adressepiste.Left:=420;
end;

Cette procédure permet de faire un mouvement périodique (de droite à gauche)


de l’adresse de piste en cours de lecture.

5.4. Ouvrir des fichiers audio\vidéo (open)

L’ouverture des fichiers (l’élément 9 dans la figure 1 ) est faite sur deux parties,
la première fait l’animation quand le curseur soit sur le bouton ouvrir et ça
nécessite deux procédures TForm1.imgopenMouseMove et
TForm1.imgopenMouseDown. L’autre partie présente le fait du clic
(TForm1.openmClick).

***animation du bouton ***

procedure TForm1.imgopenMouseMove(Sender: TObject);


begin
imgopen.Picture.Graphic:=image28.Picture.Graphic;
end;

procedure TForm1.imgopenMouseDown(Sender: TObject)

A. Bentahar Page 7
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

begin
if imgopen.Enabled=true then
imgopen.Picture.Graphic:=image52.Picture.Graphic;
end;

***Le fait du clic***

procedure TForm1.openmClick(Sender: TObject);


begin
tete.Visible:=true;
Imgrecord.Cursor:=crhandpoint;imgrendom.Cursor:=crhandpoint;
imgrepete.Cursor:=crhandpoint;
open.Execute;
if open.Files.Count<1 then
exit
else
aff:=1; ***qui indique que bentaplayer est actif
tempspass.Enabled:=true; pisteduree.Enabled:=true;
btnpause.Enabled:=true; btnnext.Enabled:=true;
btnback.Enabled:=true; ajoute.Enabled:=true;
remove.Enabled:=true; listeheight.Enabled:=true;
liste.Items:=open.Files;
form3.form3liste.items:=form1.liste.items ;
mediaplayer1.FileName:=liste.Items[0];
***bentaplayer prend la tête de la liste comme une première piste à lire***

btnpause.Enabled:=true;
filte.Filter:=open.Filter;
mediaplayer1.Open;
if face.Transparent=true then
adressepiste.Font.Color:=clnavy
else
adressepiste.font.Color:=clskyblue;
play.Enabled:=true;
Imgstop.Enabled:=true;
play.Picture.Graphic:=image17.Picture.Graphic;
Imgstop.Picture.Graphic:=image18.Picture.Graphic;
Timertempspass.Enabled:=true;
adressepiste.Caption:=open.FileName;
Timertempstotal.Enabled:=true;
Timerambiance.Enabled:=true;
face.Picture.Graphic:=image9.Picture.Graphic;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
btnpistedureeClick(Sender);
***affichage de la Durée de la piste en cours (cela fait l’objet de la procédure
Suivante) ***

Imgrecord.Enabled:=true;imgrendom.Enabled:=true;
imgrepete.Enabled:=true;
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Buttonminimi.Enabled:=true;

A. Bentahar Page 8
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

play.Picture.Graphic:=image39.Picture.Graphic;
end;

5.5. Calculer et afficher la durée de la piste en cours

L’affichage de la durée de la piste en cours de lecture est de la forme mm:ss. La


réalisation de l’élément 5 dans la figure 1 se faite par la procédure suivante :

procedure TForm1.btnpistedureeClick(Sender: TObject);


begin
o := MediaPlayer1.Length; {durée en milli-seconde}
o:=o div 1000;
mi:=o div 60;
se:=o-(mi*60);
if mi>9 then
begin
if se>9 then
pisteduree.Caption := IntToStr(mi)+(':')+IntToStr(se)
else
pisteduree.Caption := IntToStr(mi)+(':')+('0')+IntToStr(se)
end
else
begin
if se>9 then
pisteduree.Caption := ('0')+IntToStr(mi)+(':')+IntToStr(se)
else
pisteduree.Caption :('0')+IntToStr(mi)+(':')+('0')+IntToStr(se)
end ;

Remarque : vu la quantité importante des procédures réalisant notre application,


consultez l’index pour trouver le reste des procédures.

6. LES AVANTAGES ET LES INCONVÉNIENTS

6.1. les avantages :


 la lecture de la plusparts des formats audio et vidéo.
 simple et facile à utiliser.
 posséssion d’une bonne interface graphique.
 affichage minimisé sont perdre les fonctions principales d’une manière
claire et sans occuper plus d’espace sur le bureau.
 petit taille d’application sans occuper plus d’espace sur la mémoire.
 Contrôle de la taille d’affichage de la vidéo.

A. Bentahar Page 9
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

6.2. Les limitations :


 Il ne peut pas lire quelque formats comme :flv ,3gp ogg, swf ,webm.
 Il ne peut pas lire les fichiers ayant la vitesse de transmission plus de
400 kbits/s.
 Il ne peut pas lire les fichiers ayant la fréquence plus de 96 khz.
 il ne possède pas une diffusion radio.

7. CONCLUSION
Nous avons étudié et réalisé ce lecteur qui se caractérise par des privilèges
requis pour chaque autre lecteur multimédia ainsi que des privilèges
spéciaux pour le rendre capable de rivaliser ces lecteurs et se classer parmi
eux.

A. Bentahar Page 10
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

Annex

Cet annex contient toutes les procédures qui n’ont pas présentées dans le
chapitre précédent. Ces procédures montrent le reste des éléments composant
l’interface graphique de notre application (voir figure 1 ).

Figure 1. Mode normal

TOTALITE DES PROCEDURES

1. Révéler l'apparence graphique (figure 1 : élément 3)

procedure TForm1.TimerambianceTimer(Sender: TObject);


begin
if i<=33 then
begin
face.Picture.Graphic:=tab[i];
i:=i+1;
end
else
i:=1;
end;
{Cette procédure permet de révéler l’animation pendant la lecture des pistes
(l’ambiance graphique)}

A. Bentahar Page 11
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

2. Afficher la liste de lecture (figure 1 : élément 18)

procedure TForm1.ImglisteMouseMove(Sender: TObject);


Begin
if aff=1 then
begin
if remove.Enabled=true then
imgremove.Picture.Graphic:=b1.Picture.Graphic;
if ajoute.Enabled=true then
imgajoute.Picture.Graphic:=a1.Picture.Graphic;
end;
if listeheight.Enabled=true then
Imgliste.Picture:=im3.Picture;
end;
procedure TForm1.ImglisteMouseDown(Sender: TObject);
begin
if listeheight.Enabled=true then
Imgliste.Picture:=im4.Picture;
end;
procedure TForm1.ImglisteMouseUp(Sender: TObject);
begin
if listeheight.Enabled=true then
begin
Imgliste.Picture:=im2.Picture;
listeheightClick(Sender); { dont l'explication ci-dessous }
end;
end;
procedure TForm1.listeheightClick(Sender: TObject);
begin
if form1.Height=241 then
Timerlisteheight1.Enabled:=true
else
Timerlisteheight2.Enabled:=true;
end;

procedure TForm1.Timerlisteheight1Timer(Sender: TObject);


begin
if form1.Height<400 then
begin
form1.Height:=form1.Height+5;
Timerlisteheight2.Enabled:=false;
end
else
begin
Timerlisteheight1.Enabled:=false;
form1.Height:=400;
end;
end;
procedure TForm1.Timerlisteheight2Timer(Sender: TObject);
begin
if form1.Height>241 then
begin

A. Bentahar Page 12
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

form1.Height:=form1.Height-5;
end
else
begin
Timerlisteheight2.Enabled:=false;
form1.Height:=241;
end;
end;
{ce programme permet d’afficher la liste de lecture d’une façon graduelle, de
haut en bas et vice versa}

3. Ajout des pistes à la liste de lecture (figure 1 : élément 16)

procedure TForm1.imgajouteMouseMove(Sender: TObject);


begin
if aff=1 then
Imgliste.Picture.Graphic:=im2.Picture.Graphic;
if ajoute.Enabled=true then
imgajoute.Picture:=a2.Picture;
end;
procedure TForm1.imgajouteMouseDown(Sender: TObject);
begin
if ajoute.Enabled=true then
imgajoute.Picture:=a0.Picture;
end;
procedure TForm1.imgajouteMouseUp(Sender: TObject);
begin
if ajoute.Enabled=true then
begin
imgajoute.Picture:=a1.Picture;
ajouteClick(Sender);
end;
end;
procedure TForm1.ajouteClick(Sender: TObject);
var ii:integer;
begin
open2.Execute;
fil2.Items:=open2.Files;
for ii:=fil2.items.count-1 downto 0 do
begin
liste.Items.Add(fil2.Items[ii]);
end;
end;

4. Suppression des pistes de la liste de lecture (figure 1 : élément 17)

procedure TForm1.imgremoveMouseMove(Sender: TObject);


begin
if aff=1 then
Imgliste.Picture.Graphic:=im2.Picture.Graphic;
if remove.Enabled=true then
imgremove.Picture:=b2.Picture;

A. Bentahar Page 13
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

end;
procedure TForm1.imgremoveMouseDown(Sender: TObject);
begin
if remove.Enabled=true then
imgremove.Picture:=b0.Picture;
end;
procedure TForm1.imgremoveMouseUp(Sender: TObject);
begin
if remove.Enabled=true then
begin
imgremove.Picture:=b1.Picture;
removeClick(Sender);
end;
end;
procedure TForm1.removeClick(Sender: TObject);
var ii:integer;
begin
for ii:=liste.items.count-1 downto 0 do
begin
if liste.Items.Count=1 then
exit;
if liste.selected[ii] then
begin
liste.Items.Delete(ii);
end;
end;
ii:=0;
end;

5. Lecture d’une piste play\pause (figure 1 : élément 10)

procedure TForm1.playMouseMove(Sender: TObject);


begin
if btnnext.Enabled=true then
imgnext.Picture.Graphic:=d1.Picture.Graphic;
if btnback.Enabled=true then
imgback.Picture.Graphic:=c1.Picture.Graphic;
if ha=0 then {indique que bentaplayer est en état de stop }
play.Picture.Graphic:=image14.Picture.Graphic
else
begin
if ou=0 then {indique que bentaplayer est en état de play }
play.Picture.Graphic:=image42.Picture.Graphic
else {indique que bentaplayer est en état de pause }
play.Picture.Graphic:=image14.Picture.Graphic
end;
end;
procedure TForm1.playMouseDown(Sender: TObject );
begin
if ha=0 then
begin
play.Picture.Graphic:=image15.Picture.Graphic;

A. Bentahar Page 14
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

ha:=1;
end
else
begin
if Timerambiance.Enabled=true then
play.Picture.Graphic:=image48.Picture.Graphic
else
play.Picture.Graphic:=image15.Picture.Graphic;
end; end;
procedure TForm1.playMouseUp(Sender: TObject);
begin
if ha=1 then
begin
if btnpause.Enabled=false then
begin
Imgstop.Picture.Graphic:=image18.Picture.Graphic;
play.Picture.Graphic:=image39.Picture.Graphic;
BtnplayClick(Sender);
{la procedure de la lecture (play)}
end
else
btnpauseClick(Sender);
{la procédure de mettre la piste en état de pause}
end;
end;
procedure TForm1.BtnplayClick(Sender: TObject);
var ii:integer;
begin
btnpause.Enabled:=true;
ra:=0;
ha:=1;
tete.Visible:=true;
for ii:=liste.items.count-1 downto 0 do
begin
if liste.selected[ii] then
begin
mediaplayer1.FileName:=liste.Items[ii];
end;
end;
mediaplayer1.Open;
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
Timerambiance.Enabled:=true;
end;
procedure TForm1.btnpauseClick(Sender: TObject);
begin
if ou=0 then
begin
mediaplayer1.Pause;
btnpause.Font.Color:=clgray;

A. Bentahar Page 15
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

Imgstop.Enabled:=false;btnnext.Enabled:=false;
btnback.Enabled:=false;imgopen.Enabled:=false;
Timerambiance.Enabled:=false;
tete.Visible:=false;
ou:=1;
imgopen.Picture.Graphic:=image17.Picture.Graphic;
volumeBar.Visible:=false;image58.Visible:=false;
Imgstop.Picture.Graphic:=image27.Picture.Graphic;
play.Picture.Graphic:=image42.Picture.Graphic;
end
else
begin
mediaplayer1.Pause;
Timerambiance.Enabled:=true;
Imgstop.Enabled:=true;imgopen.Enabled:=true;
btnnext.Enabled:=true;btnback.Enabled:=true;
tete.Visible:=true;
ou:=0;
imgopen.Picture.Graphic:=image30.Picture.Graphic;
volumeBar.Visible:=true;
image58.Visible:=true;
Imgstop.Picture.Graphic:=image18.Picture.Graphic;
play.Picture.Graphic:=image39.Picture.Graphic;
end;
end;

6. Arrêter la lecture d'une piste (figure 1 : élément 10)

procedure TForm1.ImgstopMouseMove(Sender: TObject);


begin
if ra=0 then {indique que bentaplayer est en état de play }
Imgstop.Picture.Graphic:=image19.Picture.Graphic;
end;
procedure TForm1.ImgstopMouseDown(Sender: TObject);
begin
if ra=0 then
begin
Imgstop.Picture.Graphic:=image20.Picture.Graphic;
ra:=1;
end;
end;

procedure TForm1.ImgstopMouseUp(Sender: TObject);


begin
if ra=1 then {indique que bentaplayer est en état de stop}
begin
play.Picture.Graphic:=image13.Picture.Graphic;
Imgstop.Picture.Graphic:=image27.Picture.Graphic;
quickstopClick(Sender); {la procedure d’arrêt de la lecture}
end;
end;
procedure TForm1.quickstopClick(Sender: TObject);

A. Bentahar Page 16
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

begin
btnpause.Enabled:=false;
mediaplayer1.Open;
mediaplayer1.Stop;
tete.Visible:=false;
face.Picture.Graphic:=image9.Picture.Graphic;
Btnplay.Enabled:=true;
quickstop.Enabled:=false;
ha:=0;
ra:=1;
Timerambiance.Enabled:=false;
end;

7. Passage à la piste suivante (next track) (figure 1 élément 13)

procedure TForm1.imgnextMouseMove(Sender: TObject);


begin
if aff=1 then
begin
if ha=0 then
play.Picture.Graphic:=image13.Picture.Graphic
else
begin
if ou=0 then
play.Picture.Graphic:=image39.Picture.Graphic
else
play.Picture.Graphic:=image13.Picture.Graphic
end;
end;
if btnnext.Enabled=true then
imgnext.Picture:=d2.Picture; end;
procedure TForm1.imgnextMouseDown(Sender: TObject);
begin
if btnnext.Enabled=true then
imgnext.Picture:=d0.Picture;
end;
procedure TForm1.imgnextMouseUp(Sender: TObject)
begin
if btnnext.Enabled=true then
begin
imgnext.Picture:=rig.Picture;
btnnextClick(Sender);
end;
end;
procedure TForm1.btnnextClick(Sender: TObject);
a var ii:integer;jj:boolean ;
begin
jj:=false;
if ren=false then
{1ier cas : la lecture aléatoire a été désactivée}
begin
btnpause.Enabled:=true;

A. Bentahar Page 17
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

ra:=0; ha:=1;
tete.Visible:=true;
if t=false then
begin
for ii:=liste.items.count-1 downto 0 do
begin
if liste.selected[ii] then
begin
if ii<liste.Items.Count-1 then
begin
mediaplayer1.FileName:=liste.Items[ii+1];
index:=ii+1;
end;
end;
end;
t:=true;
index:=index+1;
end
else
begin
index:=index+1;
if index< liste.Items.Count then
mediaplayer1.FileName:=liste.Items[index]
else
index:=0;
end;
re:=index;
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
Timerambiance.Enabled:=true;
end ;
if ren=true then
{2ème cas : la lecture aléatoire a été activée}
begin
ii:=liste.Items.Count;
index:=random(ii);
while (itabrandom<ii) do
begin
if tabrendom[itabrandom]=index then
begin
index:=random(ii);
itabrandom:=1;
end
else
itabrandom:=itabrandom+1;
end;

A. Bentahar Page 18
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

{tabrendom :est un tableau pour enregistrer l’ordre des pistes


lues(cas de lecteur aléatoire ) }
tabrendom[actutabrendom]:=index;
actutabrendom:=actutabrendom+1;
itabrandom:=1;
if actutabrendom>ii then
actutabrendom:=1;
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
end;
end;

8. Piste précédente (previous track) (figure 1 : élément 12)

procedure TForm1.imgbackMouseMove(Sender: TObject);


begin
if aff=1 then
begin
if ha=0 then
play.Picture.Graphic:=image13.Picture.Graphic
else
begin
if ou=0 then
play.Picture.Graphic:=image39.Picture.Graphic
else
play.Picture.Graphic:=image13.Picture.Graphic
end;
end;
if btnback.Enabled=true then
imgback.Picture:=c2.Picture;
end;
procedure TForm1.imgbackMouseDown(Sender: TObject);
begin
if btnback.Enabled=true then
imgback.Picture:=c0.Picture;
end;
procedure TForm1.imgbackMouseUp(Sender: TObject);
begin
if btnback.Enabled=true then
begin
imgback.Picture:=l.Picture;
btnbackClick(Sender);
end;
end;
procedure TForm1.btnbackClick(Sender: TObject);
var ii:integer;
begin

A. Bentahar Page 19
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

if ren=false then
{1 ère cas : la lecture aléatoire a été désactivé}
begin
btnpause.Enabled:=true;
ra:=0;ha:=1;
tete.Visible:=true;
if t=false then
begin
for ii:=liste.items.count-1 downto 0 do
begin
if liste.selected[ii] then
begin
if ii>0 then
begin
mediaplayer1.FileName:=liste.Items[ii-1];
index:=ii-1;
end;
end;
end;
index:=liste.Items.Count-1;
t:=true;
end
else
begin
index:=index-1;
if index>= 0 then
mediaplayer1.FileName:=liste.Items[index]
else
index:=liste.Items.Count-1;
end;
re:=index;
mediaplayer1.FileName:=liste.Items[index] ;
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
Timerambiance.Enabled:=true;
end ;
if ren=true then
{2 ème cas : la lecture aléatoire a été activée}
begin
ii:=liste.Items.Count;
index:=random(ii);
while (itabrandom<ii) do
begin
if tabrendom[itabrandom]=index then
begin
index:=random(ii);
itabrandom:=1;
end

A. Bentahar Page 20
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

else
itabrandom:=itabrandom+1;
end;
tabrendom[actutabrendom]:=index;
actutabrendom:=actutabrendom+1;
itabrandom:=1;
if actutabrendom>ii then
actutabrendom:=1;
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
end;
end;

9. Sélection des pistes de la liste de lecture (un seul clic)

procedure TForm1.listeClick(Sender: TObject);


var ii:integer;
begin
open.FileName:=fil.FileName;
for ii:=liste.items.count-1 downto 0 do
begin
if liste.selected[ii] then
begin
index:=ii;
mediaplayer1.FileName:=liste.Items[ii];
end;
end;
end;
{la sélection a pour le but de mettre à jour de la liste de lecture}

10. Sélection d’une piste à lire de la liste de lecture (double clic)

procedure TForm1.listeDblClick(Sender: TObject);


var ii:integer;
begin
btnpause.Enabled:=true; tete.Visible:=true;
ra:=0; ha:=1;
play.Picture.Graphic:=image39.Picture.Graphic;
Imgstop.Picture.Graphic:=image18.Picture.Graphic;
for ii:=liste.items.count-1 downto 0 do
begin
if liste.selected[ii] then
begin
index:=ii;
mediaplayer1.FileName:=liste.Items[ii];
end;
end;

A. Bentahar Page 21
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

filte.Filter:=open.Filter;
re:=index;
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
Timerambiance.Enabled:=true;
face.Picture.Graphic:=image9.Picture.Graphic;
btnpistedureeClick(Sender);
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
end;

11. Temps total de la lecture des pistes (figure 1 : élément 6)

procedure TForm1.TimertempstotalTimer(Sender: TObject);


var h,m,s:longint;
begin
io:=io+1;
h:=io div 3600;
s:=io-(h*3600);
m:=s div 60;
s:=s-(m*60);
if m>9 then
begin
if s>9 then
tempstotal.Caption :=
IntToStr(h)+(':')+IntToStr(m)+(':')+IntToStr(s)
else
tempstotal.Caption :=
IntToStr(h)+(':')+IntToStr(m)+(':')+('0')+IntToStr(s)
end
else
begin
if s>9 then
tempstotal.Caption :=
IntToStr(h)+(':')+('0')+IntToStr(m)+(':')+IntToStr(s)
else
tempstotal.Caption :=
IntToStr(h)+(':')+('0')+IntToStr(m)+(':')+('0')+IntToStr(s)
end ;
end;

12. Temps et durée passée de la piste en cours (en chiffre) (figure 1 :


éléments 4 et 8)

procedure TForm1.TimertempspassTimer(Sender: TObject);


var p: LongInt;
begin
btnpistedureeClick(Sender);
p:= MediaPlayer1.Position;

A. Bentahar Page 22
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

p:=p div 1000;


min:=p div 60;
sec:=p-(min*60);
if min>9 then
begin
if sec>9 then
tempspass.Caption := IntToStr(min)+(':')+IntToStr(sec)
else
tempspass.Caption := IntToStr(min)+(':')+('0')+IntToStr(sec)
end
else
begin
if sec>9 then
tempspass.Caption := ('0')+IntToStr(min)+(':')+IntToStr(sec)
else
tempspass.Caption:=
('0')+IntToStr(min)+(':')+('0')+IntToStr(sec)
end ;
pbar1.MaxValue:=o;
pbar1.Progress:=p;
pointeurposition.Left:=(350000*p) div mediaplayer1.Length;
{350: c’est longeur de la barre de lecture}
if pbar1.Progress>=o then
begin
if ren=false then
{indique que la lecture aléatoire a été désactivée}
begin
if rep=0 then
{indique que la répétition d’une seule piste a été désactivée}
begin
index:=index+1;
if index<=liste.Items.Count-1 then
begin
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Position:=0;
end
else
index:=0;
end
else
{indique que la répétition d’une seule piste a été activée}
begin
mediaplayer1.FileName:=liste.Items[re];
mediaplayer1.Position:=0;
end;
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Position:=0;
play.Picture.Graphic:=image39.Picture.Graphic;
Imgstop.Picture.Graphic:=image18.Picture.Graphic;
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;

A. Bentahar Page 23
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

mediaplayer1.Play;
end;
end
else
{indique que la lecture aléatoire a été activée}
begin
ii:=liste.Items.Count;
index:=random(ii);
while (itabrandom<ii) do
begin
if tabrendom[itabrandom]=index then
begin
index:=random(ii);
itabrandom:=1;
end
else
itabrandom:=itabrandom+1;
end;
tabrendom[actutabrendom]:=index;actutabrendom:=actutabrendom+1;
if actutabrendom>ii then
mediaplayer1.FileName:=liste.Items[index];
mediaplayer1.Open;
adressepiste.Caption:=liste.Items[index];
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
Btnplay.Enabled:=false;
quickstop.Enabled:=true;
end;
end;

13. Changement de position de la piste en cours sur la barre de


lecture (figure 1 élément 7)

{Changement de position par clic sur la barre}


procedure TForm1.barpisteMouseUp(Sender: TObject);
begin
if afi=0 then
begin
if tete.Visible=true then
begin
mediaplayer1.stop;
pointeurposition.Left:=x;
pbar1.Progress:=
(mediaplayer1.Length*pointeurposition.Left)div 350;
MediaPlayer1.Position:=
(mediaplayer1.Length*pointeurposition.Left)div 350;
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
end;
u:=1;
tete.Picture.Graphic:=tetenonactive.Picture.Graphic;

A. Bentahar Page 24
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

pointeurposition.Enabled:=true;
end;
end;
{Changement de position par mouvement sur la barre}
procedure TForm1.teteClick(Sender: TObject);
begin
if afi=0 then
begin
if u=1 then
begin
tete.Picture.Graphic:=teteactive.Picture.Graphic;
u:=0;
end
else
begin
pointeurposition.Enabled:=true;
tete.Picture.Graphic:=tetenonactive.Picture.Graphic;
u:=1;
end; end; end;
procedure TForm1.barpisteMouseMove(Sender: TObject);
begin
if aff=1 then
begin
if ha=0 then
play.Picture.Graphic:=image13.Picture.Graphic
else
begin
if ou=0 then
play.Picture.Graphic:=image39.Picture.Graphic
else
play.Picture.Graphic:=image13.Picture.Graphic
end;
end;
if pointeurposition.Enabled=false then
begin
mediaplayer1.stop;
pointeurposition.Left:=x;
pbar1.Progress:=
(mediaplayer1.Length*pointeurposition.Left)div 350;
MediaPlayer1.Position:=
(mediaplayer1.Length*pointeurposition.Left)div 350;
MPSetVolume(MediaPlayer1, volumeBar.Position) ;
mediaplayer1.Play;
end;
end;
{ces deux dernières procédures permettent de changer la position de la piste en
cours en glissant sur la barre de la lecture (figure 1 élément 7), appuyer +
glisser}

A. Bentahar Page 25
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

14. Activer la répétition automatique d’une piste (figure 1 : élément 15)

procedure TForm1.imgrepeteMouseMove(Sender: TObject);


begin
if aff=1 then
begin
if ren=false then
imgrendom.Picture.Graphic:=image41.Picture.Graphic
else
imgrendom.Picture.Graphic:=image40.Picture.Graphic;
imgrepete.Picture.Graphic:=image21.Picture.Graphic;
end;
end;
procedure TForm1.imgrepeteMouseDown(Sender: TObject);
begin
if imgrepete.Enabled=true and (aff=1) then
imgrepete.Picture.Graphic:=image33.Picture.Graphic;
end;
procedure TForm1.imgrepeteClick(Sender: TObject);
var ii:integer;
begin
if aff=1 then
begin
if rep=0 then
begin
imgrepete.Picture.Graphic:=image21.Picture.Graphic;
rep:=1;
end
else
rep:=0;
end;
end;

15. Activer la lecture aléatoire (random) (figure 1 : élément 14)

procedure TForm1.imgrendomMouseMove(Sender: TObject);


begin
if aff=1 then
begin
if rep=0 then
imgrepete.Picture.Graphic:=image23.Picture.Graphic
else
imgrepete.Picture.Graphic:=image21.Picture.Graphic;
imgrendom.Picture.Graphic:=image40.Picture.Graphic;
end;
end;
procedure TForm1.imgrendomMouseDown(Sender: TObject);
begin
if (imgrendom.Enabled=true) and (aff=1) then
imgrendom.Picture.Graphic:=image32.Picture.Graphic;
end;
procedure TForm1.imgrendomClick(Sender: TObject);

A. Bentahar Page 26
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

begin
if aff=1 then
begin
if ren=false then
begin
imgrendom.Picture.Graphic:=image40.Picture.Graphic;
ren:=true;
end
else
begin
imgrendom.Picture.Graphic:=image41.Picture.Graphic;
ren:=false
end
end;
end;

16. Changement du niveau de volume (son) (figure 1 : élément 19)

procedure TForm1.volumeBarChange(Sender: TObject);


MPSetVolume(MediaPlayer1, volumeBar.Position) ;

17. Basculer en mode minimisé\mode normal (figure 1 : élément 21)

procedure TForm1.minimMouseUp(Sender: TObject);


begin
if Buttonminimi.Enabled=true then
BEGIN
minim.Picture.Graphic:= image47.Picture.Graphic;
ButtonminimiClick(Sender);
END;
end;
procedure TForm1.ButtonminimiClick(Sender: TObject);
begin
if Timertempspass.Enabled=true then
begin
form2.Timer1.Enabled:=true;
form2.btnform2play.Enabled:=false;
end
else
form2.btnform2play.Enabled:=true;
form1.Visible:=false;
form3.form3liste.Items:=liste.Items;
form3.Left := screen.width;
form2.Left := screen.width -form2.Width;
form2.Top := 0;
form2.Show;
end;

A. Bentahar Page 27
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

18. Affichage de la liste de lecture en cas du mode minimisé (figure 1 :


élément 18)

procedure TForm2.form2listeshowClick(Sender: TObject);


begin
if timer3.Enabled=false then
timer3.Enabled:=true
else
timer3.Enabled:=false;
end;
procedure TForm2.Timer3Timer(Sender: TObject);
begin
if i=0 then
begin
form3.Show;
if form3.Left>screen.width - form3.Width then
form3.Left:=form3.Left-5
else
begin
form3.Left := screen.width - form3.Width;
timer3.Enabled:=false;
i:=1;
end;
{Ce programme permet d’afficher la liste de lecteur d’une façon graduelle, de
droite à gauche et vice versa}

19. Changer l’apparence de l’arrière-plan (skin) (figure 1 : élément 20)

procedure TForm1.skinClick(Sender: TObject);


begin
if face.Transparent=true then
BEGIN
face.Transparent:=false;
adressepiste.Font.Color:=clskyblue;
end
else
begin
face.Transparent:=true;
adressepiste.font.Color:=clnavy;
end;
end;

20. Enregistrement du son sur pc sous format wav (figure 1 : élément 23)

procedure TForm1.btnrecordClick(Sender: TObject);


var ii:integer;
begin
quickstopClick(Sender);
minim.Picture.Graphic:=IMAGE51.Picture.Graphic;
Imgliste.Visible:=false;
imgajoute.Picture.Graphic:=aaaa.Picture.Graphic;
imgback.Picture.Graphic:=l.Picture.Graphic;

A. Bentahar Page 28
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

imgnext.Picture.Graphic:=rig.Picture.Graphic;
imgremove.Picture.Graphic:=bbbb.Picture.Graphic;
btnpause.Enabled:=false;btnnext.Enabled:=false;
btnback.Enabled:=false;ajoute.Enabled:=false;
remove.Enabled:=false;listeheight.Enabled:=false;
Buttonminimi.Enabled:=false;imgopen.Enabled:=false;
Imgstop.Enabled:=false;play.Enabled:=false;
imgrendom.Enabled:=false;imgrepete.Enabled:=false;
play.Picture.Graphic:=image49.Picture.Graphic;
imgrepete.Picture.Graphic:=repe.Picture.Graphic;
imgrendom.Picture.Graphic:=alea.Picture.Graphic;
Imgstop.Picture.Graphic:=image27.Picture.Graphic;
volumeBar.Visible:=false;image58.Visible:=false;
imgopen.Picture.Graphic:=image17.Picture.Graphic;
pisteduree.Caption:=('0:00') ;
tempspass.Caption:=('0:00') ;
for ii:=liste.items.count-1 downto 0 do
begin
liste.Items.Delete(ii);
end;
ii:=0;
if Timerrecorde.Enabled=false then
begin
Timerrecorde.Enabled:=true;
mediaplayer1.StartRecording;
end
else
begin
Timerrecorde.Enabled:=false;
reco:=0;
if aff=1 then
begin
save.Execute;
mediaplayer1.FileName:=save.FileName;
mediaplayer1.save;
end;
Buttonminimi.Enabled:=false;
FormCreate(Sender);
imgopen.Enabled:=true;
Imgrecord.Picture.Graphic:=image35.Picture.Graphic;
recordetemps.Caption:=('') ;
Imgrecord.Enabled:=false;
Imgliste.Visible:=true;
end;
end;
procedure TForm1.TimerrecordeTimer(Sender: TObject);
begin
reco:=reco+1;
min:=reco div 60;
sec:=reco-(min*60);
if sec>9 then
begin

A. Bentahar Page 29
LA CONCEPTION ET LA REALISATION DE MEDIAPLAYER

recordetemps.Caption := IntToStr(min)+(':')+IntToStr(sec);
end
else
recordetemps.Caption :=
IntToStr(min)+(':')+('0')+IntToStr(sec);
end;

A. Bentahar Page 30