Sujet Interface MIDI USB 3 IN / OUT jusqu'à 15 IN / OUT avec routage et transfo midi
- 2 réponses
- 2 participants
- 340 vues
- 6 followers
thekik
202
Posteur·euse AFfiné·e
Membre depuis 18 ans
Sujet de la discussion Posté le 30/08/2020 à 13:03:22Interface MIDI USB 3 IN / OUT jusqu'à 15 IN / OUT avec routage et transfo midi
Salut les AFIENS,
J'avais posté dans la mauvaise rubrique ce topic il ya quelque temps en me promettant de corriger...chose faite !
J'ai réalisé from scratch une interface MIDI USB 3 IN / 3 OUT, basée sur une carte microcontrôleur à base de STMF32103 "Bluepill", qui est beaucoup plus puissante qu'un Arduino (72 Mhz !), et coûtant moins de 2€ sur de nombreux sites chinois.
J'ai également réalisé une platine qui permet de connecter simplement cette carte "Bluepill" (au milieu sur la photo ci-dessous), sur le principe d'un shield Arduino, de souder quelques circuits élémentaires, et de disposer ainsi d'une interface MIDI compliant avec 3 MIDI IN DIN / 3 MIDI DIN OUT extrêmement puissante.
On peut également "agréger" plusieurs interfaces en une seule, en exploitant le bus I2C, et obtenir ainsi une interface qui peut offrir jusqu'à 15 In x 15 Out ports (1 carte=3x3, 2=6x6, 3=9x9, 4=12x12, 5=15x15) :
Ci-dessous, l'interface 15IN / 15OUT (laide) dont je me sers dans mon studio.
Concernant la manipulation de messages midi en temps réel : Un mécanisme de "pipeline" permet de transformer un messages midi IN en live, pour par exemple, transposer les notes, splitter un clavier par notes ou par vélocité (layering) sur plusieurs canaux midi, diviser une horloge midi, mapper des contrôleurs midi, mapper un canal midi vers un autre, filtrer des messages spécifiques, etc... avant son routage vers les ports de sortie. Il est très simple d'ajouter d'autres "pipes" (les briques élémentaires de transfo). 4 générateurs d'horloge midi / Midi Time Code, et 8 ports virtuels sont également disponibles.
Par exemple, pour splitter des notes sur 3 claviers différents, on peut utiliser le "pipe" (un module) "keyboard splitter" nommé KBSPLIT. Ce pipe accepte 2 paramètres : p1, valeur de la borne inf pour la note jouée et p2, canal midi vers lequel la note sera envoyée si la note jouée est >= à p1 . Comme il est possible "d'empiler" plusieurs fois KBSPLIT dans un tuyau midi (le pipeline), on peut donc splitter les notes midi sur 3 claviers différents (ou plus) :
KBSPLIT Pipe n°1 : si p1, valeur de la note >= 0 : fixer canal midi à 1
KBSPLIT Pipe n°2 : si p1, valeur de la note >= 30H : fixer canal midi à 2
KBSPLIT Pipe n°3 : si p1, valeur de la note >= 60H : fixer canal midi à 3
=> puis routage
Ainsi les notes sont distribuées sur différents canaux midi : [0,2fh] => 1, [30h,5fh] => 2, [60h,7fh] => 3
(J'espère que vous suivez !)
Vue globale des chemins possibles empruntés par un message midi du IN vers le OUT physiques.
Le site du projet sur Github : https://github.com/TheKikGen/USBMidiKliK4x4
Je m'en sers tous les jours, il ne manque plus qu'un boitier...si des experts de l'impression 3D me lisent !
Le firmware est open source.
J'avais posté dans la mauvaise rubrique ce topic il ya quelque temps en me promettant de corriger...chose faite !
J'ai réalisé from scratch une interface MIDI USB 3 IN / 3 OUT, basée sur une carte microcontrôleur à base de STMF32103 "Bluepill", qui est beaucoup plus puissante qu'un Arduino (72 Mhz !), et coûtant moins de 2€ sur de nombreux sites chinois.
J'ai également réalisé une platine qui permet de connecter simplement cette carte "Bluepill" (au milieu sur la photo ci-dessous), sur le principe d'un shield Arduino, de souder quelques circuits élémentaires, et de disposer ainsi d'une interface MIDI compliant avec 3 MIDI IN DIN / 3 MIDI DIN OUT extrêmement puissante.
On peut également "agréger" plusieurs interfaces en une seule, en exploitant le bus I2C, et obtenir ainsi une interface qui peut offrir jusqu'à 15 In x 15 Out ports (1 carte=3x3, 2=6x6, 3=9x9, 4=12x12, 5=15x15) :
Ci-dessous, l'interface 15IN / 15OUT (laide) dont je me sers dans mon studio.
Concernant la manipulation de messages midi en temps réel : Un mécanisme de "pipeline" permet de transformer un messages midi IN en live, pour par exemple, transposer les notes, splitter un clavier par notes ou par vélocité (layering) sur plusieurs canaux midi, diviser une horloge midi, mapper des contrôleurs midi, mapper un canal midi vers un autre, filtrer des messages spécifiques, etc... avant son routage vers les ports de sortie. Il est très simple d'ajouter d'autres "pipes" (les briques élémentaires de transfo). 4 générateurs d'horloge midi / Midi Time Code, et 8 ports virtuels sont également disponibles.
Par exemple, pour splitter des notes sur 3 claviers différents, on peut utiliser le "pipe" (un module) "keyboard splitter" nommé KBSPLIT. Ce pipe accepte 2 paramètres : p1, valeur de la borne inf pour la note jouée et p2, canal midi vers lequel la note sera envoyée si la note jouée est >= à p1 . Comme il est possible "d'empiler" plusieurs fois KBSPLIT dans un tuyau midi (le pipeline), on peut donc splitter les notes midi sur 3 claviers différents (ou plus) :
KBSPLIT Pipe n°1 : si p1, valeur de la note >= 0 : fixer canal midi à 1
KBSPLIT Pipe n°2 : si p1, valeur de la note >= 30H : fixer canal midi à 2
KBSPLIT Pipe n°3 : si p1, valeur de la note >= 60H : fixer canal midi à 3
=> puis routage
Ainsi les notes sont distribuées sur différents canaux midi : [0,2fh] => 1, [30h,5fh] => 2, [60h,7fh] => 3
(J'espère que vous suivez !)
Vue globale des chemins possibles empruntés par un message midi du IN vers le OUT physiques.
Le site du projet sur Github : https://github.com/TheKikGen/USBMidiKliK4x4
Je m'en sers tous les jours, il ne manque plus qu'un boitier...si des experts de l'impression 3D me lisent !
Le firmware est open source.
[ Dernière édition du message le 30/08/2020 à 13:10:56 ]
lescéréalesquileurrent
401
Posteur·euse AFfamé·e
Membre depuis 9 ans
2 Posté le 23/04/2022 à 22:07:46
Salut ! ben...moi j'aime pas trop l'cambouis enfin disoint que je suis assez nul en technologie ^^
Mais je cherche un petit boitier qui pourrait avoir 3 Midi IN (4?) et au moins 1 Midi Out (pour aller à un quadra thru)
Comme je cherche à faire fonctionner (en stand alone) un Beatstep non Pro de chez Arturia , Le modèle non Pro doit être alimenté en Usb ,(à l'inverse de son grand frère)
C'est possible ça ?
Mais je cherche un petit boitier qui pourrait avoir 3 Midi IN (4?) et au moins 1 Midi Out (pour aller à un quadra thru)
Comme je cherche à faire fonctionner (en stand alone) un Beatstep non Pro de chez Arturia , Le modèle non Pro doit être alimenté en Usb ,(à l'inverse de son grand frère)
C'est possible ça ?
thekik
202
Posteur·euse AFfiné·e
Membre depuis 18 ans
3 Posté le 24/10/2023 à 00:29:21
Réponse un peu tardive !!
Pas de cambouis ici ! Il y a des cartes toutes prêtes sur Tindie (en cours de fab).
Ce que tu peux faire avec cette interface va largement au delà que ce que fait un Quadra thru.
Tu peux effectivement router les 3 midi in de l'interface vers 1 OUT (merge) avec quelques commandes SYSEX.
Voir cet example ici : https://github.com/TheKikGen/USBMidiKliK4x4/wiki/UMK4x4-V2.5-User-Manual#43-routing-example-a-trithru-%C3%A0-la-midisolutions
Il est maintenant possible d'ajouter des courbes de vélocité, comme le fait également le Velocity Converter de Midisolutions, en mieux et moins cher.
https://github.com/TheKikGen/USBMidiKliK4x4/wiki/UMK4x4-V2.5-User-Manual#44-velocity-curves-example--reproduce-the-midisolutions-velocity-converter-39-curve
Pas de cambouis ici ! Il y a des cartes toutes prêtes sur Tindie (en cours de fab).
Ce que tu peux faire avec cette interface va largement au delà que ce que fait un Quadra thru.
Tu peux effectivement router les 3 midi in de l'interface vers 1 OUT (merge) avec quelques commandes SYSEX.
Voir cet example ici : https://github.com/TheKikGen/USBMidiKliK4x4/wiki/UMK4x4-V2.5-User-Manual#43-routing-example-a-trithru-%C3%A0-la-midisolutions
Il est maintenant possible d'ajouter des courbes de vélocité, comme le fait également le Velocity Converter de Midisolutions, en mieux et moins cher.
https://github.com/TheKikGen/USBMidiKliK4x4/wiki/UMK4x4-V2.5-User-Manual#44-velocity-curves-example--reproduce-the-midisolutions-velocity-converter-39-curve
[ Dernière édition du message le 24/10/2023 à 00:29:49 ]
- < Liste des sujets
- Charte