Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Ajout d'écrans sur une BCF2000

  • 58 réponses
  • 12 participants
  • 5 607 vues
  • 22 followers
1 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

 

2
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 ?

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

3

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

 

 

 

 

4
Levé de doute avec capture oscillo sur lignes MIDI, et analyse des trames réellement échangées ;-)

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

5
Je flag ...

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

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 ]

7
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 ! ;)

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

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

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

attachment.php

attachment.php

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

Pas de chichis, appelez-moi Maïs...

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

10

@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!