Interface MIDI USB 3 IN / 3 OUT
- 16 réponses
- 4 participants
- 1 482 vues
- 7 followers
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
Sujet de la discussion Posté le 19/01/2019 à 15:52:12Interface MIDI USB 3 IN / 3 OUT
Salut les AFIENS,
Petit post pour vous dire que je viens de terminer la réalisation d'une interface MIDI USB 3 IN / 3 OUT, basée sur une carte microcontrôleur à base de STMF32103, le "Bluepill" beaucoup plus puissante qu'un Arduino, et coûtant moins de 2€ sur de nombreux sites chinois, comme ici par ex. Le firmware est open source.
J'ai également réalisé une platine , (i.e. un "shield" pour ceux qui pratiquent l'Arduino), qui permet de connecter simplement la "Bluepill", de souder quelques circuits élémentaires, et de disposer ainsi d'une interface MIDI compliant avec 3 MIDI IN DIN / 3 MIDI DIN OUT.

Je m'en sers désormais tous les jours, à coté de 2 MIDIFACES 4x4 dont j'avais d'ailleurs modifié également le firmware.
Manque plus qu'un boitier...si des experts de l'impression 3D me lisent !
Les commentaires et les questions sont les bienvenues.
Le site du projet sur Github : https://github.com/TheKikGen/USBMidiKliK4x4
Petit post pour vous dire que je viens de terminer la réalisation d'une interface MIDI USB 3 IN / 3 OUT, basée sur une carte microcontrôleur à base de STMF32103, le "Bluepill" beaucoup plus puissante qu'un Arduino, et coûtant moins de 2€ sur de nombreux sites chinois, comme ici par ex. Le firmware est open source.
J'ai également réalisé une platine , (i.e. un "shield" pour ceux qui pratiquent l'Arduino), qui permet de connecter simplement la "Bluepill", de souder quelques circuits élémentaires, et de disposer ainsi d'une interface MIDI compliant avec 3 MIDI IN DIN / 3 MIDI DIN OUT.
Je m'en sers désormais tous les jours, à coté de 2 MIDIFACES 4x4 dont j'avais d'ailleurs modifié également le firmware.
Manque plus qu'un boitier...si des experts de l'impression 3D me lisent !
Les commentaires et les questions sont les bienvenues.
Le site du projet sur Github : https://github.com/TheKikGen/USBMidiKliK4x4
[ Dernière édition du message le 19/01/2019 à 15:54:12 ]
airskyone
3
Nouvel·le AFfilié·e
Membre depuis 11 ans
2 Posté le 09/08/2019 à 22:53:07
Salut, super taf !
Je découvre seulement ton projet et ça a l'air vraiment cool !
Chapeau pour le hack du midisport (même si la c'est plus vraiment un hack à ce niveau ^^).
Ta carte à l'air top. J'ai vu que tu les vendais sur eBay.
J'aurais été intéressé mais il me faudrait un montage avec tous les ports en façade. Après je n'y connais vraiment pas grand chose en électronique et je ne suis pas vraiment familiarisé avec la programmation sur arduino.
Est ce que ce serait possible de te demander le schéma électronique et un peu plus de détails sur la conception de ton shield ?
je suis un peu touche-à-tout et ça semble un projet abordable pour une initiation.
Vraiment top en tout cas ! Encore bravo !
Je découvre seulement ton projet et ça a l'air vraiment cool !
Chapeau pour le hack du midisport (même si la c'est plus vraiment un hack à ce niveau ^^).
Ta carte à l'air top. J'ai vu que tu les vendais sur eBay.
J'aurais été intéressé mais il me faudrait un montage avec tous les ports en façade. Après je n'y connais vraiment pas grand chose en électronique et je ne suis pas vraiment familiarisé avec la programmation sur arduino.
Est ce que ce serait possible de te demander le schéma électronique et un peu plus de détails sur la conception de ton shield ?
Vraiment top en tout cas ! Encore bravo !
0
Rémy M. (chimimic)
14262
Modérateur·trice thématique
Membre depuis 22 ans
3 Posté le 25/09/2019 à 09:34:01
Bonjour,
moi aussi ne découvre cela que maintenant - je l'aurais vu avant si le sujet avait été posté dans Les mains dans le cambouis
Très beau travail, bravo !
moi aussi ne découvre cela que maintenant - je l'aurais vu avant si le sujet avait été posté dans Les mains dans le cambouis
Très beau travail, bravo !
0
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
4 Posté le 27/09/2019 à 12:47:44
Thanks ! Beaucoup de rubriques sur AF ! Si un modérateur souhaite déplacer le sujet, no souci .
J'en vends quelques unes effectivement sur Ebay, en mode artisanal total, et à prix coûtant !
Il me reste environ 20 platines non montées que je peux vendre pour 15€ plus un timbre.
A vendre aussi sur Ebay en ce moment.
Ce n'est heureusement pas mon gagne pain. Il faudrait les fabriquer en masse pour ça.
Le projet est open source. Chacun peut donc se monter la sienne pour quelques euros.
Je bosse en ce moment sur la possibilité de connecter jusqu'à 5 cartes en I2C, partageant le même moteur de routage MIDI, et donc de disposer de 5*3 MIDI IN et 5*3 MIDI OUT...soit 15x15 vu par l'USB sur une des cartes configurée en maître. Ce type d'interface coûte plus de 250€ dans le commerce...
A suivre sur le Github...
J'en vends quelques unes effectivement sur Ebay, en mode artisanal total, et à prix coûtant !
Il me reste environ 20 platines non montées que je peux vendre pour 15€ plus un timbre.
A vendre aussi sur Ebay en ce moment.
Ce n'est heureusement pas mon gagne pain. Il faudrait les fabriquer en masse pour ça.
Le projet est open source. Chacun peut donc se monter la sienne pour quelques euros.
Je bosse en ce moment sur la possibilité de connecter jusqu'à 5 cartes en I2C, partageant le même moteur de routage MIDI, et donc de disposer de 5*3 MIDI IN et 5*3 MIDI OUT...soit 15x15 vu par l'USB sur une des cartes configurée en maître. Ce type d'interface coûte plus de 250€ dans le commerce...
A suivre sur le Github...
1
[ Dernière édition du message le 04/10/2019 à 17:46:52 ]
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
5 Posté le 04/10/2019 à 19:08:03
Et maintenant les 15 IN , 15 OUT.....
https://github.com/TheKikGen/USBMidiKliK4x4/wiki/USBMIDIKLIK-BUS-MODE-TO-AGGREGATE-5-boards-to-a-15x15-MIDI-USB-interface
https://github.com/TheKikGen/USBMidiKliK4x4/tree/BUS-MODE-I2C
https://github.com/TheKikGen/USBMidiKliK4x4/wiki/USBMIDIKLIK-BUS-MODE-TO-AGGREGATE-5-boards-to-a-15x15-MIDI-USB-interface
https://github.com/TheKikGen/USBMidiKliK4x4/tree/BUS-MODE-I2C
0
[ Dernière édition du message le 16/10/2019 à 01:03:26 ]
airskyone
3
Nouvel·le AFfilié·e
Membre depuis 11 ans
6 Posté le 04/10/2019 à 19:14:16
0
Rémy M. (chimimic)
14262
Modérateur·trice thématique
Membre depuis 22 ans
7 Posté le 05/10/2019 à 06:48:36
Re- 
0
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
8 Posté le 16/10/2019 à 01:10:02
Citation :
Est ce que ce serait possible de te demander le schéma électronique et un peu plus de détails sur la conception de ton shield ?o
https://github.com/TheKikGen/USBMidiKliK4x4/tree/master/doc
0
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
9 Posté le 15/04/2020 à 13:23:25
Ayant un peu plus de temps de cerveau disponible en cette période de confinement, j'ai un peu bossé sur le firmware de mon interface midi USB 3x3 / 15x15.
Après la possibilité d’agréger plusieurs interfaces en une seule :

j'ai ajouté un mécanisme de pipeline, permettant de transformer un messages midi IN en temps réel, 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.

Je compte ajouter beaucoup d'autres "pipes" (les briques élémentaires de transfo). Alors si vous avez des idées...
J'ai également ajouté : 8 générateurs d'horloge midi, et 8 ports virtuels, ce qui permet du coup une grande flexibilité sur le routage et la transformation des messages midi.
Un logiciel pour configurer graphiquement l'interface midi en sysex sera bientôt disponible sur Chrome (API webmidi).
Et c'est toujours un projet open source !
Vue globale des chemins possibles empruntés par un message midi du IN vers le OUT physiques.

Après la possibilité d’agréger plusieurs interfaces en une seule :

j'ai ajouté un mécanisme de pipeline, permettant de transformer un messages midi IN en temps réel, 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.

Je compte ajouter beaucoup d'autres "pipes" (les briques élémentaires de transfo). Alors si vous avez des idées...
J'ai également ajouté : 8 générateurs d'horloge midi, et 8 ports virtuels, ce qui permet du coup une grande flexibilité sur le routage et la transformation des messages midi.
Un logiciel pour configurer graphiquement l'interface midi en sysex sera bientôt disponible sur Chrome (API webmidi).
Et c'est toujours un projet open source !
Vue globale des chemins possibles empruntés par un message midi du IN vers le OUT physiques.

0
Rémy M. (chimimic)
14262
Modérateur·trice thématique
Membre depuis 22 ans
10 Posté le 15/04/2020 à 13:43:36
Super projet que je suis de près ! 
0
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
airskyone
3
Nouvel·le AFfilié·e
Membre depuis 11 ans
11 Posté le 15/04/2020 à 14:02:22
J'étais fan du concept des premières version, je suis sur le cul la...
Tu vends tjs des interfaces ?
Tu vends tjs des interfaces ?
0
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
12 Posté le 16/04/2020 à 11:46:04
Hello,
Oui, en mode artisanal, (fabriquée à l'unité !) sur Tindie, ou en MP si besoin. Voir sur Github.
Il me reste une dizaine de carte nue également.
Oui, en mode artisanal, (fabriquée à l'unité !) sur Tindie, ou en MP si besoin. Voir sur Github.
Il me reste une dizaine de carte nue également.
0
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
13 Posté le 16/04/2020 à 11:46:56
Aperçu de l'interface de configuration mode terminal :
Le générateur d'horloge peut aussi générer des trames Midi Time Code 30 fps (SMPTE).
USBMIDIKLIK 4x4 - BLUEPILL STMF103CBx 128K FLASH (MASTER ON BUS)
V2.5 - Build 2.200416.0325 - (c) TheKikGen Labs
[url]https://github.com/TheKikGen/USBMidiKliK4x4[/url]
[0] Show global settings [c] Midi clock [x] Exit
[1] Show midi routing [8] Toggle bus mode [!] Dump EEPROM
[2] Usb VID PID [9] Set device Id [:] Dump Flash memory
[3] Usb product string [a] Show active devices / Format EEPROM
[4] Cable OUT routing [d] SYSEX settings dump
[5] Jack IN routing
[6] IThru routing [e] Reload settings
[7] USB idle time [f] Factory settings
[v] Virtual IN routing [r] Reset routing
[p] Show pipeline s Save settings
=>1
VIRTUAL IN ROUTING (8 port(s) found)
| Vr | Pipeline | Cable IN 1111111 | Jack OUT 1111111 |<-| Clock Generator |
| | Slot | 1234567890123456 | 1234567890123456 | | MTC Bpm Enabled |
| 1 | . | .X.............. | ............... | | X 120.0 . |
| 2 | . | ..X............. | ............... | | . 128.0 X |
| 3 | . | ...X............ | ............... | | X 132.0 X |
| 4 | . | ................ | ............... | | . 120.0 . |
| 5 | . | ................ | ............... |
| 6 | . | ................ | ............... |
| 7 | . | ................ | ............... |
| 8 | . | ................ | ............... |
CABLE OUT ROUTING (16 port(s) found)
| Cb | Pipeline | Cable IN 1111111 | Jack OUT 1111111 | Virt. IN 1111111 |
| | Slot | 1234567890123456 | 1234567890123456 | 1234567890123456 |
| 1 | . | ................ | X.............. | ........ |
| 2 | . | ................ | .X............. | ........ |
| 3 | . | ................ | ..X............ | ........ |
| 4 | . | ................ | ...X........... | ........ |
| 5 | . | ................ | ....X.......... | ........ |
| 6 | . | ................ | .....X......... | ........ |
| 7 | . | ................ | ......X........ | ........ |
| 8 | . | ................ | .......X....... | ........ |
| 9 | . | ................ | ........X...... | ........ |
| 10 | . | ................ | .........X..... | ........ |
| 11 | . | ................ | ..........X.... | ........ |
| 12 | . | ................ | ...........X... | ........ |
| 13 | . | ................ | ............X.. | ........ |
| 14 | . | ................ | .............X. | ........ |
| 15 | . | ................ | ..............X | ........ |
| 16 | . | ................ | ............... | ........ |
JACK IN ROUTING (15 port(s) found)
| Jk | Pipeline | Cable IN 1111111 | Jack OUT 1111111 | Virt. IN 1111111 | ITHRU Jack OUT 1111111 | Virt. IN 1111111 |
| | Slot | 1234567890123456 | 1234567890123456 | 1234567890123456 | Enabled | Slot | 1234567890123456 | 1234567890123456 |
| 1 | . | X............... | ............... | ........ | . | . | XX............. | ........ |
| 2 | . | .X.............. | ............... | ........ | . | . | ..X............ | ........ |
| 3 | . | ..X............. | ............... | ........ | . | . | ..X............ | ........ |
| 4 | . | ...X............ | ............... | ........ | . | . | ............... | ........ |
| 5 | . | ....X........... | ............... | ........ | . | . | ............... | ........ |
| 6 | . | .....X.......... | ............... | ........ | . | . | ............... | ........ |
| 7 | . | ......X......... | ............... | ........ | . | . | ............... | ........ |
| 8 | . | .......X........ | ............... | ........ | . | . | ............... | ........ |
| 9 | . | ........X....... | ............... | ........ | . | . | ............... | ........ |
| 10 | . | .........X...... | ............... | ........ | . | . | ............... | ........ |
| 11 | . | ..........X..... | ............... | ........ | . | . | ............... | ........ |
| 12 | . | ...........X.... | ............... | ........ | . | . | ............... | ........ |
| 13 | . | ............X... | ............... | ........ | . | . | ............... | ........ |
| 14 | . | .............X.. | ............... | ........ | . | . | ............... | ........ |
| 15 | . | ..............X. | ............... | ........ | . | . | ............... | ........ |
ITHRU mode is disabled.
USB idle detection time :30s
Le générateur d'horloge peut aussi générer des trames Midi Time Code 30 fps (SMPTE).
0
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
14 Posté le 16/04/2020 à 11:47:37
Ci-dessous, un exemple de pipeline utilisé avec le pipe "keyboard splitter". Fonctionne comme suit :
Pipe 0 : si p1, valeur de la note >= 0 : fixer canal à p2 (canal midi 1)
Pipe 1 : si p1, valeur de la note >= 30H : fixer canal à p2 (canal midi 2)
Pipe 2 : si p1, valeur de la note >= 60H : fixer canal à p2 (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
Pipe 0 : si p1, valeur de la note >= 0 : fixer canal à p2 (canal midi 1)
Pipe 1 : si p1, valeur de la note >= 30H : fixer canal à p2 (canal midi 2)
Pipe 2 : si p1, valeur de la note >= 60H : fixer canal à p2 (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
=>p
PIPELINE SLOT 1 :
| Idx | Pipe id ( p1, p2, p3, p4 ) | Bypass |
| 0 | 08 KBSPLIT ( 00, 00, 00, 00 ) | |
| 1 | 08 KBSPLIT ( 30, 01, 00, 00 ) | |
| 2 | 08 KBSPLIT ( 60, 02, 00, 00 ) | |
| Attached port | 1111111 |
| | 1234567890123456 |
| Cable out | ..............X. |
| Jack in | ................ |
| Jack in Ithru | ................ |
| Virtual in | .X....... |
0
.Adrien
10
Nouvel·le AFfilié·e
Membre depuis 7 ans
15 Posté le 27/08/2020 à 14:32:46
Salut,
Je viens de découvrir ton interface sur Git, super taf, vraiment.. en plus open source...

J'ai quelques questions un peu techniques qui me viennent.
La première, comment sais-tu quand tu achete les BLUEPILL que ce sont des vrai et pas des clones ?
J'ai acheté mes premières BLUEPILL sur aliexpress récemment, 2 parmis elles sont des CKS32, et les 2 autres sont des STM32F103 mais elles ont un comportement bizarre quand je compile un bootloader.
Après, je suis un peu novice avec les lib STM32, les nouvelles fonctions, la nouvelle architecture STM(j'ai tout appris sous arduino), donc je compile peut être mal le bootloader.
En tout cas je galère à comprendre le bootloader sur ton Git et à le compiler. Une fois compilé, ma carte BLUEPILL n'est pas reconnu comme midi device quand je la branche en USB mais en Standard USB device.
Autre question, quel est le fonctionnement général de ton bootloader ? Si on recompile avec l'IDE arduino, il sera effacé ?
Je bosse en ce moment à passer un contrôleur midi que j'ai fait sous arduino (https://www.youtube.com/watch?v=hh8hn07VTkg) à du STM32.
Ma première tâche principale est de faire la mesure de potentiomètres via les ADC et envoyer cette mesure en midi au travers de l'USB. Ton projet m'intérresse donc énormément, mais je ne vois pas comment je pourrait modifier le code (est ce que l'IDE arduino est suffisant pour modifier ton code ?) pour qu'il «écoute & transmette» les mesures faites sur les ADC.
Adrien
Je viens de découvrir ton interface sur Git, super taf, vraiment.. en plus open source...
J'ai quelques questions un peu techniques qui me viennent.
La première, comment sais-tu quand tu achete les BLUEPILL que ce sont des vrai et pas des clones ?
J'ai acheté mes premières BLUEPILL sur aliexpress récemment, 2 parmis elles sont des CKS32, et les 2 autres sont des STM32F103 mais elles ont un comportement bizarre quand je compile un bootloader.
Après, je suis un peu novice avec les lib STM32, les nouvelles fonctions, la nouvelle architecture STM(j'ai tout appris sous arduino), donc je compile peut être mal le bootloader.
En tout cas je galère à comprendre le bootloader sur ton Git et à le compiler. Une fois compilé, ma carte BLUEPILL n'est pas reconnu comme midi device quand je la branche en USB mais en Standard USB device.
Autre question, quel est le fonctionnement général de ton bootloader ? Si on recompile avec l'IDE arduino, il sera effacé ?
Je bosse en ce moment à passer un contrôleur midi que j'ai fait sous arduino (https://www.youtube.com/watch?v=hh8hn07VTkg) à du STM32.
Ma première tâche principale est de faire la mesure de potentiomètres via les ADC et envoyer cette mesure en midi au travers de l'USB. Ton projet m'intérresse donc énormément, mais je ne vois pas comment je pourrait modifier le code (est ce que l'IDE arduino est suffisant pour modifier ton code ?) pour qu'il «écoute & transmette» les mesures faites sur les ADC.
Adrien
0
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
16 Posté le 30/08/2020 à 12:07:48
Salut Adrien,
L'IDE Arduino suffit pour modifier le code. Tu devras télécharger aussi ma librairie MIDI sur le Git.
Tu peux utiliser le bootloader Stm32Duino si tu as des soucis, voire ne pas utiliser de bootloader du tout.
Effectivement, le comportement est variable en fonction des Bluepill (clone, original, qualité des composants, etc...).
Pour les Bluepill, le seul moyen de vérifier est d'acheter ! Parfois les clones sont de meilleure qualité !
Je te propose de continuer la discussion sur le Github si besoin ou MP !
L'IDE Arduino suffit pour modifier le code. Tu devras télécharger aussi ma librairie MIDI sur le Git.
Tu peux utiliser le bootloader Stm32Duino si tu as des soucis, voire ne pas utiliser de bootloader du tout.
Effectivement, le comportement est variable en fonction des Bluepill (clone, original, qualité des composants, etc...).
Pour les Bluepill, le seul moyen de vérifier est d'acheter ! Parfois les clones sont de meilleure qualité !
Je te propose de continuer la discussion sur le Github si besoin ou MP !
0
[ Dernière édition du message le 30/08/2020 à 12:12:33 ]
thekik
202
Posteur·euse AFfiné·e
Membre depuis 19 ans
17 Posté le 30/08/2020 à 13:05:09
NB : J'ai transféré ce topic dans la bonne rubrique, comme recommandé par Chimimic !
https://fr.audiofanzine.com/les-mains-dans-le-cambouis/forums/t.717385,interface-midi-usb-3-in-out-jusqu-a-15-in-out-avec-routage-et-transfo-midi.html
https://fr.audiofanzine.com/les-mains-dans-le-cambouis/forums/t.717385,interface-midi-usb-3-in-out-jusqu-a-15-in-out-avec-routage-et-transfo-midi.html
0
- < Liste des sujets
- Charte

