- This topic has 1 reply, 2 voices, and was last updated 9 months ago by Philippe.
-
AuthorPosts
-
9 March 2024 at 15 h 27 min #6392WilliamNicolasParticipant
Salut,
Avec quelle commande peut on sortir du boucle dans une macro pour faire jouer des actions écrites derrière le While true ?
Merci !
10 March 2024 at 7 h 51 min #6400PhilippeKeymasterSalut,
Oui, c’est possible.
C’est un peu complexe à mettre en œuvre, mais ça fonctionne bien.Il faut utiliser BeginSignalCatchBlock, une variable, ici c’est $user_action_catched$ mais tu peux choisir un autre nom et la ligne
“EndSignalCatchBlock OnSignalCatched Do Set $user_action_catched$ = true”
qui change l’état de la variable $user_action_catched$Tu trouveras un exemple ci-dessous :
//************************************************************************************************************************
//Cette macro est à utiliser avec le SFX Distortion inséré dans le slot 1
//Variable qui permet de choisir le canal dans lequel sera inséré la distorsion
Declare int $Canal_a_distordre$ = 0//Durée en milliseconde de l’insert pour un canal
Declare int $Duree_de_disto$ = 50Declare int $init_de_coda$ = 0
//Routine de chenillard – met en route et arrête la distorsion cycliquement
//Cette variable servira à arrêter la macro si l’utilisateur relance la macro
Declare boolean $user_action_catched$ = false//Il faut mettre ici la macro en attente d’une sollicitation de l’utilisateur (comparable à WaitUserAction, mais non bloquant)
BeginSignalCatchBlock//Début de la boucle
DoRepeat
$Canal_a_distordre$ = {$Canal_a_distordre$ + 1}
//La condition IfThen permet de n’insérer la distorsion que sur les pistes dans lesquelles il y a du son
//La variable $current_full_tracks_count$ est interne et nous renseigne du nombre de pistes contenant du son
IfThen { $Canal_a_distordre$ > $current_full_tracks_count$ } Do Set $Canal_a_distordre$ = 1//Insere la distorsion et attend un temps avant de l’arrêter pour cette piste
SFXSendMessage 1 {“” + $Canal_a_distordre$ + “_DistoTrigger”} ON
Sleep $Duree_de_disto$
SFXSendMessage 1 {“” + $Canal_a_distordre$ + “_DistoTrigger”} OFF
Sleep $Duree_de_disto$
//! indique que l’inverse donc !false = true
//Tant que l’utilisateur ne fait rien, $user_action_catched$ reste à false, donc la condition !$user_action_catched$ est true
While { !$user_action_catched$ }//Cette ligne fait que si l’utilisateur relance la macro, $user_action_catched$ passe à true
//Si c’est le cas, la routine s’arrête et on passe à la suite
EndSignalCatchBlock OnSignalCatched Do Set $user_action_catched$ = true//Lorsque l’on quitte la routine, on fait une nouvelle routine qui remet tous les inserts sur OFF
//cela permet de s’assurer qu’aucun canal ne reste en distorsion à la fin de la macro
DoRepeat
Set $init_de_coda$ = {$init_de_coda$ + 1}
SFXSendMessage 1 $init_de_coda$ OFF
While {$init_de_coda$ < 10 } //************************************************************************************************************************ -
AuthorPosts
- You must be logged in to reply to this topic.