Fonctionnement du midi
- 18 réponses
- 4 participants
- 2 494 vues
- 4 followers

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
Sujet de la discussion Posté le 03/01/2009 à 14:30:57Fonctionnement du midi
Bonjour à tous! J'ai une petite question à laquelle je n'arrive pas à trouver une réponse qui me convient. J'aimerai savoir comment on fait pour envoyer un signal midi à un appareil et quoi lui envoyer. J'ai lu le dossier sur AF qui m'a appris ques choses(note on, note off,...) mais pas assez pour me satisfaire. Je sais programmer des PICs (avec flowcode...) mais je n'arrive pas à trouver quoi envoyer comme données. J'espère que j'ai été compréhensible et que je pourrai bénéficier de votre aide. Merci d'avance!

Jay f.
4162

Squatteur·euse d’AF
Membre depuis 17 ans
2 Posté le 03/01/2009 à 23:19:49
Salut,
Google reste ton ami.
La spécification complète du MIDI est disponible sur le site officiel de la MMA (MIDI Manufacturers Association) https://www.midi.org/
Visiblement, le doc complet est payant ou disponible uniquement aux membres de la MMA, mais il y a des tableaux résumé bien gratuits : https://www.midi.org/techspecs/midimessages.php
Et un petit tuto en prime :
http://www.srm.com/qtma/davidsmidispec.html
En espérant que cela t'aidera dans ta quête.
Jay F.
Google reste ton ami.
La spécification complète du MIDI est disponible sur le site officiel de la MMA (MIDI Manufacturers Association) https://www.midi.org/
Visiblement, le doc complet est payant ou disponible uniquement aux membres de la MMA, mais il y a des tableaux résumé bien gratuits : https://www.midi.org/techspecs/midimessages.php
Et un petit tuto en prime :
http://www.srm.com/qtma/davidsmidispec.html
En espérant que cela t'aidera dans ta quête.
Jay F.
0
We're born naked, wet and hungry. Then things get worse.
http://soundcloud.com/jay-f-2

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
3 Posté le 04/01/2009 à 17:05:54
Ok merci je vais regarder tout ça!!!!
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
4 Posté le 04/01/2009 à 17:53:28
Après avoir étudié les différents liens j'ai donc maintenant à ma connaissance les différents messages a envoyer en binaire ou en hexadecimal. Par contre quelque chose me turlupine, étant donné que la transmission de données en midi ce fait sur une seule broche, je suppose qu'il faut que j'envoie les différents bytes à un certain débit pour que l'appareil reconnaisse des paquets de données. je vais essayer de faire un exemple.
Si j'envoie l'octet 10010001 et ensuite si j'envoie 00111100 puis 10000001 ça me donnera un Note on sur le canal 1 puis ça jouera la note 60 (do du milieu?) puis un Note off sur le canal 1. Me suis-je trompé?
Si j'envoie l'octet 10010001 et ensuite si j'envoie 00111100 puis 10000001 ça me donnera un Note on sur le canal 1 puis ça jouera la note 60 (do du milieu?) puis un Note off sur le canal 1. Me suis-je trompé?
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
5 Posté le 04/01/2009 à 18:18:53
J'ai réussi à trouvé que le débit binaire est de 30,4Kb/s (30,4KHz) est-ce bien ça? est-ce que c'est grave si ce débit n'est pas éxact? par exemple si les données sont envoyées à un débit de 30Kb/s. Bref, est-ce que je me suis trompé que ça soit sur ce post ou le précédent?
0

Danguit
3348

Squatteur·euse d’AF
Membre depuis 19 ans
6 Posté le 04/01/2009 à 18:25:24
Bonjour,
Il y a une vingtaine d'années, j'ai utilisé la carte Roland MPU-IPC-T (MPU-401) et commencé à la piloter sur PC.
Le manuel de référence que je viens de retrouver sur le Web (http://mesnotices.fr/manuel-notice-mode-emploi/ROLAND/MPU-401-_E) expliquait assez bien le fonctionnement du MIDI.
Il y a une vingtaine d'années, j'ai utilisé la carte Roland MPU-IPC-T (MPU-401) et commencé à la piloter sur PC.
Le manuel de référence que je viens de retrouver sur le Web (http://mesnotices.fr/manuel-notice-mode-emploi/ROLAND/MPU-401-_E) expliquait assez bien le fonctionnement du MIDI.
0

Jay f.
4162

Squatteur·euse d’AF
Membre depuis 17 ans
7 Posté le 04/01/2009 à 18:30:22
Bon, je ne suis pas un spécialiste. Mais à ma connaissance, voici ce que ça doit donner (en binaire).
Les messages note on et off sont composés de 3 bytes :
Status byte + Data bytes (1 note number, 1 vélocity).
Note On, Channel 1, Do4, vélocité 64
10010000 00111100 01000000
Note off, channel 1, Do4, release 64
10000000 00111100 01000000
Tu dois en effet envoyer les notes off complètes pour permettre au synthé de s'y retrouver en cas de jeux polyphonique.
Le canaux sont codés sur 4 bits et vont de 0 à 15 (0000 à 1111).
Voir la table 2 de https://www.midi.org/techspecs/midimessages.php.
Quand au débit, je ne sais pas. Je ne pense pas que ça ait d'importance. Les messages doivent sortir à la vitesse désirée par le séquenceur. Je ne crois pas qu'il y ait une notion de paquets et d'espace nécessaire entre les paquets. Le synthé est censé savoir qu'un note on ou note off, c'est 3 bytes.
Voila l'état de mes connaissances.
Jay F.
Les messages note on et off sont composés de 3 bytes :
Status byte + Data bytes (1 note number, 1 vélocity).
Note On, Channel 1, Do4, vélocité 64
10010000 00111100 01000000
Note off, channel 1, Do4, release 64
10000000 00111100 01000000
Tu dois en effet envoyer les notes off complètes pour permettre au synthé de s'y retrouver en cas de jeux polyphonique.
Le canaux sont codés sur 4 bits et vont de 0 à 15 (0000 à 1111).
Voir la table 2 de https://www.midi.org/techspecs/midimessages.php.
Quand au débit, je ne sais pas. Je ne pense pas que ça ait d'importance. Les messages doivent sortir à la vitesse désirée par le séquenceur. Je ne crois pas qu'il y ait une notion de paquets et d'espace nécessaire entre les paquets. Le synthé est censé savoir qu'un note on ou note off, c'est 3 bytes.
Voila l'état de mes connaissances.
Jay F.
0
We're born naked, wet and hungry. Then things get worse.
http://soundcloud.com/jay-f-2

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
8 Posté le 04/01/2009 à 18:51:42
Merci pour le manuel, je le lirai plus tard car c'est un peu long. Merci Jay f. aussi, je crois que j'ai bien compris maintenant. Donc d'après toi, si je règle la fréquence d'horloge de mon PIC à 20MHz et que j'envoie mes messages à mon ordinateur ou à mon synthé il comprendra ou alors faut que je fasse gaffe à pas tout envoyer trop vite? merci de votre aide en tout cas, j'en apprend beaucoup!
0

aris
1276

AFicionado·a
Membre depuis 18 ans
9 Posté le 04/01/2009 à 21:19:20
C'est un protocole série asynchrone. A peu près tout ce que tu vas lire sur la programmation série en PIC est valable pour le midi.
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
10 Posté le 05/01/2009 à 03:50:28
Merci, après pas mal de recherches je me suis rendu compte que certains PIC possèdent des entrées/sorties série donc je pense que je dois pouvoir exploiter ça! pour ce qui est de la vitesse de transmission, je pense qu'il faut bien respecter la norme de 31250 bauds car le signal d'horloge n'est pas transmis avec le signal. Dans flowcode, j'ai trouvé un "composant" RS232 que je pense pouvoir utiliser. ce qui est génial avec flowcode c'est que c'est super simple, après avoir cliqué sur le "composant" je vais sur routine composant, je sélectionne RS232 puis sendbytes et je met ce que je veux envoyer. donc si j'ai bien compris tout ce que j'ai pu lire, si je créé 6 routines qui s'exécutent les unes à la suite des autres (144 (note on canal 1), 60 (Do4), 64 (vélocité), 128 (note off canal 1), 60 (Do4), 64 (release)) ça fera jouer l'appareil un Do4 avec les paramètres velocity et release au milieu non? j'espère que cette fois ci c'est la bonne avant de migrer vers "les mains dans le cambouis" 

0

Danguit
3348

Squatteur·euse d’AF
Membre depuis 19 ans
11 Posté le 05/01/2009 à 08:04:46

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
12 Posté le 05/01/2009 à 12:02:37
Merci de ta réponse. je savais qu'il fallait mettre quelque chose entre le pic et la prise midi mais j'aurais pensé que dans les des cas un opto aurait suffit. donc merci, ça va bien m'aider. Donc si je fait un programme comme je l'ai dis et que après la sortie série du pic je met un inverseur + transistor npn c'est bon? j'ai une question qui me vient, est-ce que un Note ON reste actif tant qu'il n'y a pas eu de Note OFF?
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
13 Posté le 05/01/2009 à 12:25:56
Je viens de tomber sur un schéma sur le site de chimimic où il n'y a pas d'interface entre le port de sortie du pic et la prise midi. est-ce normal?
0

Danguit
3348

Squatteur·euse d’AF
Membre depuis 19 ans
14 Posté le 05/01/2009 à 13:39:53
C'est une solution.
L'intérêt d'un buffer, par exemple transistor, est d'une part de pouvoir fournir un courant plus important et/ou maîtrisé, et d'autre part de protéger (avec des limites) le C-I en cas de problème sur la liaison externe. Il peut résoudre en plus le besoin de changement de polarité du signal.
Nota : Je suis un peu déconnecté de tout cela depuis pas mal d'années et donc pas forcément au courant de toutes les subtilités des nouveaux circuits.
L'intérêt d'un buffer, par exemple transistor, est d'une part de pouvoir fournir un courant plus important et/ou maîtrisé, et d'autre part de protéger (avec des limites) le C-I en cas de problème sur la liaison externe. Il peut résoudre en plus le besoin de changement de polarité du signal.
Nota : Je suis un peu déconnecté de tout cela depuis pas mal d'années et donc pas forcément au courant de toutes les subtilités des nouveaux circuits.
0

Jay f.
4162

Squatteur·euse d’AF
Membre depuis 17 ans
15 Posté le 05/01/2009 à 13:57:12
Citation : j'ai une question qui me vient, est-ce que un Note ON reste actif tant qu'il n'y a pas eu de Note OFF?
Oui. Tu noteras qu'il n'y a pas d'indication de durée dans un message MIDI. C'est au musicien ou au séquenceur de déterminer les durées et d'envoyer les note off quand il faut. En gros : j'appuie sur la touche = note on, je la relâche = note off.
Nota : certains séquenceurs sont munis de boutons "panique" qui envoient tous les note off sur tous les canaux, histoire d'éviter qu'une note reste bloquée.
Petit truc que j'ai moi même testé : si ce que tu déclenches sont des samples uniques sans bouclage (genre des percussions), tu peux te passer de note off. Attention cependant à la façon dont le synthé ou la machine que tu pilote gère la polyphonie : il peut vouloir attendre le note off. Mais dans mon expérience, avec un expandeur Roland, ce ne fut pas le cas.
Bon bricolage,
Jay F.
0
We're born naked, wet and hungry. Then things get worse.
http://soundcloud.com/jay-f-2

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
16 Posté le 05/01/2009 à 16:57:30
Je comprends bien pour le buffer, de toute façon je pense que j'en mettrai un histoire d'être bien sûr qu'il n'y ai pas de problèmes! ça tombe que tu parles de percussions parce que c'est mon projet en fait. Je compte faire une boite à rythme qu'on peut utiliser avec des boutons poussoir et avec la possibilité d'envoyer et recevoir des messages via deux prises midi. De toute façon si je génère des note off, ça sera peut être plus long mais certainement plus sûr, car je ne sais pas avec quel équipement je vais pouvoir l'utiliser. Bon, d'après vous, vous pensez que j'en connais assez pour me lancer ou j'ai encore besoin de savoir d'autres choses?
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
17 Posté le 06/01/2009 à 00:40:15
J'ai une autre question, est-ce que quelqu'un sait comment définir le nombre de bauds pour l'envoi de données par un pic? Je sais que pour le midi c'est 31250 bauds (ce qui n'est pas une valeur standart)? sous flowcode serai l'idéal mais si vous avez la commande en C, je prend aussi!
edit : laissez tomber cette question, je crois que j'y ai trouvé la réponse tout seul
En fait j'étais pas sûr que flowcode mette dans le programme le nombre de bauds. finalement j'ai trouvé un truc qui s'appelle spbrg qui vaut Fosc/(16*(bauds+1)) j'ai fais le calcul et j'ai trouvé environ 39 et lui dans le programme a mit 38, je lui pardonne 
edit : laissez tomber cette question, je crois que j'y ai trouvé la réponse tout seul


0

aris
1276

AFicionado·a
Membre depuis 18 ans
18 Posté le 06/01/2009 à 12:43:07
En effet c'est fonction d'une valeur dans un registre et de ta fréquence interne. mais encore une fois, c'est critique à ~20%
0

blackswords
550

Posteur·euse AFfolé·e
Membre depuis 19 ans
19 Posté le 06/01/2009 à 18:12:41
Merci pour ta réponse, ça me rassure
Je viens de commander un programmateur de PIC en USB sur ebay (boutique virtual village) ça m'a coûté 32€ avec les frais de ports (en plus c'est un connecteur ZIF!!!) Donc dès que je l'ai, je fais des tests et vous tiens au courant!

0
- < Liste des sujets
- Charte