Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Contrôleur pour JU-06A

  • 36 réponses
  • 11 participants
  • 2 386 vues
  • 18 followers
1 Contrôleur pour JU-06A
Bon ben voilà, c'est fini.

Je trouvais que les faders avaient une course un peu trop courte sur le JU-06A. J'ai mis des 100mm. En plus, il manquait un on/off et un réglage pour le Portemento & le choix du type de LFO.

roland-ju-06a-2962295.jpg

roland-ju-06a-2962333.jpg


Le tout avec un Genuino Uno, 1 multiplexer, 15 faders, 2 potars, 1 prise MIDI out, 1 bouton/LED et 1 LED. Un peu de Kapur, du strat teinté dans la masse, du CP et une chiée d'heures de travail.

J'aurai sûrement des petites retouches à faire après. Notamment, je trouve que les boutons des faders ressortent trop. Il faut que je prenne des entretoises.

Si vous avez des questions :bravo:

Xavier
2
Joli!:bravo:

PK crew( à l'abandon) / Mixcloud / 3'ks

En vrai t'es Eddie Barclay avoue :oops2:

3
Merci
4
Beau boulot !

J'ai vu tes posts sur facebook où tu détailles ce que tu as fait.
Je pense qu'il serait intéressant de les publier ici également (moi perso, j'ai beaucoup de mal à retrouver des infos dans la jungle de facebook).

Je réfléchis à me faire une contrôleur midi pour mon Juno Alpha 1 et j'envisageais un peu de faire comme toi : adruino (j'avais vu les vidéos de Nine And Volts, elles sont très bien faites), multiplexeur etc..

Tu me donnes envie de sauter le pas !
5
Bien joué!

Pour recevoir les notes ça te bouffe l'entrée midi par contre?
Ou tu peux envoyer les notes en midi in dans le controleur qui renvoit en thru vers le JU?
6
super boulot ! :8O:
le résultat est magnifique
tu peux détailler davantage ? :aime:
comment as-tu fait pour découper si proprement les ouvertures de fader et avoir un tel rendu de finition sur la face avant ?
7
Je vais vous faire un mode d'emploi. Je pense faire ça demain.

En fait, mon contrôleur sort en MIDI out. Je le branche soit directement sur mon JU-06A si je l'utilise seul ou sur mon interface MIDI et c'est via mon séquenceur que j'enregistre et/ou contrôle mon JU-06A.

Xavier
8
Bon suite à la demande générale, voici comment j’ai fait mon controleur pour mon JU-06A

Je me suis lancé suite à la vision des 3 videos suivantes de Notes & Volts :







Les liens vers les pages correspondantes du site Notes & Volts :

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

https://www.notesandvolts.com/2016/04/arduino-midi-controller-buttons.html

https://www.notesandvolts.com/2016/07/arduino-midi-controller-multiplexers.html

Pour ceux qui n’ont jamais utilisé un Arduino, je conseile de faire comme moi et d’essayer les projets de Notes & Volts seuls. Ou d’autres projets simple pour voir comment cela fonctionne.

Pour la fabrication, voici les composants que j’ai utilisé :
• 1x Genuine Uno. C’est le même que l’Arduino Uno mais la version Européenne.
• 1x CD74HC4067 16-Channel Analog Digital Multiplexer
• 2x 10KΩ potentiomètre rotatif linéaire
• 15x 10KΩ ALPS RSA0N11 10KΩ fader linéaire
• 1x 12V 4 Pin 12mm Led Push Button Momentary Switch
• 1x 3mm 3V LED

Voici mon shéma électrique :

Pour la connection MIDI de l’Arduino, j’ai utilisé la méthode de Notes & Volts. C’est la même que vous trouverez partout sur le WEB pour sortir les données MIDI d’un Arduino.

Pour brancher mes 15 faders, Je les ai connecté au multiplexer. La borne 2 des faders relié au borne Y1 à Y15. La borne 1 à la masse et la borne 3 au +5V. Attention, si vous visser les faders comme moi depuis la façade, des vis trop longue en métal feront un court circuit entre la borne 1 et 3. J’ai remplacé par des vis en plastique et le problème est résolu. En plus, ça n’a pas bousillé l’Arduino.

Le multiplexer lui même est connecté à la borne A1 de l’Arduino. Et le reste comme sur mon schéma qui suit la méthode de Notes & Volts.

Pour les 2 potentiomètres linéaire, j’ai utilisé une autre méthode. Voici le lien :

https://www.instructables.com/id/Easy-3-Pot-Potentiometer-Arduino-Uno-Effects-Midi-/

La raison est simple, c’est à cause du choix de la forme du LFO. Je n’ai pas compris comment changer pour 1 seul potentiomètre la plage de sélection avec la méthode de Notes & Volts. La lecture des entrées sur l’Arduino se fait en 1024 bits donc pour retrouver une plage de 128 on divise par 8 la lecture de l’entrée analogique. Pour le choix de la forme du LFO, je voulais une plage de 0 à 4. Choisir cette plage quand on est défini de 0 à 127 est une uniquement destiné à l’équipe de M. Phelps ;) C’est pour cela que j’ai utilisé la méthode de instructables. Pour info, le programme de Notes & Volts ce compose de 4 parties :

• Définition des boutons numérique
• Définition des potentiomètres analogique
• Définition des multiplexers de bouton numérique
• Définition des multiplexers de potentiomètre analogique.

J’ai supprimé la partie « Définition des potentiomètres analogique » que j’ai remplacé avec celle de Instructables. Du coup, j’ai défini mes 2 seuls potentiomètres avec 1 sur une plage de 0 à 127 pour la vitesse du Portamento que j’ai branché directement sur l’Arduino à la borne A5 et 1 branché sur la borne A4 en divisant la lecture par 205 pour avoir une plage de 0 à 4.

Pour l’interrupteur du Portamento, je suis resté avec la méthode Notes & Volts. Le bouton lumière de 12V que j’avais en stock est très bien car cela permet d’avoir un LED pas violent. Il y a bornes. 2 pour l’interrupteur et 2 pour l’alimentation du LED. J’ai connecté l’interrupteur à la borne 8 de l’Arduino et à la masse. Pour la lumière du bouton, on peut utiliser cette méthode :

https://forum.arduino.cc/index.php?topic=478762.0

Il y a plein d’autre méthode. Je vous laisse travailler un petit peu. Pareil, faire un peu de montage permet de comprendre comment l’Arduino fonctionne.

J’ai branché le + du LED à la borne 12 et le – au GND. Pas besoin de mettre de résistance car c’est une LED qui est prévu pour du 12V.

Dans le programme de l’Arduino, j’ai ajouté int LED = 12 puis digitalWrite(LED, HIGH) avec MIDI.sendControlChange 127 et LOW avec MIDI.sendControlChange 0.

Je suis presque sûr que si il y avait d’autre bouton, que cela activerait aussi la lumière du bouton protamento. Mais vu qu’il y en a pas d’autre, cela ne me gêne pas.

J’ai aussi mis une LED juste pour savoir si l’Arduino est allumé. J’ai donc mise une LED sur le +5V et le GND. Attention, les LEDs sont alimenté en 3V donc si vous ne mettez pas une résistance en série, la LED va cramer. Le mieux, c’est de tester au voltmètre pour voir combien de volt sort derrière la résistance que vous utlisez. Pour ma part, j’en ai mise une très forte, dans les 50KΩ si je me souvient bien pour avoir une LED faible . C’est juste pour contrôler pas pour éclairer. Je ne sais plus combien j’ai mis et elle est protégée par une gaine thermorétractable donc je ne sais pas combien j’ai mis.

N’attendez pas de retour du site Notes & Volts, il ne réponds pas.

Je referai sûrement l'autocollant de la façade en noir. En ajoutant au LFO les RD1 et RD2. Le RD1 est tout fin de compte super sympa, par contre le RD2 (cherchez pas le 2 qui manque :facepalm:) est peu violent. J'ai directement visser les faders à la façade et ils ressortent de trop. Je viens de commander des entretoises M3 en plastique de 5mm d'épaisseur. Je pense que cela sera nettement mieux.

Au final, la méthode multiplexeur, permet de faire n’importe quel contrôleur MIDI. Il est clair que pour une question pratique et de coût, je pense pas réutiliser des faders mais plutôt des potentiomètre rotatif. Un perçage est plus simple qu’un défonçage.

Je me ferais peut être un pour mon AN1x et mon Vintage Keys. Le souci avec le Vintage Keys c’est qu’il faut le faire en SYSEX. Et le SYSEX d’E-mu est très casse-tête.

Le programme et les photos sont à suivre.

J’espère que cela vous aide et que vous appréciez.

Xavier
9
Donc voici le lien pour le fichier d'origine de Notes & Volts :

https://drive.google.com/file/d/0BwnVMB_6yujwR1dydVJ6MHJib2M/view

Et voici ma partie modifié correspondant au premier onglet :

#include <MIDI.h>
#include "Controller.h"

int val1 = 0;
int lastVal1 = 0;
int val2 = 0;
int lastVal2 = 0;
int LED = 12; //the pin we connect the LED

MIDI_CREATE_DEFAULT_INSTANCE();

//***SET THE NUMBER OF CONTROLS USED**************************
//---How many buttons are connected directly to pins?---------
byte NUMBER_BUTTONS = 1;
//---How many potentiometers are connected to a multiplexer?--
byte NUMBER_MUX_POTS = 15;
//************************************************************

Mux M1(A1, 16, true); //Analog multiplexer on Arduino analog pin A1
//*******************************************************************

//***DEFINE DIRECTLY CONNECTED BUTTONS*******************************
//Button (Pin Number, Command, Note Number, Channel, Debounce Time)
//** Command parameter 0=NOTE 1=CC 2=Toggle CC **

Button BU8(8, 2, 65, 1, 5 );
//*******************************************************************
//Add buttons used to array below like this-> Button *BUTTONS[] {&BU1, &BU2, &BU3, &BU4, &BU5, &BU6, &BU7, &BU8};
Button *BUTTONS[] {&BU8};
//*******************************************************************


//***DEFINE POTENTIOMETERS CONNECTED TO MULTIPLEXER*******************
//Pot::Pot(Mux mux, byte muxpin, byte command, byte control, byte channel)
//**Command parameter is for future use**

Pot MPO1(M1, 1, 0, 13, 1);
Pot MPO2(M1, 2, 0, 14, 1);
Pot MPO3(M1, 3, 0, 18, 1);
Pot MPO4(M1, 4, 0, 20, 1);
Pot MPO5(M1, 5, 0, 74, 1);
Pot MPO6(M1, 6, 0, 71, 1);
Pot MPO7(M1, 7, 0, 22, 1);
Pot MPO8(M1, 8, 0, 23, 1);
Pot MPO9(M1, 9, 0, 24, 1);
Pot MPO10(M1, 10, 0, 26, 1);
Pot MPO11(M1, 11, 0, 73, 1);
Pot MPO12(M1, 12, 0, 75, 1);
Pot MPO13(M1, 13, 0, 27, 1);
Pot MPO14(M1, 14, 0, 72, 1);
Pot MPO15(M1, 15, 0, 3, 1);
//Pot MPO16(M1, 0, 0, 55, 1);
//*******************************************************************
//Add multiplexed pots used to array below like this-> Pot *MUXPOTS[] {&MPO1, &MPO2, &MPO3, &MPO4, &MPO5, &MPO6, &MPO7, &MPO8, &MPO9, &MPO10, &MPO11, &MPO12, &MPO13, &MPO14, &MPO15};
Pot *MUXPOTS[] {&MPO1, &MPO2, &MPO3, &MPO4, &MPO5, &MPO6, &MPO7, &MPO8, &MPO9, &MPO10, &MPO11, &MPO12, &MPO13, &MPO14, &MPO15};
//*******************************************************************


void setup() {
MIDI.begin(MIDI_CHANNEL_OFF);
pinMode(LED, OUTPUT); //set the LED pin as OUTPUT
}

void loop() {
if (NUMBER_BUTTONS != 0) updateButtons();
if (NUMBER_MUX_POTS != 0) updateMuxPots();
val1 = analogRead(4)/8; // Divide by 8 to get range of 0-127 for midi
if (val1 != lastVal1) // If the value does not = the last value the following command is made.
{
MIDI.sendControlChange(5,val1,1);} // 176 = CC command, 1 = Which Control, val = value read from Potentionmeter
lastVal1 = val1;

val2 = analogRead(5)/205; // Control point 2
if (val2 != lastVal2)
{
MIDI.sendControlChange(29,val2,1);}
lastVal2 = val2;
}

//*****************************************************************
void updateButtons() {

// Cycle through Button array
for (int i = 0; i < NUMBER_BUTTONS; i = i + 1) {
byte message = BUTTONS->getValue();

// Button is pressed
if (message == 0) {
switch (BUTTONS->Bcommand) {
case 0: //Note
MIDI.sendNoteOn(BUTTONS->Bvalue, 127, BUTTONS->Bchannel);
break;
case 1: //CC
MIDI.sendControlChange(BUTTONS->Bvalue, 127, BUTTONS->Bchannel);
break;
case 2: //Toggle
if (BUTTONS->Btoggle == 0) {
MIDI.sendControlChange(BUTTONS->Bvalue, 127, BUTTONS->Bchannel);
digitalWrite(LED, HIGH); //write 1 or HIGH to led pin
BUTTONS->Btoggle = 1;
}
else if (BUTTONS->Btoggle == 1) {
MIDI.sendControlChange(BUTTONS->Bvalue, 0, BUTTONS->Bchannel);
digitalWrite(LED, LOW); //write 0 or LOW to led pin
BUTTONS->Btoggle = 0;
}
break;
}
}

// Button is not pressed
if (message == 1) {
switch (BUTTONS->Bcommand) {
case 0:
MIDI.sendNoteOff(BUTTONS->Bvalue, 0, BUTTONS->Bchannel);
break;
case 1:
MIDI.sendControlChange(BUTTONS->Bvalue, 0, BUTTONS->Bchannel);
break;
}
}
}
}
//*******************************************************************
void updateMuxPots() {
for (int i = 0; i < NUMBER_MUX_POTS; i = i + 1) {
MUXPOTS->muxUpdate();
byte potmessage = MUXPOTS->getValue();
if (potmessage != 255) MIDI.sendControlChange(MUXPOTS->Pcontrol, potmessage, MUXPOTS->Pchannel);
}
}

Je n'ai rien touché dans les onglets Controller.ccp et Controller.h

Pas cool, il a viré le formatage du texte. Je l'ai ajouté en PDF et il à garder le formatage, donc ça doit être bon :)

Xavier
10
Et les photos.

Le schéma électrique :

roland-ju-06a-2964314.jpg

l'Arduino avec le câblage. Il manque la LED d'allumage et les faders :

roland-ju-06a-2964318.jpg

roland-ju-06a-2964319.jpg

Le berceau :

roland-ju-06a-2964325.jpg

l'Arduino dans la boîte, j'ai mis un carton en dessous car je crains l'humidité du bois. Je sais, c'est du CP :

roland-ju-06a-2964326.jpg

Les faders soudés au spaghetti :

roland-ju-06a-2964350.jpg

Monté sur la façade :

roland-ju-06a-2964356.jpg

Ze final product :

roland-ju-06a-2964363.jpg

Il me reste à expliquer la menuiserie.

Xavier