Table des matières:

Contrôleur MIDI Arduino de base : 5 étapes
Contrôleur MIDI Arduino de base : 5 étapes

Vidéo: Contrôleur MIDI Arduino de base : 5 étapes

Vidéo: Contrôleur MIDI Arduino de base : 5 étapes
Vidéo: # 1 Comment construire un contrôleur midi avec un arduino: Le contrôleur diy midi Workshop 2.0... 2024, Novembre
Anonim
Contrôleur MIDI Arduino de base
Contrôleur MIDI Arduino de base

Introduction:

Je suis nouveau dans l'utilisation d'Arduino, mais j'espère élargir mes connaissances en enseignant aux autres et en recevant des commentaires. Il s'agit d'un contrôleur MIDI très basique avec 4 boutons et un potentiomètre. Le schéma de ce projet ressemble à ceci:

1. Construisez la planche à pain

2. Téléchargez le croquis sur l'Arduino

3. Comprendre le MIDI Hairless et la boucle MIDI interne (loopbe1)

4. router votre MIDI vers un DAW (Ableton)

Fournitures

1 x Arduino méga 2560

1 x planche à pain

1 câble USB

1 x potentiomètre

4 x boutons tactiles

4 résistances 120Ohm

14 x câbles de démarrage pour planche à pain

Étape 1: Construire la planche à pain

Construire la planche à pain
Construire la planche à pain
Construire la planche à pain
Construire la planche à pain

Connectez votre maquette pour que tous les composants correspondent à l'image 1 ci-dessus. Chaque bouton doit ressembler à l'image 2. Les entrées des boutons sont 2, 3, 4 et 5 sur l'Arduino et la broche du milieu du potentiomètre est connectée à l'entrée ANALOGIQUE A0.

Étape 2: Téléchargement du croquis

Téléchargement du croquis
Téléchargement du croquis

Copiez et collez le code ci-dessous dans l'IDE Arduino. Sélectionnez la bonne carte sous "outils" et téléchargez le croquis sur l'Arduino.

octet noteON = 144; // note sur commandbyte note; // stockage pour la note en cours de lecture int buttonPin1 = 2; int boutonPin2 = 3; int boutonPin3 = 4; int boutonPin4 = 5; int potPin = A0; boolean currentState = LOW;//stroage pour l'état actuel du bouton booléen lastState = LOW;//stockage pour le dernier état du bouton void setup(){ pinMode(buttonPin1, INPUT); pinMode(boutonPin2, INPUT); pinMode (boutonPin3, INPUT); pinMode (boutonPin4, INPUT); // cette fois, nous allons définir la broche comme INPUT Serial.begin (9600); // initialiser la connexion série } void loop () { int PotVal = analogRead (potPin); vitesse d'octet = map(PotVal, 0, 1023, 0, 127); currentState = digitalRead (boutonPin1); if (currentState == HIGH && lastState == LOW){ MIDImessage(noteON, 60, vélocité);//activer la note 60 avec un délai de vélocité 127 (200);//forme brute du bouton anti-rebond } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//désactiver le délai de la note 60(2);//forme brute du bouton anti-rebond } lastState = currentState; currentState = digitalRead(boutonPin2); if (currentState == HIGH && lastState == LOW){//si le bouton vient d'être pressé MIDImessage(noteON, 61, vélocité);//activer la note 60 avec un délai de vélocité 127 (200);//forme brute du bouton anti-rebond } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//désactiver la note 60 delay(2);//forme brute du bouton anti-rebond } lastState = currentState; currentState = digitalRead(buttonPin3); if (currentState == HIGH && lastState == LOW){//si le bouton vient d'être pressé MIDImessage (noteON, 62, vélocité);//activer la note 60 avec un délai de vélocité 127 (200);//forme brute du bouton anti-rebond } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//désactiver la note 60 delay(2);//forme brute du bouton anti-rebond } lastState = currentState; currentState = digitalRead (boutonPin4); if (currentState == HIGH && lastState == LOW){//si le bouton vient d'être pressé MIDImessage (noteON, 63, vélocité);//activer la note 60 avec un délai de vélocité 127 (200);//forme brute du bouton anti-rebond } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//désactiver la note 60 delay(2);//forme brute du bouton anti-rebond } lastState = currentState; } //envoyer un message MIDI void MIDImessage(commande d'octet, données d'octet1, données d'octet2) { Serial.write(commande); Serial.write(data1); Serial.write(data2); }

Je suis encore très novice dans l'écriture de code en général….. ceux qui ont un peu plus d'expérience pourraient probablement nettoyer cela…

Étape 3: Comprendre les boucles MIDI Hairless et MIDI internes

Comprendre le MIDI Hairless et les boucles MIDI internes
Comprendre le MIDI Hairless et les boucles MIDI internes
Comprendre les boucles MIDI Hairless et MIDI internes
Comprendre les boucles MIDI Hairless et MIDI internes
Comprendre le MIDI Hairless et les boucles MIDI internes
Comprendre le MIDI Hairless et les boucles MIDI internes

L'Arduino doit passer par un pont série tel que Hairless MIDI puis par une boucle MIDI interne telle que loopbe1 (ou bus IAC pour Mac).

Remarque: vous ne pouvez pas télécharger un croquis sur l'Arduino lorsqu'il est connecté au pont série MIDI sans poils.

Sélectionnez votre Arduino dans le port série Hairless MIDI et loopbe1 ou IAC Bus dans la sortie MIDI.

Remarque: assurez-vous que la sourdine n'est pas activée lorsque vous utilisez loopbe1.

Étape 4: connexion à votre DAW

Connexion à votre DAW
Connexion à votre DAW

Si vous recevez un signal vers l'application MIDI Hairless lorsque vous appuyez sur un bouton de la maquette (les voyants clignotent), vous devriez pouvoir envoyer des données MIDI à un DAW. J'ai utilisé Ableton mais n'importe quel DAW devrait fonctionner. Assurez-vous que votre boucle MIDI interne (loopbe1) est activée dans vos préférences DAW (dans Ableton, vous voulez que "track" soit activé). Ensuite, sélectionnez l'une de vos entrées de piste MIDI dans la boucle MIDI (loopbe1) comme indiqué dans l'image ci-dessus.

Étape 5: Jouez

Image
Image

Les boutons fonctionneront désormais comme n'importe quel autre contrôleur MIDI ! Le potentiomètre changera la vélocité des notes envoyées à la DAW. La vidéo (très sombre…) ci-dessus montre un son de piano à queue en action !

Conseillé: