Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Ajouter ce produit à
  • Mon ancien matos
  • Mon matos actuel
  • Mon futur matos
Roland JD-990 Super JD
Photos
1/242
Roland JD-990 Super JD

Synthétiseur numérique en rack de la marque Roland appartenant à la série JD

Adressage pour SysEx

  • 15 réponses
  • 4 participants
  • 1 802 vues
  • 4 followers
Sujet de la discussion Adressage pour SysEx
Bonzour,

Y'a-t-il des cadors en SysEx dans le coin ?

C'est rapport à ceci.

Merci. :-D

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

2

Je ne suis pas sûr de la question mais voici une tentative de réponse:

La fréquence de coupure du filtre va de 0 à 100, donc codable sur 7 bits entre 00h et 64h.

Pour piloter la fréquence de coupure, deux méthodes:

  1. Paramétrer la section LFO&CTRL/CTRL en choisissant une source MIDI CC (Modulation, Aftertouch, etc.) et son influence (Depth) sur la fréquence de coupure (Dest.: CUTOFF)
  2. Envoyer un court SysEx à la bonne adresse qui dépend du mode d'utilisation :
    1. Adresse de base disponible en table 1, section Tableau d'Adressage des Paramètres des Messages exclusifs, chapitre 8, page APP-49
    2. Offset du tone visé disponible en table 4.3 page APP-51
    3. Offset du paramètre de tone TVF/CUTOFF disponible en table 4.3.2 page APP-53
3

Bonjour,

 

Si c'est comme sur le S-760, ce que je soupçonne fortement, il me semble de mémoire que la variation des paramètres cutoff/res est appliquée en temps réel alors que si tu l'appliques via des messages sysex provenant de l'extérieur, ça n'est pris en compte qu'à la prochaine note.

Nous avons eu une discussion similaire pour le S-760, il faudrait regarder de ce côté et appliquer ce qui s'est dit au JD-990 en utilisant les infos données par emotional_features.

Après Otto, s'il le faut je peux ressortir mon Kenton Control Freak et regarder la tronche des sysex dans le profil du JD-800 (si ça se trouve il suffit même juste de décortique le fichier de profil).

A+

Xavier

 

edit: j'avais dit une connerie en voulant faire mon malin. c'est 64 qui n'est pas codable sur 6 bits.

 

 

[ Dernière édition du message le 24/01/2011 à 18:55:58 ]

4
Merci à tous les deux pour vos réponses.

Pour éclaircir la question, je souhaite atteindre le paramètre TVF Cutoff Freq du Tone 1, du Patch 1 en mémoire temporaire.

L'adresse de base des paramètres du Tone 1 se trouve à :
F0 41 10 57 12 03 00 00 76 dt cs F7
(où dt et cs sont respectivement la valeur data et le checksum).

D'après la doc, l'offset du paramètre TVF Cutoff est de 19, donc pour l'atteindre il faudrait coder 76 + 19 = 8F en hexa. Nous sommes donc au-delà de la valeur maximale codable sur 7bit (7F).

La question est donc comment construire un message SysEx qui accède à ces adresses, sachant que les tentatives de nibblization ne donnent pas le résultat escompté :

F0 41 10 57 12 03 00 00 08 0F dt cs F7
change la 10ième letre du nom de Patch.

F0 41 10 57 12 03 00 00 0F 08 dt cs F7
change le niveau du Patch (!) alors que d'après la doc l'adresse serait un bit plus haute, soit :
F0 41 10 57 12 03 00 00 *10*

Bref, c'est vachement plus simple sur les JV/XP, et pourtant j'y entrave que pouic. icon_facepalm.gif

Effectivement, j'ai regardé s'il y avait des presets pour diverses surfaces de contrôle mais pas trouvé pour les JD.

Merci. :-D

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

5

Hello Otto,

 

ça fait longtemps que je n'ai pas bidouillé du Sysex et je me pose la question suivante: en quoi est-on limité à 7 bits pour coder un offset ? Ce codage sur 7 bits est valable pour les paramètres genre cutoff ou autre, et on a choisi un codage de valeur sur 7 bits de manière à avoir un octet signé (en gros tu codes de -127 à 127, les valeurs considérées comme étant "négatives" d'un point de vue logique étant celles préfixées avec le bit de poids fort à 1). Mais pour une valeur utilisée pour de l'adressage, à mon avis 8F est codable.

Ton message est donc pour moi: F0 41 10 57 12 03 00 00 8F dt cs F7 tout simplement.

A+ et bon courage!

Xavier

 

[ Dernière édition du message le 24/01/2011 à 22:01:51 ]

6
Coder 8F moi je veux bien, mais pas Cubase pour ses mixermaps, qui me jette.

Et j'ai la faiblesse de lui faire confiance en ce qui concerne le respect de la norme MIDI. 1895227.gif

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

7

reprenons avec l'aide de la doc (le mode, je le refais dans ma tête):

F0h 41h 10h 57h 12h xxh xxh xxh xxh vvh xsh

avec xxh xxh xxh xxh = adresse du paramètre du paramètre, celle-ci étant constituée de l'adresse de base du blocs de paramètres visé, à laquelle s'ajoute l'offset du paramètre dans le bloc

vvh = valeur de la donnée en hexa

xsh = checksum du bloc "adresse + data", autrement dit de la valeur hexa "xxh xxh xxh xxh vvh"

Cas pratique:

on vise le cutoff du tone 1 du patch 1, on prend donc l'adresse de base du bloc "Patch Mode Temporary Patch", qui est "03 00 00 00"

L'offset du "Patch Tone A" est bien "00 00 76" où se trouve un bloc de 5Ch octets, soit 92 octets dont le 27ème (19h) est la valeur du cutoff, codée entre 0 et 100.

La question métaphysique, c'est "est-ce qu'on a le droit de coder un des octets de l'adresse sur plus de 7 bits", sinon "comment fait-on pour coder une valeur d'offset supérieure à 7Fh.

Si on regarde le "Patch Tone A" a un offset de "00 00 76", et le "Patch Tone B" a un offset de "00 01 52", sachant qu'entre les deux sont codés 92 octets.

92 = 9 + 1 + 82 = 09h + 01h +52h

Il est manifeste donc que le passage de 03 00 00 7F à la valeur suivante = 03 00 01 00

Du coup nos 92 octets montrent que 03 00 00 76 + 9h  = 03 00 00 7F, on rajoute 1 et on passe à 03 00 01 00 et on rajoute les 82 manquants (52h) et on arrive à 03 00 01 52, l'adresse du prochain bloc.

On applique le raisonnement à l'offset du cutoff et en écrivant 19h = 09h + 01h + 0Fh, on obtient que l'adresse exacte de l'octet codant la valeur du cutoff du tone A du temporary patch est:

03 00 01 0F

Ton message sera donc F0h 41h 10h 57h 12h 03h 00h 01h 0Fh vvh xsh avec vv et xs à renseigner par tes soins.

Désolés pour les divagations du message d'avant.

Merci de me dire si ça marche.

A+

Xavier

edit: shit shit !! j'ai laissé le 00 à la place du 03 au début de l'adresse, c'est remplacé maintenant!

[ Dernière édition du message le 24/01/2011 à 22:24:35 ]

8
[boote le vieux PC musique et le non moins vieux Cubase 2.8]

...

Ça marche, en mode Patch comme attendu !!! :bravo: En passant, quel filtre ce JD. :bave:

Ne me reste plus qu'à utiliser la même méthode pour les patches au sein d'une Performance en mémoire temporaire si c'est possible, et éventuellement (enfin) construire un template pour ma surface de contrôle Encore Electronics.

Il est très confusionant pour moi de devoir calculer les adresses avec ces offsets, là où la structure d'un JV-1080 permet d'atteindre le paramètre avec la valeur donnée dans le manuel, sans calcul.

Encore merci pour ta science et emotional_features pour sa contribution. :bise:

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

9

100 se code parfaitement sur 7 bits, en non signé, tout simplement.

Et pour le coup c'est écrit noir sur blanc dans la notice. icon_wink.gif

Généralement :

  • les valeurs comprises entre 0 et 127 inclus sont codées en 7 bits non signés
  • les valeurs comprises entre -64 et +63 sont codées en 7 bits le plus souvent codés centrés à 40h : -63 codé en 00h, 0 codé en 40h, +63 codé en 7Fh
  • les valeurs à la dynamique plus large sont codées sur plusieurs octets (tronqués à 7 bits) : exemple le pitch bend allant de -8192 à +8191, soit une dynamique de 14 bits. là il ne s'agit pas de codage signé/non signé mais d'une valeur min -8192 codée à 00h-00h, la valeur centrale 0 codée à 40h-00h et la valeur max +8191 codée à 7Fh-7Fh

les fabricants indiquent la traduction de la valeur du paramètre en SysEx

Au passage les valeurs négatives ne se codent pas forcément en mettant le bit de poids fort à 1 puisque ça génère un zéro négatif et un zéro positif. Le complément à 2 est le plus couramment utilisé : -(a) = complément de (a) + 1. [le complément est la négation des bits, 0 devient 1, 1 devient 0]

Mais en SysEx c'est plutôt la valeur min du paramètre codée à 0, donc quelque chose comme Sysex(A) = A + valeur_minimale(A).

 

Otto, ça m'étonne ce que tu dis à propos de la valeur du TVF Cutoff. Dans ma doc c'est bien indiqué de 00h à 64h, ce qui correspond bien à la plage 0-100 du paramètre.

 

[ Dernière édition du message le 25/01/2011 à 10:05:11 ]

10

Hello emotional_features,

je me suis rendu compte de ma bourde hier soir, j'ai édité mon message à ce moment.

Merci pour la clarification cela dit.

A+

Xavier