vendredi 18 décembre 2020

Jouer des fichiers MIDI avec Arduino

Ce projet consiste à utiliser une carte Arduino Uno pour lire des fichier MIDI préalablement enregistrés sur une carte SD afin que le contenu de ces fichiers soit joué en temps réel par un clavier MIDI.

Le circuit

La carte Arduino UNO est branchée, d'une part, à un lecteur de cartes SD et, d'autre part, à un clavier MIDI.

J'ai utilisé un module de carte SD bas de gamme qui communique en SPI avec un niveau logique de 3,3 V, ce qui m'a obligé à utiliser un circuit intégré 4050 pour abaisser le niveau logique des broches SCK (13), MOSI (11) et CS (10) de l'Arduino Uno.


  • Broche GND du module carte SD: Broche GND de l'Arduino Uno
  • Broche +3.3 du module carte SD: Broche 3.3 V de l'Arduino Uno
  • Broche CS du module carte SD: broche 2 du 4050
  • Broche MOSI du module carte SD: broche 4 du 4050
  • Broche SCK du module carte SD: broche 6 du 4050
  • Broche MISO du module carte SD: broche 12 de l'Arduino Uno

  • Broche 1 du 4050 : sortie 3,3 V de l'Arduino Uno
  • Broche 3 du 4050: broche 10 de l'Arduino Uno
  • Broche 5 du 4050: broche 11 de l'Arduino Uno
  • Broche 7 du 4050: broche 13 de l'Arduino Uno
  • Broches 8, 9, 11 et 14 du 4050: broche GND de l'Arduino Uno

Pour la connexion avec le clavier MIDI, j'ai utilisé l'interface MIDI que j'avais fabriquée il y a quelques années, mais on peut se contenter d'un circuit assez minimaliste constitué de deux résistances de 220 Ω puisqu'on se contente d'envoyer des données vers le clavier, sans chercher à capter les données qui proviennent du clavier. Les données émise sur la broche TX de l'Arduino Uno seront ainsi acheminées à l'entrée MIDI IN du clavier.

Installation des bibliothèques

J'ai d'abord installé la bibliothèque MD_MIDIFile de Majic Designs (il faut l'installer à partir du fichier zip car elle n'est pas disponible dans le gestionnaire de bibliothèques).

Il faut également installer la bibliothèque SDFat de Bill Greiman (je suppose que la bibliothèque SD régulière est trop gourmande en mémoire pour être utilisée en même temps que la bibliothèque MIDIFile). Attention, toutefois: au moment où j'ai fait mes tests, la version la plus récente de SDFat était incompatible avec MD_MIDIFile (erreur de compilation causée par la méthode chdir): j'ai dû installer une version plus ancienne de SDFat (1.1.4), ce qui est très simple avec le gestionnaire de bibliothèque de l'IDE Arduino.


L'exemple "MD_MIDIFile_Play"

Parmi les exemples fournis avec la bibliothèque MD_MIDIFile, celui qui s'intitule "MD_MIDIFile_Play" s'avère le plus intéressant pour un premier essai. Avant de l'utiliser, toutefois, il faut copier sur la carte SD les 24 fichiers MIDI qui sont fournis avec la bibliothèque (chemin d'accès: libraries/MD_MIDIFile/examples/SD_Card_Files).


Lors de l'exécution du sketch, les fichiers MIDI sont joués un à la suite de l'autre. J'ai aussi fait quelques essais avec d'autres fichiers MIDI issus de ma collection personnelle: certains d'entre eux ont été correctement exécutés, alors que d'autres sont restés désespérément muets. 

D'autre part, j'ai remarqué que ce message est affiché lors de la compilation du programme: "La mémoire disponible est faible. Des problèmes de stabilité pourraient survenir". De toute évidence, si on désire développer quelque chose d'un peu plus sophistiqué, on aura intérêt à utiliser autre chose qu'un Arduino Uno.

À lire également

Beaucoup d'autres projets MIDI avec l'Arduino:

Yves Pelletier (TwitterFacebook

1 commentaire: