Convertisseur Midi/CV
- 45 réponses
- 4 participants
- 3 531 vues
- 8 followers

redpill

faute d'avoir trouver quelque chose d'approchant (ou trop complexe) je me suis dis qu'il fallait que je me remonte les manches. Je veux vraiment le convertisseur le plus bete qui soit (dans un premiers temps du moins) qui convertit un message midi et une tension (cv).
L'idée étant d'utiliser un atmega et son périphérique UART. Il réceptionne les 3 bytes (channel, note, velocity) le dernier étant ignoré. Si le canal est bon, il décode le second byte et envois la valeur correspondante sur un DAC 8 bit (surement celui là).
parallèlement a ca, fait un circuit de gate qui doit rester a l'état haut tout le temps que la touche est maintenus.
déja est ce que 8bit serait suffisant ? ca fait une résolution de 19.5mV pour 1V/octave (j'ai pas poussé plus loins mais ca m'a l'air acceptable)
est ce que la méthode (interuption) vous semble logique ?
rumorofsmoke.github.io/
- 1
- 2

Rémy M. (chimimic)

je viens juste de finir un module de ce genre, je mettrai l'article en ligne dimanche prochain. C'est avec un PIC mais n'importe quel uC avec module UART peut faire l'affaire. Pour la réception des données MIDI, je te conseille vivement de bosser avec les interruptions et un buffer circulaire. Pour ma part j'utilise un convertisseur numérique externe mais tu peux très bien utiliser un réseau R/2R sur un port 7 ou 8 bits de ton uC.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill

je vais aller me document sur ce principe de buffer circulaire, je ne connais pas.
rumorofsmoke.github.io/

Rémy M. (chimimic)

Pour ce qui est de la résolution du DAC, j'utilise un MCP4921 (une sortie) ou MCP4922 (deux sorties). Ces DAC sont de type 12 bits mais je les utilise avec des données 7 bits (valeur MIDI oblige). On peut en utiliser bien d'autres, je suis resté sur ces références car j'avais déjà utilisé le MCP4921 et je l'ai en stock.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

adrienf

http://www.acxsynth.com/midi2cv/midi2cvfr.htm

Rémy M. (chimimic)

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Rémy M. (chimimic)

Interface MIDI 017 - Convertisseur MIDI / CV-Gate
Le soft est fonctionnel (test proto OK), il me reste juste à lui ajouter la fonction de sauvegarde de la note de base qu'on peut spécifier en mode "Learn".
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Cpierredon

je sais qu'il y a plusieurs normes pour la relation note/tension. Il serait intéressant d'en savoir plus et d'adapter le circuit pour répondre à ces normes.
M.bareille à pondu ça :
http://m.bareille.free.fr/mcv628/mcv628.html
http://www.pierredon.free.fr

Rémy M. (chimimic)

oui, déjà vu celui-là aussi, et bien d'autres

Il existe en effet plusieurs normes, j'en parle sur ma page Commande CV-Gate 001 :
- Hz (ou kHz) / volt
- octave / volt
avec pour ce dernier quelques variantes :
- 1 V / octave (le plus répandu)
- 1,2 V / octave
- 0,32 V / octave
Sans parler des plages de tension (0 V à +5 V, -5 V à +5 V ou 0 V à +10 V)
J'ai décidé de m'attaquer un peu plus tard à une version qui englobe l'ensemble de ces fonctionnalités, mais je ne conserverai pas le 16F628, cause taille mémoire et nombre broches

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

Rémy M. (chimimic)

Mais je ne vais pas m'étaler ici pour ne pas pourrir le sujet de notre ami Redpill

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill

J'avais effectivement vus le projet d' Alain Coupel, trés interessant mais largement tros gros pour mon projet meme si je suis pas obligé de tout monter. L'idée de me casser un peu la tete sur ce projet m'interesse fortement d'autan que j'ai jamais rien fait de définitif avec un µC. Ca me semble en plus pas forcement compliqué. Néamoins comme je sens l'envie d'un synthé modulaire pointé sa truffe humide, il est pas impossible que je retourne vers ce module.
Le seul petit soucis que je pourrais voir c'est la tension de 5V qui oblige a ajouter un étage de gain si on veut monter dans les octaves et modifier un peu les valeurs sur le DAC. Mais bon rien d' insurmontable.
Pour le code a proprement parlé, je pensais faire array de bytes , recepetioner les imformation dans ce tableau. Si les premiers imformation noteOn et Channel sont ok, traiter le reste de l'imformation et activer les gates/triggers.
Les impératif sont vraiment la taille et l’efficacité. Comme c'est pour un projet qui j’espère finira dans une petite valise (dans l'esprit EMS) il ne faut pas que ce soit trop imposant (il y a déja du monde).
rumorofsmoke.github.io/

Rémy M. (chimimic)


Dans un premier temps, et sachant que tu "débutes" avec les microcontrôleurs, je te conseille de commencer avec un projet simple, du style "allumer une LED sur réception d'un événement NoteOn et l'éteindre sur réception d'un événement NoteOff". Une fois cette base acquise (réception données sur UART et traitement simple des octets reçus), tu pourras jouer comme bon te semble avec d'autres périphériques (CNA ou autres).
Pour une étendue plus grande de la tension de sortie CV, tu pourras voir ça après.
Oui, le traitement des infos reçues peut se faire via un tableau d'octets. Cela n'a rien d'obligatoire mais permet de structurer plus proprement ton programme, tu t'y retrouveras plus facilement.
Bon courage pour la suite !
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill

j'ai meme pour projet un sequencer AVR avec l'enregistrement des patterns dans l'eeprom mais faut déja que je m'occupe de cette histoire de midi.
je comptais de tout facon faire par étape comme le suggere.
rumorofsmoke.github.io/
[ Dernière édition du message le 25/09/2014 à 13:24:15 ]

Rémy M. (chimimic)


Dans ce cas tu ne devrais pas avoir trop de mal à avancer dans ce genre de projet...
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill


je n'en étais pas encore arrivé a la tension de référence pour un 5V stable et propre mais faudra que je pense a ca également. Je sais que ces tensions de références peuvent couter cher. J'ai commencer un peu a voir le code mais je vais atteindre dimanche et voir comment tu as fais si j'arrive a déchiffrer le Pascal.
J'ai oublié mais une fois le code fonctionnel j'ajouterais la fonction pitchbend.
SInon ce qui pourra etre intéressant c'est de pouvoir paramétrer le canal depuis le micropressor avec le minimun de bouton. Mon idée était d'utiliser un DIPswitch mais c'est peut etre plus ergonomique et élégant de faire depuis le uC, mais sans visualisation ca risque d'etre compliqué. A voir. En tout cas ca devient intéressant.
rumorofsmoke.github.io/

Rémy M. (chimimic)

Pour ce qui est de la configuration, on peut prendre bien des directions différentes. Auto-paramétrage, configuration via des sysex, menu sur écran LCD, microswitches, etc...
Pour le code source, je ne sais pas encore si je vais continuer à le diffuser de façon systématique pour l'ensemble de mes projets, pour des raisons que je ne souhaite pas trop étaler ici (j'en dirai plus sur mon site un de ces quatre). Mais si d'une manière ou d'une autre je peux aider, il va de soi que je continuerai de répondre aux questions

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill

c'est dommage pour le code, j'avais regarder celui que tu avais fait pour le switcher multi-cannaux (avec écriture eeprom) et avait trouvé des points interessant. Les codes accessibles ca me permets de voir si je fais fausse route ou si j'ai la bonne méthode.
je vais commander quelques optocoupleur et des prises midi. Je postera l’avancement du code si ça intéresse du monde, le schema n'aura rien de folichon en soit.
rumorofsmoke.github.io/
[ Dernière édition du message le 27/09/2014 à 21:20:05 ]

Rémy M. (chimimic)

Déja detecter et réception le byte noteon avec le bon cannal, ensuite afficher la note sur un LCD et viendra ensuite le reste.
Etape par étape = bonne méthode !
L'affichage sur écran LCD des événements décodés est une excellente chose, ça permet de voir si ça tourne rond quand on envoie quelques notes isolées et plusieurs notes en rafale.
le schema n'aura rien de folichon en soit
Du moment que ça fasse ce que tu veux, c'est bien l'essentiel, non ?

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill


rumorofsmoke.github.io/

Rémy M. (chimimic)


Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill

https://github.com/ThebigDickhead/AVR_PROG/blob/master/midi_to_cv/midi_test.c
Faut que je regarde un peu plus le protocol midi (si il y a des bits "start/stop" ou de parité) ou seulement une donné 8 bits.
je dois ajouter une routine pour effacer le "noteOn/Off" lorsqu'il n'y a pas eu de commande depuis longtemps (histoire de pas piquer une crise pour rien).
Reste plus qu'a atteindre l'optocoupleur et la prise DIN.
rumorofsmoke.github.io/

redpill

je me suis pris la tete avec la prise midi et l'optocoupler mais ca fonctionne comme prévus. Le choix des cannaux et tout le tointoin. Chose agaçante par contre, l'indexation des cannaux commence a 00 dans la machine mais a 01 pour l'interface utilisateur.
edit : j'ai meme réussis a afficher la note sur le LCD. C'est en bonne route on dirait (jusqu'a ce que Murphy me balance des battons dans les roues

rumorofsmoke.github.io/
[ Dernière édition du message le 16/10/2014 à 18:11:16 ]

redpill

Le projet initiale était de se passer du byte de velocity et en fait il serait peut etre bon de le garder pour commander d'autres paramètres.
finalement ca se profile plutot pas mal, va rester ensuite l'écriture du DAC.
rumorofsmoke.github.io/
[ Dernière édition du message le 18/10/2014 à 15:01:11 ]

Rémy M. (chimimic)

Comme tu disposes d'une variable byte pour mémoriser l'octet de vélocité, autant le garder, on ne sait jamais.
Bon courage pour la suite, qui ne sera pas forcément plus difficile. Faut juste savoir quoi envoyer au DAC, et là ça dépend des références de DAC

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

redpill


je pense que le plus compliqué va etre la valeur a sortir sur le DAC tout en conservant le 1V/octave avec une marge d'erreur la plus mimine. Et là effectivement va falloir une tension hyper propre et stable pour la référence du DAC.
Peut etre qu'un DAC integré serait l'idéale, va falloir que je regarde avec les contraintes de place.
Effectivement, j'y avais pas penser lors du design analogique du synthé mais la vélocitée pourrait etre un parametre interessant a conserver pour un éventuel ajout dans le futur.
rumorofsmoke.github.io/
- < Liste des sujets
- Charte
- 1
- 2