DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING)
- 13 réponses
- 7 participants
- 4 398 vues
- 13 followers
Mat Martigan
105
Posteur·euse AFfiné·e
Membre depuis 12 ans
Sujet de la discussion Posté le 07/03/2019 à 14:52:38DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING)
DIY MIDI CONTROLLER Usb Plug & Play
C'est avec plaisir que je me permets de partager avec vous une petite interface que j'ai réaliser
grâce a l'inspiration et à l'aide,entre autre, de membre de la communautée
https://fr.audiofanzine.com/les-mains-dans-le-cambouis/forums/t.684547,diy-midi-usb-controleur-project-arduino-uno-besoin-d-aide,post.9866350.html
Un projet qui me trotter dans la tête depuis un moment déjà
Surtout depuis que j'ai vu l'interface de Mr Stephan Bodzin et ces performances en Live
Je l'ai trouvé très ergonomique
C'est certes pour l'instant qu'un sorte de prototype élaboré ,si je puis dire, et qui fera l'objet de pas mal de modification au fil du temps ( code et interface )
Liste du Matériel :
1 x Microcontrôleur Arduino UNO R3 ATmega328P ATMEGA16U2
2 x Button Pad 2x2 LED Compatible https://coolcomponents.co.uk/products/button-pad-2x2-led-compatible
2 x Button Pad 2x2 Breakout PCB https://coolcomponents.co.uk/products/button-pad-2x2-breakout-pcb
8 x LED Yellow 5mm https://coolcomponents.co.uk/products/led-yellow-5mm
2 x Tête de bouton RN-99A https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99a64mm-noir-blanc-x-h-45-mm-x-203-mm-1-pcs-1304026
2 x Tête de bouton RN-99C https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99c64mm-noir-blanc-x-h-33-mm-x-16-mm-1-pcs-1304027
2 x Tête de bouton RN-99E https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99e64mm-noir-blanc-x-h-229-mm-x-127-mm-1-pcs-1304029
6 x Potentiomètre 10Kohm Alpha M7 https://www.conrad.fr/p/potentiometre-rotatif-10-k-lineaire-potentiometer-service-9305-mono-02-w-1-pcs-450034
8 x Résistance carbone 220R https://www.conrad.fr/p/resistance-a-couche-carbone-405175-220-sortie-axiale-0411-05-w-1-pcs-405175
8 x Résistance 10 KR https://www.conrad.fr/p/resistance-a-couche-carbone-yageo-cfr25j10kh-10-k-sortie-axiale-0207-025-w-1-pcs-1417697
8 x Diode 1N4148TA https://www.conrad.fr/p/diode-standard-on-semiconductor-1n4148ta-do-204ah-100-v-200-ma-1-pcs-1262769
1 x Cable USB 2,0 Haute Vitesse C A vers B 15 cm
1 x USB 2.0 type B femelle vers USB 2.0 type A femelle Cliff
https://www.conrad.fr/p/adaptateur-usb-20-type-b-femelle-vers-usb-20-type-a-femelle-cliff-cp30207nmb-1-pcs-1419593
Pour la boite j'ai découpé des Morceaux de Plexiglass de 5 mm collés avec un colle Pattex Tous Materiaux transparente
http://www.pattex.fr/Pattex/produits-pattex/one-for-all/one-for-all-crystal.html
Ainsi qu'une Plaque d'aluminium de 2 mm d’épaisseur
Le plus ennuyant a été de réaliser des trous carrés ( Perceuse et lime ) mais vu le coté très tendre de la matière
cela n'est pas très difficile
Le mieux étant de faire faire la plaque par un professionnel avec une découpe laser (ceci fera l'objet d'un prochain prototype)
Schéma de Câblage :
La library Midi.h a copier dans C:\Program Files (x86)\Arduino\libraries"
https://sourceforge.net/projects/arduinomidilib/
Le code
J'ai laissé les résistances Push Pull car j'ignorai que cette fonction pouvait se réaliser via le code
Un foi le code inséré il faut insérer un firmware modifié avec le logiciel FLIP
Pour flasher le ARDUINO afin qu’il soit reconnu comme interface Midi Plug & Play en USB
Vous trouverez le nécessaire pour effectuer cette opération su le site : https://dartmobo.com/midi-over-usb/
Le seul inconvénient est qu'il faille flasher le microcontrôleur pour pouvoir effectuer une modification du code
Le contrôleur et ses fonctions on été testé sur le DAW Bitwig
C'est avec plaisir que je me permets de partager avec vous une petite interface que j'ai réaliser
grâce a l'inspiration et à l'aide,entre autre, de membre de la communautée
https://fr.audiofanzine.com/les-mains-dans-le-cambouis/forums/t.684547,diy-midi-usb-controleur-project-arduino-uno-besoin-d-aide,post.9866350.html
Un projet qui me trotter dans la tête depuis un moment déjà
Surtout depuis que j'ai vu l'interface de Mr Stephan Bodzin et ces performances en Live
Je l'ai trouvé très ergonomique
C'est certes pour l'instant qu'un sorte de prototype élaboré ,si je puis dire, et qui fera l'objet de pas mal de modification au fil du temps ( code et interface )
Liste du Matériel :
1 x Microcontrôleur Arduino UNO R3 ATmega328P ATMEGA16U2
2 x Button Pad 2x2 LED Compatible https://coolcomponents.co.uk/products/button-pad-2x2-led-compatible
2 x Button Pad 2x2 Breakout PCB https://coolcomponents.co.uk/products/button-pad-2x2-breakout-pcb
8 x LED Yellow 5mm https://coolcomponents.co.uk/products/led-yellow-5mm
2 x Tête de bouton RN-99A https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99a64mm-noir-blanc-x-h-45-mm-x-203-mm-1-pcs-1304026
2 x Tête de bouton RN-99C https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99c64mm-noir-blanc-x-h-33-mm-x-16-mm-1-pcs-1304027
2 x Tête de bouton RN-99E https://www.conrad.fr/p/tete-de-bouton-rotatif-sci-rn-99e64mm-noir-blanc-x-h-229-mm-x-127-mm-1-pcs-1304029
6 x Potentiomètre 10Kohm Alpha M7 https://www.conrad.fr/p/potentiometre-rotatif-10-k-lineaire-potentiometer-service-9305-mono-02-w-1-pcs-450034
8 x Résistance carbone 220R https://www.conrad.fr/p/resistance-a-couche-carbone-405175-220-sortie-axiale-0411-05-w-1-pcs-405175
8 x Résistance 10 KR https://www.conrad.fr/p/resistance-a-couche-carbone-yageo-cfr25j10kh-10-k-sortie-axiale-0207-025-w-1-pcs-1417697
8 x Diode 1N4148TA https://www.conrad.fr/p/diode-standard-on-semiconductor-1n4148ta-do-204ah-100-v-200-ma-1-pcs-1262769
1 x Cable USB 2,0 Haute Vitesse C A vers B 15 cm
1 x USB 2.0 type B femelle vers USB 2.0 type A femelle Cliff
https://www.conrad.fr/p/adaptateur-usb-20-type-b-femelle-vers-usb-20-type-a-femelle-cliff-cp30207nmb-1-pcs-1419593
Pour la boite j'ai découpé des Morceaux de Plexiglass de 5 mm collés avec un colle Pattex Tous Materiaux transparente
http://www.pattex.fr/Pattex/produits-pattex/one-for-all/one-for-all-crystal.html
Ainsi qu'une Plaque d'aluminium de 2 mm d’épaisseur
Le plus ennuyant a été de réaliser des trous carrés ( Perceuse et lime ) mais vu le coté très tendre de la matière
cela n'est pas très difficile
Le mieux étant de faire faire la plaque par un professionnel avec une découpe laser (ceci fera l'objet d'un prochain prototype)
Schéma de Câblage :
La library Midi.h a copier dans C:\Program Files (x86)\Arduino\libraries"
https://sourceforge.net/projects/arduinomidilib/
Le code
#include <MIDI.h> // INlcude MIDI library
int mem[] = { 0, 0, 0, 0, 0, 0, 0 ,0};
void setup()
{
Serial.begin(9600); // default midi speed rate
// initialize the LED pin as an output:
pinMode(2, INPUT_PULLUP); // initialize the pushbutton pin as an input:
pinMode(3, INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
MIDI.begin();
}
static int iAn0Val, iAn1Val, iAn2Val, iAn3Val, iAn4Val, iAn5Val;
void loop()
{
{
int sensorVal[] =
{
!digitalRead(2), !digitalRead(3),
!digitalRead(4), !digitalRead(5),
!digitalRead(6), !digitalRead(7),
!digitalRead(8), !digitalRead(9),
};
for (int j = 0; j < 8; j++)
{
if (sensorVal [j] != mem [j])
{
mem [j] = sensorVal [j];
if (mem[j])
{
MIDI.sendNoteOn(j + 48, 64, 1);
}
else
{
MIDI.sendNoteOff(j + 48, 64, 1);
}
}
}
}
//Pot 01
static int iAn0ValPrev;
iAn0ValPrev = 0 ;
iAn0ValPrev = iAn0Val ; // previous value
iAn0Val = analogRead(A0); // Divide by 8 to get range of 0-127 for midi
if (abs (iAn0Val - iAn0ValPrev)>3)
analogPinMidiTX(1,iAn0Val,iAn0ValPrev); //TX value
delay(10);
//Pot 02
static int iAn1ValPrev;
iAn1ValPrev = 0 ;
iAn1ValPrev = iAn1Val;
iAn1Val = analogRead(A1);
if (abs (iAn1Val - iAn1ValPrev)>3)
analogPinMidiTX(2,iAn1Val,iAn1ValPrev);
delay(10);
//Pot 03
static int iAn2ValPrev;
iAn2ValPrev = 0 ;
iAn2ValPrev = iAn2Val;
iAn2Val = analogRead(A2);
if (abs (iAn2Val - iAn2ValPrev)>3)
analogPinMidiTX(3,iAn2Val,iAn2ValPrev);
delay(10);
//Pot 04
static int iAn3ValPrev;
iAn3ValPrev = 0;
iAn3ValPrev = iAn3Val;
iAn3Val = analogRead(A3);
if (abs (iAn3Val - iAn3ValPrev)>3)
analogPinMidiTX(4,iAn3Val,iAn3ValPrev);
delay(10);
//Pot 05
static int iAn4ValPrev;
iAn4ValPrev = 0 ;
iAn4ValPrev = iAn4Val;
iAn4Val = analogRead(A4);
if (abs (iAn4Val - iAn4ValPrev)>3)
analogPinMidiTX(5,iAn4Val,iAn4ValPrev);
delay(10);
//Pot 06
static int iAn5ValPrev;
iAn5ValPrev = 0;
iAn5ValPrev = iAn5Val;
iAn5Val = analogRead(A5);
if (abs (iAn5Val - iAn5ValPrev)>3)
analogPinMidiTX(6,iAn5Val,iAn5ValPrev);
delay(10); //here we add a short delay to help prevent slight fluctuations, knocks on the pots etc. Adding this helped to prevent my pots from jumpin up or down a value when slightly touched or knocked.
}
void analogPinMidiTX(int iChan, int iVal, int iValPrev)
{
// TX Value only if it has changed
if(iValPrev != iVal)
{
iValPrev != iVal ;
iVal = iVal >> 3 ;
MidiTX(176,iChan,iVal); // 176 = CC command, 1 = Which Control, val = value read from Potentionmeter
}
}
void MidiTX(unsigned char MESSAGE, unsigned char CONTROL, unsigned char VALUE) //Valeur en Midi Command
{
Serial.write(MESSAGE);
Serial.write(CONTROL);
Serial.write(VALUE);
}
J'ai laissé les résistances Push Pull car j'ignorai que cette fonction pouvait se réaliser via le code
Un foi le code inséré il faut insérer un firmware modifié avec le logiciel FLIP
Pour flasher le ARDUINO afin qu’il soit reconnu comme interface Midi Plug & Play en USB
Vous trouverez le nécessaire pour effectuer cette opération su le site : https://dartmobo.com/midi-over-usb/
Le seul inconvénient est qu'il faille flasher le microcontrôleur pour pouvoir effectuer une modification du code
Le contrôleur et ses fonctions on été testé sur le DAW Bitwig
[ Dernière édition du message le 29/09/2019 à 20:23:03 ]
- 1
- 2
Mat Martigan
105
Posteur·euse AFfiné·e
Membre depuis 12 ans
11 Posté le 20/10/2023 à 17:37:57
Petit Upgrade du Contrôleur Avec l'utilisation du Shield pour l'Arduino Mega 2650 et une toute nouvelle Boite découpé au laser
v[url]https://youtu.be/_68Bdxu_tUM?si=C9KrvmPrOZmGSpNq[/url]
Et le gros upgrade est la possibilité de l’utiliser avec Un Script Personnalisé pour pouvoir Commander Ableton Live (sans mappage Midi donc)
Bon Visionnage
v[url]https://youtu.be/_68Bdxu_tUM?si=C9KrvmPrOZmGSpNq[/url]
Et le gros upgrade est la possibilité de l’utiliser avec Un Script Personnalisé pour pouvoir Commander Ableton Live (sans mappage Midi donc)
Bon Visionnage
Tof son
1
Nouvel·le AFfilié·e
Membre depuis 9 ans
12 Posté le 29/05/2024 à 01:11:49
Top as tu un github de tout ça ?
Je suis intéressé par la gestion des neopixe
Je suis intéressé par la gestion des neopixe
Mat Martigan
105
Posteur·euse AFfiné·e
Membre depuis 12 ans
13 Posté le 03/06/2024 à 05:38:56
.: Odon Quelconque :.
11113
Drogué·e à l’AFéine
Membre depuis 22 ans
14 Posté le 03/06/2024 à 08:46:49
Très intéressant, bravo.
Normalement c'est 31250 bauds, le MIDI.
A ce propos, il existe une très bonne carte chez Adafruit au format physique Arduino Mega, qui dispose d'un NeoPixel (plus tout un tas d'autres choses autour d'un "gros" MCU SAMD51) : la Grand Central M4 Express.
https://www.adafruit.com/product/4064
Serial.begin(9600); // default midi speed rate
Normalement c'est 31250 bauds, le MIDI.
Citation de Tof son :
Je suis intéressé par la gestion des neopixe
A ce propos, il existe une très bonne carte chez Adafruit au format physique Arduino Mega, qui dispose d'un NeoPixel (plus tout un tas d'autres choses autour d'un "gros" MCU SAMD51) : la Grand Central M4 Express.
https://www.adafruit.com/product/4064
« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)
[ Dernière édition du message le 03/06/2024 à 12:43:31 ]
- < Liste des sujets
- Charte
- 1
- 2