Hack d'une interface USB MIDI 4IN 4OUT sur STM32DUINO

Hello la communauté FR.
Rapide petit post sur un projet que je viens de terminer.

Il y a quelques semaines, j'ai acheté une seconde interface USB MIDI 4 IN x 4 OUT de chez Miditech/Midiplus parceque je pensais qu'il était possible d'utiliser les 2 sur le même PC pour obtenir 8x2 ports IN/Out. Ben non.

Comme ces appareils ont exactement le même PID/VID, c'est impossible sans avoir de conflits USB. La reconnaissance de la seconde unité quand la première est branchée est totalement aléatoire...

La seule alternative (cf support) était d'acheter la nouvelle interface MIDI 8x8 du même fabricant, pour trois fois le prix du MIDI 4x4....ce que je n'ai pas fait.

N'ayant finalement rien à perdre, j'ai ouvert le boitier, et à l'intérieur j'ai découvert que le microcontrôleur était un STMF103RC. C'est ici qu'a germé l'idée d'un hack avec STM32DUINO !

STM32DUINO est un port de la plate-forme Arduino vers la famille des uC STM32 de ST Micro. Vous pouvez donc développer comme d'habitude, avec l'Arduino IDE, et réutiliser votre code "Arduino" existant sur cette plateforme.

Je me suis donc lancé dans l'écriture d'un nouveau firmware midi "from scratch", sur la base de mes projets MIDI sur la plate-forme AVR.

Après seulement 2 heures de petites modifs et tests, je flashais un STMDuino bootloader générique 2.0 dans la bête (oui, j'ai écrasé le firmware d'origine !).

Pour cela, Il a fallu activer le mode "bootloader usine" du STMF103RC, en maintenant la broche Boot0 à +3.3V et la broche Boot1 à 0V, mais avant ça dessouder 2 résistances sur la carte qui bloquaient ce mode. Ensuite j'ai établi une connexion série sur l'UART1 avec un stick convertisseur USB Serial vers TTL, et utilisé un outil d'upload , STMFlash.

A minima, je souhaitais obtenir un équivalent du produit commercial. J'ai finalement étendu les fonctionnalités du firmware pour permettre un routage midi avancé, par ex "4 IN merge to 1/2", 1 IN to 4 Out, etc... .

Je peux donc dire que mon interface USB 4X4 modifiée est maintenant meilleure que l'original, et, le plus important utilisable avec celle existante ayant évidemment, changé les PID/VID.
Je n'ai même plus besoin de la connecter en USB : elle peut fonctionner en standalone sur les prises MIDI (avec une alim de téléphone sur le connecteur USB ).

Et oui, il n'ya pas que l'ATMEGA 328P !! Le STM32F103RC est vraiment très rapide....pas de lag du tout, même à 300 BPM avec un fonctionnement 4IN/OUT. A découvrir donc.

L'avantage de STM32DUINO est de préserver tout l'acquis Arduino, car le niveau de compatibilité est vraiment très bon.

En savoir plus : GitHub - TheKikGen/USBMidiKliK4x4: UMK4x4 - 4-16 in/out and 3-15 IN/3OUT USB MIDI interface for STM32F103 series board.