Ajout d'écrans sur une BCF2000
- 58 réponses
- 12 participants
- 5 847 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!
Rémy M. (chimimic)
merci pour le lien vers les fichiers descriptif HUI !
Je m'y étais penché il y a quelques années, mais avais vite laissé tomber...
Joli projet !
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)
Tu en est sûr, ou c'est le comportement de ton soft qui t'y fait penser ?
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
Silhm
Citation de chimimic
Tu en est sûr, ou c'est le comportement de ton soft qui t'y fait penser ?
J'utilise Ardour sous linux, patché dans Jack. Ce qui est bien pratique pour gérer toutes les connexions MIDI et audio.
Ma BCF est patchée sur l'entrée Mackie Control IN, mon Arduino sur la sortie Mackie Control OUT, et tout ce que je reçois, c'est du CC, PC et cie… (dans la librairie MIDI d'Arduino, j'ai un getMessageType qui me renvoit cette info, j'attends un 0xF0 comme début de trame SysEx.)
Quand je lance la lecture dans mon DAW, le RX de mon Arduino me signale que je reçois bien des infos en masse, et que d'après la lib, c'est pas du SysEx.
L'émulation Mackie Control et le protocole MCP sont fait du coté DAW non? J'essaierai éventuellement avec un autre DAW sous Windows pour voir si c'est le cas aussi. J'essaie de me remettre dedans prochainement
Rémy M. (chimimic)
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
moustick
Sujet très intéressant et qui pourrait en inspirer plus d'un !
Silhm
Citation de : chimimic
Levé de doute avec capture oscillo sur lignes MIDI, et analyse des trames réellement échangées
Certes, mais dans mon cas l'arduino communique avec l'ordi en MIDI via l'usb HID, donc la communication "série" de l'arduino est directement géré dans le firmware, mais je peux toujours essayer de sortir de la carte son en midi et analyser les trames à l'oscillo (qui d'ailleurs est à la cave dans un carton, car pas très Wife compliant dans le bureau )
Edit: avec un moniteur logiciel, ça fonctionne bien, le DAW m'envoie bien des SysEx
C'est connecté ainsi :
… et les trames envoyées quand je fais play depuis ma BCF :
Donc c'est bien dans mon code qu'il y a un soucis…
[ Dernière édition du message le 20/09/2016 à 18:36:25 ]
Rémy M. (chimimic)
dans mon cas l'arduino communique avec l'ordi en MIDI via l'usb HID
Je l'avais pourtant bien lu. Désolé.
En tout cas cela valait bien le coup de vérifier ce point.
Il y a bien des CC en plus des Sysex...
Ca avance !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
[ Dernière édition du message le 20/09/2016 à 20:20:28 ]
moustick
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.
Sur Cockos j'ai parcouru quelques forums de DIY de ce genre de projet ...avec une bcf je crois ou un icontrols pro ...
bref :
Petits écrans avec a peu près tout ce que tu veux y mettre ...
Peut être l'as tu déjà lu, mais je mets le lien au cas ou ...(c'est de l'anglais) https://forum.cockos.com/showthread.php?t=81818&page=10
Bon par contre tu n'y trouveras pas énormément d'infos ...plutôt des idées ...
Maïs Dévisse
A toutes fins utiles, voici l'implémentation en C# du décodage dans Huskervu. Huskervu était un utilitaire sur PC qui faisait grosso modo la même chose que BCFViewer/BCF2000 virtual display (Je n'en suis pas l'auteur).
http://www.medwaystudios.com/bcr2000-huskervu.html
Ca ne casse pas des briques. Il semble que la mackie renvoie l'affichage complet dans un seul sysex. Je n'ai pas testé la recompilation du code pour valider.
private void g_midiInput_SysEx(object sender, SysExEventArgs e)
{
try
{
string text = e.Message.Message.ToString();
if (text.Substring(5, 1) == "u0012")
{
int num = (int)text.get_Chars(6);
int num2 = (int)Convert.ToInt16(text.get_Length() - 8);
string text2 = text.Substring(7, num2);
if (num + text2.get_Length() < 113)
{
this.g_sDisplayText = this.g_sDisplayText.Substring(0, num)
+ text2
+ this.g_sDisplayText.Substring(num + num2, 112 - (num + num2));
this.fnUpdateText();
}
}
}
catch
{
}
}
Pas de chichis, appelez-moi Maïs...
[ Dernière édition du message le 20/09/2016 à 23:52:08 ]
Silhm
@moustick, c'est exactement ça que je compte faire, mais sans la partie controlleur, mes compétences en usinage/méchanique sont bien limitées, donc je vais me contenter d'un affichage avec 2-3 boutons de contrôle. Les écrans sont les mêmes, bien qu'un peu trop "chargés" d'informations à mon gout. Le problème, avec ce genre de projets, c'est que les gens sont souvent tellement fier d'avoir fait leur truc qu'ils en oublient de partager comment ça fonctionne, et quelles sont les étapes pour en arriver à un projet fonctionnel.
@CéGlucose, interressant! merci, je vais checker ça aussi
Sinon, j'ai bien réussi à récupérer les mêmes SysEx que sur mon moniteur MIDI logiciel, sur mon écran Oled! C'était un problème de code mal formé, avec des mauvaises déclarations de variables. Je suis un peu rouillé en C depuis que je fais beaucoup plus de web et de python.
Maintenant, faut que je décode, convertisse ça en human readable!
- < Liste des sujets
- Charte