Pour tous ceux qui se posent des questions sur RTP-MIDI...
- 18 réponses
- 6 participants
- 8 007 vues
- 8 followers

BebDigitalAudio


Voici quelques liens vers des pages Web et des documents donnant un maximum d'explications RTP-MIDI:
* La page Wikipedia anglaise, la plus active et la plus détaillée : https://en.wikipedia.org/wiki/RTP_MIDI
* La page Wikipedia française https://fr.wikipedia.org/wiki/RTP_MIDI
* La page du driver RTP-MIDI Windows (gratuit) https://www.tobias-erichsen.de/software/rtpmidi.html
* Tutoriel sur la création et la configuration d'un setup RTP-MIDI autour des appareils iOS http://www.kissbox.nl/downloads/Manuals/RTP-MIDI%20Integration%20guide%20for%20iOS%20devices.pdf
* Tutoriel sur la création et la configuration d'un setup RTP-MIDI autour de machines Mac OS et Windows
http://www.kissbox.nl/downloads/Manuals/RTP-MIDI%20Integration%20guide%20for%20Windows%20and%20MacOS.pdf

Rémy M. (chimimic)

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Olivz

1 Est-ce plus stable en midi? ou en ethernet ?
2 Obligation de prendre un cable croisé dans la solution ethernet ?
https://soundcloud.com/scheeba

BebDigitalAudio

qu'est ce que tu appelles plus stable? Tu parles en risque de crash logiciel ou en précision temporelle ?
Si c'est en termes de risque de crash, je pense que ça ne crashe pas plus en réseau qu'avec des interfaces MIDI "classiques". Personnellement, j'utilise RTP-MIDI sur Mac et Windows depuis des années, et je ne me rappelle pas d'avoir dû redémarrer une machine suite à un plantage d'un driver.
En termes de stabilité du timing, tout dépend en fait des équipements avec lesquels tu travailles. Si tu utilises des interfaces matérielles, elles utilisent le plus souvent des noyaux logiciels sur base temps réel. Le modérateur de MIDIBox avait mesuré la différence de temps de réponse entre une interface RTP-MIDI KissBox et une petite machine Linux. Il avait trouvé un temps de réponse entre 100 et 400 microsecondes sur la KissBox, et 250 à 1000 microsecondes sur le Raspberry.
Donc pour répondre à ta question, tout dépend de l'OS. Il y a une explication détaillée des variations avec une analyse des causes sur la page Wikipedia. En gros, si tu passes d'un Mac à un PC (sans interface hard), tu obtiendras 2 à 3 millisecondes maximum (le Mac est un poil meilleur là dessus d'ailleurs)
Il y a pas mal de discussions sur Internet à propos de timing immondes sur le MIDI USB sous Windows 8 et même sous Seven, mais franchement, je n'ai pas vraiment d'informations prouvant si c'est vrai ou pas (les valeurs que j'ai vues me paraissent tellement énormes que j'ai du mal à y croire: j'ai vu des valeurs de presque 50 millisecondes dans certaines discussions

Et pour ta deuxième question, tout dépend de ta configuration.
Normalement, entre deux ordinateurs connectées directement, il faut prendre un câble croisé. Si tu mets un switch entre les deux, il faut mettre un câble droit entre chaque ordi et le switch.
Maintenant, la très grosse majorité des cartes réseaux actuelles (Mac ou PC) ont une fonction d'auto-crossing, donc tu peux mettre un câble droit ou un croisé entre deux ordinateurs, ça marche toujours
J'espère que ça t'éclaire un peu, sinon n'hésite pas à revenir ici pour poser tes questions, j'essaierais de répondre au mieux

Olivz

Du coup hier on a testé avec un cable ethernet simple. Et on arrivais pas forcément a faire tout fonctionner.
On avait environ 1ms de latence donc très bien. Pour autant, on arrivais pas forcément a se mettre tout les deux en participant. et le port n'etait pas le meme (5004 et 5006) Y-a-til un hote (maitre) directement a chosir dans RTP-MIDI ? Je n'y connais vraiment rien la dedans. Ca se trouve c'est directement dans ableton qu'on arrivait pas a le faire fonctionner. Car je ne voyais pas le mac de mon pote dans ableton, je ne voyais en source midi que le host de ma machine mais pas la sienne.
(Je ne suis pas clair du tout mais j'arrive pas a dire les choses autrement!!!)
Du coup on s'est dit que c'était a cause de notre cable. Je comptais acheter un cable croisé ce soir mais vu que nos ordis (mac book pro 1ans et demi) / Dell(récent) sont assez récent. Je me pose la question de réessayer tout ça avant de faire l'achat.
https://soundcloud.com/scheeba

BebDigitalAudio

Vu que tu as réussi à obtenir un début de communication, je pense que ton câble convient (le Mac étant de toute façon auto-crossing)
Il faut que tu comprennes un point important: les applis ne savent même pas que tu passes en RTP-MIDI ou autre chose. Pour Ableton et compagnie, c'est une interface MIDI comme une autre. Il faut donc que tu regardes d'abord pour obtenir une session stable.
En deux mots, une session, c'est un groupe MIDI IN / MIDI OUT pour ton soft. Quand tu crées une session, elle va apparaître dans Ableton comme un port MIDI. Il faut donc créer ta session avant de démarrer Ableton, sinon il ne la verra pas (Ableton liste les interfaces quand il démarre uniquement)
Il faut donc que tu ailles d'abord dans le panneau de config RTP-MIDI de la machine sur laquelle Ableton tourne, et tu crées une session. Tu lui donnes le nom que tu veux, ce nom va apparaître dans Ableton comme une interface MIDI. Vérifie ensuite que tu as bien activé la session (il y a une case à cocher à droite).
Tu peux mettre n'importe quel numéro de port, et tu peux utiliser le même numéro sur toutes les machines si tu veux (plus simple à se rappeler). La seule règle, c'est qu'il ne doit pas y avoir deux sessions utilisant le même numéro de port dans le même ordi. Mais tous les ordis peuvent chacun utiliser le même numéro de port sans souci.
Lance ensuite Ableton, et tu dois voir la session que tu as créée dans la liste des interfaces MIDI. Là, tu utilises cette interface MIDI comme d'habitude dans le soft
Fais la même chose sur l'autre ordinateur (tu crées une session et tu l'actives). A ce moment là, tu dois voir ta session qui apparait toute seule dans la liste des partenaires de la première machine (et pareil, tu dois voir la session de la première machine apparaître dans la liste de l'autre, le "Directory" pour le driver rtpMIDI, le "Répertoire" pour un Mac français)
Et là tu peux choisir qui prend l'initiative. Le Mac comme un PC Windows peuvent devenir "Session initiator" (celui qui invite l'autre). Pour inviter un ordi, tu cliques sur la session de l'ordi qui invite pour la sélectionner, tu cliques ensuite sur l'ordi à inviter dans la liste du dessous, et tu clique sur "Se connecter". Tu dois alors voir le nom de l'ordi distant s'afficher dans la liste des participants.
Vérifier que tu voies bien une mesure de la latence s'afficher à côté du nom de participant. Si tu voies "??? ms", ça veut dire que la machine distante n'arrive pas à se connecter. Tant que tu n'auras pas un affichage de latence, aucune donnée MIDI ne passera.
Comme une session, c'est un MIDI IN et un MIDI OUT en même temps, ça ouvre une liaison bidirectionnelle, donc pas besoin de toucher à la machine distante, elle échanges les données dans les deux sens aussi (la notion de machine qui invite ne définit pas le sens des flux MIDI si tu préfères)
Les deux causes de problème les plus fréquents avec RTP-MIDI sont:
- les deux machines pas configurées sur le même réseau (il faut que les adresses IP soient compatibles. Su tu as un serveur DHCP genre Freebox ou Livebox, tu n'as pas besoin de t'en occuper, il va mettre tout le monde sur le même réseau)
- le firewall Windows.... qui décide parfois de bloquer des ports de façon inattendue (genre les ports utilisés pour le Plug&Play par exemple...). Du coup, tu n'arrives pas à voir les participants, car le driver ne voit pas les messages Plug&Play envoyés par les autres machines. Il suffit de stopper le firewall pour voir si ça résout le problème. Si les autres machines apparaissent alors, il suffit de demander au firewall de laisser passer le trafic de ces machines.

Olivz

Du coup, je pense qu'on était bon ! On voyait la latence s'afficher donc pas de soucis. En fait ce qui me troublais c'est que je pensais que dans Live, on verrait directement l'autre machine et pas la mienne.
On a prévu de re tester ce soir je te tiendrais au courant! Merci encore pour tout !
Tu bosses pour Kissbox du coup ?
https://soundcloud.com/scheeba

BebDigitalAudio


Rémy M. (chimimic)

Plus précisément, je suis un des fondateurs de KissBox
Ce qui explique bien des choses...

Bravo au passage !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
[ Dernière édition du message le 13/08/2014 à 21:45:05 ]

didiermartini

avec un pote, on essaye de faire marcher RtpMidi via internet sans sucés.
(le mec est programmeur dans une trés grosse boite de téléphonie a couleur fruit donc de ce coté la on devrait pas avoir de problème pour la config).
dans ma session dans RTPmidi , je vois bien apparaitre le nom de son ordi, mais la connexion est instable, il apparait, puis disparait, re apparait etc (alors qu'on se parle en même temps via Skype pour mettre ça en place.).
et surtout, jamais eu de latence affiché, toujours un "???" a coté du nom.
c'est vrai que en lisant les indications ici, on a oublié de débloquer mon firewall a moi (c'est moi qui initie la session). les 2 machines communiquent (port et tout). mais ça coince quelque part. une idée ? (hormis le firewall de mon coté a tester).
on est tous les 2 sur Windows 10.
Quand la session est enabled et connected, un port midi du nom de mon pc apparait dans mon ordi.
bref, toute info ou aide serait la bienvenue, merci !
Mon site (compos, reprise, clips, partitions etc..) : https://didiermartini.com

BebDigitalAudio

quand tu dis que le nom de son ordi apparait, c'est dans le "répertoire" (côté gauche de la fenêtre) ou dans les "participants" (côté droit)?
Je vais avoir du mal à te donner un diagnostic exact sans être devant la machine, mais je vais essayer de t'aider sur les les pistes à explorer.
Autre question : tu as fait un essai en local d'abord ou tu as fais tout de suite l'essai à travers l'Internet? Je te recommande d'abord de valider ta config en local, et une fois que tu maitrises, de rentrer les paramètres pour la connexion à travers le Web.
Techniquement, rien n'empêche de faire passer RTP-MIDI par Internet. C'est un protocole basé sur IP, et l'Internet est conçu dans cette optique.
Par contre, il faut savoir que certaines fonctions propres à l'implémentation Apple (qui est aussi celle utilisée par le driver rtpMIDI, KissBox, Behringer, iConnect

Ensuite, il faut savoir que le protocole RTP-MIDI lui-même fonctionne un peu comme avec un téléphone. Tu ne peux parler qu'après que la communication est établie. Il y a donc un protocole partenaire (qu'on appelle parfois à tort AppleMIDI) qui doit se dérouler avant que RTP-MIDI lui-même entre en jeu.
Vu que tu obtiens le signal "???" dans la session, je pense que ça coince à ce niveau là.
En deux mots, quand tu cliques sur le bouton "Connecter", ton ordi va inviter l'ordinateur distant. Cette invitation se fait en 3 étapes (tu peux avoir plus de détails sur la page Wikipedia de RTP-MIDI, le protocole y est décrit complètement).
Aux deux premières étapes, l'ordinateur qui invite envoie un message sur deux ports UDP. Le premier est celui que tu vois en haut à droite de la fenêtre du panneau de contrôle (généralement, c'est 5004 pour le premier port RTP-MIDI). Quand l'ordinateur distant distant répond sur ce port (appelé port de contrôle), ton ordinateur va faire la même chose sur le port immédiatement suivant (appelé port de données), c'est à dire 5005 si le premier port est 5004.
Ensuite, si l'ordinateur distant a accepté l'invitation sur le port de données, il va y avoir un échange pour synchroniser les horloges MIDI. Cette étape permet au driver de déterminer la latence entre les deux machines (et c'est la valeur qui tu voies s'afficher dans la session à la place du ??? quand tout fonctionne)
Ici, je pense que tu n'atteint pas l'étape de synchronisation (le fait que le nom apparaisse dans la session veut juste dire que tu as lancé l'invitation, pas forcément qu'il y a eu une réponse). C'est pour ça que tu voies toujours "???".
La première chose que je te conseille de vérifier est que tous les ports sont ouverts correctement dans le routeur pour accéder à Internet (là aussi ton pote devrait savoir comment vérifier ça, sinon je peux t'expliquer)
Vérifier également que les firewall sont ouverts sur ces ports (donc minimum 5004 et 5005 sur l'exemple ci-dessus) sur les deux machines (la machine distante peut bloquer les connexions entrantes)
Si tu as un routeur (et c'est quasiment sûr qu'il y en a un, la moindre Box Internet est un routeur...), vérifie aussi qu'elle n'est pas programmée en translateur (c'est utilisé quand tu veux faire un accès distant. Le routeur peut alors modifier les numéros de port des messages qui entrent pour les envoyer vers un autre port... Très fun...

Eventuellement, n'hésite pas à m'envoyer une copie d'écran des deux machines (panneau de contrôle RTP-MIDI), ça peut aider à comprendre ce qui coince
Benoit

didiermartini

Salut Didier,
quand tu dis que le nom de son ordi apparait, c'est dans le "répertoire" (côté gauche de la fenêtre) ou dans les "participants" (côté droit)?
Benoit
Salut Benoit c'est hyper sympa de vouloir nous aider ! mon pote va rejoindre la conversation et t'expliquer où on coince et ce que l'on a déja fait car c'est lui le pro niveau net

car on a suivit tes recommandations, et on coince toujours, on se voit mutuellement dans le soft, mais ici je vois son ordi avec ??? dans latency. et ça marche pas. tous les ports et autre marche, vu qu'on arrive a communiquer, donc y a un truc a piger je pense.
Merci encore !
Mon site (compos, reprise, clips, partitions etc..) : https://didiermartini.com

xtream14

Alors voilà un petit résumé de ce que l'on a fait avec Didier :
- redirection sur les boxs des ports entrants UDP 5004 et 5005 vers le PC du réseau local sur lequel on a installé le logiciel rtpMidi
- désactivation des firewalls (de windows et des box le cas échéant)
- récupération de l'ip externe de nos machines
- test des ports 5004 et 5005 depuis l'ip externe avec le logiciel microsoft portqry (sans avoir lancé le soft)
PortQry.exe -n 90.51.xxx.xxx -p udp -r 5004:5005
Querying target system called:
90.51.xxx.xxx
Attempting to resolve IP address to a name...
IP address resolved to xxxxxx.abo.wanadoo.fr
UDP port 5004 (unknown service): NOT LISTENING
UDP port 5005 (unknown service): NOT LISTENING
il voit les ports en "NOT LISTENING" ce qui est normal.
- lancement du soft rtpMidi, je coche 'enabled' sur la session (port par défaut 5004)
test les ports à nouveau depuis l'ip externe
PortQry.exe -n 90.51.xxx.xxx -p udp -r 5004:5005
Querying target system called:
90.51.xxx.xxx
Attempting to resolve IP address to a name...
IP address resolved to xxxxxx.abo.wanadoo.fr
UDP port 5004 (unknown service): LISTENING or FILTERED
UDP port 5005 (unknown service): LISTENING or FILTERED
ces tests sont fait des deux cotés (donc pour les 2 pc qui doivent communiquer par internet). les ports UDP 5004 et 5005 sont bien ouvert, en direction des 2 PC cibles, au travers d'internet et des box respectives.
Ajout sur le PC 1 du PC 2 (ajout ip_pc_2:5004 dans "Directory" avec le "+" puis clique sur "Connect")
dans la liste des participants de la session du PC 1, on vois bien le PC 2 connecté (le nom de la machine distante est d'ailleurs récupéré au passage, ce qui montre bien qu'il y a eu communication entre les deux machines).
par contre, cela ne fonctionne toujours pas, la latence n'est pas affichée et on n'a seulement "???"
au niveau réseau, tout semble correct. Nous ne voyons donc pas ce qui cloche...
[ Dernière édition du message le 03/01/2016 à 16:27:09 ]

BebDigitalAudio

J'avoue que j'ai un doute sur l'affichage du nom du PC distant. Je ne sais plus si c'est le nom DNS qui est récupéré ou si c'est le nom transmis par la bécane distante quand elle répond à l'invitation. Mais je crois que c'est le nom RTP-MIDI, ce qui veut dire qu'effectivement la machine distante a répondu à l'invitation.
Pour aller plus loin, il faudrait mettre un coup de Wireshark. Je ne sais pas si tu connais (et si tu sais te servir de cet outil), mais c'est l'idéal pour analyser ce qui se passe (Wireshark contient tous les décodeurs pour AppleMIDI et RTP-MIDI).
Donc la question est : connais-tu cette outil?
C'est un soft open source et gratuit, je peux t'aider à le mettre en route pour enregistrer ce qui se passe, on verra tout de suite où ça coince
Benoit

didiermartini

bon cet apres midi on a reussi a faire marcher le truc, hoo pas longtemps. mais a marché, la latence a fini par apparaitre. et il m'entendait jouer, on a fait un test, et je l'ai vu jouer ici aussi. puis on refait tout proprement, notament sans utiliser bonjour, car apparement, bonjour ne sert qu'a aider pour une connexion en local, mais quand on connait les IP distante, il y a pas besoin de lui. j'ai cependant eu plusieurs erreurs de bonjour pendant le dernier test sur RTP qui depuis ne marche plus.
donc on est un peu coincé la pour l'instant.
Mon pote reprend le boulot demain, donc je sais pas quand la prochaine fois on pourra tester. mais il est le mieux a piger et comprendre tes directives ou conseil (comme le soft que tu indiques , pas moi :D ). lui est programmeur de metier, moi juste un musicien (audiofanzine efface a a chaque fois que j'écris le mot de quel instrument je joue lol) a la c**

donc je le laisse te repondre pour la suite, encore merci !
j'aimerais vraiment utiliser RTP pour des activités de concert, ou de cours a distance ! il y a Internet Midi mais a 70$ la licence, entre le prof, et chaque eleve, c'est du fout*** de g***. comment faire avaler a l'eleve d'investir 70$ alors qu'il a meme pas pris un cours encore. impossible.
Mon site (compos, reprise, clips, partitions etc..) : https://didiermartini.com
[ Dernière édition du message le 03/01/2016 à 20:12:35 ]

xtream14

j'ai un doute sur "bonjour", sachant que l'auto discover des peers n'est pas possible via internet et que la conf du routeur a été faite à la main, "bonjour" est il vraiment nécessaire pour faire fonctionner rtp-midi ?
lors de nos différents essais ça a plus ou moins fonctionné (dans un seul sens), on a un peu progressé... on va retenter dés que possible.

BebDigitalAudio


Tu dois voir la séquence suivante :
INvitation depuis le PC local vers le port 5004
OK depuis le PC distant (ça doit marcher, puisque tu me dis que tu voies bien le nom), depuis un port N
INvitation depuis le PC local vers le port 5005
OK depuis le PC distant, depuis le port N+1
Vérifie bien que tu voies un OK dans les deux réponses (un NO veut dire que le PC distant refuse la connexion, idem si tu ne voies pas de réponse ou une réponse "No listener", dans ce cas, c'est que le port n'est pas ouvert)
Ensuite tu dois voir une série d'échanges de 3 messages CK0, CK1 et CK2 vers le port 5005. Le PC local va lancer un CK0, le PC distant doit répondre par CK1 et le PC local termine en renvoyant un message CK2. La séquence va se répéter une dizaine de fois (c'est avec ça que le driver mesure la latence). Ensuite la séquence se répéte cycliquement entre une fois toutes les 30 secondes et une fois toutes les minutes
Il te reste aussi une solution si tu utilises le driver rtpMIDI. Dans la fenêtre "About", tu as la possibilité de générer un fichier de log. Ce fichier va t'indiquer à quel endroit il détecte une crasse dans le protocole de session (il faut changer le niveau de log, qui est coupé par défaut. Je n'ai pas mon PC sous la main - juste mon Mac - je n'ai plus le mode en tête, c'est verbose ou debug, un truc comme ça). Par contre, surtout n'oublie pas de remettre la valeur par défaut après tes essais, sinon le fichier de log va se remplir et ça peut ralentir le PC
Benoit

xtream14

Nous avons finalement réussi à faire fonctionner rtpMidi via Internet.
donc installation de rtpMidi avec "bonjour" (parce que sans ça ne fonctionne pas) et configuration du NAT sur les box.
j'ai fait un petit tuto pour configurer une livebox play, c'est très simple mais si ça peut aider quelqu'un d'autre https://xtream.be/blog/wp-content/uploads/2016/01/Faire-fonctionner-rtpMidi-sur-une-Livebox-Play-simple.pdf
encore merci Benoit!

quenton

Je vous pose le lien ici:
Je précise que bien évidement, c'est pas pour faire de la pub ou quoi que ce soit, je n'ai aucun intérêt à le faire la chaîne n'est pas monétisée, je ne gagne rien (on m'à déjà fait un reproche c'est pour cela que je précise) c'est juste pour partager ma solution car j'ai sans doute pas cherché correctement au début et j'ai eu un peu de mal à trouver une solution simple et fonctionnelle.
Si celà ne vous convient pas, dites le, je supprimerai ce post.
Merci.
- < Liste des sujets
- Charte