Idée de projet : contrôleur midi type orgue sensoriel

Bonjour,

J’ai dans l’idée de faire un contrôleur midi modulable (a la manière de l’orgue sensoriel que l’on voit ici : ( https://youtu.be/-NZNmkxpCzI )
L’idee c’est de pouvoir brancher un ou plusieurs capteurs quelconques, ou un simple bouton en fonction de l’installation que l’on veut, et pouvoir modifier quand on veut.
Ça vous paraît faisable avec un arduino ?
Comment l’arduino peut reconnaître automatiquement le capteur qui est branché ?
Merci

C'est intéressant, c'est certainement faisable avec un Arduino. Je ne connais pas la norme MIDI, mais si elle permet de faire de 'jolies' notes comme celles de la vidéo, ça doit être faisable.

Il y a plusieurs capteurs : des boutons poussoirs, des codeurs rotatifs, un potentiomètre linéaire, un capteur de pression pour la poire (?), etc.

Si les capteurs communiquent en I2C, ils ont un numéro d'identifiant qui permet de les différencier. Sinon, il suffit de les connecter chacun sur une IO définie à l'avance et de vérifier si l'Arduino capte un signal sur cette IO.

Ce sont des idées à froid, d'autres membres du forum seront plus calés que moi sur ces sujets.

On ne voit pas le logiciel, il faut peut-être simplement définir quel type "d'instrument" est connecté à une piste midi et si l'action joue une piste ou simplement une note

Merci,

L’idéal serait de pouvoir connecter n’importe quel capteurs sur n’importe quel entrées, à chaud sans avoir à redémarrer. Pour préciser un peu plus, j’aimerais surtout utiliser 3 types de capteurs : le bouton poussoir évidemment, le capteur de distance, et le capteur de lumière.
Pour ce qui est de la musique, le contrôleur sera connecté à un ordi, et ensuite avec Ableton live et Max for live, on envoie les sons que l’on veut par l’intermediaire du midi.

Après une autre idée serait d’utiliser les sorties de l’arduino pour que la musique générée par les capteurs puissent commander des moteurs pour créer une sorte de sculpture interactive, mais bon, pour l’instant je vais déjà me contenter du contrôleur midi, pour les moteurs, on verra après…

Mais vous pouvez simplement configurer cela dans le logiciel une fois les éléments branchés. Je suppose qu'il faut de toutes façons charger des pistes midi.

Par exemple sous GarageBand sur mon mac, je crée des pistes auxquelles j'associe des instruments logiciels

ou des instruments "réels" (entrée micro par exemple) avec le choix d'effets

➜ Il faut un logiciel adapté. Je ne connais pas Ableton live et Max for live, est-ce qu'ils s'y prêtent ?

Oui ableton live peut faire ça parfaitement.
Le problème c’est qu’il faut que l’arduino reconnaisse automatiquement le capteur et envoie les données convertie en midi sur le bon canal pour que cela soit interprété correctement par ableton live.
Dans un premier temps, je pense que l’idée la plus simple est de réserver des entrées pour les boutons, et d’autres entrées pour les capteurs à variations continues, mais même dans ce cas là, ce n’est pas évident car entre un capteur de lumiere et un capteur de distance, on interprète pas les données de la même façon…

Lorsqu'on regarde un peu sur le site d'orgue sensoriel, il y a 2 types de senseurs:

  • des senseurs tout ou rien
  • des senseurs dits variateurs

N'importe quel senseur sur n'importe quelle entrée c'est toujours possible mais cela entraîne une complexification des senseurs et du système qui doit les gérer. Pour pouvoir connecter n'importe quoi, n'importe où, il faut complètement banaliser les interfaces. Sur les vidéos de présentation on dirait que les capteurs sont connectés par un jack 6.35. Cela limite l'interface à une alimentation, une masse et un signal.
Si on banalise les interfaces il faut 'interfacer les senseurs soit en analogique, soit en numérique.

  • Les arduinos n'ont pas beaucoup d'entrées analogiques ce qui va nécessiter d'ajouter des multiplexeurs sur les entrés analogiques pour augmenter leur nombre. Il y a environ une vingtaine d'entrée il me semble.
  • Si on veut interfacer en numérique cela veut dire des senseurs intelligents et une carte qui possède de nombreuses entrées de communication ce qui n'est pas le fort des Arduino.

A coté de ça, tu pourrais avoir un système plus économique et plus proche de l'architecture des cartes Arduino en ayant une série d'entrées analogiques et une série d'entrées numériques

  • Les senseurs tout ou rien pourrait s'interfacer avec les entrées digitales d'un Arduino. Il y en a quand même plus d'une dizaine sur les cartes de base.
  • Les senseurs "variateurs" pourrait s'interfacer avec les entrées analogiques d'un Arduino. Il y en a 6 sur les cartes basiques et 8 sur les Mega. Cela exige quand même de mettre un minimum de traitement dans les senseurs pour qu'ils délivrent tous un signal dans la même fourchette de tension.

Il faudrait peut-être définir plus finement ton besoin, en détaillant un peu plus l'enveloppe aussi bien technique, que financière et tes capacités à réaliser le système.

Bonjour jojo_monk

Ca doit être possible, L'idéal serait de tout interfacer en i2C les accessoires qui ne le sont pas, ainsi chaque accessoire aurait son adresse, donc pourrait être identifié. Par contre, pas sûre que le bus i2C apprécie la déconnexion/connexion à chaud, il faudrait un reset de l'Arduino.

Cordialement
jpbbricole

Je pense que pour l’instant je vais me contenter de la version économique, c’est à dire un arduino uno en réservant les entrées analogiques pour les capteurs variateurs et les entrées numériques pour les capteurs tout ou rien. Mais j’aimerais bien construire un contrôleur qui soit durable et puisse s’adapter le plus simplement possible à différentes situations, c’est à dire sans devoir tout reprogrammer à chaque fois.

Pour ce qui est de mes compétences pour réaliser ça, je suis plutôt débutant en électronique, mais je sais souder des composants et j’ai déjà fait quelques montages (avec un raspberry pi, entre autres), pour la programmation, j’ai deja programmé en pure data, Max, et en python.

Penses-tu qu’il soit possible d’utiliser une Connectique type jack 6,35 pour tous capteurs ?

Bonjour jojo_monk

Pour les capteurs "simples", oui. Mais pour un capteur de mouvement ou de luminosité un tant soit peu évolués, qui sont en général en i2C, il faut 4 fils.

Cordialement
jpbbricole

Il existe des jacks 4 points donc ça doit être possible

Pour certains composants comme les potentiomètres, les interrupteurs il n'y a pas besoin d'adaptation et cela ne devrait pas poser de problèmes.
Pour des capteurs plus complexes il faudrait ajouter quelques composants pour formater le signal comme attendu par le contrôleur.

De ce coté, le jack 6.35 est contraignant avec seulement 3 fils. Mais il a l'avantage de la robustesse et d'un coût réduit.
Après, il est possible de partir sur une connectique plus "pratique". Avec 4 points tu peux avoir un vrai bus de communication entre les senseurs et le contrôleur(RS485, I2C, ..). Le RS485 peut supporter la connexion à chaud. Mais comme je le disais plus haut on fait grimper les coûts car il faut alors avoir un microcontrôleur dans chaque senseur.

Bonjour

basiquement aujourd'hui le plus simple est d'utiliser un MCU capable de faire du midi over USB
il suffit de "programmer" les trames midi en fonction du/des logiciel de MAO récepteur courants, après c'est du plug and play

  • Leornado et dérivés
  • digispark (attiny85) midi out seulement , mais très economique
  • pico2040

Bonjour jojo_monk

A ce moment là oui, si tu as des entrées On/Off, analogiques et i2C, tu couvres un grande partie des possibilités.
Je n'ai jamais fait passer de l'i2C à travers ce type de jack, mais ça devrait le faire.
As.-tu un composant i2C pour essayer?

Cordialement
jpbbricole

Non, je n’ai pas encore le matos, pour l’instant je prends le Max d’infos un peu partout, avant de commander ce que j’aurais besoin.

Si je comprends bien, avec une connectique 4 points, je pourrai connecter des capteurs compatible i2c directement à l’arduino, ils seront reconnus au démarrage, par contre impossible de les brancher ou débrancher à chaud. Avec le rs485, c’est possible mais il faut rajouter un rs485 par capteurs ? Combien ça coute le rs485 ? Y a-t-il besoin d’un capteur compatible rs485 ? D’apres toi quelle est la solution la plus simple et efficace ?
Le branchement à chaud, je peux à la limite m’en passer.

Le RS485 c'est plus lourd à mettre en œuvre mais c'est très robuste et ce sera sans doute plus cher. Et la robustesse ne fait pas partie du besoin exprimé.
L'I2C c'est déjà intégré dans les arduinos. Je ne suis pas spécialement fan de l'I2C mais ce n'est pas très complexe à mettre en œuvre et il y a plein d'exemples de communication en I2C. Pour le plug and play si ce n'est pas une contrainte, il suffit de prévoir un bouton pour demander au contrôleur de faire un scan pour rechercher les périphériques connectés lorsqu'on en ajoute.

L'avantage de l'I2C, c'est que tu peux connecter directement certains senseurs (accéléromètre, capteur de pression, température, ...) sans circuit supplémentaire.
L'inconvénient c'est pour les senseurs tout ou rien, il faut ajouter un microcontrôleur pour les raccorder au bus I2C. Mais tu peux trouver des arduinos par lot de 10 pour une poignées d'euros sur Aliexpress ou Ebay, tu leur ajoutes des boutons tu assembles tout ça sur table et tu es prêt pour essayer.

Si tu veux réduire les coûts au maximum prend l'option hybride, des entrées I2C et des entrées tout ou rien distinctes.

Merci pour les conseils, je pense effectivement m’orienter dans un premier temps vers la solution hybride.
Par contre, j’ai l’impression qu’i2c va poser problème si je décide de brancher par exemple 3 ou 4 capteurs de luminosités en même temps, car j’ai l’impression qu’on ne peut pas faire ce que l’on veut au niveau des adresses i2c ?

Mon conseil :
procure toi un "leonardo" ou un micro 32U4
et tu aura une base pour experimenter sur ton projet avec différents capteurs et le support midi over USB.

quand tu te sera bien fait la main , tu pourra éventuellement envisager d'autres solutions , mais tu aura déjà largement de quoi bien t'amuser avec pendant un moment :grinning:

chez banggood
image

Au cas où les adresses des capteurs ne peuvent être changées tu as le TCA9548A, pour "multiplier" le bus i2C.
image
Ainsi tu peux avoir plusieurs capteurs avec la même adresse. très facile d'emploi.

Cordialement
jpbbricole