contrôleur midi au pied DIY
- 7 réponses
- 4 participants
- 2 044 vues
- 6 followers
did poutrator
619
Posteur·euse AFfolé·e
Membre depuis 19 ans
Sujet de la discussion Posté le 05/11/2012 à 18:26:01contrô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 :
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);
}
did poutrator
619
Posteur·euse AFfolé·e
Membre depuis 19 ans
2 Posté le 05/11/2012 à 18:33:34
et ça marche en plus!
Rémy M. (chimimic)
14205
Modérateur·trice thématique
Membre depuis 22 ans
3 Posté le 05/11/2012 à 23:00:32
Merci pour le partage !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
did poutrator
619
Posteur·euse AFfolé·e
Membre depuis 19 ans
4 Posté le 06/11/2012 à 23:38:24
ç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
Danguit
3348
Squatteur·euse d’AF
Membre depuis 18 ans
5 Posté le 07/11/2012 à 08:28:05
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).
Danguit
3348
Squatteur·euse d’AF
Membre depuis 18 ans
6 Posté le 02/03/2013 à 17:35:59
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.
[ Dernière édition du message le 02/03/2013 à 17:55:51 ]
Cpierredon
2382
AFicionado·a
Membre depuis 22 ans
7 Posté le 03/03/2013 à 01:14:21
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
Danguit
3348
Squatteur·euse d’AF
Membre depuis 18 ans
8 Posté le 03/03/2013 à 07:29:45
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
- < Liste des sujets
- Charte