Tagged: variables plug-in VST parametre
- This topic has 1 reply, 2 voices, and was last updated 7 months ago by Philippe.
-
AuthorPosts
-
4 April 2024 at 10 h 01 min #6434THEZE MorganParticipant
Bonjour,
Ma question concerne le controle d’un VST en macro en utilisant une variable : $VST_fx1_rank1_SetParam_state$
Mais tout d’abord je replace un peu le contexte.
Depuis l’arrivée de Matrix dans logelloop j’assigne des fonctions à mes contrôleurs par l’intermédiaire de ce nouvel outil.
Ensuite j’ai reçu un clavier APC key 25 mkII j’ai dû bidouiller pour utiliser mes knobs.
En effet ces derniers ne fonctionnent pas en envoyant une valeur entre 0 et 127 comme un potentiomètre midi habituel, mais en envoyant des valeurs en fonction de la vitesse de rotation : [1 à 10] quand on tourne vers la droite et [127 à 117] quand on tourne vers la gauche.En fait c’est top pour contrôler plusieurs paramètres avec un seul knob car cela nous permet d’incrémenter une variable.
Dans le code ci-dessous la boucle passe en revue l’intensité de l’incrémentation ($mcSTEP$) grâce à une boucle :CaseBranch DL_length-0
$mcSTEP$ = 1
DoRepeat
IfThen {currentCaseOptionValueFloat(0) == $mcSTEP$} Do InsertSendMessage fx2 $DL_insert$ DelayLength {$Delay_fx2_rank1_DelayLength_state$ +round(scale($mcSTEP$,1,10,1,1000))}
IfThen {currentCaseOptionValueFloat(0) == (117+$mcSTEP$)} Do InsertSendMessage fx2 $DL_insert$ DelayLength {$Delay_fx2_rank1_DelayLength_state$-round(scale($mcSTEP$,1,10,1000,1))}
$mcSTEP$ = {$mcSTEP$ +1}
While {$mcSTEP$ <= 10}
BreakCaseBranchQuand on tourne vers la droite currentCaseOptionValueFloat(0) est compris entre 1 et 10 et vers la gauche entre (117+10) et (117+1).
Ensuite en fonction de la valeur de currentCaseOptionValueFloat(0) la variable $Delay_fx2_rank1_DelayLength_state$ est incrémentée en décrémentée en fonction de la vitesse de rotation.Contrôler un VST grâce à SetParam
En parcourant le forum j’ai découvert que logelloop n’avait pas de limite puisque l’on pouvait contrôler un VST en envoyant un message SetParam :
Commander un VST qui peut recevoir des program changeDans une macro classique je fais une boucle pour pouvoir identifier mes paramètres :
RepeatWhile true
InsertSendMessage fx1 1 SetParam {round($midiv_cc1$)} {($midiv_cc2$)}
Sleep 5
EndRepeatPar exemple le paramètre 4 contrôle le Decay de ma reverb Arturia LX-24.
Utiliser une MATRIX pour contrôler les paramètres de ma reverb
Pour contrôler par bouton pas de soucis :
InsertSendMessage fx1 1 SetParam 1 [ < 0.5] => Bypass off
InsertSendMessage fx1 1 SetParam 1 [ > 0.5] => Bypass on
InsertSendMessage fx1 1 SetParam 2 [0 à 1] => Dry/WetAvec des knobs classiques nous pourrions écrire :
InsertSendMessage fx1 1 SetParam 2 {scale(currentCaseOptionValueFloat(0),0,127,0,1)}
Ainsi notre knob nous permet de doser notre effet. Formidable.
Enfin ma question : Par contre pour utiliser mes knobs sur l’APC (ou un push2) je suis bloqué.
En effet j’ai trouvé cette variable qui me permet de connaitre l’état du dernier paramètre modifié par message : $VST_fx1_rank1_SetParam_state$
2 soucis :
1- cette variable est de type string je ne peux donc pas l’incrémenter
2- cette variable change de paramètre en fonction de ce que l’on contrôle. Si je viens de contrôler le dry/wet la variable donne 2 0.3, et elle ne pourrait plus me servir à contrôler le paramètre 4 …Comment est-il possible de récupérer les valeurs des différents paramètres ?
Pour le moment je contourne l’affaire en déclarant une variable que je fais coincider avec le VST et que je place dans l’entête de ma MATRIX :
Declare Local Once float $VST_fx1_rank1_SetParam_4$ = 0
InsertSendMessage fx1 1 SetParam 4 $VST_fx1_rank1_SetParam_4$Ensuite je change légerement le code de ma casebranch :
CaseBranch RV_decay-0
$mcSTEP$ = 1
DoRepeat
IfThen {currentCaseOptionValueFloat(0) == $mcSTEP$} Do $VST_fx1_rank1_SetParam_4$ = {$VST_fx1_rank1_SetParam_4$+(scale($mcSTEP$,1,10,0.01,0.1))}
IfThen {currentCaseOptionValueFloat(0) == (117+$mcSTEP$)} Do $VST_fx1_rank1_SetParam_4$ = {$VST_fx1_rank1_SetParam_4$-(scale($mcSTEP$,1,10,0.1,0.01))}
InsertSendMessage fx1 1 SetParam 4 $VST_fx1_rank1_SetParam_4$
$mcSTEP$ = {$mcSTEP$ +1}
While {$mcSTEP$ <= 10}
BreakCaseBranchÇa fonctionne, mais peut-être qu’il y a une solution plus simple ?
Par avance, merci beaucoup.
Morgan
- This topic was modified 7 months ago by Philippe.
9 April 2024 at 7 h 52 min #6439PhilippeKeymasterSalut Morgan,
Les variables permettent :
– de connaître l’état d’une interface de Logelloop
– de mémoriser/modifier une valeur dans une ou plusieurs macros.Mais les variables ne permettent pas de modifier l’état de Logelloop !
J’espère ne pas omettre une situation particulière en écrivant cela, mais si tu souhaites changer l’état de quelque chose dans Logelloop, tu dois envoyer un message à partir de la macro.Lorsqu’il s’agit d’un VST, la variable $VST_fx1_rank1_SetParam_state$ te permet de connaître l’index et la valeur du dernier paramètre que tu as édité sur le plug-in. À ce jour, les variables string sont le moyen le plus simple de stocker plusieurs valeurs lisibles en un coup d’œil, c’est la raison pour laquelle cette variable est une string.
Pour modifier l’état du plug-in, tu n’auras pas d’autre choix donc que d’utiliser
InsertSendMessage fx1 1 SetParam
Je peux si cela est vraiment nécessaire ajouter une variable qui donnerait le nombre total de paramètres d’un plug-in, mais c’est un peu de travail et je ne suis pas certain que cela soit vraiment nécessaire, car ça donnera tellement de valeur dans certains cas que tu auras bien de la peine à les utiliser.
Je préconise dans l’état actuel des choses d’utiliser $VST_fx1_rank1_SetParam_state$ pour connaître les index des paramètres que tu souhaites contrôler avec ta macro et de procéder comme tu le précises ci-dessus.
Pour ma part, j’ai cette simple macro pour modifier la valeur d’un paramètre en boucle :
Declare Local int $VST_param_id$ = 1
Declare Local float $VST_param_value$ = 0DoRepeat
If {$VST_param_value$ >= 1}
$VST_param_value$ = 0
EndIf
InsertSendMessage fx1 1 SetParam $VST_param_id$ $VST_param_value$$VST_param_value$ = {$VST_param_value$ + 0.01}
Sleep 100
While trueEffectivement, je déclare moi-même deux variables, l’une sera générale pour ce plug-in, elle te permettra de choisir l’index du paramètre que tu souhaites éditer et l’autre sera la valeur que tu souhaites attribuer à ce paramètre…
Bonne journée,
Philippe -
AuthorPosts
- You must be logged in to reply to this topic.