Cher journal
Ce qui devait être au début juste un simple bug fix a été maintenant une quasi-complète reécriture, et je suis fier de te dire que maintenant Linthesia est construit sur des bases solides et cross plateformes (C++11 avec SFML et RtMidi). Le jeu commence a être utilisable mais il reste énormément à faire, et je ne serai pas contre un coup de main, surtout que le code est très accessible, même pour des débutants en panne d'idée de projets.
Le github pour les impatients : Linthesia
Un mot rapide sur le gameplay
Une image vaut mieux que mille mots : voila à quoi ressemble l'écran principal de jeu:
Le joueur choisit une musique (via des fichier MIDI), les pistes qu'il veut jouer, le jeu fait défiler les notes et le joueur doit jouer les notes quand elles arrivent au contact du clavier, rien de bien extraordinaire. La précision à laquelle le joueur a réussi à entrer la note est comptabilisée en bas de l'écran.
Le jeu n'est pour l'instant utilisable qu'avec un clavier MIDI, c'est donc beaucoup moins "un jeu grand public, rapide pour s'amuser pendant 5 minutes" mais plus pour la niche des personnes pratiquant le piano/synthé. Je ne sais pas si cela restera ou s'il y a moyen d'en faire un jeu plus grand public (peut-être en trouvant des fichiers midi avec peu de touches, de manière à ce qu'un clavier de PC soit suffisant ?)
Liste des fonctionnalités dans cette version
- possibilité de mettre ses propres fichiers midi dans le dossier "songs"
- possibilité de choisir l'output/input MIDI
- possibilité de choisir si une piste est jouer par l'ordinateur/par le joueur/muette/non afficher
- écran de jeu comme montré au dessus
- ralentir/accélérer le temps
- mettre en pause le jeu
- et … c'est tout
Le contexte
il y a quelques années j'ai voulu me mettre à jouer du piano, car c'est bien pour attirer les personnes du sexe opposé il parait. Comme j'étais étudiant sans un sou a l'époque, plutôt que d'acheter un piano j'ai acheté un synthé MIDI, et plutôt que de prendre des cours de piano, j'ai essayé de voir s'il y avait des logiciels pour "apprendre" à jouer.
Je suis tombé sur Synthesia, or il est Windows/Mac only (bon maintenant Ios et Android aussi), mais pas Linux et pire encore, il n'est pas opensource. J'ai donc cherché une alternative. Là je suis tombé sur Linthesia, et malheureusement ça n'a compilé que pour une version d'Ubuntu puis cela a arrêté de fonctionner à l'upgrade suivante d'Ubuntu. Le bug est sur le tracker de Debian/Ubuntu et du sourceforge du projet depuis plusieurs années.
Avec un ami, nous avons essayé de traquer le bug, vu que celui-ci rendait le jeu totalement inutilisable. A la fin nous nous sommes rendu compte que le bug venait du fait que Linthesia utilisait une fonction non documentée des binding C++ de GTK, et que cette fonction a été retirée à partir d'une version X de ces bindings. La où cela devenait gênant c'était que cette fonction n'avait pas d'équivalent simple et s'occupait d'une partie majeure du jeu (le rendu des fontes en un tableau de pixel pour ensuite être collée sur un contexte OpenGL).
Donc après avoir réfléchi, avoir pesé que le projet semblait ne plus être maintenu et que beaucoup de fonctionnalités étaient manquantes (pas de "tutorial", beaucoup de parties "brouillon", pas d'historique des scores, pas de possibilité de retour en arrière etc.) et après avoir vu la qualité du code, je me suis mis en tête de re-écrire le projet.
Et donc voila à présent je commence à avoir quasiment les mêmes fonctionnalités que la version originale de Linthesia.
Le futur
Je pense à présent que le code du jeu a atteint une maturité suffisante pour l'ouvrir aux contributions externes, il y a nombre de petites améliorations qui sont à la portée d'un débutant, et pour lequel je peux offrir de l'accompagnement au besoin.
Pour les non-développeurs avec une âme "expérience utilisateur" et ou graphiste, je n'ai rien contre des idées/propositions pour rendre le jeu plus joli.
De l'aide aussi pour faire des packages pour les diverses distributions serait très fortement apprécié aussi.
Par exemple une personne m'a rapporté que le jeu crash sous Debian Wheezy et je serai a la recherche d'un dev sous Debian qui pourrait m'aider à corriger ce problème.
Fonctionnalités prévues dans le futur
- Traduire l'interface du jeu (et permettre sa traduction)
- S'adapter de manière élégante à diverses résolutions d'écran
- Possibilité de faire des retour arrière
- Introduction d'un mode "tutorial" avec des MIDI conçus pour
- Amélioration du game play du jeu principal (voir quand le jeu est en pause/pas en pause, avoir un meilleur retour visuel quand une note est appuyée correctement)
- Garder un historique des scores de manière à voir sa progression
- s'assurer que le jeu compile bien partout
- soyons fous, mais pourquoi pas un port Android/Ios (SFML a l'air de pouvoir le faire maintenant, et RtMidi devrait pouvoir être patchable pour offrir ce support)
- porter le code pour Rust, parce que c'est hype.
# Apprentissage.
Posté par deuzene (site web personnel) . Évalué à 2.
Tout d'abord bravo pour ton travail. On voit bien ici l'avantage du libre, et tu en as profité. D'ailleurs, pourrais-tu préciser la licence sous laquelle tu (v)as placer ton logiciel ?
J'aimerais connaître ce qu'apporte ce type d'application dans l'apprentissage de l'instrument. Vu d'ici cela ressemble plus à un jeu genre Simon, est-ce une méthode de practice ou cela restera un jeu, bien que l'on puisse mémoriser un morceau de cette façon ?
Je ne peux malheureusement pas tester, je n'ai pas de clavier.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: Apprentissage.
Posté par Allan Simon (site web personnel) . Évalué à 4. Dernière modification le 28 décembre 2014 à 14:55.
La license es GPLv2 car je reutilise encore le code de la mini "bibliotheque midi" qui etait dans le projet original (je l'ai nettoye, fixer un probleme de 32/64 bit pour les int, et porter pour tirer avatange du C++11, mais je dirais que 70% du code n'a pas change) et qui est sous GPLv2 (ou 3)
si je devais retirer ce dernier morceau de code, je pense que je passerai a MIT ou BSD
Pour l'apprentissage, tres bonne question, vu que je suis rester a "quand j'aurai reecri ce logiciel je pourrais enfin me mettre au piano". Je pense que la version actuel ne permet que la memorisation bete et mechante de morceau.
Ce qui pourrai faire du jeu une methode plus complete serait
sinon oui je me sers souvent du coup de cet exemple personnel pour justifier le le libre.
# faire des packages
Posté par palm123 (site web personnel) . Évalué à 2.
Je suis intéressé.
ウィズコロナ
[^] # Re: faire des packages
Posté par Allan Simon (site web personnel) . Évalué à 1.
super, comment on entre en contact ?
[^] # Re: faire des packages
Posté par palm123 (site web personnel) . Évalué à 2.
Je t'ai écrit sur ton email, si il est valide, tu as reçu un mail.
ウィズコロナ
[^] # Re: faire des packages
Posté par Allan Simon (site web personnel) . Évalué à 1.
oups, je viens d'update mon profil, c'etait une vieille addresse, tu peux me reenvoyer s'il te plait? Desole.
# grand public
Posté par leovilok . Évalué à 2.
S'il est possible de convertir un flux audio en midi facilement (?) tu peux essayer d'accepter les entrées audio et tu gagnes tout les possesseurs de micros et d'instrument de musique (ou d'une bonne voix) pour des fichiers MIDI simples. Si ça se trouve dans l'état actuel c'est déjà possible en maltraitant JACK un peu.
En se moment je joue pas mal à Stepmania et je me disais justement qu'avec un jeu de ce type je me remettrais bien à un vrai intrument.
[^] # Re: grand public
Posté par Allan Simon (site web personnel) . Évalué à 2.
hmm je n'ai pas encore recherche dans ce sens la, mais c'est en effet une bonne idee. Je sais que le projet Performous a un systeme de "pitch detection" mais je pense que leur code actuel permettra pas de detecter des accords et autre notes superposes
# guitar hero
Posté par zurvan . Évalué à 3.
on t'a trompé, il s'agit en fait de la guitare… :)
Pour Linthesia ça semble sympa, mais c'est vrai qu'une version pour clavier d'ordinateur ça apporterait plus de clients potentiels.
« Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher
[^] # Re: guitar hero
Posté par Allan Simon (site web personnel) . Évalué à 2.
oui, d'ailleurs je me demande la dessus pour le "piano" avec un clavier
l'interface actuel ne convient pas car:
donc je pensais
[^] # Re: guitar hero
Posté par zurvan . Évalué à 1. Dernière modification le 29 décembre 2014 à 18:30.
on peut utiliser le clavier comme pour les tracker de musique.
http://b-knox.com/wp-content/uploads/2011/07/music-tracker-keyboard.png
Je pense aussi que simplifier le jeu avec toutes les notes sur une seule touche quelle que soit l'octave serait la meilleure solution (pour clavier pc évidemment)
J'ai essayé de le compiler, mais j'utilise kxstudio qui a une version de libjack0 incompatible avec libjack-dev. J'attendrais donc un binaire officiel (ou pas)
« Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher
# Graphisme
Posté par Zatalyz (site web personnel) . Évalué à 2.
En voyant le screenshot je me disais qu'il y avait de quoi améliorer facilement (un peu de relief sur les boutons et les notes), que c'était assez facile pour que j'ose regarder, mais en téléchargeant les sources, ce qui est dans "graphics" me semble déjà avoir les effets recherchés… Pas vu comment l'apparence du clavier était géré, mais pour ce qui est des notes ça parait correct.
Donc, comment ça se fait qu'il n'y ait pas ce graphisme des notes ? Comment le graphisme est géré ? Faut regarder où ?
[^] # Re: Graphisme
Posté par Allan Simon (site web personnel) . Évalué à 3.
oui en effet, j'ai un ticket la dessus https://github.com/allan-simon/linthesia/issues/52
les raisons pour lesquelle ces graphismes ne sont pas utilises pour l'instant sont
Le code pour generer le clavier de piano est ici https://github.com/allan-simon/linthesia/tree/master/src/keyboard (il y a une classe pour les notes blanches ou pour les noires)
et pour le tapis de notes c'est ici https://github.com/allan-simon/linthesia/tree/master/src/screens/one_player_screen:
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.