Les Mains dans le Cambouis
Forums thématiques Les Mains dans le Cambouis

Jouer d'un instrument ou utiliser un matériel de qualité, c'est bien. Le construire, c'est mieux. Fer à souder en main, les bidouilleurs de tous poils se sont donné rendez-vous dans ce forum pour échanger les plans, bon plans et astuces qui permettent de s'improviser luthier, facteur ou constructeur.

  • J'aime
  • Tweet
  • +1
  • Mail

Ajout d'écrans sur une BCF2000

 
  • Signaler un abus
AuteursMessages

Silhm

membre non connecté
Silhm
597 posts au compteur
Posteur AFfolé

Score contributif : 92

1 Posté le 19/09/2016 à 14:41:08Lien direct vers ce postSignaler un abus

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

 

chimimic

membre connecté
chimimic
12772 posts au compteur
Modérateur thématique

Score contributif : 1 243

2 Posté le 19/09/2016 à 23:16:00Lien direct vers ce postSignaler un abus
Bonjour,

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 !

Citation :
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 ?

Silhm

membre non connecté
Silhm
597 posts au compteur
Posteur AFfolé

Score contributif : 92

3 Posté le 20/09/2016 à 10:06:39Lien direct vers ce postSignaler un abus

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

 

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

 

 

 

 

chimimic

membre connecté
chimimic
12772 posts au compteur
Modérateur thématique

Score contributif : 1 243

4 Posté le 20/09/2016 à 11:36:25Lien direct vers ce postSignaler un abus
Levé de doute avec capture oscillo sur lignes MIDI, et analyse des trames réellement échangées ;-)

moustick

membre non connecté
moustick
922 posts au compteur
Posteur AFfolé

Score contributif : 244

5 Posté le 20/09/2016 à 13:35:16Lien direct vers ce postSignaler un abus
Je flag ...

Sujet très intéressant et qui pourrait en inspirer plus d'un !

Silhm

membre non connecté
Silhm
597 posts au compteur
Posteur AFfolé

Score contributif : 92

6 Posté le 20/09/2016 à 17:56:09Lien direct vers ce postSignaler un abus

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

 

Edit: avec un moniteur logiciel, ça fonctionne bien, le DAW m'envoie bien des SysEx icon_biggrin.gif 

C'est connecté ainsi : 

Jack connection

… et les trames envoyées quand je fais play depuis ma BCF :

extrait des messages MIDI

 

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 ]

chimimic

membre connecté
chimimic
12772 posts au compteur
Modérateur thématique

Score contributif : 1 243

7 Posté le 20/09/2016 à 20:18:19Lien direct vers ce postSignaler un abus
Citation :
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 ! ;)

[ Dernière édition du message le 20/09/2016 à 20:20:28 ]

moustick

membre non connecté
moustick
922 posts au compteur
Posteur AFfolé

Score contributif : 244

8 Posté le 20/09/2016 à 23:19:13Lien direct vers ce postSignaler un abus
Citation de Vahlalafollower :
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 ...

CéGlucose

membre non connecté
CéGlucose
93 posts au compteur
Posteur AFfranchi

Score contributif : 447

9 Posté le 20/09/2016 à 23:48:06Lien direct vers ce postSignaler un abus
Hello,

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
{
}
}

vive les kangourous...

[ Dernière édition du message le 20/09/2016 à 23:52:08 ]

Silhm

membre non connecté
Silhm
597 posts au compteur
Posteur AFfolé

Score contributif : 92

10 Posté le 21/09/2016 à 09:48:06Lien direct vers ce postSignaler un abus

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

 

Revenir en haut de la page