contrôleur midi au pied DIY
- 7 réponses
- 4 participants
- 2 153 vues
- 6 followers
did poutrator
621

Posteur·euse AFfolé·e
Membre depuis 21 ans
05 Novembre 2012 à 18:26contrôleur midi au pied DIY
#1
Je viens de me fabriquer un contrôleur midi au pied pour mon Korg electribe ES1.
C'est simple et c'est fait à partir d'une arduino. Les fonctions sont basiques 4 boutons, PLAY-STOP, tap tempo et deux bouton pour passer au pattern supérieur ou inférieur (program Change)
La liste des composants est donc très courte, 4 interrupteurs momentanés, une prise midi, une prise pour l'alim (5v dans mon cas) et une boîte pour mettre tout ça dedans.
des photos (c'est de la récup alors c'est pas très clean)
http://concombre.org/autre/controleur1.jpg
http://concombre.org/autre/controleur2.jpg
et le code :
C'est simple et c'est fait à partir d'une arduino. Les fonctions sont basiques 4 boutons, PLAY-STOP, tap tempo et deux bouton pour passer au pattern supérieur ou inférieur (program Change)
La liste des composants est donc très courte, 4 interrupteurs momentanés, une prise midi, une prise pour l'alim (5v dans mon cas) et une boîte pour mettre tout ça dedans.
des photos (c'est de la récup alors c'est pas très clean)
http://concombre.org/autre/controleur1.jpg
http://concombre.org/autre/controleur2.jpg
et le code :
/* brochage :
gros bouton : 3
prg + : 4
prg - : 2
tap tempo : 5
*/
///PLAY-STOP///
int startStop;
int Pprevious = LOW;
int Pstate = HIGH;
long playtime = 0;
long debounce = 200;
int prog;
//program chage
int pgMoins;
int pgPlus;
int moinsState;
int plusState;
//TAP TEMPO
int lastTapState = LOW;
unsigned long currentTimer[2] = { 20, 20 };
unsigned long timeoutTime = 0;
void setup(){
Serial.begin(31250);
//Serial.begin(9600);
pinMode(5, INPUT); // tap tempo
digitalWrite(5, HIGH); // turn on pullup resistors
pinMode(4, INPUT);
digitalWrite(4, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(13, OUTPUT);
}
void loop(){
bouton_play();
progCh();
int tapState = digitalRead( 5 );
if( tapState == LOW && tapState != lastTapState )
{
tap();
}
lastTapState = tapState;
if( millis() >= timeoutTime ){
rescheduleTimer();
Serial.write(0xF8);
}
}
unsigned long lastTap = 0;
void tap()
{
currentTimer[1] = currentTimer[0];
currentTimer[0] = (millis() - lastTap)/24;
lastTap = millis();
timeoutTime = 0;
}
void rescheduleTimer()
{
timeoutTime = (millis() + ((currentTimer[0] + currentTimer[1])/2));
}
///PLAY///
void bouton_play(){
startStop = digitalRead(3);
if (startStop == HIGH && Pprevious == LOW && millis() - playtime > debounce) {
if (Pstate == HIGH) {
Pstate = LOW;
Serial.write(0xFA);
///
///
} else {
Pstate = HIGH;
Serial.write(0xFC);
}
playtime = millis();
}
Pprevious = startStop;
}
void progCh(){
pgMoins = digitalRead(4);
pgPlus = digitalRead(2);
if (pgMoins != moinsState) {
if (pgMoins == LOW){
prog -= 1;
if (prog < 1){
prog = 0;
}
}
moinsState = pgMoins;
}
if (pgPlus != plusState) {
if (pgPlus == LOW){
prog += 1;
if (prog >= 127){
prog = 127;
}
}
plusState = pgPlus;
}
Serial.write(0xC0);
Serial.write(prog);
}
signaler
did poutrator
621

Posteur·euse AFfolé·e
Membre depuis 21 ans
05 Novembre 2012 à 18:33
#2
et ça marche en plus!
signaler
Rémy M. (chimimic)
14327

Modérateur·trice thématique
Membre depuis 23 ans
05 Novembre 2012 à 23:00
#3
Merci pour le partage !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
signaler
did poutrator
621

Posteur·euse AFfolé·e
Membre depuis 21 ans
06 Novembre 2012 à 23:38
#4
ça faisait des plombes que je cherchais un moyen de faire un controleur comme ça et yen a pas des masses "tout fait" sur internet alors ça me fait plaisir de pouvoir partager.
Si quelqu'un a besoin de plus d'infos n'hésitez pas
Si quelqu'un a besoin de plus d'infos n'hésitez pas
signaler
Danguit
3348

Squatteur·euse d’AF
Membre depuis 20 ans
07 Novembre 2012 à 08:28
#5
Bonjour,
J'ai également fait quelques bricolages du même type avec Arduino, et c'est vraiment très simple (le plus compliqué est de se faire son cahier des charges et de se limiter dans les fonctions).
Si cela intéresse quelqu'un, j'ai testé un petit algo qui permet de régler la loi de variation d'une pédale MIDI DIY (de volume par exemple mais on pourrait facilement permettre un autre choix de CC) de façon quasi-continue par un potar entre log et exp, en passant bien sûr par lin. Le tout prend 2 entrées analogiques sur Arduino (pédale et loi).
J'ai également fait quelques bricolages du même type avec Arduino, et c'est vraiment très simple (le plus compliqué est de se faire son cahier des charges et de se limiter dans les fonctions).
Si cela intéresse quelqu'un, j'ai testé un petit algo qui permet de régler la loi de variation d'une pédale MIDI DIY (de volume par exemple mais on pourrait facilement permettre un autre choix de CC) de façon quasi-continue par un potar entre log et exp, en passant bien sûr par lin. Le tout prend 2 entrées analogiques sur Arduino (pédale et loi).
signaler
Danguit
3348

Squatteur·euse d’AF
Membre depuis 20 ans
02 Mars 2013 à 17:35 (modifié le 02 Mars 2013 à 17:55)
#6
Un autre exemple de possibilité de contrôle MIDI :
Ayant récupéré le récepteur IR d'un cadre numérique HS, je viens de faire un petit essai (toujours sur Arduino) qui montre qu'une télécommande peut être facilement détournée de ses fonctions pour envoyer des commandes MIDI en complément des autres moyens. Avec la librairie IRremote, plusieurs télécommandes d'origines diverses ont été reconnues sans problèmes et sans manipulations.
Edit : on peut même prévoir l'utilisation simultanée ou non de plusieurs télécommandes de types différents.
Ayant récupéré le récepteur IR d'un cadre numérique HS, je viens de faire un petit essai (toujours sur Arduino) qui montre qu'une télécommande peut être facilement détournée de ses fonctions pour envoyer des commandes MIDI en complément des autres moyens. Avec la librairie IRremote, plusieurs télécommandes d'origines diverses ont été reconnues sans problèmes et sans manipulations.
Edit : on peut même prévoir l'utilisation simultanée ou non de plusieurs télécommandes de types différents.
signaler
Cpierredon
2403

AFicionado·a
Membre depuis 23 ans
03 Mars 2013 à 01:14
#7
l'avantage des arduino, c'est qu'avec un module à 25 euros et un câble USB, on peut programmer son module grâce aux logiciel arduino. Avant c'était un proto, un programmateur, un logiciel de programmation, bref, un budget de 200 euros avant même de commencer. Et la communauté arduino qui est très partageuse....
Ça vaudrait le coup d'ouvrir une rubrique d'ailleurs...
http://www.pierredon.free.fr
signaler
Danguit
3348

Squatteur·euse d’AF
Membre depuis 20 ans
03 Mars 2013 à 07:29
#8
Citation :
Et même moins, j'ai testé le kit Arduino Standalone chez Snootlab (9€) auquel il faut rajouter un régulateur 5V (et 2 capas). La liaison avec le PC se fait avec l'adaptateur USB to Serial à 12€ (réutilisable pour d'autres programmations). c'est qu'avec un module à 25 euros
signaler
- < Liste des sujets
- Charte