Convertisseur Midi/CV
- 45 réponses
- 4 participants
- 3 341 vues
- 8 followers
redpill
2341
AFicionado·a
Membre depuis 17 ans
Sujet de la discussion Posté le 23/09/2014 à 20:57:46Convertisseur Midi/CV
est ce que certains auraient déja travailler sur un projet tel que celui-ci ?
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 ?
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/
redpill
2341
AFicionado·a
Membre depuis 17 ans
31 Posté le 26/10/2014 à 15:29:08
Merci Chimimic.
en fait c'est tout la manipulation que je comprends pas.
pour que je comprenne du coup
On "ré-index" les notes a partir de C0, donc on soustrait 12 a chaque message "note" de facon avoir la bonne référence (par rapport a C0)
Ensuite on mets a l'échelle par rapport a l’intégralité des notes (128).
Et ensuite on voit a quelque quantité de bits sans correspond dans la résolution (8 ou 12bits).
c'est ca ?
J'ai fait quelques tests et évidement avec un gain de 2.2 en sortie, en 8 bits, on tombe sur les bonnes valeurs. Va falloir que je trouve un AOP avec un faible taux d'offset.
Je vais tenter le coup, j'ai trouvé de PCF8591P (j'ai passé 20min a me prendre la tete pour apercevoir que j'avais oublié de mettre une patte a la masse, donc "adresse fausses" ). Ce sont des DAC SPI, mais j'ai l'impression qu'ils sont un peu lent (j'ai une clock assez lente), faudra que je creuse un peu plus le protocol SPI.
Ceci étant, ca a remis en cause le projet de synthé. j'avais l'idée de le faire "simple" mais avec l'histoire de l'octet de velocité ca m'a donner l'idée de faire quelques chose de plus modulaire. Voire avec une matrice numérique (avec mémoires) si j'avais vraiment des ambitions démesurées
http://www.acxsynth.com/matrix/matrixfr.htm
en fait c'est tout la manipulation que je comprends pas.
pour que je comprenne du coup
On "ré-index" les notes a partir de C0, donc on soustrait 12 a chaque message "note" de facon avoir la bonne référence (par rapport a C0)
Ensuite on mets a l'échelle par rapport a l’intégralité des notes (128).
Et ensuite on voit a quelque quantité de bits sans correspond dans la résolution (8 ou 12bits).
c'est ca ?
J'ai fait quelques tests et évidement avec un gain de 2.2 en sortie, en 8 bits, on tombe sur les bonnes valeurs. Va falloir que je trouve un AOP avec un faible taux d'offset.
Je vais tenter le coup, j'ai trouvé de PCF8591P (j'ai passé 20min a me prendre la tete pour apercevoir que j'avais oublié de mettre une patte a la masse, donc "adresse fausses" ). Ce sont des DAC SPI, mais j'ai l'impression qu'ils sont un peu lent (j'ai une clock assez lente), faudra que je creuse un peu plus le protocol SPI.
Ceci étant, ca a remis en cause le projet de synthé. j'avais l'idée de le faire "simple" mais avec l'histoire de l'octet de velocité ca m'a donner l'idée de faire quelques chose de plus modulaire. Voire avec une matrice numérique (avec mémoires) si j'avais vraiment des ambitions démesurées
http://www.acxsynth.com/matrix/matrixfr.htm
rumorofsmoke.github.io/
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
32 Posté le 26/10/2014 à 21:10:01
Citation :
On "ré-index" les notes a partir de C0, donc on soustrait 12 a chaque message "note" de facon avoir la bonne référence (par rapport a C0) Ensuite on mets a l'échelle par rapport a l’intégralité des notes (128). Et ensuite on voit a quelque quantité de bits sans correspond dans la résolution (8 ou 12bits). c'est ca ?
Il faut juste diviser la plage de tension 0-5 V en 128 tranches si tu veux couvrir toutes les notes.
Première note (C0) -> 0 V
Seconde note (C#0) -> (5 V / 128) * 1
Troisième note (D0) -> (5 V / 128) * 2
Quatrième note (D#0) -> (5 V / 128) * 3
etc.
Citation :
J'ai fait quelques tests et évidement avec un gain de 2.2 en sortie, en 8 bits, on tombe sur les bonnes valeurs.
Super, bravo !
Citation :
Je vais tenter le coup, j'ai trouvé de PCF8591P (j'ai passé 20min a me prendre la tete pour apercevoir que j'avais oublié de mettre une patte a la masse, donc "adresse fausses" ). Ce sont des DAC SPI, mais j'ai l'impression qu'ils sont un peu lent (j'ai une clock assez lente), faudra que je creuse un peu plus le protocol SPI.
La vitesse de conversion est spécifiée dans la doc fabricant (il est de l'ordre de une à quelques us). Si la fréquence d'horloge de ton bus SPI est de 400 kHz, la mise à jour de ta tension de sortie sera assez rapide. Si tu utilise une routine toute faite que tu trouves trop lente, rien ne t'empêche d'en créer une de ton cru, c'est très simple à faire.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
redpill
2341
AFicionado·a
Membre depuis 17 ans
33 Posté le 27/10/2014 à 14:14:14
en fait je me suis trompé c'est un dac I2C, mais il me semble assez rapide. De tout facon la version finale sera surement en 12Bit avec un petit MCP4822 ou equivalent.
Quand je dis "test" je veux dire que j'ai fait des calculs pour voir si ca collait, mais pas encore fait en vrai. En fait j'ai essayé une fonction mais j'ai mal choisis le type de variable. Je viens de vérifier avec un petit programe et effectivement si la variable ne vas pas dans le négatif, elle va pas me donner grand chose aprés la divion par 128
ceci étant avec suelement le max et le min en guise de note (pour voir la réactivité du bus) ca marche bien.
Ceci étant, ca bugg pas mal en l'état.Le LCD dans l’interruption doit bien mettre le bazar.
Quand je dis "test" je veux dire que j'ai fait des calculs pour voir si ca collait, mais pas encore fait en vrai. En fait j'ai essayé une fonction mais j'ai mal choisis le type de variable. Je viens de vérifier avec un petit programe et effectivement si la variable ne vas pas dans le négatif, elle va pas me donner grand chose aprés la divion par 128
ceci étant avec suelement le max et le min en guise de note (pour voir la réactivité du bus) ca marche bien.
Ceci étant, ca bugg pas mal en l'état.Le LCD dans l’interruption doit bien mettre le bazar.
rumorofsmoke.github.io/
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
34 Posté le 27/10/2014 à 22:33:28
Citation :
Le LCD dans l’interruption doit bien mettre le bazar.
Ca dépend de quelle interruption tu parles. S'il s'agit de l'interruption de l'UART, alors oui, ça peut poser problème. Mieux vaut laisser la priorité aux événements entrant, et utiliser le temps libre pour les ressources "affichage".
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
redpill
2341
AFicionado·a
Membre depuis 17 ans
35 Posté le 28/10/2014 à 15:41:40
le lcd étati surtout là en guise de "débugg", je vais tacher maitenant de supprimer le superflus.
j'ai tester en "vrai", et le résutlat est assez mitigé (en 8bit du moins), la tension de sortie est quand meme un peu loins des résultats attendus. Sur le C, ca tombe pile poil mais évidement sur les autres, il y a un facteur d'erreur plus ou moins grande.
je me suis servis de ce tableau : http://www.experimentalistsanonymous.com/ve3wwg/doku.php?id=midi_note_values
j'ai tester en "vrai", et le résutlat est assez mitigé (en 8bit du moins), la tension de sortie est quand meme un peu loins des résultats attendus. Sur le C, ca tombe pile poil mais évidement sur les autres, il y a un facteur d'erreur plus ou moins grande.
je me suis servis de ce tableau : http://www.experimentalistsanonymous.com/ve3wwg/doku.php?id=midi_note_values
rumorofsmoke.github.io/
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
36 Posté le 28/10/2014 à 17:46:48
Dans un premier temps, assures-toi que les infos fixes envoyées au DAC (sans tenir compte des données MIDI reçues) provoquent la tension de sortie fixe attendue. Par exemple $00 pour 0 V et $FF pour +5 V.
Ensuite, multiplie simplement par deux la valeur de la donnée de hauteur MIDI reçue avant de l'envoyer au DAC, et vois ce que ça donne.
Ensuite, multiplie simplement par deux la valeur de la donnée de hauteur MIDI reçue avant de l'envoyer au DAC, et vois ce que ça donne.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
redpill
2341
AFicionado·a
Membre depuis 17 ans
37 Posté le 29/10/2014 à 14:09:51
effectivement, toujours vérifier ce qu'on pense etre juste. J'ai environs une erreur de 10mV voire meme plus sur la sortie du DAC. 255 donne 4.86V (au lieu de 5V) et 127 donne 2.35V au lieu de 2.41V ect...
Bon je crois qu'il est temps de commander les DAC 12bits pour continuer.
Bon je crois qu'il est temps de commander les DAC 12bits pour continuer.
rumorofsmoke.github.io/
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
38 Posté le 29/10/2014 à 16:06:19
Ou d'alimenter ton DAC actuel avec une tension d'alim un poil supérieur à +5 V
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
redpill
2341
AFicionado·a
Membre depuis 17 ans
39 Posté le 30/10/2014 à 14:19:06
effectivement, j'ai testé hier soir. C'était un peu crade (seulement un point diviseur variable depuis l'alim globale donc sujette au changement de courrant des autre ICs). Ca a amélioré les choses mais reste cependant toujours une petite marge d'erreur.
je vais tenter de faire une alim stable pour le DAC et stabilisé pour voir ce que ca donne.
je vais tenter de faire une alim stable pour le DAC et stabilisé pour voir ce que ca donne.
rumorofsmoke.github.io/
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
40 Posté le 30/10/2014 à 18:32:10
Citation :
alim stable pour le DAC
C'est ici indispensable, on travaille dans le domaine des mV.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
- < Liste des sujets
- Charte