Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Interface MIDI USB 3 IN / 3 OUT

  • 16 réponses
  • 4 participants
  • 1 482 vues
  • 7 followers
Sujet de la discussion Interface 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.
68747470733a2f2f322e62702e626c6f6773706f742e636f6d2f2d776f3148323752515969552f58447a4f395647337664492f41414141414141414157412f4b65684c6a7958684c54675f6e6d6a6a6d456b4f374c5a74593548383352722d41434c63424741732f73313630302f32303139303131335f3232313535372e6a7067

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 ]

2
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 !
3
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 !

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

4
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...


[ Dernière édition du message le 04/10/2019 à 17:46:52 ]

5
6
:bravo:
7
Re- :bravo:

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

8
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
9
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 :

USBMIDIKLIK-I2C-BUS-MODE.jpg

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.

pipelines1.jpg

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.

umk4x4-routing-engine-overview.jpg




10
Super projet que je suis de près ! :bravo:

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

11
J'étais fan du concept des premières version, je suis sur le cul la...
Tu vends tjs des interfaces ?
12
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.
13
Aperçu de l'interface de configuration mode terminal :


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).
14
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

=>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.......        |





15
Salut,

Je viens de découvrir ton interface sur Git, super taf, vraiment.. en plus open source...:8O::bravo:

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
16
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 !




[ Dernière édition du message le 30/08/2020 à 12:12:33 ]

17