Se connecter
Se connecter

ou
Créer un compte

ou

Ajout d'écrans sur une BCF2000

  • 58 réponses
  • 12 participants
  • 5 851 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
21

@metalfx : Je connais Notes and Volts, c'est une véritable mine d'informations! C'est grâce à lui que j'ai commencé mes premiers montages MIDI (un switcher de canaux pour mon ampli/préampli en rack)

Le "problème", c'est qu'il se concentre sur la partie controlleur, et un peu moins sur le retour d'informations. Je peux toujours essayer d'entrer en contact avec lui pour voir. icon_razz.gif

 

En attendant de pouvoir me prendre des nouveaux écrans en SPI et quelques MUX (je dois en avoir quelques un qui trainent dans mes tiroirs),  j'ai avancé sur la partie Metering envoyé par le MCP. Ça m'a permis de découvrir un point important, le protocole n'envoie pas que du SysEx, mais aussi des messages MIDI plus «standards».

Les messages de Metering pour chaque canal sont de type 0xD0 (Channel pressure) et sont formés ainsi: 

D0 ,  XY

XY étant un byte qui permet de définir à la fois le canal et la valeur du vu-metre

  • X : numéro du canal, allant de 0 à 7 
  • Y : valeur du vu mètre, allant de 0 à C (0 étant 0% et C étant 100%) 
    • si ce Y est égal à E, alors on set l'overload (typiquement une led avec un clip)
    • si ce Y est égal à F, alors on efface l'overload (on éteind la led de clipping)

Donc à chaque fois que je rencontre un 0xD0, je regarde la valeur qui suit, je la "découpe" en 2 à l'aide d'un masque 

byte chan = data & 0xf0;

byte level = data & 0x0f; 

… et je prend en compte l'overload s'il y a.

A partir de là, je dessine une ligne en fonction de la valeur, (en prennant en compte la largeur totale de l'écran: 128px dans mon cas pour 100%)

Je dois encore gérer le decay de la valeur, en gros, quand je stoppe la lecture dans le DAW, le vu-metre est sensé (d'après la doc) retomber d'une unité toute les 300ms, soit 1.8s pour retomber depuis le 100%.

Ça fonctionne plutôt bien, et c'est réactif! J'affiche ça sur la 1ère ligne du LCD pour le moment (vu que j'ai toujours pas réussi à y afficher le nom de la piste), mais un petit vu-metre par cannal pourrait vraiment être classe visuellement yumyum.gif

22
Clair que les tutos "Notes and Volts" sont très claires pour mettre le pied à l'étrier... j'attends la suite de ses vidéos avec grande impatience !

Encore bravo pour ton travail... tes explications sont limpides et je me régale.

Perso, pour l'instant, je n'ai pas encore le matos pour creuser mon histoire de controlleur dédié à FL Studio mais çà ne saurais tarder ;-) (Faders motorisés etc...) J'ai demandé à Image Line si on pouvait accéder aux différentes fenêtres de FL via le midi en sysex ou autre mais ils m'ont répondu que c'était impossible :((
Etant donné que je ne tiens pas à avoir de soft coté ordi, j'ai pensé utiliser un Leonardo configuré en clavier pour me faire des touches de raccourcis... c'est peut-être un peu overkill et tout de suite çà demanderait deux branchements usb à partir de mon controlleur.

Mon autre idée était de prendre une QCon lite pour "monitorer" ce qui se passe exactement entre FL et le controlleur en mode Mackie Control... Ensuite la désosser pour récupérer le fader motorisé, les boutons etc... Oui, je sais... c'est un peu hard comme pensée mais c'est pour la science :D:

Donc... encore merci pour ton éclairage sur le protocole Mackie...

Petite question en passant, les vu-mètre ont un "fall" à 300ms... dois je comprendre que c'est une lecture RMS qui est faites sur les vu-mètre ? Je pensais qu'on était sur du peak meter...

23

Citation de metalfx

 Encore bravo pour ton travail... tes explications sont limpides et je me régale.

 icon_bravo.gif

FL Studio n'a pas de mode learn ou de truc similaire? Je ne me suis pas penché sur le mode "Plug-in Edit view" de la mackie, car non supporté sur Ardour pour le moment. Mais je pense que ça doit être faisable via le protocole Mackie Control non? (si FL le supporte)

Pour tes histoires de raccourcis, on voit souvent des gens qui désossent des claviers PC pour en faire des controleurs, ça serais pas plus facile? Surtout que des faders motorisés, ça se trouve dans les 15-20€ sur le net et c'est parfaitement géré avec les Arduino (ici par exemple). Ça reviendra moins cher que d'acheter une QCon icon_razz.gif

 

Concernant les vu-mètres, oui c'est bien du peak, c'est simplement le petit effet smooth qui fait que les valeurs retombent à cette vitesse. Dans mon DAW, quand tu stoppe la lecture, il y a une barre qui reste au niveau du peak et ça retombe lentement jusqu'a 0, mais la valeur du peak est gardée en valeur décimale.

24
De fait, tu avais raison... je viens de regarder une vidéo de démonstration de Beatstruggles avec une vrai Mackie Control Pro sous FL Studio et j'ai été surpris de constater le nombre de fonctions disponibles. Zoom, changement entre pattern et song mode, gestion du bpm, navigation dans les samples et même switch entre les fenêtres disponibles...

Puis, on a effectivement le fameux "Link to controller" mieux connu sous le nom de midi learn :-)

Bref, moi qui pensais que le mode Mackie Control de FL était juste limité aux faders motorisés... ben va falloir revoir ma copie ! (J'ai eu une BCF2000 il y a quelques années et je me limitais à çà à l'époque...)

Désosser des claviers ? çà c'est une idées qui me plait et à laquelle je n'avais pas pensé tout bêtement :mdr:

25
Merci pour le thread

Beat Thang 4 Life

26

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

27
@Vahlalafollower : Je sais pas où tu en es avec le nom des pistes mais j'ai bêtement fais un test sous FL Studio et un écran LCD 16*2... et en tapant ce code, au démarrage de mon contrôleur, je peux lire (bordéliquement ceci dit sur un 16*2 sans aucuns filtres) les noms de pistes...

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 :lol:

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

28
Bonne nouvelle et merci pour ce retour !
"yapuka" extraire et mettre en ordre les données qui vont bien. Le plus rigolo, quoi :bravo:

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

29

@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 icon_wink.gif

 

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

 

30

Bonjour à tous!

Me revoilà sur ce post, j'ai pas trop avancé depuis. icon_neutral.gif

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 icon_tourne.gif 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 icon_mdr.gif

Y'a du pain sur la planche!