Chargement...
 
Skip to main content

1 - Présentation


SurferIX

😀

Bonjour tout le monde !

Pour commencer la nouvelle année, je vous en souhaite une bonne et une meilleure que l'année précédente !

Je me présente : né en 1973, je suis un développeur et j'ai fait plein de choses relativement techniques, je ne suis pas du tout musicien à l'origine.

Et puis récemment j'ai découvert le piano.
J'ai cassé ma tirelire, et je me suis acheté un tout petit piano : Yamaha Aryus YDP 140
Ensuite j'ai commencé à vouloir apprendre en tant qu'autodidacte, mais j'ai bien réalisé qu'il faut du temps et j'en ai trop peu pour moi.

Alors, comme j'ai plutôt été refroidi par la complexité de la chose et le travail que ça demande, j'ai décidé de faire avancer les choses sur tous les plans afin de me motiver plus. Ma fille de 4 ans joue souvent pour se faire plaisir en tapant bien fort n'importe quoi sur le piano, mais je vois bien qu'elle aime ça.

J'ai donc eu une idée : joindre mon métier développeur et essayer de faire avancer la communauté, tout en apprenant le piano pour moi.
Voilà mon objectif premier : appuyer sur une touche de piano, et, en python afficher qu'on a appuyé sur la touche. Rien de plus !

Ce qui suit sont les explications détaillées de ce que j'ai fait et là où je suis bloqué. Je ne sais pas encore où je devrai le poster, mais vu l'heure, je commence à être fatigué, ça me fait des journées de 8h00 du matin à 0:10 ça commence à être dur dur 😕
Voilà mon historique :
J'ai un petit ordinateur portable HP6735S sous Ubuntu 10.04.
Il fonctionne correctement.
Je viens de recevoir le câble Logilink USB-MIDI qui fait donc logiquement la convertion MIDI USB.
J'ai enfin réussi à installer, et ça semble fonctionner, le serveur jack.
J'ai bien évidemment le son via pulseaudiau, et j'ai fait les modifications en conséquence afin que pulseaudio soit désactivé lorsqu'on lance QTJack ("/usr/bin/pasuspender — /usr/bin/jackd")
Ici aussi tout semble fonctionner.
Dans QTJack, je clique sur "connecter", là une fenêtre s'ouvre, je vais sur l'onglet "ALSA", et il y des deux côtés de la fenêtre deux listes ("clients en lecture" et "clients en écriture"), dans laquelle il y a "20:USB MIDI Cable". Je clique sur le petit "+" à côté afin d'entrer dans le détail, et je vois "0:USB MIDI Cable 1", donc je clique dessus, et le bouton "connecter" devient cliquable. Je clique donc sur connecter, et je fais pareil de l'autre côté (côté donc "clients en écriture") Là, un lien rouge apparaît entre les deux.
Et je vois les leds "in" et "out" sur le cordon qui clignotent.
De là, j'ai récupéré pyJack, et je l'ai compilé. Entendez par là que j'ai fait tout ce qu'il fallait faire pour pouvoir lancer les exemples sans erreur.
Seul hic : lorsque je lance le script "capture.py", tout fonctionne, sauf que l'enregistrement "wav" qui est fait est blanc, il n'y a rien, alors que j'appuie sur les touches du piano.

Je suis vraiment un débutant complet, total, je n'y connais absolument rien en musique, et rien en midi, par contre, je m'en sors très bien en développement.
Il doit me manquer quelques briques pour comprendre comment se font les échanges dans le détail lorsqu'on appuie sur une touche de piano.
J'aimerai savoir comment ça se passe : on appuie sur la touche, ça va dans la prise MIDI sous une certaine forme (mais laquelle ?), ça ressort en USB et ça arrive au serveur Jack sous une autre forme (je suppose) (mais laquelle ?) et ensuite, Jack enregistre ce qui est arrivé, puis il doit y avoir un client qui s'est connecté sur Jack, qui est notifié par Jack qu'il y a quelque chose à lire (un callback) et qui doit le lire. C'est jusque là que je veux arriver, c'est à dire que je veux développer un client, si possible en python, qui reçoit la note, l'analyse, et l'affiche en temps réel sur l'écran. Quand je dis "l'affiche", c'est pour l'instant sous texte, rien de plus.

Mon objectif premier est de faire une version d'un programme qui dit "appuie ici" en montrant une note à un endroit sur la partition, et il faut qu'on appuie au bon endroit. Rien que ça. Mais ça semble relever du bon gros challenge de geek. Si jamais j'y arrive, mon objectif final est de faire un tout petit programme qui entraine à faire le lien entre une note sur la partition, et une touche sur le piano. C'est pas trop compliqué, ça doit être dans mes cordes, et si linuxmao et les utilisateurs m'aident à y arriver, il y aura un nouveau programme pour débutant sur piano qui viendra s'ajouter à la liste des programmes !

A très bientôt j'espère !

Olivier
France
Coucou Olivier et bienvenue sur LinuxMAO 😉

Alors, avant tout, si tu es développeur, le portail développer va peut être t'intéresser, n'hésite pas à y faire un tour, il est plutôt jeune pour l'instant mais ne demande qu'à grandir !

Normalement on a un forum dédié au développement sur LinuxMAO : "Développer/Traduire/Documenter/Annoncer" mais bon, j'vais pas t'embêter avec ça si tu débarques sur le site, il est volumineux et c'est normal d'y déambuler avant de comprendre comment il fonctionne.


Donc, pour en venir à ce qui t'intéresse : quand tu enregistres ton truc, ça me parait logique qu'il ne t'enregistre rien au niveau son. Le MIDI est un langage, une norme, y'a pas d'audio la dedans, ton clavier midi n'est rien de plus qu'un contrôleur qui, schématiquement, dit : "Je veux un Do de telle octave, de telle plongeur, à telle puissance". Un clavier MIDI ne produit pas de son, c'est un donneur d'ordre qui doit être relier ensuite à un exécutant sonore, je te conseille pour tes premiers tests, ZynAddSubFX qui est un logiciel de synthèse sonore qui exécutera ce que lui dit ton clavier.
Tu relieras dans l'onglet ALSA de qjackCtl la sortie de ton clavier à l'entrée de ZynAddSubFX, et dans l'onglet audio, la sortie Audio de ZASFX à tes haut-parleurs (playback).
Fais nous une capture d'écran que tu poseras quelque part sur le net et tu nous fileras le lien (http://pix.toile-libre.org/ par exemple).

Sinon, encore une fois bienvenue !

Content de voir des développeurs arriver de plus en plus fréquemment sur le site, le portail développer vous appartient, dites moi ce dont vous avez besoin (mis à part une forge logiciel, y'a a déjà plein, et on a pas les moyens en bande passante 😉 )

à te lire,
Olivier, aussi...
Coucou Olivier et bienvenue sur LinuxMAO 😉


Re bonjour, et merci encore pour ce super message, c'est tellement rare de voir une communauté vraiment active qui faut le souligner !

Grâce à ta suggestion, et ton explication, j'ai parfaitement tout compris, et après avoir bien bataillé, j'ai finalement réussi à installer et compiler le programme ZynAddSubFX.
Ce qui m'effraie un peu, ça n'est pas tant de l'installer et le faire fonctionner, c'est que très compliqué pour quelqu'un de "basique".
Autant lire que l'utilisateur lambda doit :
-(1) installer Ubuntu (10.04 dans mon cas et pas avant ni après s'il a le même ordinateur que moi 😐), ce qui n'est pas chose forcément aisée, mais bon, supposons qu'il y arrive... après cela, il doit
-(2) réussir à installer le serveur jack, avec l'outil de contrôle JackAudio Connection kit, qui n'est pas très aisé, surtout du fait qu'il faut certainement changer la ligne de lancement du serveur afin de désactiver pulsaudio 🙄, mais bon, supposons qu'il y arrive... après cela, il doit encore 😢...
-(3) télécharger puis compiler ZynAddSubFX, ce qui n'est pas du tout évident, vu qu'il y a forcément plein de librairies qui manquent, qu'il doit installer via la ligne de commande avec les bons "sudo apt-get" des familles 😢😢

Donc disons que pour arriver "simplement" à faire fonctionner tout ça, c'est mission pratiquement impossible (disons impossible tout court, il ne faut pas rêver, toute personne qui ne s'y connait pas n'arrivera jamais au bout) pour un utilisateur lambda.

C'est vraiment très dommage, et je vais essayer d'apporter ma pierre à l'édifice en faisant un petit tutoriel sur l'installation de jack parce que créer un groupe d'utilisateurs "audio" et y ajouter l'utilisateur courant, ça n'est pas donné non plus à tout le monde 😢...

Bref en tous les cas j'ai réussi à l'installer et en voici ce que ça donne lorsque j'appuie sur une touche de mon piano : ça fonctionne :

http://olivierpons.fr/img/linux.lmao.jack.qui.fonctionne.jpg

Bon, le seul petit hic, c'est qu'à un moment, il ne s'est pas apercu que j'ai relaché la touche, et le son continuait indéfiniment... Mais bon, pour ce que je veux faire, ça n'est pas si grave que ça, je vais au final devoir me plonger dans le source de ce programme, mais ça non plus, ça n'est pas encore gagné !

Un grand merci encore pour cette aide, je vais aller poster tous mes autres messages futurs sur le forum des développeurs.
Et encore félicitation pour la modestie et l'ambiance qui règne, parce que les développeurs, sur des sites très pros dédiés au développement tels que developpez.com, l'ambiance est toute autre et je n'ai jamais été agréablement surpris...

Encore bravo, à très bientôt !

Olivier
France
Bon cool que ça marche 😊

à part ça, je pense que tu dois avoir zynaddsubfx dans ton gestionnaire synaptic, non ? Je pense que tu n'as pas besoin de le compiler, ça c'est une manie de développeur 😉

Pour "mon petit point de vue personnel d'à moi que n'engage que moi" : UbuntuStudio n'est pas bon pour la MAO en grande partie à cause de PulseAudio mais aussi parce que rien n'est pré-configuré pour la Débuter - la MAO (normal pour une distrib' grand public très orienté desktop). C'est pour ça que j'utilise TangoStudio, basé sur une ubuntu 10.04 mais pré configurée pour la Débuter - la MAO avec des logiciels de MAO (et quelques autres aussi) très à jour (patché avec des améliorations des GITs). Je te conseille d'essayer !

à bientôt 😉
Olivier
Allemagne
Salut et bienvenue,

pour arrêter le son, il faut envoyer une commande MIDI NoteOff, tout simplement.

Concernant Le système GNU Linux en général et la Débuter - la MAO en particulier, c'est vrai que les départs sont déroutants.
Toutefois, un des gros avantages des distributions récentes et grand public est leur gestionnaire de logiciels (synaptic pour ubuntu par ex.) qui permet d'installer très simplement ce dont on a besoin.
Je connais plein de monde qui fonctionne sous linux sans toucher à la ligne de commande et qui ne savent pas compiler du tout.
Il est vrai qu'un système audio performant demande de sortir des clous, mais on peut aussi faire le choix d'une distribution spécialisée comme tangoStudio afin de s'éviter les configurations moins faciles.

Et bonne continuation dans l'apprentissage du piano !!!
France
il y a aussi piano booster qui devrait t'interresser, ca ressemble fortement au programme que tu décrit 😉
Genial et merci pour tout. Seulement ces temps ci ça commence à être un peu difficile, vu que j'ai un bébé qui a ... 3 jours ! Tout s'est bien passé (ouf) et la maman est de retour à la maison. Je suis en train de terminer mon garage de geeks, entièrement réhabilité pour me faire une pièce informatique. Elle est tout simplement... superbe 😎 Il faut que je la finisse, que je gère ma fille de 4 ans bref je vais pas faire mon blog ici, mais malgré le fait que je sois vraiment très positivement impressionné par ce site et les retours que vous me faites, je ne sais malheureusement pas quand je pourrai continuer cette aventure, qui me passionne pourtant, comme peu de choses m'ont passionné depuis un sacré bout de temps 😊

Je vous tiens au courant. Je vais regarder tous les liens que vous m'avez donné, et merci encore pour tout, à très bientôt je l'espère !

--

Olivier
Allemagne
Wahh, cool, félicitations !

n'hésite pas à nous dire si ça avance !
Re, je suis en train d'examiner en profondeur Piano Booster, mais je suis à la fois épaté et... effrayé !

C'est un travail de grande haleine, qui a été fait par quelqu'un de passionné, et c'est quelque chose de très bien.
Il correspond vraiment à ce que je voudrais faire, mais à quelques limitations près, qui font que je me pose quelques questions... Voici les limitations :

(1) il n'y a pas de possibilité de faire un "temps donné" entre chaque note, c'est à dire que si au bout de X secondes on n'a pas trouvé, ça continue
(2) dans le même ordre d'idée, il n'y a pas de score. Moi j'ai dans l'idée de faire quelque chose qui ressemble vraiment à un jeu. Je veux que ma fille de 4 ans, qui adore particulièrement appuyer sur les touches, apprenne en s'amusant. Bien sûr je serai auprès d'elle quand elle le fera, mais malheureusement, Piano Booster est vraiment très très très austère, pour ne pas dire triste, et malgré le travail impressionnant, ne donne pas vraiment (et vraiment c'est très dommage) envie d'aller plus loin.
(3) dernier problème 😢 : il est écrit en C et ne semble pas du tout, si j'en vois les sources, fait pour le multilangue. Un de mes objectifs principaux c'est que toute la communauté réussisse à le faire évoluer : dans un répertoire dédié, il devrait y avoir toute la langue concernée : les sons, les couleurs etc.
(4) il n'apprend pas le solfège et j'aimerais trouver un moyen amusant pour apprendre le solfège. Je sais que c'est un challenge, parce que chaque enfant a sa propre personnalité, mais je compte faire quelque chose en Python : faire quelque chose de scriptable (c'est à dire qu'on pourra très facilement modifier le déroulement de chaque exercice (même si je n'aime pas le terme exercice et que j'espère qu'on pourra dire si je vais au bout "chaque petit jeu"))
(5) ni multilangue ni solfège = notes affichées que dans une langue = Anglais. J'aimerais pouvoir lire do# au lieu de lettres. Encore des modifications en profondeur..

Tout ça fait que, c'est vraiment très très dommage, mais malgré le travail, il semblerait qu'il faille modifier tellement de choses que j'aurais aussi bien tout à ré-écrire. Je vais bien lire et comprendre le code, mais ça va me prendre du temps, car comme je l'explique ici, il est toujours plus dur de lire que d'écrire du code.

Je veux tout écrire de la façon la plus simple et surtout j'aimerais lancer un projet suffisamment simple, et clair pour que d'autres personnes puissent le faire évoluer des deux façons qui me semblent vitales pour un projet à savoir :
- le faire évoluer dans son code
- le faire évoluer dans son écosystème (traductions, scripts, nouvelles chansons, etc)

C'est un objectif très ambitieux mais il faut toujours voir plus haut que ce qu'on veut pour pousser la machine à son maximum !
Je veux utiliser des choses simples et qui tournent bien, voire très bien depuis longtemps. Pour être plus précis, un de mes objectifs d'origine était de mettre en place un "pont", ou un "lien" entre cet outil extraordinaire qui sert à écrire des histoires RenPy et un outil tel que Jack pour raconter des histoires où l'enfant peut interagir. Je ne sais toujours pas si c'est possible, ou si je vais développer mon propre moteur avec PyGame, et PyJack, pour essayer de faire, pour ma fille, quelque chose qui l'intéresse et pour moi, un truc "à la Guitar Hero" mais version piano.

Je me plonge dans les sources de Piano Booster et je vous tiens au courant, j'ouvrirai un topic dans la section développement dès que je commencerai quelque chose !
France
SurferIX écrit:
Je me plonge dans les sources de Piano Booster et je vous tiens au courant, j'ouvrirai un topic dans la section développement dès que je commencerai quelque chose !

Coucou Olivier,

il me semblait avoir répondu à ton message, mais j'ai bien l'impression qu'il a été victime des déconnexions que j'ai eu avec le site ces derniers jours ... 😕

Bref,
Ton projet à l'air super intéressant et me fait penser à cette forge de logiciel ludo-éducatif http://www.abuledu.org/leterrier/accueil. Ton projet terminé, je pense que ça pourrait les intéresser.

Enfin voilou, je voulais simplement te faire un petit message pour te donner mes encouragements.

À bientôt dans le forum développer ou ici ou ailleurs d'ailleurs 😉
a+
Olivier