Projet "Modulation sans mal (Micron Safe Modulation!)" - Interface midi de réglage des par
- 26 réponses
- 9 participants
- 2 842 vues
- 9 followers
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
Sujet de la discussion Posté le 15/03/2007 à 09:27:20Projet "Modulation sans mal (Micron Safe Modulation!)" - Interface midi de réglage des par
Salut,
Comme tous les possesseurs du micron, quel que soit leur niveau, j'ai été confronté à la difficulté de programmation des paramètres d'un "program" via l'unique bouton du Micron.
Pour ma part, étant très novice dans la synthèse, le fait de ne pas avoir tous les paramètres sous les yeux ne m'a pas permis jusqu'ici, par exemple, d'apprendre par la pratique, en testant des paramètres et en écoutant le résultat à la volée.
C'est ainsi qu'a germé l'idée de créer une interface regroupant tous les paramètres modifiables en "temps réel".
Etant seul pour le moment, le but de ce topic est de permettre de rassembler les forces vives de audiofanzine !! ^^
Dans les prochains messages, je vous présenterai ce que j'ai déjà pû faire, les difficultés rencontrées, le langage envisagé pour la programmation (même si j'ai déjà développé certaines choses).
S'il vous prend l'envie de participer à cet humble projet, vous êtes les bienvenus ;o)
A bientôt.
Comme tous les possesseurs du micron, quel que soit leur niveau, j'ai été confronté à la difficulté de programmation des paramètres d'un "program" via l'unique bouton du Micron.
Pour ma part, étant très novice dans la synthèse, le fait de ne pas avoir tous les paramètres sous les yeux ne m'a pas permis jusqu'ici, par exemple, d'apprendre par la pratique, en testant des paramètres et en écoutant le résultat à la volée.
C'est ainsi qu'a germé l'idée de créer une interface regroupant tous les paramètres modifiables en "temps réel".
Etant seul pour le moment, le but de ce topic est de permettre de rassembler les forces vives de audiofanzine !! ^^
Dans les prochains messages, je vous présenterai ce que j'ai déjà pû faire, les difficultés rencontrées, le langage envisagé pour la programmation (même si j'ai déjà développé certaines choses).
S'il vous prend l'envie de participer à cet humble projet, vous êtes les bienvenus ;o)
A bientôt.
AbsynthMinded
1001
AFicionado·a
Membre depuis 19 ans
2 Posté le 15/03/2007 à 17:49:20
Comme je disais sur l'autre topic, j'ai déjà fais (un peu juste, pas des masses) des interfaçes en .Net et en Java ... je sais pas si je pourrais aider donc, mais peut être ...
(et flag donc)
(et flag donc)
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
3 Posté le 15/03/2007 à 20:29:14
D'avance, merci pour ton intérêt :o)
Je vais déjà essayer de présenter un maximum d'info sur ce que j'ai pû faire.
Le but de l'appli serait en premier lieu - v 0.09 :o) - de modifier les paramètres d'un programme sélectionné au préalable depuis le micron.
Mes prochaines contributions au topic suivront (j'espère) ce plan :
-1- Les paramètres d'un program (leur correspondance en code NRPN, les valeurs associées min et max etc.)
-2- Le problème du <<Modulation routing>>
-3- Les premiers tests en Visual Basic, le choix du langage (Java, portable, mais obligation d'un runtime installé sur la machine "cliente" )
-4- Le développement de controleurs graphiques propres à ces paramètres (potard circulaire, switch etc.)
-4bis- L'interface graphique de l'application (utilisation d'onglets, représentation du tracking generator etc.)
-5- Les évolutions envisageables à plus ou moins court terme (récupération de preset pour initialiser les différents controleurs de l'interface par exemple)
Allez, on va le sauver le "Knob" du micron
Je vais déjà essayer de présenter un maximum d'info sur ce que j'ai pû faire.
Le but de l'appli serait en premier lieu - v 0.09 :o) - de modifier les paramètres d'un programme sélectionné au préalable depuis le micron.
Mes prochaines contributions au topic suivront (j'espère) ce plan :
-1- Les paramètres d'un program (leur correspondance en code NRPN, les valeurs associées min et max etc.)
-2- Le problème du <<Modulation routing>>
-3- Les premiers tests en Visual Basic, le choix du langage (Java, portable, mais obligation d'un runtime installé sur la machine "cliente" )
-4- Le développement de controleurs graphiques propres à ces paramètres (potard circulaire, switch etc.)
-4bis- L'interface graphique de l'application (utilisation d'onglets, représentation du tracking generator etc.)
-5- Les évolutions envisageables à plus ou moins court terme (récupération de preset pour initialiser les différents controleurs de l'interface par exemple)
Allez, on va le sauver le "Knob" du micron
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
4 Posté le 17/03/2007 à 01:16:34
Voici la correspondance entre les paramètres de la catégorie VOICE (premiers paramètres d'un program du Micron) et les codes nrpn associés. Les codes et les valeurs sont convertis en hexadécimal et représentés par le MSB* et LST*
En effet le message midi qui sera envoyé à chaque modification de valeur d'un paramètre contiendra l'identification du paramètre et la valeur associée (sur 2 octets chacun) .
Je détaillerai un peu + dans mon prochain post quel type de message est envoyé (il est un peu tard), et on verra que certains paramètres prennent comme valeur minimale 16284 et maximale 100...
A plus
*
MSB : Most Significative Byte
LSB : Less Significative Byte
exemple : la valeur 1000 sera représentée sur 2 octets
- 07 en hexadécimal pour le MSB (7 en décimal)
- 68 en hexadécimal pour le LSB (104 en décimal)
en effet 7 x 128 = 896
+ 104 = 1000
On peut dire que le MSB contient la partie entière de la division du nombre par 128 et le LSB contient le "reste".
En effet le message midi qui sera envoyé à chaque modification de valeur d'un paramètre contiendra l'identification du paramètre et la valeur associée (sur 2 octets chacun) .
Je détaillerai un peu + dans mon prochain post quel type de message est envoyé (il est un peu tard), et on verra que certains paramètres prennent comme valeur minimale 16284 et maximale 100...
A plus
*
MSB : Most Significative Byte
LSB : Less Significative Byte
exemple : la valeur 1000 sera représentée sur 2 octets
- 07 en hexadécimal pour le MSB (7 en décimal)
- 68 en hexadécimal pour le LSB (104 en décimal)
en effet 7 x 128 = 896
+ 104 = 1000
On peut dire que le MSB contient la partie entière de la division du nombre par 128 et le LSB contient le "reste".
Pitched toy
135
Posteur·euse AFfiné·e
Membre depuis 17 ans
5 Posté le 18/03/2007 à 13:52:11
D'avance merci beaucoup pour ton investissement et j'espere vite pouvoir tester ca
Microneur du dimanche.
C vrai que ce bouton...
Microneur du dimanche.
C vrai que ce bouton...
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
6 Posté le 18/03/2007 à 19:37:43
Merki ;o)
Comme vu précédemment, pour modifier un paramètre nous aurons besoin du code du paramètre et d'une valeur comprise dans la plage définie par la valeur min et max.
Faisons un petit test à l'aide de SendSx (https://www.bome.com/midi/sendsx/)
Nous allons envoyer un message midi qui va modifier un paramètre.
1- Choisir un programme quelconque sur le Micron
2- Appuyer sur le bouton pour entrer dans les paramètres et visualiser le paramètre polyphony
3- Lancer SendSx (ne pas oublier de sélectionner votre sortie midi dans MIDIOUT de SendSx)
Dans la zone de saisie nous allons taper les codes suivants
B0 63 00
B0 62 00
B0 06 00
B0 26 00
Les deux premières lignes permettent d'indiquer le paramètre à modifier :
B0 63 doit être suivi du code MSB du paramètre et B0 62 suivi du code LSB.
Ici c'est 00 et 00 (c'est le paramètre polyphony, voir tableau du post précédent)
Les deux lignes suivantes indiquent la valeur à donner au paramètre :
B0 06 attend le MSB de la valeur et B0 26, le LSB.
Ici, là aussi, on envoie 00 en MSB et LSB.
On clique sur SEND
4- Sur l'écran du Micron, on devrait voir le paramètre polyphony à "monophonic" maintenant.
Voilà nous savons maintenant quel type de message envoyer pour modifier un paramètre. Si on se base sur le tableau et que l'on veut, par exemple, mettre à 100% la valeur de AnalogDrift, il faudra envoyer comme "message" :
B0 63 00
B0 62 07
(on indique que le paramètre 7, AnalogDrift...)
B0 06 00
B0 26 64
(...prend la valeur 100)
A plus tard :o)
Comme vu précédemment, pour modifier un paramètre nous aurons besoin du code du paramètre et d'une valeur comprise dans la plage définie par la valeur min et max.
Faisons un petit test à l'aide de SendSx (https://www.bome.com/midi/sendsx/)
Nous allons envoyer un message midi qui va modifier un paramètre.
1- Choisir un programme quelconque sur le Micron
2- Appuyer sur le bouton pour entrer dans les paramètres et visualiser le paramètre polyphony
3- Lancer SendSx (ne pas oublier de sélectionner votre sortie midi dans MIDIOUT de SendSx)
Dans la zone de saisie nous allons taper les codes suivants
B0 63 00
B0 62 00
B0 06 00
B0 26 00
Les deux premières lignes permettent d'indiquer le paramètre à modifier :
B0 63 doit être suivi du code MSB du paramètre et B0 62 suivi du code LSB.
Ici c'est 00 et 00 (c'est le paramètre polyphony, voir tableau du post précédent)
Les deux lignes suivantes indiquent la valeur à donner au paramètre :
B0 06 attend le MSB de la valeur et B0 26, le LSB.
Ici, là aussi, on envoie 00 en MSB et LSB.
On clique sur SEND
4- Sur l'écran du Micron, on devrait voir le paramètre polyphony à "monophonic" maintenant.
Voilà nous savons maintenant quel type de message envoyer pour modifier un paramètre. Si on se base sur le tableau et que l'on veut, par exemple, mettre à 100% la valeur de AnalogDrift, il faudra envoyer comme "message" :
B0 63 00
B0 62 07
(on indique que le paramètre 7, AnalogDrift...)
B0 06 00
B0 26 64
(...prend la valeur 100)
A plus tard :o)
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
7 Posté le 21/03/2007 à 00:30:23
Salut !
Le tableau suivant contient les premiers paramètres des 3 oscilateurs du Micron, paramètres identiques pour les trois et qui, pour certains, possèdent comme vous pourrez le voir quelques particularités que je détaillerai dans le post suivant.
Jusqu'ici, on pouvait se dire << Bon, un paramètre qui prend une valeur comprise entre 0 et 100, le min sera 0 et le max 100 >>... Mais quid des valeurs négatives ??
Je fais court ce soir mais j'ai une fin de mois un peu serrée niveau boulot, alors j'essaie de compresser le temps !! Merci aux quelques lecteurs pour leur patience :o)))
A+
Le tableau suivant contient les premiers paramètres des 3 oscilateurs du Micron, paramètres identiques pour les trois et qui, pour certains, possèdent comme vous pourrez le voir quelques particularités que je détaillerai dans le post suivant.
Jusqu'ici, on pouvait se dire << Bon, un paramètre qui prend une valeur comprise entre 0 et 100, le min sera 0 et le max 100 >>... Mais quid des valeurs négatives ??
Je fais court ce soir mais j'ai une fin de mois un peu serrée niveau boulot, alors j'essaie de compresser le temps !! Merci aux quelques lecteurs pour leur patience :o)))
A+
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
8 Posté le 22/03/2007 à 23:29:16
Pour en finir (presque) avec les codes NRPN. Parlons donc des valeurs négatives des paramètres qui sont exprimées ici en décimal d'après leur valeur binaire.
Sans trop s'étendre sur le sujet
100 en décimal est égal à 00000001100100 en binaire
la valeur négative de ce nombre binaire est égale à 11111110011100 (16284 en décimal)*
donc pour faire varier une valeur de -100 à 100 comme dans le cas du paramètre waveshape, on devra respecter les "bornes" définies ainsi :
Voilà. Je metterai un lien vers le tableau complet des codes de chaques paramètres, car il risque de prendre de la place si je le poste ici !
La prochaine fois, je parlerai du problème lié aux paramètres "Modulation Routing", peut-être que nous pourrons trouver des infos ensembles.
Jusqu'ici il n'y a pas eu réellement d'échange, je veux pas faire le prof, je veux seulement solliciter les envies d'aller plus loin. La programmation arrive, mais cela passe d'abord par ces aspects théoriques. :o)
A plus (pas obligé de lire ce qui suit, c'est chiant !!)
* Bon je ne sais pas si ce sera clair (de toute façon ce n'est pas très important ici) c'est ce que l'on appelle faire un complément à 1, cela permet de réprésneter les négatifs en binaire est surtout de pouvoir des opérations arithmétiques avec :
Si on prend la valeur 5 en binaire sur 8 bits 0000 0101
la valeur -5 sera calculée ainsi
0000 0101 (valeur 5)
1111 1010 (complément à 1)
+ 1
1111 1011 (valeur négative du nombre binaire de 5)
Si j'applique ce calcul à notre valeur -100 du paramètre waveshape :
00 0000 0110 0100 (valeur binaire de l'entier 100 sur 14 bit)
11 1111 1001 1011 complément à 1
+ 1
= 11 1111 1001 1100 (bien égal à 16284)
Sans trop s'étendre sur le sujet
100 en décimal est égal à 00000001100100 en binaire
la valeur négative de ce nombre binaire est égale à 11111110011100 (16284 en décimal)*
donc pour faire varier une valeur de -100 à 100 comme dans le cas du paramètre waveshape, on devra respecter les "bornes" définies ainsi :
Voilà. Je metterai un lien vers le tableau complet des codes de chaques paramètres, car il risque de prendre de la place si je le poste ici !
La prochaine fois, je parlerai du problème lié aux paramètres "Modulation Routing", peut-être que nous pourrons trouver des infos ensembles.
Jusqu'ici il n'y a pas eu réellement d'échange, je veux pas faire le prof, je veux seulement solliciter les envies d'aller plus loin. La programmation arrive, mais cela passe d'abord par ces aspects théoriques. :o)
A plus (pas obligé de lire ce qui suit, c'est chiant !!)
* Bon je ne sais pas si ce sera clair (de toute façon ce n'est pas très important ici) c'est ce que l'on appelle faire un complément à 1, cela permet de réprésneter les négatifs en binaire est surtout de pouvoir des opérations arithmétiques avec :
Si on prend la valeur 5 en binaire sur 8 bits 0000 0101
la valeur -5 sera calculée ainsi
0000 0101 (valeur 5)
1111 1010 (complément à 1)
+ 1
1111 1011 (valeur négative du nombre binaire de 5)
Si j'applique ce calcul à notre valeur -100 du paramètre waveshape :
00 0000 0110 0100 (valeur binaire de l'entier 100 sur 14 bit)
11 1111 1001 1011 complément à 1
+ 1
= 11 1111 1001 1100 (bien égal à 16284)
Pitched toy
135
Posteur·euse AFfiné·e
Membre depuis 17 ans
9 Posté le 24/03/2007 à 12:36:21
Salut joyeu fou
Pour ton histoire de binaires négatif, j'avais entendu parler aussi (au lieu du complement a 1) de mettre tout simplement un "1" au debut du codage qui deviendrait "le bit de signe"
exp 3 : 00000011
-3 : 10000011
j'ai pas encore reflechi mais en ecrivant ca il se pose la question de savoir si le premier bit serait ultilisé dans le codage de la valeur absolue
Enfin bref juste un ptit post comme ca, il me semble que le complement a un soit deja tres efficace
.
Microneur du dimanche.
Pour ton histoire de binaires négatif, j'avais entendu parler aussi (au lieu du complement a 1) de mettre tout simplement un "1" au debut du codage qui deviendrait "le bit de signe"
exp 3 : 00000011
-3 : 10000011
j'ai pas encore reflechi mais en ecrivant ca il se pose la question de savoir si le premier bit serait ultilisé dans le codage de la valeur absolue
Enfin bref juste un ptit post comme ca, il me semble que le complement a un soit deja tres efficace
.
Microneur du dimanche.
runm
42
Nouvel·le AFfilié·e
Membre depuis 18 ans
10 Posté le 28/03/2007 à 15:32:13
Salut, le complément à 1 permet de faire ensuite des opérations sur les nombres, en ajoutant seulement le bit de signe, cela fausse les opérations.
Quoiqu'il en soit, les valeurs négatives ont été implémentées ainsi dans le micron :o)
Bientôt la suite (semaine prochaine ou ce we), j'ai une semaine de fou au boulot, je fini tard et j'évite de me remettre devant l'ordi le soir venu :o)
A plus
Quoiqu'il en soit, les valeurs négatives ont été implémentées ainsi dans le micron :o)
Bientôt la suite (semaine prochaine ou ce we), j'ai une semaine de fou au boulot, je fini tard et j'évite de me remettre devant l'ordi le soir venu :o)
A plus
- < Liste des sujets
- Charte