Tempo jv1010.le point (presque final)
- 16 réponses
- 4 participants
- 1 124 vues
- 1 follower
Drs
suite à ce topic: https://fr.audiofanzine.com/apprendre/mailing_forums/index,idtopic,55383.html j'en rouvre un nouveau histoire de clarifier l'affaire.
Voici la chose:
Comment changer le tempo d'une performance sans Sound Diver par les system exclusive.
La solution proposée (après appel chez Roland France) est la suivante et se passe en trois étapes:
1. Mettre le System Clock sur externe:
F0 41 10 6A 12 00 00 00 0C 01 73 F7 (1)
2. Mettre la Performance sur Clock System:
F0 41 10 6A 12 10 00 00 41 01 2E F7 (1)
3. Configurer le séquencer pour qu'il envoie du MIDI CLOCK au JV.
(1): F0=SysEX / 41=Roland / 10=ID Appareil / 6A=ID modèle / 12=ID Commande / aa bb cc dd=adresses commande / 01=valeur / 73 ou 2E=checksum / F7=fin SysEx
Cette solution ne fonctionne pas chez moi.
Pourtant, après lecture approfondie des tableaux de commandes MIDI, il apparait clairement qu'il existe une commande qui s'appelle Performance Tempo et qui permettrait, à mon avis, de régler le tempo de la Performance de la même manière qu'on le faisait avec SoundDiver. Evidemment, si changement de tempo il y a au cours du morceau, le JV ne suivra pas. C'est l'inconvénient de cette méthode par rapport à la précédente. Je dois dire pourtant qu'elle m'interresserait ici.
Mon problème est que je ne sais pas du tout construire un SysEx, et encore moins calculer le checksum.
Voici ce qu'il y a dans le manuel concernant le Performance Tempo:
Adresse systeme:
00 00 00 00
Adresse de décalage:
00 2D
Valeur
00 00 aa aa
00 00 bb bb 20-250 (2)
(2) ces valeurs doivent etre envoyées en deux paquets. Exemple, ab doit etre envoyé en 0a puis 0b. Etant donné que les valeurs midi vont de 0 à 128, cela voudrait-il dire que pour un tempo de 130, il faille envoyer une 1ere valeur de 128 et une 2eme de 2?
Le début du message SysEx ne change pas: F0 41 10 6A 12
Pour l'adresse, si j'ai tout compris, il faut additionner la valeur de l'adresse de départ et celle de décalage, ici on aura donc 00 00 00 2D.
C'est là que ca se gate, pour envoyer la valeur de tempo, ainsi que pour le calcul du checksum!
Et, à la fin F7. Ca c'est pas dur
Et dernière question, ce parametre s'applique-t-il à toutes les performances, ou bien celle en cours? (d'ailleurs quelle est la perf en cours quand on allume le JV. La user1?)
Si une ame charitable voulait bien me dire si mon raisonnement est bon, si mon message SysEx est correctement construit, et m'apporter les valeurs manquantes (ainsi qu'une explication concernant le clacul du checksum), ca serait bigrement gentil
Merci de m'avoir lu jusqu'au bout.
Alex
PS: j'ai les neurons qui chauffent
Drs
En fait un de vous m'avais dit:
80-(données+valeurs). Mais pourquoi 80? Parce que cela correspond à 128 en héxa!!!
Et pour les ignares comme moi: https://www.mamosa.org/jenfi.home/home.html?detail/midichecksum.html&util
C'est un calculateur de checksum!
Mais pour l'envoi de la valeur du tempo, je sèche toujours.
Alex
Beatless
|
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Lord Wan
Comme les valeurs MIDI sont limitées à 7 bits (le huitième indique si c'est une commande ou une donnée), la valeur maxi est 127 (soit h7F ).
Quand une valeur supérieure doit être transmise, il faut couper la donnée en paquets de 7 bits. Une valeur de 200 se décompose en 1 x 128 + 72. Cela s'écrit en deux paquets, le premier valant 1 (h01), le second 72 ( h48 ).
Maintenant, Roland à très bien pu décider de décomposer en deux paquets de 4 bits...
Cela done : 200 ( soit C8 en hexa ) -> 1 paquet = 0C et 1 paquet = 08. Là c'est plus simple puisque on a un paquet pour les unité et un paquet pour les "seizaines".
Dernière question, dans quel ordre faut-il envoyer les paquets... aa = hC et bb = h8, ou l'inverse ? Il ne te reste plus qu'a essayer...
Quant au check-sum, la formule h80 - (donnée+valeurs) n'est valable que si donnée+valeurs ne dépasse pas 128 et est différent de zéro. La vrai formule serait plutôt :
(h80 - ( (donnée+valeurs) modulo 128)) modulo 128
Drs
"Quand une valeur supérieure doit être transmise, il faut couper la donnée en paquets de 7 bits. Une valeur de 200 se décompose en 1 x 128 + 72. Cela s'écrit en deux paquets, le premier valant 1 (h01), le second 72 ( h48 ). "
-> Ce qui voudrait dire qu'on envoie une valeur 172 en 1 puis 72. Donc les centaines d'abord et le reste après. J'ai bon?
"Maintenant, Roland à très bien pu décider de décomposer en deux paquets de 4 bits... "
-> Vraisemblablement, je dirais oui. C'est pour ca que le tempo est "0000aaaa" et "0000bbbb". J'ai bon?
"Cela donne : 200 ( soit C8 en hexa ) -> 1 paquet = 0C et 1 paquet = 08. Là c'est plus simple puisque on a un paquet pour les unité et un paquet pour les "seizaines". "
-> Bon voila je comprends plus. parce que h0C ca donne 12 et 08, donne 8. Alors .... Je m'interromps parce que je crois avoir compris. En fait, pour les valeurs supérieures à 128, il faut découper en deux. Donc si je prends par exemple 150, ca donne 96h, il faut donc envoyer deux valeurs, une de 09h et une de 06h.
Pour reprendre ton exemple, 200 donne C8, donc deux valeurs 0Ch et 08h.
Et pour les valeurs inférieures à 128, on l'envoie quand meme sur deux valeurs ou pas?
"Dernière question, dans quel ordre faut-il envoyer les paquets... aa = hC et bb = h8, ou l'inverse ? Il ne te reste plus qu'a essayer... "
-> C'est ce que je vais faire
"Quant au check-sum, la formule h80 - (donnée+valeurs) n'est valable que si donnée+valeurs ne dépasse pas 128 et est différent de zéro. La vrai formule serait plutôt :
(h80 - ( (donnée+valeurs) modulo 128)) modulo 128"
-> J'avais remarqué que pour les valeurs supérieures à 128, c'etait plus bon. Mais grace au grand Jenfi, y'a le calculateur de checksum
Donc au final, pour un tempo de 200 (et pour voir si j'ai bien tout compris), le sysex ressemblerait à ca:
F0 SysEx
41 ID
10 ID
6A ID
12 Commande
00
00 Données correspondant
00 au PerfTempo
2D
0C Tempo
08 Tempo (mais ne faut-il pas rajouter 00 00 au début pour que ce soit sur 4 bits?)
3F Cheksum
F7 Fin SysEx
J'ai bon?
En tout cas merci de votre aide.
Alex
Lord Wan
Attention, ne confond jamais valeur décimales et hexadécimales... Mets un h devant les chiffres en hexa pour être sur.
Citation : mais ne faut-il pas rajouter 00 00 au début pour que ce soit sur 4 bits?
Rien à voir, il ne faut pas confondre les bits et les bytes : un octet, c'est un byte de 8 bits et un quartet c'est un byte de 4 bits.
( Y en a qui ont fini figurants dans un film x pour moins que ça...
Un dernier tuyau pour la route. Quand une donnée est découpée en plusieurs bytes, on désigne celui qui représente la plus grosse partie par MSB et le moindre par LSB.
MSB : most signifiant byte, LSB : least signifiant byte.
Dans le cas de ta valeur hC8, le quartet (4 bits) MSB c'est le hC, le quartet LSB c'est le h8.
Ca t'aidera peut-être à déchiffrer les documents midi des constructeurs qui sont tous aussi clairs que du jus de boudin.
Drs
Bon ceci dit, c'est bien compliqué tout ça et j'avoue qu'il faut du temps pour que je percute, ce qui aide pas
Mais bon...j'ai essayé avec le sysex que j'ai donné plus bas et ca ne fonctionne pas. J'avoue que je commence a plus rien comprendre et j'ai envoyé un msg à Roland en leur donnant le lien de ce forum, afin qu'ils nous viennent en aide.
Alex
Beatless
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Beatless
Citation : La solution proposée (après appel chez Roland France) est la suivante et se passe en trois étapes:
1. Mettre le System Clock sur externe:
F0 41 10 6A 12 00 00 00 0C 01 73 F7 (1)
2. Mettre la Performance sur Clock System:
F0 41 10 6A 12 10 00 00 41 01 2E F7 (1)
3. Configurer le séquencer pour qu'il envoie du MIDI CLOCK au JV.
Et en mettant manuellement ton JV en mode Clock externe, c-à-d MIDI comme c'est dit dans le manuel:
Citation : Groupe Setup
Setup
Paramètre Nom complet du paramètre Valeur
Patch Remain Commutateur Patch Remain ON,OFF
Clock Source Source d'horloge INT,MIDI
System Tempo Tempo système 20 -- 250
Est-ce que ça fonctionne? Je ne connais pas le JV et je ne sais pas si la manip est possible car elle ne l'ait peut-être pas pour le 1010 et c'est OK pour un 80 par exemple (Roland aime bien faire ce genre de blague dans les documents génériques du style "JV family Guide").
Citation : J'ai fait envoyé à mon Cubase SX 1 (Mac) du midi clock au JV (qui
apparemment le recoit, car diode midi allumée en permanence et pas de
message d'erreur), mais rien n'y fait.
Lorsque tu changes le tempo dans Cubase, est-ce que ta LED pulse en suivant le BPM ou reste invariablement allumée?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Drs
"Et en mettant manuellement ton JV en mode Clock externe, c-à-d MIDI comme c'est dit dans le manuel"
-> Tu ne peux pas faire ca. En fait, le JV 1010 est réduit au minimum sur les actions externes. Le principe était de faire une boite pas cher (sans écran, sans trop de commandes) car elle était entièrement pilotée par SoundDiver. On peut agir du panneau de controle sur certains éléments (comme le canal midi global, le tune ou encore les effets), mais pas sur les parametres de synchro.
"Lorsque tu changes le tempo dans Cubase, est-ce que ta LED pulse en suivant le BPM ou reste invariablement allumée?"
-> Elle reste allumée en permanence.
Alex
Beatless
1. Mettre le System Clock sur externe:
F0 41 10 6A 12 00 00 00 0C 01 73 F7 (1)
Voici sa fenêtre de saisie:

2. Mettre la Performance sur Clock System:
F0 41 10 6A 12 10 00 00 41 01 2E F7 (1)
Voilà sa fenêtre de saisie:

J'ai saisie ces info dans une part comme ci-dessous (clique dessus pour l'avoir dans une fenêtre):

Je n'ai pas essayé d'envoyer ces messages car je n'ai pas de JV-1010. Mais c'est bien cette méthode que j'applique pour déclencher des config sur mes expandeurs.
Tu nous tiens au courant?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Drs
Alors voila, hier j'ai relu l'intégralité des deux posts, et je me suis apercu (apres avoir testé ta solution Jenfi, qui ne fonctionne pas), que CYCLOTHIMIQUE avait donné deux sysex qui étaient différents de ceux que m'ont donné Roland France.
Au point où j'en était, ca ne coutait rien d'essayer.
Et ca fonctionne!!!!! Donc, pour résumer, voici les sysex à mettre (un enorme merci à toi cyclo, et aussi à tous les autres, jenfi par exemple, pour m'avoir aidé...plein tout plein de merci):
F0 41 10 6A 12 00 00 00 0C 01 73 F7 (pour Source d'Horloge = MIDI)
F0 41 10 6A 12 01 00 00 41 01 3D F7 (pour Clock Source = SYSTEM)
Ne pas oublier ensuite de faire envoyer du Midi Clock du séquencer.
Et ca fonctionne nickel! Je me suis donc fait un petit template tout prêt, avec le sysex renseigné pour plus avoir à le faire. Ce qui est fabuleux, c'est que si la song change de tempo, le JV suit, ce qui n'était pas possible avec SounDiver.
Je vais de ce pas envoyer votre solution à Roland pour les informer et qu'ils puissent communiquer là-dessus.
Merci encore de votre aide (Jenfi, mets ca sur ton site, je pense que ca en aidera d'autres).
Alex
PS: j'suis trop content, j'va faire la fete et boire un coup à votre santé
.: Odon Quelconque :.
Citation : Je vais de ce pas envoyer votre solution à Roland pour les informer et qu'ils puissent communiquer là-dessus.
J'veux pas dire, mais j'ai rien inventé: il suffit de d'enregistrer les changements de paramètres effectués depuis la face avant, puis de lire les SysEx générés dans la piste séquenceur du XP-50 (en l'occurrence). La lecture de l'implémentation SysEx confirme la validité des chaînes générées, heureusement d'ailleurs... Et ça fonctionne pour tout.
A propos de XP-50, il est à vendre, au fait.
« 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)
Beatless
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Drs
Donc obliger de se palucher la lecture de la doc...et surtout de la comprendre
Alex
.: Odon Quelconque :.
Citation : La face avant est réduite au minimum. Meme pas possible d'envoyer du sysex sans une demande externe.
Sacré régression par rapport à un bête JV-1080, qui est 100% exploitable depuis sa face avant, lui. Economies, économies...« 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)
Drs
Moi ca m'allait tres bien, car en fait c'est surtout les sons qui m'interressent
Mais c'est vrai qu'à l'époque, je me doutais pas des galères que j'allais avoir...mais décidemment à l'époque, j'avais pas les moyens d'acheter le 1080.
Alex
- < Liste des sujets
- Charte

