Adressage pour SysEx
- 15 réponses
- 4 participants
- 1 795 vues
- 4 followers
.: Odon Quelconque :.
Y'a-t-il des cadors en SysEx dans le coin ?
C'est rapport à ceci.
Merci.
« 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)
- 1
- 2
emotional_features
Oui oui Xab, j'ai vu ça après avoir répondu mon premier message.
Ça me semblait utile de faire un petit résumé des valeurs types en SysEx. Après on peut encore trouver d'autres codages (packed bits pour plusieurs paramètres on/off dans un même octet, etc) mais c'est à chercher dans la partie implémentation SysEx de la documentation de chaque machine.
.: Odon Quelconque :.
100 se code parfaitement sur 7 bits, en non signé, tout simplement.
100 c'est 64h : heureusement que ça se code sur 7 bit.
Merci pour tes explications exhaustives, mais le problème était de calculer une adresse avec un offset > 7F et de parvenir à l'exprimer sous une forme compréhensible par le JD-990. Ce que xab a démontré, et que je trouve confirmé sur ce lien.
Not quite sure what your question exactly is but i'll walk you though the 7 bit encoding process
Lets encode 234235 (which i randomly chose) lets start by turning this into binary (windows calculator is a great help there)
111001001011111011
Next group them up into groups of 7 bits and pad the left over bits so you have 3 groups of 7.
0001110 0100101 1111011
Il suffit de convertir en septets.
« 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)
emotional_features
Effectivement c'est le cas du mode performance par exemple, qui tient sur 144 octets :
00 00 00 Performance
00 00 30 Partie 1
00 00 3C Partie 2
...
00 00 78 Partie 7
00 01 04 Partie 8 ( 01h 04h est en fait le codage de 78h+0Ch = 84h sur 2 valeurs de 7 bits )
[ Dernière édition du message le 25/01/2011 à 22:58:18 ]
Pevets
Je suis tombé sur ce fil car je voudrais justement pouvoir contrôler le cutoff et la résonance de mon JD-990.
Je dois avouer être totalement à la ramasse question SysEx. Du coup, j'ai quelques questions qui me viennent à l'esprit :
Pour éclaircir la question, je souhaite atteindre le paramètre TVF Cutoff Freq du Tone 1, du Patch 1 en mémoire temporaire.
Si je comprends bien, on ne peut pas contrôler de manière globale le cutoff d’un Patch ? On ne peut contrôler le cutoff que d’un Tone ?
Qu’entends-tu par « mémoire temporaire » ? La banque User ?
Ton message est donc pour moi: F0 41 10 57 12 03 00 00 8F dt cs F7 tout simplement.
F0h 41h 10h 57h 12h xxh xxh xxh xxh vvh xsh
Que signifie le h minuscule ajouté après chaque valeur du message ?
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.
Est-il nécessaire de vous préciser que je n’ai rien compris ?
Connaissez-vous des tutos pour comprendre – à défaut d’apprendre – les SysEx ?
.: Odon Quelconque :.
Si je comprends bien, on ne peut pas contrôler de manière globale le cutoff d’un Patch ? On ne peut contrôler le cutoff que d’un Tone ?
Pour le JD, il est possible d'assigner le cutoff à la molette de modulation ou à l'aftertouch.
A partir des JV, Roland a complété cette sorte de matrice de modulation avec plusieurs contrôleurs système assignables (Sys Ctrl), qui permettent de moduler simultanément certains paramètre des Tones avec des offsets par rapport à la valeur pivot stockée dans le patch pour chaque Tone.
Dans les deux cas, seuls les SysEx permettent d'attaquer directement la valeur du paramètre pour chaque Tone. Les SysEx sont surtout destinés à être utilisés pour du stockage externe (dump ou send MIDI des patches ou performances) ou par les éditeurs/bibliothécaires logiciels.
Utiliser les SysEx comme messages temps réel en cours de jeu peut poser des problèmes de ralentissements sur des arrangements un peu chargés sur ces machines anciennes et peu puissantes en terme de CPU.
Qu’entends-tu par « mémoire temporaire » ? La banque User ?
Chaque patch ou performance qu'on sélectionne est monté(e) en mémoire vive, donc temporaire pour être joué.
C'est cette mémoire vive qu'on édite lorsqu'on modifie les paramètres du patch ou de la performance en cours de jeu (apparition du caractère * devant le nom du patch pour indiquer qu'il a été modifié par rapport à la version stockée).
On les sauvegarde ensuite dans une banque user si on le souhaite.
Ou on peut les transmettre en SysEx dans un séquenceur ou un enregistreur MIDI.
En SysEx, on peut aussi atteindre les valeurs de paramètres des patches stockés en mémoire utilisateur, mais cela veut dire qu'on modifie un patch sauvegardé, pas celui en cours de jeu, ce qui n'a pas de sens en terme d'usage ou d'efficacité, sauf pour un éditeur/bibliothécaire.
Que signifie le h minuscule ajouté après chaque valeur du message ?
Que les valeurs sont exprimées en hexadécimal (base 16), qui est le format de codage utilisé en informatique (et donc dans les transmissions MIDI) pour plus de commodité que le binaire.
https://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal
Connaissez-vous des tutos pour comprendre – à défaut d’apprendre – les SysEx ?
Le fondamentaux numériques du MIDI sont les mêmes pour tous puisqu'il s'agit d'une norme qui décrit comment l'information est codée et transmise.
Mais chaque fabricant fait ensuite un peu ce qu'il veut avec les informations codées en SysEx, puisque comme le nom l'indique elles sont Exclusives au Système (i.e. la machine compatible MIDI) considéré.
Le meilleur tuto pour la manière dont Roland les utilise, c'est l'implémentation MIDI documentée dans les manuels des synthés de la marque.
http://www.chromakinetics.com/handsonic/rolSysEx.htm
« 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)
[ Dernière édition du message le 22/09/2022 à 11:15:06 ]
Pevets
- < Liste des sujets
- Charte
- 1
- 2