Jump to content

Comment faire un clavier maître avec la mb?


julestriko
 Share

Recommended Posts

?

l'application de qbas marche trés bien (il propose même une matrcie 32*32 sur le wiki!), je n'ai pas trouvé d'allusion à des problèmes avec les matrices de TK fonctionnant avec une matrice DIN standard. Peut-être quelqu'un a t-il eut des soucis pour adapter une matrice un peu differente au niveau materiel avec une appli standard,non?

Link to comment
Share on other sites

J'essaie de suivre tes indications Antoine et j'ai tenté de calculer la valeur de la résistance "drop-down".

Je trouve 31,6 kohms, ce qui fait varier la tension entre 0,15 V et 3,8 V, pas mal, non?

J'ai mis en pdf mon calcul que j'ai fait avec des vieux souvenirs de maths sup.

Cela te semble-t-il crédible?

En ce qui concerne la matrisation, je vais essayer de réfléchir à un moyen.

Et puis, vu qu'on peut appuyer sur deux capteurs commandant la même note, je vais tout simplement me faire deux claviers de 64 notes et je relierai les 2 cores, ce sera plus simple et plus sûr.

Ah oui, au fait, les capteur FSR ont vu leurs premières applications dans des interfaces musicale (jean michel Jarre & co), ça réagit à 10 ms près, donc c'est bonheur.

calcul de la résistance drop-down.pdf

calcul de la résistance drop-down.pdf

Link to comment
Share on other sites

Les calculs semblent correct, par contre, il y a la résistance minimale qui devrait peut-être être changée, le senseur ne risque de jamais se rendre à 1kOhm (Pour 100N/cm² -> ~10kg de pression). Il serait mieux d'optimiser la résistance drop-down pour ce que le senseur risque de sortir réellement (Il faut prendre en compte qu'un ADC de 8-bit va voir le voltage.)

Il y aurait moyen d'essayer avec un potentiomètre comme résistance drop-down pour ajuster le voltage minimal et maximal.

En ce qui concerne la matrisation, je vais essayer de réfléchir à un moyen.

Le convertisseur BCD à décimal pourrait être intéressant(question de coût), en espérant qu'il n'y ait pas de pics de voltage lors des changements de voltage. (En utilisant des condensateurs, le problème pourrait être atténué.)

Sinon, le moyen le plus stable serait d'utiliser deux CORE ayant chacun deux AIN avec une résistance par FSR.

Il y a certainement plusieurs variantes possibles, mais tout ce qu'on sait, c'est qu'il y a un maximum de 8 ADC.

A moins que ça déchire encore plus et qu'on puisse renvoyer un signal midi qui varie continuellement avec la tension, et dans ce cas, on aura une sorte d'after touch, et un toucher révolutionnaire!

Je viens de regarder à propos de ce sujet, la fonction MIDI aftertouch pourrait être utilisée. (Elle permet de voir la pression continuellement, et individuellement pour chaque notes :D )

Link to comment
Share on other sites

yes!

je reçoit les FSR la semaine prochaine, je testerai alors la résistance minimale et je referai le calcul.

pour la matrisation, tu as raison, et de toute façon vu l'investissement pour les senseurs, je vais utiliser le moyen le plus stable (2 cores).

ok pour la fonction after touch.

en tout cas Antoine, merci encore pour toute ton aide, je suis vraiment impressionné par la solidarité de cette communauté, et dommage que tu habites si loin, mais si un jour tu passes sur Paris, je me ferai un plaisir de réserver une bonne table pour te remercier.

Bien sûr, dès que mon instru est terminé, je ferai un post récapitulatif de tout ça pour d'autres gens intéressés par ce projet.

jules

Link to comment
Share on other sites

  • 2 weeks later...

j'ai fait mon montage en utilisant les pins analogiques du core pour commencer, avec une demi-douzaine de capteurs.

j'ai recalculer ma résistance, et ça m'a l'air d'être pas mal puisque les potentiels de chaque pin varie de 0V à 4,5V.

maintenant j'ai essayé de coder ça dans le mios:

(32 est une valeur arbitraire qui a pour but que le son ne se déclenche pas lorsque les boutons sont effleurés)

if (MIOS_AIN_Pin7bitGet(pin_value)>32){

MIOS_MIDI_TxBufferPut(0x90);//alors Note on

MIOS_MIDI_TxBufferPut(pin);

pin0=pin;

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin_value));

while (pin_value>32){

MIOS_MIDI_TxBufferPut(0xD0); //Aftertouch

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin_value));

MIOS_MIDI_TxBufferPut(0x00);}

}

else{    // sinon c'est une Note off

MIOS_MIDI_TxBufferPut(0x80);

MIOS_MIDI_TxBufferPut(pin0);

MIOS_MIDI_TxBufferPut(0x40);

}

malheureusement ça ne marche pas très bien, en particulier, la note off ne se déclenche pas (et je comprends pas pourquoi)

antoine, tu m'avais parlé de l'aftertouch, tu sais où je peux trouver un exemple de codage de ce genre de truc?

jules

Link to comment
Share on other sites

Bonjour, je ne sais pas programmer par exemple (J'ai fait un peu de BASIC sur mon TRS-80, mais je viens de commencer le PHP, ça ressemble à du C au moins...) ;)

Mais, en ce qui concerne l'aftertouch, d'après ce que je peux lire ici:

http://ccrma.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html

ça serait ceci qu'il faudrait envoyer :

MIOS_MIDI_TxBufferPut(0xA0);

MIOS_MIDI_TxBufferPut(pin0);

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin_value));

Je ne sais pas comment le C fonctionne, mais est-ce qu'il faut une commande pour que le programme retourne faire le test "if (MIOS_AIN_Pin7bitGet(pin_value)>32)" une fois que "while" a terminé pour pouvoir se rendre à "else"?

Est-ce qu'un moniteur MIDI comme MIDI-OX donne des résultats étranges?

Link to comment
Share on other sites

Salut Jules!

Comment va ?

if (MIOS_AIN_Pin7bitGet(pin_value)>32){

MIOS_MIDI_TxBufferPut(0x90);//alors Note on

MIOS_MIDI_TxBufferPut(pin);

pin0=pin;

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin_value));

while (pin_value>32){

MIOS_MIDI_TxBufferPut(0xD0); //Aftertouch

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin_value));

MIOS_MIDI_TxBufferPut(0x00);}

}

else{    // sinon c'est une Note off

MIOS_MIDI_TxBufferPut(0x80);

MIOS_MIDI_TxBufferPut(pin0);

MIOS_MIDI_TxBufferPut(0x40);

}

Dans le désordre:

- Le test de ton while utilise la valeur de pin_value et non MIOS_AIN_Pin7bitGet(pin_value). Je ne crois pas que c'est ce que tu souhaites :)

- Il faudrait que tu donnes du context... qu'est ce qu'il y a autour de ton if ?? Parce que sans ça on ne peux pas savoir pourquoi tu ne rentres pas dans le else!

- Essaye de faire une variable intermédiaire pour stocker la value que tu récupères de MIOS_AIN_Pin7bitGet(pin_value). Tu demandes la valeur dans tes tests et puis pour envoyer le message midi.

- Je ne connais pas MIDI donc je ne peux t'aider sur la validité de tes messages...

A++Didier

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour Jules, je crois que le code devrait ressembler à quelque chose comme ça:

loop:

if (pinx>=20 & prevstatex==1)

{send aftertouch-value;}

else if (pinx>=30 & prevstatex==0)

{send Note-ON;

set prevstatex=1}

else if (pinx<20 & prevstatex==1)

{send Note OFF

set prevstatex=0}

if (x==63) {set x=0} else {set x=x+1}

goto loop

évidemment, le code devrait être traduit en C, et utiliser while, else et if à la place de goto, et il faudrait une table dans la mémoire qui associe le # de pin à une note, etc.

Le code utilise une variable par note pour savoir si elle a changé d'état ou non.

Link to comment
Share on other sites

Salut à tous, désolé de ne pas avoir donné de nouvelles plus tôt, mais c'est parce que j'étais occupé à bricoler, et je n'avais pas encore de résultats intéressants.

D'abord, Antoine, j'ai monté mon clavier avec la vélocité, j'ai suivis toutes tes indications, et ça marche nickel, sauf que...

...sauf que, j'ai utilisé des ressorts, du plexi, des cosses, des rivet creux, 50 m de câble, j'ai passer 15 jours, c'est très très long à faire, et le résultat est vraiment trop moyen, en gros le toucher est pourri, mieux vaut utiliser des interrupteurs (comme tu disais), si on les trouve.

Par contre, j'ai testé un proto de quelque boutons pression, avec les capteurs fsr, et ça dé-boîte!! Un toucher très agréable.

En ce qui concerne le programme, il suffit, effectivement Antoine, de créer avec un tableau qui décrit l'état, 0 ou 1, de chaque note, jouée ou pas jouée.

Pour ceux qui sont intéressés, rassurez-vous, je ferai un post récapitulatif de tout mon projet dès qu'il sera fini, et je mettrai mon programme en ligne, avec des photos. Sachez, juste, en attendant, que la réalisation est très simple, mais que ça douille sévère si c'est pour un clavier (6,50 € par capteur).

Maintenant, Moxi, j'ai lu ton post au sujet de la fabrication de boutons et ça m'intéresse. Je sais pas si c'est toujours d'actualité, mais auquel cas, j'aurai besoin de 128 boutons, en silicone car il faut qu'ils soient mous mais pas trop, glissant mais pas trop, ronds, de 15 mm de diamètre, cylindrique, 2 mm d'épaisseur, assez simples à faire a priori. Si tu as arrêté la production, je veux bien que tu me donnes le lien vers la page wiki que tu as faite et qui en parle (si elle existe).

Et j'ai une toute dernière question, pour les spécialistes: mon clavier étant portable, j'aimerai limiter les câbles, et en attendant la midibox wifi, je voudrais savoir, s'il est possible d'alimenter sa midibox par le port midi, en se servant de l'alimentation d'un expander? Est-ce risqué ou pas?

midiboxement vôtre

jules

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...