Home Forums Macros VST control Matrix

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #6434
    THEZE MorganTHEZE Morgan
    Participant

    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}
    BreakCaseBranch

    Quand 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 change

    Dans 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
    EndRepeat

    Par 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/Wet

    Avec 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 1 month, 2 weeks ago by Philippe OllivierPhilippe.
    #6439
    Philippe OllivierPhilippe
    Keymaster

    Salut 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$ = 0

    DoRepeat
    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 true

    Effectivement, 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

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.