[Projet étudiant] Contrôleur MIDI & sampleur

Bonjour à tous, je suis nouveau et débutant dans la communauté Arduino et étudiant en école d'ingénieur. Ma première réaction en découvrant l'Arduino fut "Holy shit it's a f*ckin amazing tool !". J'ai l'impression qu'on peut tout faire avec ce produit. D'ailleurs c'est pour cette raison que je poste un message sur ce forum car on peut vite se perdre avec l'Arduino et j'aimerais avoir quelques conseils.

Je vais tout d'abord vous présenter mon projet. Ce dernier est un : Contrôleur MIDI & sampleur (de type Native Instrument Maschine ou Novation Lauchpad avec une fonctionnalité de sampleur, pour ceux qui connaissent).

Il fonctionnera sous 2 modes :

  • Mode Contrôleur midi : on interagit avec un logiciel (Ableton Live par exemple)
  • Mode Sampleur : c'est un fonctionnement standalone, on n'utilise pas de logiciels pour générer des sons mais ceux qui sont présents sur une carte SD.

Ce device aura :
-16 boutons (pads) rétroéclairés à l'aide de led (rgb si possible)

  • 5 faders
  • 6 potards
  • 1 potards 16 crans
  • 1écrans LCD

Pour les I/O il y aura :

  • port usb (qui servira d'alimentation et de transfert de données)
  • 1 port carte SD (pour changer de banque de son dans le monde de fonctionnement sampleur)
  • 1 sortie audio (encore une fois pour le mode sampleur)

Voilà pour le fonctionnement. Maintenant j'ai (beaucoup) de questions. J'ai vu qu'une personne sur ce forum avait fait un projet similaire au mien ( lien vers le projet ) mais il n'y a eu que quelques échanges sur son topic... Donc je me demandais si :

  • L'utilisation de l'USB sera t il suffisant pour alimenter ce device ? (en mode contrôleur MIDI j'ai vu que oui mais lors du passage en mode sampleur ?)

  • J'ai vu qu'il existait des multiplexeur, ce qui éviterai de prendre un Arduino possédant un très grand nombre d' I/O. Lequel me conseillerez-vous ? le mux Breakout est-il suffisant pour mon projet ?

  • Pour la mise en place du sampleur, la mémoire des Arduino étant insuffisante, j'ai pensé à l'utilisation d'un module pour carte SD. J'ai trouvé ce dernier : [urlhttp://www.arobose.com/shop/cartes-d-extension-robot/74-module-carte-sd-pour-arduino.html]Module carte SD[/url] . Est ce un bon choix ? Aussi, lors de la conception, est ce qu'on peut dire qu'une fois connecté à l'Arduino il sera simple d'aller récupérer les données dessus ?

  • Savez- vous où est ce que je peux me procurer des pads translucides de ce type : pads ?

  • L'arduino gère-t-il l'audio ? Je veux dire par là, je récupère les sons sur la carte SD, est ce que j'ai besoin d'un module particulier pour "gérer ces sons" ou alors est ce qu'un module d'amplification suffit-il ? ( celui-ci par exemple)

  • Enfin j'ai vu les modèles Arduino, pensez vous que le modèle "Léonardo" suffira ? Ou alors devrais-je choisir plutot le "Mega 2560" ?

Ensuite je pense qu'il me faudra 16 Leds rgb (j'espère qu'il est possible de recevoir les couleurs des clip d'ableton Live pour allumer les pads de la couleur dont on les voit sur l'écran), un TLC5940 (j'ai vu que ça permetttait de réduire le nombre de résistance à utiliser) et un module d'amplification.

Pensez vous que j'ai oublié d'autres choses ??

Merci de votre aide,
Chris Nilson.

Joli projet...
Pour les "pad", tu trouveras ça à l'adresse suivante:
http://www.watterott.com/en/Components/Mechanical/Button-Pads
Pour le multiplexage des leds le TLC me semble un très bon choix. Pour une trichromie il en faudra 3. Pas de soucis ils sont daisy chaînables.
Pour multiplexer les entrées analogiques le CD74HC4067 ou deux 4051 devaient convenir.
Oriente toi plutôt vers une uno que vers une leonardo, ce sera plus simple et cette carte est plus connue. La méga c'est plutôt si tu ne veux pas t'embêter à multiplexer. Ou si ton code est trop long pour la mémoire de la uno mais j'en doute.
Par contre l'arduino ne gère pas l'audio "de qualité" à ma connaissance. D'autres en savent sans doute plus que moi sur le sujet.
Je ne peu pas t'aider non plus concernant la carte SD, je ne maitrise pas du tout le sujet!
Bon courage,
Jacques.

Bonjour,

Je reviens un quelques temps à près due à une période d'exam et d'autre projets scolaires...

Merci bouault pour ta réponse rapide et complète. J'ai commandé ces pads, je les recevrai sous peu.

Pour le multiplexage j'attends de recevoir les composants aussi.

Mais je suis confronté à une question importante, est il possible de faire une liaison midi/usb directement à partir de l'Arduino ? Je cherche depuis un long moment et je ne trouve rien si ce n'est ce projet, Hiduino ( GitHub - ddiakopoulos/hiduino: Native USB-MIDI on the Arduino ) mais en flashant l'arduino, est ce que je devrais changer la manière dont je le code par la suite ? Je ne comprends pas trop ce principe de flasher...

Pour ce qui est du son, l'arduino ne fait pas de conversion D/A il me semble, seulement la conversion A/D (et avec une résolution de 10bits, alors qu'une carte son a une résolution de 24 bits).

De toute façon même si c'était possible, sampleur veut dire bonne qualité de son donc il te faudra un bon convertisseur et un préamplificateur. Je ne m'y connais pas plus que ça donc je ne saurai pas te conseiller ce qu'il te faut, mais une chose est sûre c'est que la carte n'est pas faite pour générer du son de qualité.

Pour ce qui est de la programmation des pads, tu as déjà une idée de comment tu vas faire, pour interagir avec les clips d'Ableton Live par exemple ? Je me suis déjà renseigné là dessus et ça avait l'air assez compliqué. :grin:

kevo:
Pour ce qui est du son, l'arduino ne fait pas de conversion D/A il me semble, seulement la conversion A/D (et avec une résolution de 10bits, alors qu'une carte son a une résolution de 24 bits).

De toute façon même si c'était possible, sampleur veut dire bonne qualité de son donc il te faudra un bon convertisseur et un préamplificateur. Je ne m'y connais pas plus que ça donc je ne saurai pas te conseiller ce qu'il te faut, mais une chose est sûre c'est que la carte n'est pas faite pour générer du son de qualité.

Merci pour les informations. C'est ce qu'il me semblait... Je mettrai alors des modules de conversion D/A ainsi qu'un préamp.

kevo:
Pour ce qui est de la programmation des pads, tu as déjà une idée de comment tu vas faire, pour interagir avec les clips d'Ableton Live par exemple ? Je me suis déjà renseigné là dessus et ça avait l'air assez compliqué. :grin:

Que veux tu dire pour la programmation des pads ? Parle tu juste du fait d'appuyer sur le pad et que Live réagisse ou alors du fait de récupérer les informations de Live (couleur etc...) ? Dans le premier cas c'est très simple, il y a des centaines de code sur le net et il ne prends pas plus de 4 lignes. Pour ce le second cas, je t'avoue je cherche... ah ah.

Au passage, est il possible de flasher un Arduino (pour utiliser le projet Hiduino) sans un progrmammateur ISP mais avec 2 arduinos ? Je crois que oui mais je ne suis pas sur.

Oui je parle du feedback de live avec les couleurs. Je n'ai pas encore trouvé de solution vraiment concrète mais ces noms sont revenus quelques fois: cycling74 (max for Live), qui est un logiciel permettant de créer des plugins (par exemple pour interagir entre live et d'autres logiciels). J'ai lu aussi qu'il fallait faire de la programmation en python. Bref, trop "geek" pour moi pour l'instant, j'ai pas été chercher plus loin ^^. Mais si jamais tu trouves des infos concrètes à propos de ça un jour, je suis preneur :wink:

Pour ce qui est du fait de faire réagir live quand on appuie sur les pads, en effet c'est très simple, c'est juste un byte correspondant à l'adresse du clip qui est envoyé en MIDI.
Pour l'Hiduino je n'ai jamais essayé, à vrai dire je n'aime pas trop les solutions toutes faites, je préfère tout programmer moi même (et traiter les signaux MIDI c'est pas très compliqué une fois qu'on a pigé le truc :wink: ).

Moi je travaille actuellement sur un gros séquenceur 16 pistes qui avance bien, si tu as des questions à propos de la syncro MIDI et tout ça, je pourrai t'aider :wink:

kevo:
Oui je parle du feedback de live avec les couleurs. Je n'ai pas encore trouvé de solution vraiment concrète mais ces noms sont revenus quelques fois: cycling74 (max for Live), qui est un logiciel permettant de créer des plugins (par exemple pour interagir entre live et d'autres logiciels). J'ai lu aussi qu'il fallait faire de la programmation en python. Bref, trop "geek" pour moi pour l'instant, j'ai pas été chercher plus loin ^^. Mais si jamais tu trouves des infos concrètes à propos de ça un jour, je suis preneur :wink:

En effet il faut faire de la programmation en python et faire des MIDI remote scripts. Après j'ai entendu de LiveAPI mais je ne sais pas encore exactement qu'est ce que c'est.

kevo:
Pour l'Hiduino je n'ai jamais essayé, à vrai dire je n'aime pas trop les solutions toutes faites, je préfère tout programmer moi même (et traiter les signaux MIDI c'est pas très compliqué une fois qu'on a pigé le truc :wink: ).

Moi aussi je n'aime pas trop ce genre de programme "tout fait" mais avec un projet dont la deadline est proche si je peux éviter de refaire le travaille de quelqu'un ça m'aiderait beaucoup ^^. Au passage aurait tu des documentation pour traiter les signaux Midi sur Arduino ? Je veux dire par là, le fait de "changer" son comportement pour éviter d'utiliser un logiciel serial-midi sur l'ordinateur.

kevo:
Moi je travaille actuellement sur un gros séquenceur 16 pistes qui avance bien, si tu as des questions à propos de la syncro MIDI et tout ça, je pourrai t'aider :wink:

Merci ! Pour l'instant je n'en suis pas encore là, mais si j'ai un problème je te demanderai conseil ;). Bon courage pour ton séquenceur.

Je viens pour vous informer un peu de l'avancement du projet.

Alors j'ai vu un peu plus en détails les remote script d'Ableton et en effet tout se code en Python. Pour l'instant j'arrive à mapper automatiquement mon Arduino avec Ableton et contrôler sans problème la barre de Transport. J'arrive aussi à afficher et déplacer une box comme le Novation Launchpad sur Ableton. Mais je partagerai les code une fois que je serai vraiment sur de ce dernier ou que ça soit quelque chose d'exploitable.

Ensuite je me trouve coincer avec l'histoire de la matrice 4x4 de boutons. En effet j'ai un problème dans mon code qui ne marche pas parfaitement encore et je me demandais s'il n'existait pas des librairie spécifique pour ce type de boutons pour Arduino ?

Bonjour,
je travaille sur le même type de projet et j'aurai besoin de quelques renseignement sur les midi remote scripts et leur code en python.
Voici ce que j'ai pu faire:

j'ai un arduino avec un ensemble de bouton,de potentiometres etc..
J'arrive à envoyer des messages midi de type NoteOn, NoteOff et control change.

Maintenant j'ai du mal à faire la transition pour controller ableton avec mon arduino. Est-ce que je dois coder un nouveau remote Script entier (qui donne tout le comportement du système)
ou bien il suffit de suivre le "user configuration.txt"?

J'ai crée un nouveau dossier par exemple "arduino1", dans _user remote script.
Il est bien détecté par Live.
Je choisi le channel 0 global.

Là j'ai un souci pour savoir s'il faut nommer dans le configuration.txt "arduino1", ou bien "COM5" par exemple pour le port usb de l'arduino

sachant que mes messages midi sont envoyé sur le port serie.

Je mets en boucle infini un potentiometre qui envoit un control change sur le channel1, de numéro 1 et de valeur 0-127 lue sur le potentiometre.
Sur live je n'arrive pas à recevoir ce messages midi.
(même avec le port serie à 9600Bds,31250 non plus)..

Pourriez vous m'aiguiller?

ChrisNilson:
Ensuite je me trouve coincer avec l'histoire de la matrice 4x4 de boutons. En effet j'ai un problème dans mon code qui ne marche pas parfaitement encore et je me demandais s'il n'existait pas des librairie spécifique pour ce type de boutons pour Arduino ?

Oui, ça se fait avec la librairie keypad.

il y a bien une librairie pour les matrices de type keyboard mais si tu veux utiliser les Pad Led type sparkfun je pense pas que ce soit vraiment exploitable.

J'en ai codé une qui fonctionne bien pour les LED et qui me permet de savoir quel bouton (quelle colonne) est activé, mais j'ai du mal à la terminer pour savoir à quelle ligne cela correspond, je peux t'aider sur ce point là.

J'ai assez bien avancé, puisque j'arrive maintenant à controller ableton Live mais il me faut mapper manuellement tout mon controller à chaque fois.
J'ai un peu du mal à exploiter les scripts python, j'ai en trouvé un qui fait ceci:

init.py + transport
auquel on utilise des methode comme .set_record_button(ButtonElement(True,0,0,60));

ce qui est sensé déclencher l'action "record" lorsqu'on reçoit un message noteOn sur le Channel0.

Malheureusement aucune réponse d'ableton Live avec ce "mapping automatique".
Any advice?