Ajout d'écrans sur une BCF2000
- 58 réponses
- 12 participants
- 6 095 vues
- 22 followers

Silhm

Salut à tous,
J'ai commencé un projet qui a pour but d'ajouter des écrans pour chaque tranche de ma BCF 2000 (un peu à la Xtouch de la même marque).
L'idée, c'est d'afficher le nom de la piste correspondant, et en fonction d'une touche dédiée, où alors directement sur l'édition d'un paramètre, afficher le paramètre en question. Éventuellement par la suite, ajouter un vu-metre par piste.
Le but est de faire un truc open-source, facile à mettre en place pour un bricoleur débutant et compatible avec plusieurs surfaces de contrôle, voir même chainable pour des surfaces plus larges et le tout sans se ruiner.
Pour le moment, j'utilise un Arduino flashé avec HIDuino pour que celui-ci soit reconnu comme un périphérique USB-MIDI et un écran OLED de 0,96" (c'est tout petit, mais ça tiens pile sur une largeur de tranche) de la BCF .
Pour la compatibilité, j'utiliserai le protocole Mackie HUI MIDI en me basant sur le boulot de theageman qui a reverse-engineeré tout ça et en a fait un joli document d'explications dispo sur un thread du forum de Reaper.
Dans mes avancées, j'arrive à faire en sorte que l'Arduino soit reconnu comme périphérique USB-MIDI et afficher sur l'écran oled les paramètres MIDI et leur valeurs tels que CC, PC, noteOn/Off, etc. avec le numéro de canal MIDI associé.
Le projet est dispo sur mon Github, et la route est encore longue pour avoir quelque chose de fonctionnel, mais si des motivés sont prêts à m'aider, c'est pas de refus!
Pour le moment je galère à recevoir des informations depuis le protocole Mackie HUI, qui est sensé être transporté dans des trames SysEx. Les messages que je reçois sont tout sauf du SysEx, donc ils sont interprétés par mon programme comme des Notes ou des Changes (qui font juste 3 bytes, et non plus, comme prévu par les SysEx). Si quelqu'un à déjà mis les mains dans ce genre de truc, qu'il n'hésite pas à me guider!

offenbach


Site officiel et boutique en ligne du Studio Delta Sigma https://www.studiodeltasigma.com

metalfx

void loop() {
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
(Tiré bêtement de https://www.arduino.cc/en/Tutorial/LiquidCrystalSerialDisplay car j'avais jamais touché un LCD jusqu'içi...)
Je pense que c'est géré par le protocole mackie d'une autre manière et je suis un peu surpris de voir apparaitre le nom des pistes en utilisant ce bout de code... Aussi, si je touche à quoi que ce soit dans FL ou sur le contrôleur.... hiéroglyphes assurés par la suite

Bref, si ça te donne une idée avec tes écrans...

Rémy M. (chimimic)

"yapuka" extraire et mettre en ordre les données qui vont bien. Le plus rigolo, quoi

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

Silhm

@metalfx : J'ai pas avancé depuis l'autre jour, mais je fais sensiblement la même chose que toi à la seule différence que je lis sur mon port MIDI (qui est au final une abstraction du port USB->Serial).
Pour me simplifier le développement, j'ai mis un moniteur MIDI directement à la sortie du DAW (gMidiMon sur Linux, équivalent à MidiOx sous Windows) Et même à ce niveau, aucun SysEx contenant le nom des tracks n'est envoyé, tant que ne renomme pas les noms dans le DAW, ou alors que je change l'ordre de celles-ci.
Dans la documentation du LogicControl, il y a toute une partie sur l'initialisation de l'appareil Mackie et un ping régulier que j'ai volontairement mis de coté. Mais peut-être que c'est à ce moment que c'est envoyé.
J'ai pas non plus testé avec un DAW sous windows, pour le moment je me limite à Ardour, mais visiblement c'est supporté, vu que même le BCFView.exe fonctionne sous Linux.
Bref affaire à suivre quand j'aurai un peu de temps devant moi
Sinon, je suis tombé sur la page d'un utilisateur midibox avec des exemples magnifiques:
http://www.midibox.org/dokuwiki/lib/exe/fetch.php?w=300&tok=7e9afe&media=antichambre:large.img_3754.jpghttp://www.midibox.org/dokuwiki/lib/exe/fetch.php?w=300&tok=a0d287&media=antichambre:img_3657.jpg

Silhm

Bonjour à tous!
Me revoilà sur ce post, j'ai pas trop avancé depuis.
Seulement sur la partie initialisation de la communication, mais celle-ci ne semble pas indispensable pour utiliser toutes les fonctionnalités du protocole.
Pour le moment, voici une petite vidéo de qualité passable, je n'ai qu'un vieux smartphone.
Ça montre les différentes features que j'ai implémenté pour le moment: Pan, Fader level, vu-metre basique (l'idée est de balancer ça sur un bargraph 10segments ou plus par canal), et l'affichage du nom de la piste (qui ne s'affiche pour le moment, seulement quand je renomme la piste)
On y voit aussi les "artefacts" quand ça va trop vite...
(https://www.youtube.com/embed/cKsytXIw5Rs)
Je pense que je vais retravailler toute la gestion des écrans. En effet, avec le moniteur midi, je vois bien les messages avec le nom des pistes qui passe, mais dans mon code je fais un display.clear() à chaque fois qu'une donée arrive, donc forcément, je n'ai qu'un affichage à la fois.
L'idée, c'est de charger les informations de chaque écran dans des objets (en C) et de les modifier à chaque fois qu'une donnée est reçu. Ensuite, régulièrement mais pas trop vite j'affiche le contenu de chaque objet sur son écran respectif…
Bref y'a du pain sur la planche, surtout que le compresseur d'offenbach arrive bientôt et que ça va me prendre un moment aussi
Y'a du pain sur la planche!

moustick

Tu envisages la fabrication d'un vu-mètre à led pour chaque pistes ? si tel était le cas, tu pourrais aussi envisager de le faire en stéréo ... un fader de controleur correspondant souvent à un piste stéréo ...
En tout cas très joli projet, reste à savoir si cela serait compatible avec d'autres stan comme cubase par exemple (j'imagine que oui puisque je crois que tu utilises le protocole MCU)

Silhm

Citation de moustick
Bah tu as quand même déjà bien avancé je trouve !
Merci !
Citation de moustick
Tu envisages la fabrication d'un vu-mètre à led pour chaque pistes ? si tel était le cas, tu pourrais aussi envisager de le faire en stéréo ... un fader de controleur correspondant souvent à un piste stéréo ...
J'aimerai bien oui, c'est pas indispensable, mais c'est pas très difficile à réaliser. 2 bargraphes de 5 leds et un multiplexeur par piste, et l'affaire est réglée.
Le problème, c'est que le protocole MCU n'envoie que le maximum des 2 cannaux… donc c'est pas possible malheureusement. (Sauf s'ils ont prévu des update du protocole dans les prochains temps, mais j'y crois pas trop).
J'ai pas encore testé, car je n'utilise plus mon ordi sous windows, mais une fois que ça avancera un peu (affichage des nom de pistes sur 8 écrans), je ferais une série de tests sur cubase et reaper au moins, je demanderais à des amis avec PT de tester…

seymseym



Rémy M. (chimimic)

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

moustick

Le problème, c'est que le protocole MCU n'envoie que le maximum des 2 cannaux… donc c'est pas possible malheureusement. (Sauf s'ils ont prévu des update du protocole dans les prochains temps, mais j'y crois pas trop).
Pourtant en mode MCU, une mackie D8B par exemple est capable de sortir un vu-mètre à led par piste ...
tu trouveras sur ce lien : http://www.d8bforum.com/phpBB3/viewtopic.php?f=2&t=1484&start=20 beaucoup d'informations concernant l'utilisation du bargraph d'une D8B en controleur midi (mode MCU)
C'est en Anglais, mais il y a pleins d'infos !

Silhm

@moustick : Oui oui, on se retrouverait bien avec 8 vumètres, 1 par piste et pas uniquement la sortie master.
Ce que je voulais dire, c'est que le protocole ne prévoit qu'un seul vu-mètre par piste, donc pour les pistes/bus stéréo, c'est affiché sur 1 seul vu-mètre, comme sur la d8b (merci pour le lien!)
Et sinon, le but étant de faire quelque chose de facile à mettre en place avec des composants simples. Je fais une explication détaillée si l'idée vient à certains de participer au développement du truc, mais pour un utilisateur final, même sans comprendre le pourquoi du comment, ça devrait être réalisable en suivant les instructions

Silhm

Petite amélioration "théorique" au sujet des noms de pistes!
Je me suis rendu compte que mon code fonctionnait (j'arrive à afficher les noms de pistes mais que quand je les modifie dans le DAW) mais je n'avais pas pris en compte un élément important: la fonction qui gère les SysExs peut recevoir plusieurs SysEx à la fois.
Jusqu'à maintenant, j'utilisais cette fonction pour lire une seule trame à la fois, et donc en passant les autres à la trappe…
Donc c'est une nouvelle piste à explorer!
Et sinon, j'ai amélioré ma gestion des écrans, en remplissant un tableau de structures C quand je reçois des données MIDI et en raffraichissant l'affichage sur les écrans qu'une seule fois par cycle.
Et vu que je n'ai qu'un seul écran physique pour le moment, je me suis fais une fonction qui m'affiche uniquement la piste selectionnée sur l'écran (avec un petit index pour identefier la-dite piste). C'est pratique pour voir si toutes les données sont bien là!
Bref, ça avance lentement, mais sûrement! J'ai hâte de voir le projet un peu plus abouti

oktopus



moustick


Du reste je me pose la question de savoir si ce que tu mets en place sera compatible ou pas avec d'autres controller ... Comme par exemple, car c'est celui qui m'intéresse, la iCon iControls Pro elle aussi dépourvu d'écran et de vu-mètre ...?? (celle-ci fonctionnant bien entendu aussi en mode MCU)
[ Dernière édition du message le 17/10/2016 à 14:55:15 ]

Silhm

Citation de moustick
Du reste je me pose la question de savoir si ce que tu mets en place sera compatible ou pas avec d'autres controller
C'est le but! En gros, je me sert de la BCF2000 comme de base car c'est tout ce que j'ai sous la main.
Pour le moment, avec Jack + ardour c'est pratique, car je peux patcher mes connections MIDI comme je le veux. Mais dans l'idéal, c'est vraiment de faire du MIDI THRU avec, sans se soucier du hardware qui l'accompagne, tant que le protocole derrière est bien en mode MCU. J'ai pas encore trop pensé au différentes compatibilités, mais c'est dans un coin de ma tête .
Après, je me suis rendu compte que le prix du matériel (8~10 écrans + arduino + TinyISP pour programmer le bazar + hardware/boitier) on arrive vite dans les 100€… à voir si ça justifie un projet DIY plutôt que d'acheter une surface de contrôle «avancée».
Tant qu'on est passioné, c'est pas un problème! après si l'enjeu est financier, c'est une autre histoire.
oktopus : merci!

moustick

Le prix d'un contrôleur midi motorisé avec tout ça tournant autour des 5 à 600 euros en neuf...
Si cela est à rajouter à de l'existant, c'est quoi qu'il arrive intéressant financièrement parlant sans parler du plaisir de faire sois même !

Silhm

J'ai commandé 10 écrans OLEDs avec le support du SPI (plus facile à gérer dans le cas d'écrans multiples) et des multiplexeurs (74HC4051).
Y'a plus qu'à attendre tout ça!
J'ai un peu avancé sur l'optimisation de la récupération des trames sysEx, mais c'est pas encore optimal, j'ai trouvé une astuce pour le moment pour "forcer" la récupération des nom de pistes, en cliquant sur la touche «STORE» de ma BCF2000. J'ai pas trop saisi le délire, mais ça fonctionne, visiblement quand Ardour (mon DAW) reçoit un «note ON, G#, 127» il me force l'envoit de la première ligne des afficheurs
Je commence à réflechir à de quoi mettre ça en boite, si vous avez des idées je prends! dans un premier temps je vais ressortir les légos/méchanos je pense

Silhm

Hello,
Mes écrans sont enfin arrivés après 1mois et demi! (vive les commandes en Chine). J'attend toujours mes multiplexeurs…
Donc comme je disais, j'ai pris des écrans SPI, cependant je me suis raté en beauté, il n'y a pas de ChipSelect (CS) sur mes écrans mais uniquement (GND-VCC-SCL-SDA-RES-DC)
Je me retrouve bien embêté, parceque tout ce que j'arrive à faire pour le moment, c'est afficher la même chose sur tous mes écrans à la fois (forcément, tout est branché sur le même bus en parallèle).
J'ai essayé de brancher SDA séparement pour chacun des écrans (en utilisant les mêmes connexions pour toutes les autres pins). Mais cela ne fonctionne pas. Faut-il brancher SDA et le RES sur différentes pins pour faire fonctionner le tout?
J'avoue que je sèche un peu là Si quelqu'un peu m'aider sur la question, je prend!
Pour pas trop sentir la frustration, j'avance sur un prototype qui gère l'OSC sur de l'Ethernet, c'est bien puissant comme protocole!

Rémy M. (chimimic)

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

Silhm

Merci pour la piste!
En gros, si j'ai saisi le MAX4066 peut multiplexer 1 sortie vers 8 c'est ça? On voit souvent l'utilisation du 8 pour 1 plutôt que l'inverse, mais j'imagine que ça doit fonctionner aussi?
Donc dans mon cas, pour switcher le SPI, je n'ai besoin de commuter que la ligne de Data et la Clock c'est bien ça?
Ça complexifie un peu mon schéma, mais ça m'éviterait de me retrouver avec mes 10 écrans Oled dont je ne sais pas quoi faire

Rémy M. (chimimic)

Dans tous les cas de figure, tu dois ajouter des composants pour les commutations de signaux, et prévoir des lignes de commande additionnelles pour ordonner le routage (au moins 4 bits/lignes de commande).
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

moustick

Tu en es ou de tes écrans ? ça fonctionne ? Projet abandonné ?

Silhm

Hello!
Non non, c'est pas abandonné j'ai mis le truc un peu de coté pour le moment par manque de temps et de finances…
Je dois dire que le coup des 10 écrans que j'ai commandé sans le ChipSelect, ça m'a refroidit un peu
J'ai quand même pas chaumé, car en attendant je me suis préparé une version web avec le retour d'informations en OSC plutôt qu'en midi.
Ce qui permet d'avoir une interface utilisable depuis une tablette ou une raspberry+écran.
Le seul soucis, c'est que ma tablette est une 7", et que c'est pas suffisament large pour les 8 tranches de la BCF.
(oui, c'est largement pompé sur un thème de Reaper, mais ça me simplifie le boulot)
J'ai aussi une vue 1 piste avec beaucoup plus de détails, j'aimerai réussir à récupérer les settings d'EQ de manière graphique à la softube, mais j'en suis pas encore là pour le moment.
Et enfin, une vue transport en plein écran.
J'aimerai faire un sytème assez modulaire, qui permette de gérer soit des vu-metres analo, un écran ou une tablette. De pouvoir ajouter des boutons de fonctions, un jog... en gros refaire une surface de contrôle, modulaire avec les éléments connectables entre eux via usb ou sur le réseau wifi / ethernet.
Bref, tout est dans un coin de ma tête, il me faudrait un peu de temps et que je rachete des écrans adaptés pour m'y remettre

Jimbass

j'ai pris des écrans SPI, cependant je me suis raté en beauté, il n'y a pas de ChipSelect (CS) sur mes écrans mais uniquement (GND-VCC-SCL-SDA-RES-DC)
SDA et SCL, ca ressemble furieusement à de l'I²C, pas à du SPI.
J'imagine qu'il n'y a pas de datasheet lisible ?
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts

Silhm

Citation de Jimbass
J'imagine qu'il n'y a pas de datasheet lisible ?
C'est souvent le problème avec les composants achetés à pas cher en chine
C'est un petit module oled 0.96" et à la vue de ce qu'il y a écrit derrière, ça fait I²C et SPI suivant la configuration des jumpers.
En gros, il y a une configuration IIC, 4SPI et 3SPI:
- < Liste des sujets
- Charte