Se connecter
Se connecter

ou
Créer un compte

ou

Ajout d'écrans sur une BCF2000

  • 58 réponses
  • 12 participants
  • 5 849 vues
  • 22 followers
Sujet de la discussion Ajout d'écrans sur une BCF2000

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. yumyum.gif  

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 icon_mrgreen.gif.

 

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! icon_boire.gif

 

Afficher le sujet de la discussion
11
Citation :
Sinon, j'ai bien réussi à récupérer les mêmes SysEx que sur mon moniteur MIDI logiciel, sur mon écran Oled!

Génial, bravo et bonne suite !!!

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

12
Très intéressé par le sujet aussi... donc n'hésites pas à nous faire part de tes avancées !!! Perso, je n'en suis, sur mon controleur, qu'au commandes MMC stop, play etc... Me suis vite rendu compte que pour aller plus loin, fallait passer par une émulation Mackie et là, c'est une autre paire de manche ;)

Pour ma part, j'ai flashé l'arduino uno avec dualMocoLUFA... c'est super pratique pour tester et passer d'usb-midi à usb-serial... Pour ceux que çà intéresse : https://github.com/kuwatay/mocolufa
13

Après lecture du magnifique : LogicControl_EN.pdf, je comprends mieux mes trames SysEx:

L'écran LCD sur une mackie control possède 56 caractères, ça tombe bien, divisé par 8 (nombre de tranches/écrans) ça fait 7 caractères par écran.

Chaque position de caractère est identifié par une valeur Hexa:

  • allant de 0x00 à 0x37 (soit 56 valeurs) pour la première ligne,
  • et de 0x38 à 0x6F pour la seconde ligne.

 

Dans les SysEx reçus (dont le screenshot se trouve quelques posts plus haut), on retrouve bien ce format:

5 chars : F0 00 00 66 00  qui correspond à l'identifiant du device,

12 : qui indique le début du message LCD

Puis : 38 4C 35 31 52 34 39 20 8    

Donc: à partir de l'offset 38 (2e ligne, 1er caractère) on doit donc afficher : 

SysEx 4C 35 31 52 34 39 20
Affiche L 5 1 R 4 9 (espace)

 

Si vous suivez jusque là, on à donc un affichage de PAN sur la 2e ligne, 1er afficheur : L51 R49  (j'ai du me rater dans le DAW pour faire un PAN pareil icon_redface.gif )

 Il y a 8 messages SysEx qui se suivent avec le même schéma, soit mes 8 configurations de PAN pour chacune de mes tranches sur la 2e ligne!

 

@metalfx : J'ai utilisé HIDuino pour flasher le mien, ça semble être sensiblement la même chose! icon_bravo.gif

@chimimic: Merci de ton soutien ! Ton site est une mine d'or pour tout bricoleur!

 

14
Merci pour le lien et ces petits "détails".
Cela me donnerait presque envie de m'y (re)plonger...

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

15
Super explication ! çà devient moins obscure pour moi... faudra que je teste tout çà quand je serais à la partie LCD ;-)
16

De retour avec une belle progression sur le projet,

J'arrive à présent à afficher les infos que le DAW m'envoie sur la sortie MIDI mackie control! yumyum.gif

Je change la valeur du PAN via les potards de la BCF, et mon écran réagit bien et m'affiche un truc du genre: 

LR panning

Après quelques temps, l'écran retourne à sa valeur initiale:

Pan

Ça réagit même sur les faders quand je les bouge depuis la bcf, ou directement dans le DAW:

Faders

 

Il revient toujours sur PAN visiblement. J'ai jamais eu de MCU en main, donc je suppose que c'est un comportement voulu.

J'ai aussi réussi à afficher le nom de la piste sur l'écran, mais le problème, c'est que celui-ci ne s'affiche que lorsque je le modifie dans le DAW… 

En gros l'écran ne réagit pas tant que je ne modifie pas de paramètres. Il y a peut-être une fonction pour demander au DAW de me fournir des valeurs, piste à creuser.

J'ai un autre soucis, quand je modifie rapidement les paramètres, l'écran affiche parfois des caractères aléatoires un peu n'importe ou. Y'a de la friture sur la ligne… il faut que j'arrive à stabiliser le truc, c'est peut-être dû au grand nombre de messages qui passent par la liaison MIDI-USB headscratch.gif

Reste à faire: 

  • La gestion du nom de la piste,
  • La gestion eventuelle d'un petit bargraph/vumetre 
  • La gestion du TimeCode sur un écran à part pour connaitre la position du curseur dans le projet,
  • Des boutons pour switcher l'affichage,
  • … plein d'autre trucs!

J'ai mis à jour le code sur Github si ça interesse quelqu'un. 

Je crois que je vais lancer une commande d'afficheurs Oled supplémentaires! icon_tourne.gif

Je tacherais de faire une petite vidéo pour montrer le projet en fonctionnement!

 

 

17
Cool, ça avance bien ;-)
Et merci pour le partage sur Github.

Pour avoir travaillé avec plusieurs écrans LCD/TFT/OLED, je sais que le temps de rafraichissement est parfois un problème. Et encore, là tu n'affiches que du texte et pas de "larges" zones graphiques.

Il serait sans doute judicieux de ne pas rafraichir systématiquement les infos sur l'écran OLED, en cas de réception d'un grand nombre d'infos, mais d'attendre quelques dizaines de ms ou même "sauter" quelques valeurs "intermédiaires".

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

18

Après réflexion, je vais me heurter à un souci, l'adressage des écrans OLED… mon écran actuel cause en I2C, jusque là, pas de soucis, 4 câbles, c'est un BUS. Par contre, les écrans I2C à base de SSD136 n'offrent que la possibilité de 2 adresses différentes (via un jumper). Là où je veux en mettre un minimum de 8, ça va poser problème…headbang.gif

Je regarde donc du coté des écrans SPI, qui semblent être plus rapides (et donc plus fluide?) Mais qui nécessitent plus de branchements. Ils sont un peu plus cher aussi.

J'aurai donc besoin de 4 I/O que je peux chainer entre les différents écrans:

  • DATA to digital 9
  • CLK to digital 10
  • D/C to digital 11
  • RST to digital 13

mais chaque écran nécessite 1 I/O supplémentaire pour être "selectionné" ce qui me laisse:

  • CS to digital 2 3 4 5 6 7 8 12

Je ne sais pas si je peux utiliser 0 et 1 car je pense qu'elles sont réservées pour la communication Série/MIDI 

Ça me fait un total de 8 écrans, tout pile. Je pense cependant balancer le tout derrière un multiplexeur pour n'utiliser qu'une seul I/O sur l'arduino, pour laisser de la place à d'éventuelles améliorations. 

Ça complexifie un peu le montage par contre... mais ça me semble nécessaire. 

 

[ Dernière édition du message le 23/09/2016 à 14:17:33 ]

19
Pour moi, et vu les extensions possibles à venir, l'emploi d'un système de multiplexage me semble la meilleure solution. Multiplexer avec un seul fil de données est possible, mais c'est tout de même plus simple avec deux fils (Data et Clock). Si le mux est de type I2C ou SPI, ce sera sans doute aussi bien même si cela n'a rien d'impératif. Dans mes développements, j'utilise des mux et expandeurs de ports de tous poils, c'est vachement pratique. Il faut juste savoir que certains circuits spécialisés sont parfois plus "chatouilleux" que d'autres...

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

20
Je ne sais pas si çà peux t'aider mais la chaîne Youtube "Notes and Volts" parle justement de ce problème de raffraichissement des paramètres midi il me semble... En gros, il explique que les paramètres doivent être envoyés qu'une fois qu'ils sont changés.

Il en parle à partir de 6 minutes dans cette vidéo



Il a également un site où tu peux télécharger son code source :

http://www.notesandvolts.com/2016/03/arduino-midi-controller-potentiometers.html

Peut-être trouveras-tu une idée dans son code... bien que celui-ci soit axé sur des potentiomètres et des boutons...

[ Dernière édition du message le 23/09/2016 à 18:36:35 ]