Karaoké Time

Présentation

Karaoké Time est un mini projet de Maîtrise écrit en Java (JDK 1.2) permettant de faire du Karaoké sur votre PC. Il repose sur un concept de plugins. Certains plugins se chargent de lire différents types de fichiers musicaux alors que d'autres se contentent de la partie visualisation du karaoké et affichent ainsi, par exemple, les syllabes a prononcer au moment voulu. Puisqu'il est écrit en Java 1.2, il fonctionne sur toute plateforme supportant Java 1.2 (Windows, Solaris, Linux ...).
Au fait, pour lancer Karaoké Time, il suffit d'exécuter le fichier KaraokeTime.bat (ou exécuter son contenu) qui se trouve dans le répertoire (Il faut bien sur avoir installé au préalable jdk1.2)

Avant tout une petite photo d'écran montrant une utilisation de Karaoke Time:

Si vous désirez voir cette photo en plus grand (~1280x1024) cliquez ICI.
(Si vous cliquez sur chacun des petits cadres de l'image, vous serez automatiquement conduits vers le plugin visuel correspondant)

L'interface de Karaoké Time

L'interface de Karaoké Time est complètement indépendante du reste du programme (elle a cependant besoin de connaître l'objet de type EvenementKaraoke car elle est Observeur de celui-ci).
Il est donc possible de lancer séparément soit la fenêtre de lecture, soit la fenêtre de playlist (cf. les fichiers .bat du répertoire).
Une aide contextuelle s'affiche lorsque la souris passe sur chaque bouton permettant une meilleur compréhension de l'action de ceux-ci.
Certains boutons de la playlist ont été spécialement dessinés pour mieux correspondre a une interface de type musicale (play, stop, prev ...) De plus, ces boutons changent de couleur suivant l'action de la souris.
Une partie de l'interface est modifiable et interchangeable si l'on considère que chaque plugin Visuel (créant un JPannel) fait partie de celle-ci.
Chaque fenêtre est redimensionnable et s'adapte au mieux a la place disponible (ceci est aussi valable pour les plugins Visuels).

Les atouts de Karaoké Time

- Une architecture basée sur les plugins permettant de rajouter un élément (plugin visuel ou audio) au programme sans avoir à modifier le code existant. Cela permet aussi a d'autres personnes de développer des plugins sans avoir connaissance du reste du programme.
- La répartition du programme en différents package le rendant plus modulaire et donc plus lisible.
- Les commentaires de chaque méthode permettant d'effectuer la JavaDoc
- Utilisation d'un maximum des possibilités de Java : Sérialisation, Lecture de fichiers bas niveaux, Threads, Swing, Java2D, JavaSound, Observeurs/Observables, Interface, Héritage, Animation Temps Réel , et Plugins
- Les informations envoyées a chaque plugin lors de l'écoute de la chanson ne sont pas volumineuses .le maximum est envoyé au début de la chanson, ce qui permet a chaque plugin visuel d'avoir du temps pour traiter son affichage.
- Un Logo et une icône originale !!! (bon d'accord le logo est pas très beau !)

Présentation des différents plugin visuels:

ASCII


Affiche les paroles, le titre et l'auteur de la chanson en cours dans une zone de texte (utile pour le copier coller)

CHRONOMETRE


Affiche le temps écoulé de la chanson en cours (permet de savoir ou on en est)

STROBOSCOPE


Affiche la 'ligne de paroles' en cours avec une taille maximale dans la fenêtre

VISUAL HILIGHT !


Affiche la 'ligne de paroles' en cours en affichant distinctivement la syllabe prononcée et affiche aussi la ligne suivante

LOGO


Affiche uniquement le logo Karaoké Time

NEANT


Ce plugin ne fait rien : cool non ?!!

KARAOKE LISTE


Affiche la 'ligne de paroles' en cours et affiche plus précisément la syllabe prononcée en cours ainsi que le moment ou elle apparaît
 

Présentation des différents plugin audio:

- Midi Karaoké : Ce plugin permet de lire les fichier midi a l'extension .kar : c'est a dire ceux qui contiennent en plus des paroles.
- Minute Test : envoie pendant 60 secondes les paroles représentant la seconde actuellement en cours, par tranches de 5 secondes. Il permet de tester simplement les plugins Visuels

Les sources (et l'exécutable) du programme :

Et oui, vous avez accès aux sources du programme, au cas ou ca vous intéresse, que vous désirez améliorer le programme, le personnaliser ou tout simplement ajouter des plugins. Ils viendrons alors se rajouter a la petite liste de plugins déjà existants. Envoyez moi vos améliorations/modifications s'il vous plait.
(Attention, vous devez avoir mon autorisation pour une utilisation commerciale du programme)

Les Sources complètes, et fichiers bach, se trouvent dans le fichier suivant : KaraokeTime.zip

vous pourrez ainsi (après décompression lancer les différents fichiers :

  • compile.bat : permet de recompiler le projet
  • doc.bat : permet de créer la documentation (en html)
  • KaraokeTime.bat : permet de lancer le programme

Références utilisées et documentation effectuée pour réaliser ce projet :

- Gestion des plugins : exemple donné par la démo Java2D de jdk 1.2
- Format des fichiers Midi (copie ici)
- Format des paroles dans les fichiers midi karaoké (copie ici)
- Affichage avec Java2D : exemple donné par la démo Java2D de jdk 1.2
- Conception d'interfaces et programmation Java : cours

Quelques liens utiles :

Voici l'adresse de l'auteur du programme KaraWin (http://perso.planetepc.fr/cocatrix) :
En plus de son programme de Karaoké, vous y trouverez plusieurs liens concernant le karaoké. N'hésitez pas a y aller !

Problèmes actuels et évolutions Futures:

- Le lecture de fichiers midi donnée par java n'etant pas assez fonctionnelle (pour l'instant), la playlist ne peut pas gérer le passage a la chanson suivante a la fin de la chanson en cours
- C'est du Java et c'est donc assez lent (en tout cas sur mon Pentium 133)
- Création future d'un plugin audio utilisant JavaNativeInterface permettant d'utiliser Winamp et ainsi de lire les .lrc (lyrics associés aux fichiers mp3) et éventuellement d'autres fichiers musicaux.
- Si JavaSound s'améliore : intégration de l'avance et retour rapide, meilleur contrôle du temps actuel et détection de fin de lecture pour le plugin Midi Karaoké.
- plugin visuel Baballe affichant un balle sautant sur les syllabes en cours.
- plugin visuel Réseau permettant d'ouvrir une fenêtre de lecture sur une machine distante.