Tempo jv1010.le point (presque final)
- 16 réponses
- 4 participants
- 1 066 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
- 1
- 2
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
- < Liste des sujets
- Charte
- 1
- 2