Table des matières:

Une autre boîte MIDI vers CV : 7 étapes (avec photos)
Une autre boîte MIDI vers CV : 7 étapes (avec photos)

Vidéo: Une autre boîte MIDI vers CV : 7 étapes (avec photos)

Vidéo: Une autre boîte MIDI vers CV : 7 étapes (avec photos)
Vidéo: Comment utiliser un clavier maitre midi et cv ? [ Arturia Keystep Pro ] 2024, Juillet
Anonim
Une autre boîte MIDI vers CV
Une autre boîte MIDI vers CV

Une autre boîte MIDI to CV est un projet que j'ai développé lorsqu'un Korg MS10 a frappé à ma porte et a eu lieu dans mon studio. Étant donné que ma configuration est fortement liée au MIDI pour automatiser et synchroniser tous les instruments, lorsque j'ai acheté le MS10, le premier problème auquel j'ai dû faire face était de savoir comment mettre en œuvre un tel contrôle.

Les Korg MS20/10 ne sont pas les synthés les plus faciles à implémenter en MIDI: tout d'abord, ils reposent sur le contrôle Hz/V (corrélation linéaire entre la tension de contrôle et la fréquence de note), au lieu d'oc/V (1V par octave); Deuxièmement, pour déclencher une note, vous devez envoyer un signal de porte négatif et court-circuiter l'entrée à la masse (S-Trig), pas un signal +5 V (V-trig).

Il existe diverses solutions commerciales pour contrôler de tels instruments de nos jours (par exemple Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) mais je suis un salaud pas cher et même 100 euros c'est trop pour un appareil "qui ne sonne pas":).

Nous y sommes alors: laissez-moi vous montrer comment construire une boîte MIDI vers CV à petit budget pour contrôler/automatiser la hauteur, le gate, la vélocité et la fréquence de coupure d'un synthé pré-MIDI avec un contrôleur MIDI externe (clavier, DAW, séquenceur ou autre).

"Et le nouveau MS20 mini ?"

Comme presque tout le monde le sait, le nouveau MS20 est en fait compatible MIDI: IN avec un connecteur MIDI à 5 pôles et IN/OUT avec un connecteur USB.

"Alors, si j'ai un MS20 mini ce truc ne sert à rien !"

Et bien non. Le MS20 mini reconnaît uniquement les messages d'activation/désactivation des notes et le clavier n'est pas sensible à la vélocité. Il n'y a aucun moyen de surmonter cela avec le clavier vintage ou mini MS10/20, mais avec une boîte midi et un clavier sensible à la vélocité, vous êtes en or. De plus, avec la boîte MIDI, vous pouvez automatiser la coupure du filtre (ou tout autre paramètre contrôlable en tension) ou le faire moduler par la note MIDI entrante sur la vélocité. Encore une fois, le seul canal MIDI auquel répond le MS20 mini est le canal 1. Avec cette boîte, vous pouvez également dépasser cette limite.

"Et si j'avais un synthé Oct/V ?"

Aucun problème! Le code que j'ai écrit est compatible avec les synthétiseurs Oct/V (non testé, mais je suis convaincu que cela fonctionnera immédiatement;)).

Étape 1: !! Note de prudence - Avis de non-responsabilité

Votre équipement est très précieux et ne doit pas être utilisé pour effectuer des tests.

Jouer avec l'électricité peut endommager gravement votre équipement ou vous blesser.

Je ne peux pas être tenu responsable des dommages causés à votre équipement/matériel ou même à vous-même provenant de l'un des logiciels ou schémas ou informations ou liens que j'ai signalés dans cette instructable.

Tu étais prévenu!

Étape 2: Ingénierie du matériel

Arduino est pratique lorsqu'il s'agit de projets comme celui-ci. L'existence d'une grande communauté et de très bonnes bibliothèques couvrant presque toutes les tâches courantes en font le bon choix. Ici, la carte sera programmée de manière à lire les données MIDI entrantes, puis à envoyer les tensions appropriées au pilotage:

- Pitch, en convertissant une sortie pwm en une tension analogique pour piloter le VCO via un convertisseur numérique-analogique (DAC)

- Velocity, en filtrant une sortie pwm pour piloter le VCA avec un simple filtre RC

- Fréquence de coupure du filtre, en filtrant une sortie pwm pour piloter le VCF avec un simple filtre RC

- Gate, directement depuis une sortie numérique en cas de V-trig (mettre un 1Kohm en série avec la sortie pour réduire le drain de courant) ou par un simple switch transistor pnp hors de la sortie numérique (voir schéma joint à l'étape des schémas).

Arduino n'est pas capable de produire directement des tensions constantes, mais des impulsions 0/+5 V avec différentes périodes (PWM). Nous sommes dans le besoin de convertisseurs numérique-analogique (DAC) pour le pourpouse. Les filtres RC sont le DAC le plus simple auquel je puisse penser. Un filtre RC est suffisant pour l'amplificateur et le filtre commandés en tension (VCA et VCF). Les filtres RC sont conçus pour aboutir à une fréquence de coupure < 20 Hz (fréquence audible la plus basse).

J'ai fait quelques tests avec des condensateurs non polarisés de faible capacité et j'ai terminé avec une valeur de capacité de 0,1 uF pour être le meilleur ajustement. Testé bien sur un MS20 MKII.

Malheureusement, nous ne pouvons pas compter sur un filtre RC pour piloter l'oscillateur commandé en tension (VCO) car il ne serait pas assez précis (en échelle Hz/V, à l'extrémité inférieure deux demi-tons adiacend diffèrent de moins de 0,02 V; en V /oct deux demi-tons adiacents diffèrent pour 0,083 V); nous allons utiliser un IC DAC (MPC4725) pour cela.

Limites connues

En limitant la tension d'entraînement à 5 V (la tension de sortie de l'Arduino), la plage complète de 0 à 5 V est couverte pour la vitesse; la coupure est à moitié couverte (-5V à +5V); la gamme VCO est partiellement couverte étant donné qu'en Hz/V une tension de 8 V serait nécessaire pour atteindre le 440 Hz A4. Avec une limite de sortie de 5V, nous pouvons monter l'oscillateur jusqu'à la fréquence D4 en Hz/V.

Étape 3: Liste des composants

Liste des composants
Liste des composants
Liste des composants
Liste des composants
Liste des composants
Liste des composants

Vous avez besoin de:

1X Arduino UNO (ou nano)

1X carte DAC MPC4725

4 connecteurs mono 1/8" ou 1/4"

1X connecteur MIDI

Optocoupleur 1X 6N138

1X 1N4148 diode

Résistance 1X 220 ohm 1/4 W

Résistance 1X 470 ohms 1/4 W

Résistance 1X 10K ohm 1/4 W

Résistance 4X 1K ohm 1/4 W

Condensateur 2X 0,1 uF

Transistor 1X BC547 pnp (en cas de S-trig)

1X boîtier ABS (au moins 55 x 70 x 100 mm)

… et bien sûr une planche à pain ou une planche à découper, du fer à souder, du fil à souder et des câbles (2 mètres de 28 AWG devraient suffire).

Notez que dans les images ci-dessus, mon prototype monte des capuchons électrolytiques de 100 uF, mais ils sont trop lents en raison du temps de charge de la capacité. Une capacité de 0,1 uF est le bon choix.

J'ai utilisé un connecteur supplémentaire pour alimenter mon arduino; il n'est pas nécessaire de pouvoir alimenter le microcontrôleur directement via le connecteur mini USB intégré.

Étape 4: Connexions/Schémas

Connexions/Schémas
Connexions/Schémas
Connexions/Schémas
Connexions/Schémas
Connexions/Schémas
Connexions/Schémas

ENTRÉE MIDI

Le circuit MIDI IN est simple et bien décrit sur le net. Prenez cet excellent instructable sur MIDI et Arduino par Amanda Gassaei, par exemple. J'ai fait le nième schéma sur le sujet de toute façon.

Notez que j'ai ajouté un commutateur dans le schéma MIDI IN (commutateur 1): cela est nécessaire lors du téléchargement d'un nouveau sketch sur Arduino car l'opto interfère avec la ligne RX même sans messages midi entrants. Vous devez ouvrir le commutateur avant de télécharger votre croquis ou l'IDE ne parviendra pas à télécharger le nouveau croquis.

Vous pouvez éventuellement modifier le croquis pour utiliser une communication logicielle série.

DAC, Filtre RC, Synthétiseur

La connexion pour le DAC, les filtres RC et le synthé (pitch, gate et vélocité) est indiquée dans le schéma du haut. J'ai pris pour référence un panneau de brassage Korg MS20, mais j'ai tout testé sur un MS10 aussi. La connexion directe du CV de vélocité au point de patch "gain initial" du VCA n'a aucun effet (je dois creuser cette chose plus loin) mais si vous le connectez au point de patch "Total" et augmentez votre total de pots externes (MG/T. EXT), vous entendrez de belles variations de tonalité en fonction de la vélocité de la note.

Mes schémas (et mon prototype aussi) n'utilisent pas de résistance de limitation de courant à la sortie du DAC, mais c'est toujours une bonne idée d'en placer une pour assurer une longue durée de vie à vos circuits. Une résistance de 220 ohms suffira.

Notez que dans les schémas ci-dessus, des capuchons électrolytiques de 100 uF sont signalés, mais ils sont trop lents en raison du temps de charge de la capacité. Les capuchons non polarisés de 0,1 uF sont le bon choix.

Porte de sortie

Dans le cas où vous allez séquencer un synthé compatible avec les signaux V-Trig (voltage trigger), une résistance série 1k ohm pour réduire le drain de courant sera suffisante; dans le cas d'un synthé S-Trig (switch trigger), vous pouvez utiliser un simple circuit de commutation PNP (voir schéma ci-joint).

Étape 5: Le logiciel

Les logiciels
Les logiciels

J'ai essayé de garder le croquis aussi clair et "lisible" que possible.

J'ai travaillé sur une simple feuille de calcul que j'ai trouvée ICI pour dériver une courbe Tension Vs Note# et utiliser directement l'équation dans le microcontrôleur. L'équation est montrée dans le graphique en haut. J'ai utilisé C2 comme note de référence pour obtenir une relation de note Voltage Vs conforme à Arp/Korg (C0 - 0,25V, C1 - 0,5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V et ainsi de suite).

J'ai dû définir une variable avec laquelle jouer afin d'obtenir un bon réglage… prenez votre temps pour trouver les bonnes valeurs. Un accordeur est nécessaire.

Nous allons augmenter la fréquence pwm d'une minuterie/compteur pour réduire l'ondulation des tensions de sortie (aussi simple qu'une ligne de code).

Pour que le code reste réactif aux octets entrants, le code s'appuie fortement sur les rappels de fonctions.

Vous avez besoin des bibliothèques "Adafruit_MCP4725.h" de Sparkfun et "MIDI.h" de Forty Seven Effects/Francois Best pour compiler ! (Un grand merci à ces personnes: sans leurs efforts ce projet n'aurait jamais vu le jour !).

Je suppose que vous avez Arduino IDE prêt sur votre PC et que vous savez comment charger un croquis sur votre carte Arduino.

Je ne suis pas un codeur dans la vraie vie, il est donc fort probable que le sketch puisse être écrit d'une meilleure manière. Je suis ouvert aux suggestions (j'apprends toujours quelque chose en regardant le code du codeur;))

Des notes supplémentaires sont écrites dans le code ci-dessous. Installez les deux bibliothèques, ouvrez le code joint sur votre IDE, connectez votre carte, sélectionnez le type de carte et téléchargez.

Étape 6: Dépannage

Même si le projet est de bas niveau, il y a des tonnes de choses qui pourraient mal tourner. Si vous rencontrez des problèmes en essayant de créer votre propre boîte MIDI vers CV, suivez ces étapes:

1. Assurez-vous qu'Arduino reçoit correctement les messages MIDI

Vérifiez le canal de sortie vers lequel votre clavier, DAW ou séquenceur envoie les messages MIDI. Arduino écoute le canal 1 par défaut. Téléchargez "TEST_MIDI_IN.ino" pour lire un message noteON entrant.

2. Vérifiez vos câblages

… ou encore mieux: vérifiez-les trois fois ! Gardez votre temps pour cela.

3. Vérifiez l'adresse et la sortie du DAC

Le DAC pourrait être configuré pour recevoir des données à une adresse différente de celle que j'ai définie dans le croquis. Vérifiez l'adresse en exécutant "I2C_scanner.ino". Si une erreur "aucun périphérique trouvé" se produit, vérifiez votre câblage DAC (les entrées SDA et SCL sont différentes sur différentes cartes Arduino !). Si vous avez un oscillocope (même ces oscilloscopes numériques à 15 euros sont assez bons… et amusants à jouer !)

N'oubliez pas que lorsqu'un optocoupleur est connecté à l'entrée RX de votre carte arduino, vous ne pourrez pas télécharger de nouveau croquis !! Placez un interrupteur (ce pourrait être un simple cavalier) avant la broche RX.

La plupart de ces croquis de test ne sont pas de moi ou du moins basés sur du matériel en ligne existant.

Cette chose me semble fausse !?

Ce n'est pas un vrai problème: l'équation dérivée pour le contrôle Hz/V est "idéale". Une certaine dérive du comportement idéal peut provenir du +5V que vous fournissez n'étant pas 5.000V, du DAC et de l'instrument lui-même. Pour résoudre vous devez agir sur votre potentiomètre synth tune/fine tune et "voilà" une commande MIDI parfaitement réglée;)

Étape 7: Liens utiles

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Conseillé: