Forum : 6 - Le MIDI

[RÉSOLU] Filtrer les messages de changement de programme MIDI sous JACK.

Tux le Manchot utilisateur non connecté
Configuration :

J'utilise présentement MuseScore 3 pour écrire une bonne partie de ma musique, et j'achemine les données MIDI émises par MuseScore 3 à un synthétiseur virtuel externe, à l'aide de JACK et d'a2jmidid. Évidemment, je déconnecte l'audio émit par MuseScore 3 dans JACK, puisque je n'en ai plus besoin.

La situation :

MuseScore 3 lance un message de changement de programme MIDI à chaque fois que la lecture du morceau est débutée, changeant donc le programme chargé dans le synthétiseur externe au moment de la lecture. C'est cela que je désire éviter, puisqu'il n'est pas très commode de devoir changer le programme à chaque fois que je lance la lecture.

Spécifiquement :

Je ne veux pas régler le problème sous MuseScore 3. Mon installation est déjà un peut particulière, et je ne veux non plus changer la façon dont les instruments sont gérés dans quelque chanson particulière, surtout pas dans le programme en question.

Ce que je désire plutôt faire est de filtrer le message de changement de programme émit par MuseScore 3, pour ne laisser passer que le reste du signal MIDI. Je veux, par contre, éviter d'aussi filtrer le message de synchronisation et tout le reste. En autres mots, le reste du signal doit rester identique à l'original.

J'ai trouvé un tas de solutions en lignes, toutes plus abstraites les unes que les autres. Avant de me lancer dans la routine habituelle d'installer plusieurs programmes et de tous les essayer, j'ai pensé demander l'avis de gens qui ont possiblement déjà eu un problème similaire.

Pour clarifier, un plugin MIDI dans quelque format destiné à un hôte m'est inutile, puisque je n'utilise pas d'hôte, mais un synthétiseur indépendant. Le filtrage doit être fait à partir d'un programme qui présente des ports d'entrée et de sortie MIDI à JACK.

Je remercie de tout cœur quiconque a pris le temps de lire mon message, et j'ai bien hâte de connaître votre avis. Dieu vous bénisse tous et chacun, et que Marie vous protège.

Image

tongo utilisateur non connecté
Salut tu peux faire ça en toute simplicité avec qmidiroute qui est en standalone et fait pour ça .
Qmidiroute lit les données midi entrante et peut a l'aide d'une ou plusieurs règles transformer tel message midi en tel autre ou simplement empêcher un type de message particulier de traverser .
Il va falloir faire quelques test avant d'en arriver à tes fin le temps de piger le fonctionnement , mais c'est pas très compliqué .
Si tu doit utiliser plusieurs logiciel en standalone je te conseille d'utiliser Ray Session pour manager tout ça et sauvegarder l'état des logiciel et leurs interconnexions (midi et audio ) ça simplifiera la tache .

A +

Tux le Manchot utilisateur non connecté
Merci bien pour votre réponse. Je l'apprécie.

Cela me semble génial comme petit logiciel. Je n'ai qu'à comprendre comment éliminer un certain message MIDI plutôt que de le transformer en autre choses. Voici une capture d'écran simple :

Image

Dans le menu déroulant sous "Ouptut", il ne semble pas y avoir d'option "None" ou "Cancel". Comment faire pour que les messages de changement de programme soient complètement ignorés, tout en évitant d'envoyer des messages arbitraires à leur place ?

Merci encore pour votre aimable suggestion, et portez-vous bien.

tongo utilisateur non connecté
selon la capture d'écran , ce que vous avez fait c'est de sélectionner les program change en entré et de les transformer en note en sortie .

Ce qu'il faut faire c'est sélectionner tout les messages en entrée et seulement note en sortie .
Donc juste changé sur l'onglet de droite program change par tout les messages midi .
Franchement je suis pas devant pour l'instant .
Continuez de cherchez et je jetterais un coup d’œil ce soir .
Parfois il faut définir plusieurs règle d'affiler et les envoyer toutes sur le même canal de sortie .

A+

tongo utilisateur non connecté
Je viens de faire un test ça fait un moment que je m'en était pas servi .. je me suis légèrement trompé .
Dans le premier onglet sélectionner note comme type d'évènement , sélectionner le canal qui convient dans votre cas , dans le deuxième onglet laisser tel quel avec note sélectionner comme type d'évènement , chez moi si je fais ça seulement les notes traverse et la vélocité aussi, rien d'autres
Dans le deuxième onglet pensez a choisir en bas entre alsa port 1 et alsa port 2 et a connecté le synthé cible sur le bon port alsa .

A+

Tux le Manchot utilisateur non connecté
@tongo

Génial, merci tellement d'avoir pris le temps de faire ça. Ça marche à merveille.

Une petite question : Le message de synchronisation (MIDI clock) va-t-il passer avec la configuration proposée, ou va-t-il falloir que je me fie sur le JACK transport? Je ne suis pas trop sûr comment tester, mais c'est dans mes plans d'éventuellement synchroniser des séquenceurs avec MuseScore (et autres).

Merci encore, c'est super utile. Je vous souhaite une excellente fin de semaine.

tongo utilisateur non connecté
Tant mieux si ça fonctionne .
Je suis pas utilisateur de MuseScore mais si il fonctionne avec Le transport Jack , le fait d'intercaler qmidiroute entre MuseScore et un synthé virtuel en stand alone n’empêchera pas d'utiliser la synchronisation du transport Jack .
Surtout si le but est de synchronisé MuseScore avec un séquenceur comme Hydrogen ou ardour par exemple qui sont compatible avec le transport Jack .
Pour ce qui est de savoir si le signal midi clock transite au travers de qmidiroute , il faudra voir dans un exemple concret et c'est dans ce cas qu'il faudra peut être créer une règle supplémentaire pour le faire passer .
Mais ça sera un autre sujet .
Si c'est bon pour ce post il est temps de le passer en résolu .
A+

Tux le Manchot utilisateur non connecté
tongo écrit :
Si c'est bon pour ce post il est temps de le passer en résolu .


Parfait, merci bien pour l'info ! À plus.