Un contrôleur midi 100 basé sur Arduino
- 90 réponses
- 20 participants
- 23 013 vues
- 26 followers

secmast

Suite a la discussion sur ce contrôleur:https://fr.audiofanzine.com/surface-de-controle-midi/cme/BitStream-3X/forums/t.541700,mais-ou-le-trouver.html
Je viens jeter ici les bases pour la construction d'un contrôleur midi basé sur Arduino.
Certains pensaient que vu le nombre d'entrée analogique limitée sur une carte Arduino elle ne permettait pas l'utilisation de cette plateforme pour ce genre d'application. Ce n'est évidement pas le cas, il suffit de connaître un peu l'électronique et la programmation pour arriver a un résultat ma fois pas trop mal et peu coûteux.
Comme le montre l'image ci-dessous en utilisant des multiplexer il est possible de multiplier le nombre d'entrée/sortie avec en théorie un maximum de 1024 E/S sur une Arduino Mega.
Donc l'idée de ce fil est de jeter sur le papier le minimum requis pour une interface Midi
Sachant que l'arduino est limité en terme de mémoire (SRAM 2Kb au max) ce qui limite les variables (on en discute ?)
Sachant que l'Arduino est limité en terme de puissance "électrique", 40ma par PIN (on en discute ?)
Liste "A faire"
- Gestion EEPROM
- Alimentation externe
- Calcul d'un boucle sur 80 contrôle
[ Dernière édition du message le 13/09/2013 à 13:00:28 ]

Rémy M. (chimimic)

J'ai terminé cette semaine mon petit contrôleur MIDI 001 que j'avais commencé en 2011 et qui m'a récemment servi de base pour mon instrument AcceloMidi 001 (à base d'accéléromètre). J'ai adopté un principe différent pour la configuration de la valeur des contrôleurs puisque l'entrée MIDI est mise à contribution. Je trouve ta méthode plus souple que la mienne, excellente idée que tu as eue là, bravo !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

secmast

Merci pour le compliment, je cherche en effet une solution souple, simple a mettre en oeuvre et bon marché.
Quand j'aurai fini l'interface pour le minitaur, j'ai l'intention d'en faire une autre complètement configurable avec un écran LCD, deux entrée / sortie et une passe au travers (traduction littérale

A en croire au nombre de vue de ce poste, il y a un intérêt certain.

shook-route



secmast

Je bosse un nouveau design basé sur un multiplexeur 16 voies avec une configuration non statique pour les CC.
Et pourquoi pas, un afficheur LCD, je reste dans des coups très bas surtout pour ceux qui ont la possibilité de ce passé d'une carte Arduino et de mettre le microcontroleur en stand alone.

adrienf

_ Vérification de mes outils oscilloscope, multimètre : check
_ Vérification de la carte Uno : check
Allez hop, on programme...

adrienf

Je viens de réaliser mes premières lignes de code, la communication fonctionne et j'arrive à contrôler ableton avec mon seule et unique potar de disponible. Je commande mes composants en ce moment (multiplexeur, boitier, ect).
Et je bloque un peu sur les valeurs des potentiomètres, tu utilises bien des potentiomètres de : 10 K Ohms Lin ???
.Merci

secmast

Tu peux mettre un print (analogread(potard)) histoire de vérifier que tu as bien des valeurs allant de 0 à 1024


Danguit


Rémy M. (chimimic)

1023
Et si tu arrives à lire cette valeur, tu auras de la chance...

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

Danguit


Rémy M. (chimimic)


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

secmast

Qualité/Prix !!! les prix variant de 1 à 170 euros pour un potentiomètre et encore j'ai pas regardé longtemps.
Maintenant, vu que tu as besoins d'un valeur comprise entre 0 et 127. 1023 c'est bon tu es largement dans la plage.
En effet, 1024 - 8 = 1016. C'est donc a partir de 1016 que tu vas avoir la valeur 127.

Rémy M. (chimimic)

Je ne cherchais nullement à lancer un débat

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

adrienf


VDS123

I'm trying build 4x4051 --> 4051 cascade with 25 potenciometers (with no buttons - resistors only)
Can anyone help me to modify this code to my case, please?
I'm already change some parameters, but it still don't work.
Bonjour.
J'essaie construire 4x4051 -> 4051 cascade avec 25 potenciometers (sans boutons - résistances seulement)
Quelqu'un peut-il m'aider à modifier ce code pour mon cas, s'il vous plaît?
Je suis déjà changer quelques paramètres, mais il ne fonctionne toujours pas.
http://s2.ipicture.ru/uploads/20140203/axKQpz18.jpg
int selection1MuxPrimaire = 3;
int selection2MuxPrimaire = 4;
int selection0MuxSecondaire = 5;
int selection1MuxSecondaire = 6;
int selection2MuxSecondaire = 7;
int sel0;
int sel1;
int sel2;
int bouclePrimaire;
int boucleSecondaire;
int potentiometreEntre = 0;
int potentiometre[25];
int potentiometreCC[25]={
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 };
// Canal midi de 176 à 191
int midiChannel = 176;
void setup(){
// Ouverture du port serie proche de la vitesse du Midi(31250) pour debut seulement
Serial.begin(31250);
// Configuration des ports Arduino E/S
pinMode(selection0MuxPrimaire, OUTPUT);
pinMode(selection1MuxPrimaire, OUTPUT);
pinMode(selection2MuxPrimaire, OUTPUT);
pinMode(selection0MuxSecondaire, OUTPUT);
pinMode(selection1MuxSecondaire, OUTPUT);
pinMode(selection2MuxSecondaire, OUTPUT);
}
void loop(){
// Scan et lecture des potentiometres
// Boucle de selection du Mux B2 ou Mux B3
for (bouclePrimaire = 0; bouclePrimaire < 8; bouclePrimaire++){
// Transformation en binaire de la variable bouclePrimaire
sel0 =bitRead(bouclePrimaire, 0) ;
sel1 =bitRead(bouclePrimaire, 1) ;
sel2 =bitRead(bouclePrimaire, 2) ;
// Selection du port sur le 4051 Mux A
digitalWrite(selection0MuxPrimaire, sel0);
digitalWrite(selection1MuxPrimaire, sel1);
digitalWrite(selection2MuxPrimaire, sel2);
// Boucle de lecture Mux Bn pour 4 entrees
for (boucleSecondaire = 0; boucleSecondaire < 8; boucleSecondaire++){
// Transformation en binaire de la variable boucleSecondaire
sel0 =bitRead(boucleSecondaire, 0) ;
sel1 =bitRead(boucleSecondaire, 1) ;
sel2 =bitRead(boucleSecondaire, 2) ;
// Selection du port sur le 4051 Mux Bn
digitalWrite(selection0MuxSecondaire, sel0);
digitalWrite(selection1MuxSecondaire, sel1);
digitalWrite(selection2MuxSecondaire, sel2);
// Delay d'attente avant capture du port Data, valeur à mettre au plus bas possible.
//delayMicroseconds(75);
// Lecture de la valeur du potentiometre(n)
// Verification de la valeur ancienne et valeur actuelle base sur 4 potentiometre par mux
if (analogRead(potentiometreEntre)/8 != potentiometre[bouclesecondaire + (bouclePrimaire * 8)]){
potentiometre[bouclesecondaire + (bouclePrimaire * 8)] = analogRead(potentiometreEntre)/8;
Serial.write(midiChannel);
Serial.write(potentiometreCC[bouclesecondaire + (bouclePrimaire * 8)]);
Serial.write(potentiometre[bouclesecondaire + (bouclePrimaire * 8)]);
}
}
}
}
[ Dernière édition du message le 03/02/2014 à 19:32:06 ]

secmast

Just change your cabling and it should work.

VDS123

Looking roughly at the drawing and the code you have inverted muxprimaire and muxsecondaire.
Just change your cabling and it should work.
Thank you for answer, but still no result
(i'm try combinations 0-1-2-3-4-5, 3-4-5-0-1-2, 2-1-0-5-4-3, 5-4-3-2-1-0)
I'm check again all circuit - all voltage is good
best result what i have is:
(none stop spam of messages in all cases)
http://s2.ipicture.ru/uploads/20140204/0W538Uhb.jpg

secmast

I don't really get what is exactly your problem.
But, 25 10k pots may drive you to some trouble, have you try putting a resistors at the pots common groung, you may have not enough resistance !!
Just a thought

Summers

Super ton petit contrôleur Secmast et pleins d'infos dans ton post !
Sans rien y connaitre en électronique, je suis quand même parti pour me fabriquer mon contrôleur MIDI pour un projet particulier : une console avec 32 Fader MIDI + peut être quelques switchs.
Pour l'instant j'en suis encore à glaner un maximum d'informations ici et là sur le net, pas évident d'avoir les bon tuyaus avant de faire la commande !
Donc une question suite à ton sujet : Tu à utilisé des multiplexeurs performant et peu cher, mais pour me faciliter la vie j'ai trouver ceci :
MonsterMux 32 Channel Analog Multiplexer Shield Kit for Arduino
http://www.criticalvelocity.com/item.php?itemid=shield3

Si tu est encore dans les parages, pourrais je avoir ton avis sur ce multiplexeur qui, même si il est plus cher, semble plus simple à mettre en oeuvre !? De plus il y a pile poils le nbr d’entrée analogique que je recherche.

Danguit


Summers

Et je voulais un avis général autre que le prix !

trashfield


Summers


trashfield


trashfield

[ Dernière édition du message le 25/06/2014 à 20:57:06 ]
- < Liste des sujets
- Charte