Se connecter
Se connecter

ou
Créer un compte

ou

Sujet contrôleur midi au pied DIY

  • 7 réponses
  • 4 participants
  • 2 025 vues
  • 6 followers
Sujet de la discussion contrôleur midi au pied DIY
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 :


/* 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);
}
2
et ça marche en plus!
3
Merci pour le partage !

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

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

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

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.

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

[ Dernière édition du message le 02/03/2013 à 17:55:51 ]

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

8
Citation :
c'est qu'avec un module à 25 euros
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).

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)