Introduction aux Arduino/Genuino et instruments MIDI

Cartes électroniques programmables (µC) – Musical Instrument Digital Interface (MIDI) – Musique assistée par ordinateur (MAO)

Arduino/Genuino : Késako ?

Arduino (USA) / Genuino (reste du monde) est une plate-forme électronique programmable (microcontrôleur à bord) open source (à code source ouvert) basée sur un matériel et un logiciel qui sont « faciles » à utiliser.

La version UNO est la meilleure carte (caractéristiques et prix) pour commencer avec l’électronique et le codage (programmation). Si c’est votre première expérience de bricolage avec la plate-forme, l’UNO est la carte la plus robuste pour commencer à jouer avec. L’UNO est la carte la plus utilisée et documentée de toute la famille Arduino/Genuino.

UNO signifie UN en italien (vous vous en seriez douté) et a été choisi pour marquer la sortie de l’Arduino Software (IDE) 1.0. La carte Uno et la version 1.0 d’Arduino Software (IDE) étaient les versions de référence d’Arduino qui ont maintenant évoluées vers de nouvelles versions (Uno R3 et IDE 1.8). La carte UNO est la première d’une longue série de cartes USB Arduino/Genuino, et le modèle de référence pour la plate-forme Arduino/Genuino.

Les cartes Arduino/Genuino sont capables, grâce à leur µcontrôleur embarqué (ATmega328P pour la version UNO R3) de lire des « entrées » – lumière sur un capteur, un doigt sur un bouton, un message Twitter ou MIDI, etc. – et les transformer en « sorties » – activer un moteur, allumer une LED ou un afficheur, publier quelque chose en ligne, jouer un son, etc.
Vous pouvez dire à votre carte électronique ce qu’il faut faire en envoyant un ensemble d’instructions à son microcontrôleur. Pour ce faire, vous utilisez le langage de programmation Arduino (basé sur Wiring) et le logiciel Arduino IDE (Integrated Development Environment) (basé sur Processing), disponibles pour les systèmes d’exploitation libres GNU/Linux, et propriétaires Mac OS et Windows.

Arduino UNO R3 : Brochage (pinout)

Arduino/Genuino Uno est une carte avec un microcontrôleur basé sur l’ATmega328P. Celui-ci dispose de 14 broches d’entrée/sortie numériques (dont 6 peuvent être utilisées comme sorties PWM – Pulse Width Modulation), de 6 entrées analogiques, d’un quartz à 16 MHz, d’une connexion USB, d’une fiche d’alimentation, d’une en-tête ICSP (In-Circuit Serial Programming) et d’un bouton de réinitialisation (RAZ). Elle contient tout le nécessaire pour gérer le microcontrôleur ; Il suffit de la connecter à un ordinateur avec un câble USB ou de la brancher avec un adaptateur AC-DC (courant alternatif/courant continu) ou une batterie pour commencer… Vous pouvez bricoler avec votre carte UNO sans trop vous soucier de faire quelque chose de mal. Dans le pire scénario, vous n’aurez qu’à remplacer le µcontrôleur (boîtier DIP 28 (Dual Inline Package) inséré dans son support soudé à la carte, voir image ci-dessus) pour quelques euros et à recommencer en faisant attention.

Au fil des ans, Arduino a été le cerveau de milliers de projets, des objets de tous les jours aux instruments scientifiques complexes. Une communauté mondiale de « faiseurs » (makers) – étudiants, amateurs, artistes, programmeurs et professionnels – s’est rassemblée autour de cette plate-forme open source. Leurs contributions ont ajouté une quantité incroyable de connaissances accessibles (en anglais mais aussi en français dans la section International) qui peuvent être d’une grande aide aussi bien pour les débutants que les experts.

Le projet Arduino est né en 2005 à l’Ivrea Interaction Design Institute (en Italie du Nord) en tant qu’outil pour faciliter le prototypage rapide, destiné aux étudiants sans formation en électronique et en programmation. Dès qu’il a atteint une communauté plus large, les concepteurs d’Arduino ont commencé à le faire évoluer pour l’adapter aux nouveaux besoins et défis, en différenciant son offre initiale de simples cartes 8 bits vers des produits pour des applications comme l’IoT (Internet des objets), des produits portables, l’impression 3D et des environnements embarqués. Toutes les cartes Arduino/Genuino sont complètement open source, donnant le pouvoir aux utilisateurs de les construire indépendamment et éventuellement de les adapter à leurs besoins particuliers. Le logiciel, aussi, est open source, et il s’améliore régulièrement grâce aux contributions des utilisateurs du monde entier.

Comment puis-je utiliser Arduino/Genuino ?

  • Consultez le Guide officiel de démarrage (en anglais).
  • Téléchargez et « installez » le logiciel Arduino IDE (Integrated Development Environment) : sous GNU/Linux (arduino-1.8.0-linux64.tar.xz d’~ 100 Mo compressé). En fait, une fois le fichier décompressé (~ 460 Mo) là où vous avez décidé, la « procédure d’installation » ajoute simplement un raccourci sur votre bureau GNU/Linux pour lancer Arduino IDE en français. C’est donc une version portable.
  • Une simple recherche Arduino sur le Web vous donnera accès à une multitude de ressources disponibles en français. Parmi celle-ci, je vous suggère le très bon ouvrage (adapté aux débutants, que nous avons tous été) : Arduino : Premiers pas en informatique embarquée – PDF de 454 pages (23 Mo) – Édition du 19 juin 2014 par les Auteurs : Simon Landrault (Eskimon) et Hippolyte Weisslinger (olyte).
  • Si vous êtes à la recherche d’inspiration et d’idées, vous trouverez une grande variété de Didacticiels, par exemple sur Arduino Project Hub.

♦ Késako que le MIDI ?

MIDI : une introduction au « Musical Instrument Digital Interface »

MIDI (FR) ou Musical Instrument Digital Interface (EN – plus complet)

Le MIDI est un protocole de communication et aussi un format de fichier dédiés à la musique, et utilisés pour la communication entre instruments électroniques, contrôleurs, séquenceurs, et logiciels de musique.

Cet interface numérique pour instrument de musique, est donc un protocole utile pour commander des claviers, des séquenceurs, des synthétiseurs et d’autres dispositifs musicaux. Les périphériques MIDI sont généralement regroupés en deux grandes catégories : les contrôleurs (c’est-à-dire les périphériques qui génèrent des signaux MIDI basés sur des actions humaines) et les synthétiseurs (y compris les échantillonneurs, les séquenceurs, etc.). Ce dernier prend des données MIDI en entrée et produits des sons, des lumières ou tout autre effet acoustique et/ou visuel.

Le MIDI, en tant que protocole de transmission numérique série, fonctionne à 31.250 bauds conformément au Complete MIDI 1.0 Detailed Specification de The MIDI Association (TMA). Le port série intégré aux cartes Arduino/Genuino peut envoyer et recevoir sans souci des données à ce rythme… de tortue… mais amplement suffisant.

Les octets MIDI sont divisés en deux types : octets de commandes et octets de données. Les octets de commandes sont au minimum à 128 ou plus, ou 0x80 à 0xFF en hexadécimal. Les octets de données sont toujours inférieurs à 127 ou 0x00 à 0x7F en hexadécimal. Les commandes incluent des informations sur des choses telles que note on, note off, modification de la hauteur d’une note, et ainsi de suite. Les données incluent des éléments tels que la hauteur de la note à jouer, la vélocité ou la sonorité de la note, la quantité de variation de la hauteur d’une note et ainsi de suite. Pour plus de détails, reportez-vous aux spécifications MIDI ou à l’un des nombreux guides du protocole MIDI sur le Web. L’un des plus complet est celui de la MIDI Association avec ses MIDI Tutorials (en anglais).

Les données MIDI sont généralement notées en hexadécimal car les banques et les instruments MIDI sont regroupés en groupes de 16.

Arduino/Genuino : Fonctions de sortie MIDI

Comme nous l’avons vu, l’Arduino UNO est un microcontrôleur open source populaire qui, à bien des égards, est un complément parfait à la nature extensible du protocole MIDI (Digital Instrument Digital Interface). Les plates-formes de microcontrôleurs telles qu’Arduino et d’autres, rendent relativement facile le développement de contrôleurs MIDI personnalisés qui répondent à la lumière, à la pression, au son et à bien d’autres formes d’entrée. De cette façon, les microcontrôleurs fournissent un moyen unique d’étendre les possibilités du MIDI dans le domaine physique. Les musiciens MIDI peuvent désormais imaginer et créer une gamme étonnante de périphériques matériels personnalisés depuis des contrôleurs aux compositeurs algorithmiques et au-delà.

Circuit d’émetteur

Il est nécessaire d’utiliser une interface MIDI pour envoyer des messages MIDI d’un Arduino à un synthétiseur, à une station de travail audio-numérique ou à un autre appareil MIDI. Heureusement, il est facile (et peu coûteux) de créer un circuit simple qui peut gérer la sortie MIDI. Le montage peut être réalisé sur une platine sans soudure pour l’expérimentation ou une version permanente peut être soudée sur un circuit imprimé (PCB). Les utilisateurs qui sont nouveaux à l’électronique trouveront leur bonheur sur les différents sites de vente spécialisés sur Internet.

♦ Un exemple pratique appliqué à la musique électronique : Easy MIDI Note Player

Ce court didacticiel montre comment envoyer simplement des notes MIDI à partir d’une carte Arduino/Genuino Uno R3 vers un instrument MIDI connecté via un câble MIDI standard (DIN à 5 broches).

Matériel et logiciel requis

  • Une carte Arduino/Genuino Uno (une officielle, ou une moins chère mais vraiment compatible, ou que vous pouvez réaliser vous-même car elle est open source)
  • Une prise (jack) femelle MIDI
  • Deux résistances de 220 Ω
  • Fils de raccordement
  • Une carte de prototypage (sans soudure de préférence)
  • Périphérique fonctionnel et câble mâle MIDI (en option, pour les tests)
  • Et le logiciel Arduino IDE (Integrated Development Environment) à « installer » sur votre ordinateur sous GNU/Linux, ou Mac OS – Windows

Circuit électronique

Ce schéma montre comment utiliser la broche de transmission série (Tx1) de la carte Arduino pour envoyer des données de note MIDI. Si ce circuit est connecté à un synthétiseur MIDI ou équivalent, Il jouera en séquence sur 5 octaves les notes F1# (0x1E en Hex soit 30 en Décimal) à F6# (0x5A en Hex soit 90 en Décimal). Branchez un câble MIDI à la prise, puis à un synthé MIDI, et écoutez les gammes jouées automatiquement. Voir la correspondance entre les notes de musique et le code MIDI associés (source Wikipédia.fr).
Toutes les prises (jacks) MIDI sont de type femelle et tous les câbles MIDI sont de type mâles (sauf les rallonges M/F), comme défini par la spécification officielle du standard MIDI.

Voici comment raccorder la prise (jack) à la carte Arduino/Genuino Uno :
  • Jack MIDI – broche 5 connecté à Digital Pin 1 à travers une résistance de 220 Ω
  • Jack MIDI  – broche 2 connecté à la terre (masse)
  • Jack MIDI – broche 4 connecté au +5V à travers une résistance de 220 Ω

Arduino – Midi Note Player : Plan d’ensemble réalisé avec Fritzing

Fritzing est un projet open source conçu pour les « faiseurs » afin de les aider dans la transition d’un prototype électronique vers un projet fini.

Destiné aux utilisateurs qui veulent produire ou documenter des circuits et des expériences électroniques, on commence par construire un prototype physique, puis on le recrée avec l’éditeur graphique de Fritzing. De là, on peut générer un schéma, un dessin PCB et les fichiers de production PCB (printed circuit board). Fritzing est disponible pour les systèmes d’exploitation libres GNU/Linux, et propriétaires Mac OS et Windows.

Schéma simplifié

Arduino – Midi Note Player : Schéma simplifié réalisé avec Fritzing

Code / Arduino IDE (Integrated Development Environment)

Passons maintenant au programme. La sortie MIDI Arduino peut être réalisée avec quelques lignes de code ! Considérez comment vous pourriez utiliser le code standard de cet exemple pour développer un générateur algorithmique simple (peut-être en utilisant la fonction Arduino random ()) ou un programme qui produit des accords, des échelles exotiques, des roulements de batterie, ou tout autre chose musicale.

Bien qu’il soit généralement plus pratique d’utiliser une bibliothèque MIDI toute prête (qui sort du cadre de cet article) pour programmer des sketches MIDI sur un Arduino/Genuino, le code ci-dessous donne une esquisse « pure » de bas niveau pour montrer comment les octets MIDI sont traités. Si vous avez déjà programmé des applications MIDI pour GNU/Linux, Mac OS ou Windows, vous serez agréablement surpris car la sortie MIDI peut être obtenue avec quelques lignes de code sur un Arduino/Genuino.

Si vous ne l’avez pas encore fait, assurez-vous de télécharger le logiciel Arduino IDE (Integrated Development Environment). Ensuite, exécutez le logiciel Arduino IDE sur votre ordinateur et sélectionnez Fichier… Nouveau et saisissez le code décrit ci-dessous.

Arduino IDE – Midi Note Player : Programme et commentaires

♦ Prochaines étapes 💡

Bien que cette introduction soit nécessairement limitée, elle constitue la base de nombreuses possibilités très intéressantes, notamment la composition algorithmique, l’automatisation et le contrôle en temps réel.
La couverture détaillée des concepts Arduino/Genuino MIDI et Audio est fournie, par exemple, dans le livre Arduino for Musicians: A Complete Guide to Arduino and Teensy Microcontrollers, ainsi que par de nombreuses ressources en ligne d’articles, de livres et de tutoriels.