Developpement logiciel TC 2 MIDI
- 23 réponses
- 5 participants
- 3 309 vues
- 5 followers
Rémy M. (chimimic)
j'ai attaqué le développement d'un nouveau logiciel, appelé TC2MIDI, TC pour TeleCommande.
Présentation
Le logiciel TC2MIDI est une interface logicielle qui permet de déclancher et d'envoyer des évenements MIDI (notes ous Sysex) sur une sortie MIDI OUT, à partir de télécommandes envoyées sur un port parallèle (LPT) ou sur un port série (COM / RS232) d'un ordinateur de type PC. Et en sens inverse, de générer des commandes logiques (électriques) sur un port parallèle ou sur un port série, à partir d'évements MIDI (Notes ou Sysex) reçus sur une entrée MIDI IN. Ce système logiciel permet par exemple de jouer des notes MIDI ou de modifier la configuration d'équipements audio ou musicaux, en appuyant sur des boutons poussoirs activables à la main ou au pied. Ou encore, d'allumer des spots de couleurs différentes selon la note jouée sur un clavier MIDI. Deux applications entre plein d'autres...
Les ports parallèles et les ports série possèdent tous deux des lignes d'entrée et de sortie. Selon le sens de la "conversion" désirée, TC vers MIDI ou MIDI vers TC, il est fait usage respectivement soit des lignes d'entrée, soit des lignes de sortie des ports du PC.
Réaction à des télécommandes externes
La réaction aux télécommandes externes se fait en scrutant de façon régulière et rapide, l'état des lignes d'entrée de ces ports. Quand une ligne d'entrée change d'état (passe de l'état haut à l'état bas ou l'inverse), le logiciel regarde dans une table de correspondance établie par l'utilisateur, si cette ligne est liée à un évenement MIDI. Si oui, l'évenement MIDI est construit et est transmis sur la sortie MIDI OUT. Si non, le changement d'état de cette ligne est ignoré. Il est possible de définir un évenement MIDI différent selon que le changement d'état logique est de type Haut-Bas ou de type Bas-Haut.
Réaction à des évenements MIDI
La réaction à des évenements MIDI se fait en analysant toute donnée MIDI entrante, arrivant sur un port MIDI IN. Quand une donnée MIDI arrive sur l'entrée MIDI mise sous surveillance, le logiciel regarde dans la table de correspondance établie par l'utilisateur, si cet évenement MIDI est lié à l'activation ou à la désactivation d'une ligne de sortie. Si oui, la ligne de sortie correspondant à l'évenement MIDI prend le statut logique désiré, qui peut être défini comme étant positif ou négatif.
Pourquoi ce message ?
Cette idée est née d'une demande d'assistance pour télécommande d'évenements MIDI depuis des boutons poussoir. Comme je commence tout juste la mise en pratique, je pense interressant de recueillir toute idée visant à compléter ou améliorer le système. J'imagine bien que la présence d'une interface graphique, même minimale, vous aiderait bien à donner un avis. J'en soumettrai une très bientôt, basée sur l'emploi d'une liste décrivant quoi faire avec quelles données. Mais pourquoi ne pas commencer maintenant à en imaginer deux ou trois idées, pendant que c'est tout frais ?
Merci d'avance à tous ceux qui contribueront de près ou de loin à l'élaboration de ce petit utilitaire, qui, est-il utile de le préciser, sera distribué en Freeware.
Bien cordialement à tous.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
breezanil
Salut,
je ne sais pas où tu en es de ce projet mais ça m'intéresse grave!
j'ai un controleur jl cooper en rs232 et j'aimerais le transformer en controleur midi.
je cherche donc un soft pour convertir et mapper les signaux reçus.
je crois avoir compris que c'est ce que tu entends faire avec TC2midi.
J'ai testé ton convertisseur midi/rs232 convertor mais le port com3 reste en rouge, il semble ne pas détecter le controleur jl cooper. Mais de toute façon, il ne ferait que transmettre le signal "tout droit" et donc sans possibilité de le mapper vers les controles midi qui m'intéressent, n'est-ce pas?
Merci d'avance de tes lumières et bonne soirée,
Anil
Rémy M. (chimimic)
Bonjour le déterrage
Ce projet n'est point abandonné mais a été largement ralenti pour des raisons de compatibilité entre mon nouvel OS et les composants logiciels MIDI que j'utilise dans mon outil de développement (Delphi). Problème que j'ai résolu il y a peu de temps.
Ceci dit je pense que ce logiciel n'est pas adapté à tes besoins car ton contrôleur doit surement émettre des messages de type RS232 "ordinaires" alors que mon logiciel traite de façon indépendante les lignes d'entrée et de sortie du port COM (TX, RX, DTR, RTS, etc).
Si tu disposes de la liste des commandes que peut envoyer ton contrôleur (voir notice technique ou manuel utilisateur), on peut peut être faire un convertisseur RS232 / MIDI personnalisé. J'ai bien dit peut-être...
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
[ Dernière édition du message le 05/01/2011 à 21:32:44 ]
breezanil
ah, je vois... déception.
mais je garde espoir!
alors en ce qui concerne le coté controleur, tout ce que j'ai trouvé c'est le brochage d'un modèle de la même série de controleurs.
MCS-3000 Series RS-232 Interface Card
The RS-232 Interface is intended for operation with a host computer. It provides the advantages of a
standard interface, which is found on many computers.
The RS-232 Interface has a male D-Sub connector. The port is configured to communicate at 1 start bit,
8 data bits, 1 stop bit and odd parity. Five jumpers allow the port speed to be set for 38400, 19200,
9600, 4800 and 2400 bits/sec to accommodate various situations.
Pinouts for various MCS Interface Cards
MCS-RS232 Interface Pinout
1 DCD*
2 Transmit
3 Receive
5 Ground
6 DSR*
8 CTS*
Note: These signals are at the RS-232 Interface card
* These pins are not used by the card and are
connected together for ports that require handshake.
J'ai comme l'impression que c'est loin d'être suffisant. Est-ce que si j'utilise ton utilitaire ComPort j'ai une chance de pouvoir noter les commandes envoyées par le controleur?
En ce qui concerne le coté midi j'ai récupéré les messages midi à envoyer pour les controles de transports (play, stop, et surtout le jog/shuttle) compatibles avec le protocole mackie control.
Merci pour ta réponse en tout cas,
A+
Anil
breezanil
alors j'ai testé ComPort et j'ai eu ce genre de résultats pour chaque bouton ou molette de controle:
je t'en mets que quelques uns pour pas pourrir le post mais j'ai le fichier rtf à ta disposition si tu veux.
Moi ça me parle autant que quelqu'un qui parle en hexadécimal mais c'est tout. De là a pouvoir en faire une translation-conversion en données midi... je te laisse juge.
Merci et A+
Anil
bouton f1
"[Port#03] " [80][80][F8]
"[Port#03] " [80]
bouton f2
"[Port#03] " x[80][F8]
"[Port#03] " x
bouton f3
"[Port#03] " [80][F8]
"[Port#03] "
jog gauche
"[Port#03] " x[F8][F8]x[F8][F8]x[F8][F8]x[80][F8]
"[Port#03] " x[80][F8]x[F8][F8]x[F8][F8]x[80][F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]x[80]
"[Port#03] " [F8]xx[F8]xx[F8]x[80][F8]xx[F8]xx[F8]xx[F8]x[80][F8]xx[F8]x[80][F8]
"[Port#03] " x[80][F8]xx[F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x
"[Port#03] " x[F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x[80][F8]
"[Port#03] " xx[F8]x[80][F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x
"[Port#03] " [80][F8]xx[F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[80][F8]xx[F8]x[80]
"[Port#03] " [F8]xx[F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x[80][F8]x[80][F8]xx[F8]
"[Port#03] " x[80][F8]xx[F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x[80][F8]x[80][F8]x
"[Port#03] " x[F8]x[80][F8]xx[F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]xx[F8]x[80][F8]x[80]
"[Port#03] " [F8]xx[F8]x[80][F8]xx[F8]x[80][F8]x[80][F8]xx[F8]x[80][F8]x[80][F8]x[80][F8]
"[Port#03] " x[80][F8]x[80][F8]x[80][F8]x[80][F8]x[F8][F8]x[80][F8]x[80][F8]x[F8][F8]x[F8][F8]x
"[Port#03] " [80][F8]x[F8][F8]x[F8][F8]x[F8][F8]x[F8][F8]x[F8][F8]x[F8][F8]x[80][F8]x[80][F8]
"[Port#03] " x[F8][F8]x[F8][F8]x[80][F8]x[F8][F8]x[F8][F8]x[80][F8]x[F8][F8]x[80][F8]x[F8][F8]x
"[Port#03] " [80][F8]x[F8][F8]x[80][F8]x[F8][F8]x[80][F8]x[80][F8]x[F8][F8]x[80][F8]x[80][F8]x[80]
"[Port#03] " [F8]xx[F8]x[80][F8]xx[F8]xx[F8]x[F8]xx[F8]xx[F8]x[F8]x[F8]
"[Port#03] " x[F8]x[F8]x[F8]x[F8]x[F8][F8][F8]x[F8]x[F8][F8][F8]x[F8]x[F8][F8][F8]x
"[Port#03] " [F8][F8][F8]x[F8]x[F8][F8][F8]x[F8][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]xx[F8]xx[F8]x
"[Port#03] " [F8]x[F8]x[F8][F8][F8]x[F8][F8][F8]xx[F8][F8]x[80][F8][F8]x[80][F8][F8]x[F8]x[F8]x[80][F8][F8]
"[Port#03] " xx[F8]x[80][F8][F8]x[80][F8][F8]x[F8]xx[F8]xx[F8]x[F8]x[F8]x[F8]
"[Port#03] " x[F8][F8][F8]x[F8][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]xx[F8][F8]xx[F8][F8]x[80][F8][F8]x
"[Port#03] " x[F8][F8]x[80][F8][F8]xx[F8][F8]xx[F8][F8]xx[F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]x
"[Port#03] " [F8][F8][F8]x[F8][F8][F8]x[F8][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]x[80][F8][F8]xx[F8][F8]xx[F8][F8]xx
"[Port#03] " [F8][F8]x[F8][F8]xx[F8][F8]x[F8][F8]x[F8][F8]x[F8][F8]xx[F8][F8]x[F8][F8][F8]x[F8][F8][F8]x
"[Port#03] " [F8]x[F8][F8][F8]x[F8][F8][F8]x[80][F8][F8]xx[F8][F8]x[80][F8][F8]xx[F8][F8]x[F8][F8][F8]x[80][F8][F8]x[F8]
"[Port#03] " x[F8]x[F8]x[80][F8][F8]x[80][F8][F8]x[F8][F8][F8]x[F8]x[80][F8]x[F8][F8]xxx
"[Port#03] " xxxxxxx
"[Port#03] " xxxxxxxxx[80]xxx[80]xxxx
"[Port#03] " xxxxxxxxxxxxxxxx
"[Port#03] " xxxx
jog droite
"[Port#03] " xxxxx[80]xxxxx[80]x[80]x[F8]
"[Port#03] " x[80]x[F8]x[F8]x[F8]xx[F8]xxx[F8]x
"[Port#03] " xxx[F8]xx[F8]xx[F8]x[F8]x
"[Port#03] " x[F8]x[F8]x[F8]x[F8]x[F8]x[F8]xx[F8]x[F8]
"[Port#03] " x[F8]x[F8]xx[F8]xx[F8]x[F8]x[F8]x[F8]x
"[Port#03] " [F8]x[F8]xx[F8]x[F8]xx[F8]x[F8]xx[F8]
"[Port#03] " x[F8]x[80]x[80]x[F8]x[80]x[F8]x[80]x[80]x[F8]
"[Port#03] " x[80]x[F8]xxxxxxxx[80]x[80]x
"[Port#03] " [80]x[80]x[80]x[80]x[F8]x[F8]x[80]xx[80]x[F8]
"[Port#03] " x[80]x[80]x[80]x[F8]xxxx[80]xx[80]xx[80]x
"[Port#03] " x[F8]xx[F8]xx[F8]xx[F8]xxxxx[F8]xxx
"[Port#03] " x[80]xx[80]xx[F8]xx[F8]xxx[F8]xxxxx
"[Port#03] " xxxxx[F8]xx[F8]xx[80]xx[80]xx[80]xx
"[Port#03] " xxxxxxxx[80]xx[F8]xx[F8]xxxx
"[Port#03] " xxx[80]x[F8]x[F8]x[80]x[F8]x[80]x[80]x
"[Port#03] " x[80]xxx[80]x[80]x[80]x[F8]xxxxx
"[Port#03] " xxxxxxxx[80]xxx[F8]x[F8]xx
"[Port#03] " xxx[F8][F8]x[F8][F8]
"[Port#03] " xxxx
Rémy M. (chimimic)
Bonjour,
ce que je vois des données que tu as capturées me laisse perplexe. Au niveau du logiciel ComTool, il faut impérativement vérifier les deux points suivants :
- vitesse port série : doit parfaitement correspondre à la vitesse de transmission des données de ton contrôleur. Si ce n'est pas le cas, tout ce qu'on voit est faux.
- mode affichage données reçues : choisis le mode Hexa avec espace entre chaque octet.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
breezanil
Bon alors c'est mal barré parce que je ne trouve nullepart le débit effectif des données du controleur mcs3.
Et j'ai bien constaté qu'avec différents réglage les données reçues ne sont pas du tout les memes.
C'est si simple mais si compliqué!
Bon j'y retourne.
breezanil
bon alors, pour des histoires de test j'ai choppé également un controleur tascam fireone qui peut alterner entre protocoles de controles HUI et Mackie control.
Grace à ton appli MIDI TEST je peux isoler chaque message midi qui m'intéresse en hexadecimal. Ca c'est éventuellement une bonne nouvelle pour plus tard.
De l'autre coté, grace à COMTOOL j'arrive à monitorer les messages entrants du controleur jlCooper.
2 problèmes :
- aucun message ne correspond entre fireone et jlcooper, je n'arrive à trouver aucune référence commune, meme pas le bouton play. Fallait s'y attendre,le jlcooper parle rs232 et c'st une autre langue que le midi.
- je n'arrive meme pas à savoir quelle est la bonne référence de débit pour le jlcooper. j'ai essayé comtool en paramétrant les préférences et les caractéristiques du port com dans windows sur plusieurs débit. Rien de très concluant à part qu'au dessus de 19200bps il ne se passe plus grand chose d'intéressant et qu'en dessous de 2600 non plus.
bon à suivre peut etre...
Anil
Rémy M. (chimimic)
Une info : si à chaque appui sur le même bouton tu réceptionnes des données différentes, c'est qu'il y a un problème de paramétrage de la liaison série. En plus de la vitesse, tu peux essayer différentes valeur de bits / start / stop / parité, mais en règle générale les valeurs par défaut conviennent.
MIDI et RS232 : dans les deux cas, envoi d'octets sur une liaison série. Différence : vitesse.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
breezanil
il semblerait que seule la vitesse soit inconnue pour le controleur jlcooper car de mémoire je crois avoir lu les autres détails sur le manuel 8bits, bit d'arret 1, parité aucune...
Sinon, chaque appui sur le bouton play par exemple me donne la meme valeur. C'est seulement lorsque je teste le tout avec un autre débit que la valeur change par rapport au test précédent.
Rémy M. (chimimic)
Pourrais-tu STP me donner quelques lignes de données capturées pour des boutons fixes de navigation Play, Rec, Stop, etc avec
- vitesse à 9600 bauds
- affichage des données configuré en hexa avec espace entre octets
- jointure (assemblage) des messages reçus si intervalle inférieur à 150 ms (config dans paramètres port)
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
- < Liste des sujets
- Charte