Quelques questions pour un débutant (contrôleur midi)

Bonjour et bienvenue dans le monde Arduino

  1. La liaison MIDI est basée sur une "liaison série asynchrone" c'est à dire qu'il s'agit de faire passer des octets formant des messages sur 1 seul fil.
    Pour cela est par défaut le signal à un niveau de repos "1" (==5V). Avant de transmette chaque octet on commence par marquer le début en plaçant le signal à 0 (=0V) pour un temps T. Puis on positionne le signal pour représenter chacun des bits de l'octet en commençant par le bit de poids faible. Chaque bit dure un temps T. On finit par un bit de stop c'est à dire qu'on laisse le signal dans sa position de repos "1" pour au moins 1 temps T avant de passer à l'octet suivant.
    Le temps T est déterminé par la vitesse de transmission en baud (équivalent dans ce cas au nombre de bits par seconde).
    Le MIDI utilise une transmission à 31250 bits par seconde.

On pourrait utiliser n'importe quelle broche de l'Arduino en utilisant du logiciel pour positionner le signal à 1 ou 1 comme il faut mais cela demanderais beaucoup de ressource du processeur, surtout à la vitesse de 31250 b/s.

Le processeur ATmega contient un fonction de gestion de liaison série câblée en matériel dans le processeur qui fait cela sans perturber l'exécution du code. Il faut quand même un tout petit peu de code pour enchaîner les octets les uns après les autres mais c'est minimum par rapport. De plus cette partie est déjà intégrée dans l'environnement Arduino donc tu n'a besoin que d’appeler des fonctions C de haut niveau facile à utiliser.

Cette fonction matérielle est disponible uniquement sur les broches TX (émission) et RX (réception) de l'Arduino.

Attention : cette liaison série est aussi utilisée pour la communication avec le PC pour le téléchargement du code et le debug par Serial.print()
Corollaire : quand tu t'en sert pour faire du MIDI, tu ne peut plus utiliser cette liaison série pour le debug.

Une Arduino Leonardo ou Mega aurait été plus pratique pour faire du MIDI car la Léonardo possède 1 liaison série en plus de la liaison PC et la Mega en possède 3 de plus.

ne pas oublier que la liaison MIDI nécessite un cablage spécial :

  • 2 résistance de 220 ohms pour l'émission
  • 1 optocoupleur et 1 résistance pour la réception
  1. Tu peux très bien faire ton propre circuit toi même. Dans un premier temps il est plus facile de faire un "shield" maison et de le brancher sur une Arduino toute prête, mais a terme rien n'empêche de faire soi même sa propre carte utilisant le processeur ATmega, les quelques composants indispensables qui vont avec et les composants dont tu as besoin pour ton application personnelle.

Il y à 2 façon de procéder :

a) Tu achètes un ATmega préprogrammé avec le bootloader Arduino. Sur ta carte, il faut que tu prévoit un connecteur pour relier la liaison série du controleur non seulement au MIDI mais aussi à ta UNO (ou un simple adaptateur série USB TTL) afin de pouvoir télécharger ton sketch dans le processeur.

b) Tu achètes un ATmega non pré-programmé et tu le pré-programme toi-même sur breadboard à partir de ta UNO

c) Tu achètes un ATmega non pré-programmé et tu prévoir sur ta carte le connecteur ICSP (+5V, GND, Reset + les 3 signaux du bus SPI) afin de flasher ta carte, soit à l'aide de ta UNO, soit par un programmateur USB (différent de l'adaptateur série USB/TTL)

Bref, plusieurs solutions, aucunes difficultés pour s'en sortir.