Controle les filtres avec oxygen 8
- 32 réponses
- 10 participants
- 2 690 vues
- 10 followers
manu-06
bon ben j' arrive pas. La notice du S760 me dit pas comment on controle ces filtres.
help...ca doit pas etre compliqué mais là je suis à bout...
deud
En sachant l'adresse de performance parameter est : 00 01 00 00
J'ai additionné l'addresse plus le offset pour obtenir ce sysex qui ne marche pas :
F0-41-00-34-12-00-21-00-21-data-checksum-f7
xab
je te marque ce qui pour moi pourrait être un sysex valide pour ouvrir au max le filtre (cutoff) sur le partial
Ton Device ID est 1, j'ai supposé que ça serait 01h.
Le Model ID est 34h.
On utilise la commande Data Set en mode unidirectionnel (DT1) pour aller écrie en mémoire la nouvelle valeur du cutoff. Il faut donc savoir exactement où on va écrire dans la mémoire de travail du sampler.
L'adresse de base (start address) des paramètres du partial est :
00h 08h 00h 00h
L'offset du paramètre cutoff est 01h 18h
L'adresse à utiliser comme paramètre de la commande DT1 est la somme des deux donc il s'agira de :
00h 08h 01h 18h
Le cutoff varie entre 0 et 127 en décimal, soit 00h à 7Fh en hexa. Il est codé sur sur deux octets de la manière suivante :
127 ou 7Fh sera codé 07h 0Fh dans cet ordre.
***********************************
Ton SysEx a donc cette tête là :
F0h 41h 01h 34h 12h 00h 08h 01h 18h 07h 0Fh XXh F7h
`````````````````````-------------````````````````
````````````````````Adresse cutoff`-------`````````
````````````````````````````````Val cutoff```````
Le XXh, c'est le checksum, il doit valoir 49h.
On le calcule facilement avec la calculatrice de Windows en l'ayant passée en mode Scientifique (menu affichage) et en appuyant sur F5 pour la passer en mode Hexadécimal.
La méthode dans notre cas qui est simple est la suivante:
on additionne tous les octets constituant l'adresse et la valeur du cutoff (6 octets en tout). Ca donne une valeur (ici 37h) qu'on doit soustraire à 80h pour avoir XXh. Donc ici 80h - 37h donne 49h.
Par exemple, pour un filtre ouvert à 36h, le checksum serait 56h
En conséquence ton Sysex devrait avoir cette tête au final :
F0h 41h 01h 34h 12h 00h 08h 01h 18h 07h 0Fh 49h F7h (filtre à 127 ou 7Fh)
ou bien
F0h 41h 01h 34h 12h 00h 08h 01h 18h 03h 06h 56h F7h (filtre à 54 ou 36h)
C'est peut-être le control freak qui calcule le checksum.
J'espère ne pas avoir dit trop de conneries. Dis moi si ça marche. Tu peux essayer de changer le Device ID si besoin car on n'a pas la même vision des choses (toi 00h et moi 01h). De toute façon, ça ne change pas la valeur du checksum.
A+
Xavier
deud
Merci pour prendre le temps de m'aider c'est vraiment cool de ta part.
Mais ça ne marche pas toujours pas quelque soit les devices id.
Alors tout d'abord pour le checksum, c'est en effet le kenton qui le calcule automatiquement.
La valeur de data est également calculée par le block "data from knob" donc je n'ai normalement pas besoin de deux octets. Ou alors je m'exprime mal mais pour transmettre une valeur entre 0 et 127, j'ai toujours utilisé cette fonction et ça a toujours marché.
Mais dans l'addition de l'adresse principale et de l'offset, il ne faut pas compter le 01 19 également?
Sur la charte, c'est indiqué :
01 18 0000 aaaa Tvf cutoff
01 19 0000 bbbb aaaabbbb
Pour ton exemple, je pensais qu'il fallait ajouter 01 18 + 01 19 + 00 08 00 00.
Enfin je dois surement avoir faux quelque part dans mon raisonnement.
Pour le model id , comme le manuel dit qu'il peut être compris entre 00 et 1F j'en ai déduis que pour device id mis sur 1 dans le sampleur, la valeur dans le sysex doit être de 00 (car 1F = 31 et qu'il y a 32 device id possible)
xab
Citation : Mais dans l'addition de l'adresse principale et de l'offset, il ne faut pas compter le 01 19 également?
Sur la charte, c'est indiqué :
01 18 0000 aaaa Tvf cutoff
01 19 0000 bbbb aaaabbbb
Pour ton exemple, je pensais qu'il fallait ajouter 01 18 + 01 19 + 00 08 00 00.
Enfin je dois surement avoir faux quelque part dans mon raisonnement.
Oui, là je pense qu'il y a une erreur de raisonnement. Je vais prendre une comparaison basique (désolé si tu trouves que ça fait débile). La mémoire c'est comme les maisons alignées dans une rue. La base address pour un partial c'est comme si tu disais que la maison qui a le numéro 100 marque la limite à partir de laquelle tous les gens qui savent nager habitent. Ensuite, parmi ces gens là (dans le partial pour nous), tu veux annoncer une nouvelle précisément à la famille qui sait parler anglais (nous on vise le cutoff parmis les paramètres du partial). Normalement, on peut te dire que c'est la 12eme maison dans celles de ceux qui savent nager. Donc tu prends 100 + 12 et tu as le numéro de leur maison. La finesse qu'il y a dans notre cas c'est que cette famille occupe 2 maisons donc pour leur annoncer la nouvelle tu vas devoir aller voir les 2 maisons à la suite. Et la on va te dire que la famille habite à partir de la 12eme maison mais elle occupe 2 maisons. Dans ce cas là, tu ne vas pas aller à la maison numéro 100 + 12 + 13, tu vas plutôt aller à la 100 + 12 et ensuite à la 100 + 12 + 1.
Le sampler, si tu lui donnes une valeur sur 2 octets, va automatiquement aller à l'adresse que tu lui donnes, puis à la case suivante.
Dans notre cas, on a 2 cases mémoires consécutives, la 18h et la 19h avec l'une qui comporte 0000aaaa (en codage binaire) et l'autre (19h) qui comporte 0000bbbb (toujours binaire). Manifestement, le sampler ne prend que les 4 bits de droite (bits de poids faible comme on dit) pour les case mémoires 18h et 19h et ensuite il les assemble pour donner un nombre binaire qui vaut aaaabbbb (si aaaa vaut X en hexa et bbbb Y en hexa, aaaabbbb donne XYh soit précisément la fameuse valeur de cutoff qu'on veut injecter).
Voilà pourquoi je l'ai codé sur deux octets et pas un.
C'est vraiment con, j'ai un control freak studio edition mais je ne suis pas chez moi. Si le control freak ne peut envoyer du data que sur 1 octet alors ça risque de ne pas marcher car il faut en quelque sorte éclater la valeur sur 2 octets.
Citation : Pour le model id , comme le manuel dit qu'il peut être compris entre 00 et 1F j'en ai déduis que pour device id mis sur 1 dans le sampleur, la valeur dans le sysex doit être de 00 (car 1F = 31 et qu'il y a 32 device id possible)
Je pense que tu as raison en effet, je n'ai pas regardé le manuel à ce sujet. Il y a un décalage sans doute. Je suppose qu'au début de ta phrase, tu voulais dire device ID et pas model ID ?
Tiens nous au courant si tu y arrives mais je pense que le problème vient de la valeur sur 2 octets au lieu d'un (si j'ai bien compris le codage Roland).
A+
Xavier
PS : je viens de downloader le manuel du control freak. Regarde page 41, il sait faire ce que j'ai décrit. C'est le paramètre Sx Data 0Hh/0Lh.
Si vraiment tu galères, j'essaierai de m'y mettre aussi quand j'aurai accès à mon control freak. A deux, on pourra sans doute y arriver.
A+
deud
La mauvaise c'est que ça marche toujours pas. Pourtant j'ai bien vérifié avec midiox, la valeur est bien partagée sur les deux octets.
Sinon je parlais bien de device et non pas de modele id, je me mélange les pinceaux.
Bon j'abandonne pour aujourd'hui, j'y suis depuis ce midi
En tout cas merci pour ton aide Xavier et tes explications vraiment pas débile du tout au contraire. Me suis sentit seul dans cette quète.
Je te dis quoi quand j'ai la clé à cette porte qui ne veut pas s'ouvrir.
xab
j'ai farfouillé dans les docs que j'ai avec moi. A la page 256 du manuel Roland en anglais pour le S-770 v2.0, il est marqué la chose suivante:
Citation :
Roland System Exclusive messages are responded to regardless of the Control Channel setting. If it is Off, then the "Device ID" for the unit will be the Unit Number. If Control Channel is set to 1-16, and Unit Number is also set to 1-16, then the Unit Number will be ignored, and the Device ID will be the same as the Control Channel. If, on the other hand, the Unit Number is set to 17-32, the Device ID will be the Unit Number.
Supposons que les S-760 et S-770 partagent la même implémentation MIDI (ce qui est un peu mon postulat de base). En gros, comme je suppose que tu as configuré un canal MIDI sur lequel répond ton S-760 et comme tu as dit que ton Device ID est à 1 (donc dans l'intervalle de 1 à 16), le S-760 se fiche de ton Device ID et lui donne la même valeur que le canal MIDI. Conclusion, si ton canal MIDI est différent de 1, tu as une explication assez plausible à la non réaction de ton S-760. Sinon, mystère et boule de gomme.
A+, la nuit porte conseil !
Xavier
deud
Je viens de tout rebidouiller par raport à ce que tu as dit et ça a fini par marcher.
Parconre c'est bizarre, je suis retourné en arrière en remettant device 1 et ça marche encore. Quand j'aurais la réponse je manquerais pas de venir le dire.
Et les modifications du filtre ne s'entendent qu'à chaque réenclenchement du sample. Mais bon, là j'ai retrouver la motive de m'y repencher sérieusement ^^
En tous les cas :
le sysex du cutoff/partial :
F0h 41h 00h(=device id 1) 34h 12h 00h 08h 01h 18h OHh/0LH(*) Checksum F7h
(*) "8 bit value sent, split over 4 bytes. The 4 hi bits of each byte are zero and the lo bits contain the data - sent most sigificant byte first as follows :
0000HHHH, 0000LLLL"
Donc une variable de 8 bytes découpée en deux bytes selon le manuel kenton :
La fonction Sx data 0Lh 0Hh pour être précis.
Et bin ce sysex il marche !! Et tous les autres aussi vont marcher ^^
Un grand merci à toi Xavier pour ton aide et la qualité de tes explications.
Edit : Haha ! J'avais pas vu la rectif sur ton avant dernier post. J'ai scruté le dernier avec des grands yeux !
Ca a été quand même l'occasion de resortir le manuel de ce bon vieux kenton.
xab
bonne nouvelle tout ça.
Il reste à faire en sorte que ça soit pris en temps en compte en temps réel maintenant.
J'ai regardé encore le manuel ce matin à cause de ce pb de temps réel et j'ai vu un truc qui m'a fait bien sourire (j'espère que tu ne t'arracheras pas les cheveux !)
Il y a dans les paramètres de patch un moyen d'affecter un message MIDI CC à la TVF cutoff frequency. C'est à la page 3-21 du advanced manual et un peu avant, à la page 3-19, ils expliquent comment paramétrer quel numéro de CC tu veux (Control Select).
En gros il y a moyen de faire beaucoup plus simple et il est explicitement marqué que ça marche en temps réel. C'est dans la section partial, page 3-28, où je lis :
Citation : The cutoff setting can be changed in realtime by the envelope, message from each controller, or a modulation source such as the LFO.
Là, je pense qu'on voit vraiment le bout du tunnel !!
Ciao
Xavier
PS: c'est aussi une très bonne nouvelle pour Kb-324d car, pour revenir au topic, on va pouvoir tirer quelque chose des contrôleurs Oxygen.
xab
Deud, regarde à la page 7-8 dans le advanced manual. Tu verras le truc qui tue:
Citation : The unit cannot produce sound while it is receiving System Exclusive messages.
Donc c'est clair et définitif, pas de controle en temps réel avec les SysEx, on se rabattra sur les CC pour le cutoff. Pour le reste, ça sera SysEx mais pas en temps réel. Ca colle complètement avec le comportement que tu as décrit.
A+
Xavier
deud
Oui, pour l'histoire des cc, ou plutot du cc assignable à quelques modulations, j'avais vu ça avant de vouloir trouver les sysex (je vais garder encore un peu de temps les cheveux qui me reste ^^ ).
En fait, tu ne peux assigner qu'un seul cc si je ne m'abuse et donc ça m'aurait intéresser de pouvoir controler aussi bien la balance, les eqs et d'autres trucs avec plusieurs potards et sans avoir à retourner dans la machine et me taper tous les menus.
(Je n'ai pas l'option video).
Pour l'absence de sons pendant l'envoi de sysex, il me semblait avoir compris un truc comme ça, mais je voulais encore croire que c'était dans le manuel d'une des autres machines que j'avais lu.
Bref c'est pas cool pour le controle en temps réel, mais je me ferais quand même un profile où je pourrais toucher aux eqs, filtres, reverse, et d'autres trucs si ils existent. Pour les drumkits par exemple ça pourrait être sympa quand même.
Quand je l'aurais fini, je te donnerai mon profile pour ton kenton si tu veux.
Bye et encore merci.
Romain
- < Liste des sujets
- Charte