JérOli Media Player Auteurs : J.FELLUS & O.NESTY.

Post on 03-Apr-2015

108 views 1 download

Transcript of JérOli Media Player Auteurs : J.FELLUS & O.NESTY.

JérOli Media Player

Auteurs : J.FELLUS & O.NESTY

A quoi ça sert ????

JérOli Media Player

A quoi ça sert ????

1. Gestionnaire de PlayList

JérOli Media Player

A quoi ça sert ????

1. Gestionnaire de PlayList2. Outil de Recherche de Mp3 dans l’arborescence

JérOli Media Player

A quoi ça sert ????

1. Gestionnaire de PlayList2. Outil de Recherche de Mp3 dans l’arborescence3. Player

JérOli Media Player

Exemples de fonctionnement

Exemples de fonctionnement

Approche :

« Je cherche tous les morceaux d’Oscar Peterson qui datent de plus de 10 ans »

Exemples de fonctionnement

Approche :

« J’ai entendu parler de Songs in the key of life, je ne sais pas si c’est le nom de l’album ou le titre d’une chanson… que me propose le JérOli Media Player ??? »

Exemples de fonctionnement

Actions sur la PlayList

Exemples de fonctionnement

Ecoute tranquille de musiques tout en faisant autre chose

Dissection du JérOli Media Player

Ses aspects Internes

Gestionnaire : classes principales

Gestionnaire : classes principales

C Main : Point de démarrage du programmeC

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC Main : Point de démarrage du programme

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

Interface Configuration Player PlayList en

Cours

Main : Point de démarrage du programme

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

Interface Configuration Player PlayList en

Cours

Méthodes :Ajouter à la PlayListRetirer …Charger une PlayListLook&Feel

Main : Point de démarrage du programme

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

Main : Point de démarrage du programme

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Main : Point de démarrage du programme

C

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Méthode : Add, remove …IsPlaying?Déplacement de MP3Navigation (précédent, suivant, stop, play)

Main : Point de démarrage du programme

C

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Méthode : Add, remove …IsPlaying?Déplacement de MP3Navigation (précédent, suivant, stop, play)

Player

C

Main : Point de démarrage du programme

Gestionnaire : classes principales

CI Interface

Gestion du Splash ScreenMode Quick Play !

Gestionnaire : classes principales

CI Interface

Fenêtre PrincipaleFenêtre Quick Play !

Gestionnaire.repertoireClasses qui gèrent le contenu de l’arborescence

C Répertoire (Arborescence)CVecteur de Données (tableau dynamique de MP3Desc )C

Méthode : FiltrageTriRandom [Debug]

Gestionnaire.repertoireClasses qui gèrent le contenu de l’arborescence

C Répertoire (Arborescence)C

CC MP3Desc (Description d’un fichier Mp3)

* tag ID3 Lire le tag (sous forme compacte « byte[ ] »)

via un Tag Reader* Récupérer les champs* Passer à travers des filtres* Comparaison par critères (critère vector)

Aspect Visuel…

Interface Graphique

Aspect Visuel…

Interface Graphique

Aspect Visuel…

CC WSplashScreen : gère la fenêtre de chargement

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC WSplashScreen : gère la fenêtre de chargement

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

WSplashScreen : gère la fenêtre de chargement

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

CC WQuickPlay : gère toute la fenêtre Quick Play !

WSplashScreen : gère la fenêtre de chargement

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

CC WQuickPlay : gère toute la fenêtre Quick Play !

WSplashScreen : gère la fenêtre de chargement

CC WRechecheRapide : Affiche le résultat de la recherche rapide

Aspect Visuel…

Composants

Aspect Visuel…

Composants

Aspect Visuel…

CC CCritèreTri : gère le choix des Critères de recherche

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC CCritèreTri : gère le choix des Critères de recherche

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC

CC CPlaylist : gère la Liste de chansons

CCritèreTri : gère le choix des Critères de recherche

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC

CC CPlaylist : gère la Liste de chansons

CC CTitreBlock : Affiche le titre de chaque module

CCritèreTri : gère le choix des Critères de recherche

ORGANISATION DE L’ARBORESCENCE

Tri & Filtrage

ETAPE 1 : FILTRAGE

REPERTOIRE MP3DESC Visible ?

FILTRE

Filtrer

ETAPE 1 : FILTRAGEClasse Filtre : Méthode d’exécution du filtre C

ETAPE 1 : FILTRAGE

N x nbFiltres comparaisons à effectuer (nbFiltres << N)

C = o(N)

ETAPE 2 : TRI PAR CRITERES

REPERTOIRE Vector<MP3DESC>

CRITERES Vector

MP3DESC

Sort ( ) Custom COMPARATOR

Custom compareTo ( ) method

Visible ?

ETAPE 2 : TRI PAR CRITERES

Classe Filtre : Méthode d’exécution du filtre C

ETAPE 2 : TRI PAR CRITERES

Classe MP3Desc : méthode de comparaison par critèresC

ETAPE 2 : TRI PAR CRITERES

compareTo() : nbCriteres comparaisons à effectuer (dans le pire des cas)

sort() : algorithme issu de la bibliothèque de classes standard – complexité en n.log(n)

nbCriteres << N

C = o(N.log(N))

lBound : intrBound : int

Parent : MP3Node

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRepertoireTree ( ~Jtree)

DefaultTreeModel

MP3TreeModel

Repertoire

MP3Node

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Root

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Root

0

1

2

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

1

2

1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

X

Y

0

1

ETAPE 3 : AFFICHAGE HIERARCHIQUE

Repertoire

1

2

1

3

4

1

2

1

5

5

1

109

109

MP3Node

lBound

rBound

Childs

ETAPE 3 : AFFICHAGE HIERARCHIQUE

Repertoire

MP3 A

MP3 B

MP3 C

MP3 D

MP3 E

MP3 F

MP3 G

MP3 H

MP3 I

MP3 J

MP3 K

MP3 L

MP3 M

MP3Node

lBound

rBound

Childs

GetChildCount ()•Nombre de valeurs différentes dans

[ lBound,rBound ]

GetChild(int i)Parcours jusqu’à trouver ‘i’ valeur différentes et retourne l’indice courant

GetParent ()Chaque nœud garde une trace de son père

TreeModel overrides

parent

ETAPE 3 : AFFICHAGE HIERARCHIQUE

On doit accéder n x nbCriteres fois à un mp3 du répertoire

nbCriteres << n

C = o(N)

Complexité finale de l’opérationFiltrage + Tri

C = o(N) + o(N.log(N)) + o(N)

C ~ o ( N.log(N) )

Les Librairies Externes

Jlayer : le player

TinyLAF : les thèmes de l’interface Graphique

Les points Négatifs…

• Pas de Menu Clic-Droit pourtant implémenter• Après avoir fait « suivant » la chanson d’après ne se joue pas• Pas de lecture de durée

pas d’indication d’avancement dans la lecturepas de bouton « pause » fonctionnel !

• Pas d’interface Textuelle• Problème de superposition de fenêtres

Les plus de notre projet…

• Quick Play !• Recherche Rapide• Capacités de Filtrage et Tri avancées• Plusieurs thèmes• Redimensionnement pratique de chaque module• Portabilité des PlayLists générées par notre application vers

d’autres plus connues comme Real Player, etc.

Les futures mises à jour de notre projet…

• Tag ID3 v1.1, v2• Edition des tags• Durée, avancement• Le Drag ’N’ Drop

Remerciements

• P.LAROQUE & JL.BOURDON (pour le cours de JAVA)

• B.DERDOURI & M.NAÏMI (pour le cours de calcul de la complexité)

• V.SANS (pour le cours d’UML)

• Les Concepteurs de la JAVADOC

Modèle UML de notre projet

interfaceMode (boolean)

Application

thread

Player Interface

menuPrincipal

InterfaceTexte

fenetrePrincipale

InterfaceGraphique

Root (String)

Repertoire

configData (Map<String,String)

Config

Tag (byte[])isVisible (boolean)

MP3Desc

fromEnd (boolean)tagSize (int)

TagReader Name (String)Opération (String)Value (Object)

Filtre

Criteres (String[])

CriteresVector

Name (String)Size (int)Sortable (boolean)

Field

isPlaying (boolean)Filename (String)

Playlist

FILTRER

To be continue…