Il est possible de faire des routines dans les macros de Logelloop.

Pour le faire, il y a 2 manières :

DoRepeat

// ce qui se trouve ici sera répété indéfiniment.

While true

ou :

RepeatWhile true

 // ce qui se trouve ici sera répété indéfiniment.

 EndRepeat

Si vous souhaitez contrôler le moment où la boucle revient au début, vous pouvez y insérer des attentes.

DoRepeat

 // ce qui se trouve ici sera répété indéfiniment.

 Sleep 10

 // La ligne ci-dessus provoquera une attente de 10 millisecondes

 While true

La boucle peut aussi attendre une intervention de l’utilisateur :

DoRepeat

 // ce qui se trouve ici sera répété indéfiniment.

 WaitUserAction

 // La ligne ci-dessus fera que la boucle ne reviendra au début que lorsque l’utilisateur appuiera, sur le bouton Start de la macro.

 While true

Enfin, la boucle peut se faire en fonction de l’avancement du métronome :

// N’oubliez pas de mettre en route l’écoute du métronome dans votre macro

 MetroActivateEvents true

DoRepeat

 // ce qui se trouve ici sera répété indéfiniment.

 WaitMetroSomeBeats 1

 // A chaque temps du métronome, la boucle fera un nouveau tour

 While true

Le nombre de tours de boucle peut se faire en fonction d’un comptage :

Set $my_personnal_counter$ = 0

DoRepeat

 Set $my_personnal_counter$ = {$my_personnal_counter$ + 1}

 // à chaque tour, la variable de comptage sera incrémentée de 1

 Message $my_personnal_counter$

 Sleep 10

 While { $my_personnal_counter$ < 40 }

 // La répétition aura lieu jusqu’au moment où la variable $my_personnal_counter$ aura atteint 40

Les boucles peuvent s’enchaîner :

Set $my_personnal_counter$ = 0

DoRepeat

 Set $my_personnal_counter$ = {$my_personnal_counter$ + 1}

 // à chaque tour, la variable de comptage sera incrémentée de 1

 Message $my_personnal_counter$

 // la macro commande le mouvement du volume de la piste 1 (ascendant ici)

 TrackVolume trk1 = {$my_personnal_counter$ – 76}

 Sleep 10

 While { $my_personnal_counter$ < 76 } 

// La répétition aura lieu jusqu’au moment où la variable $my_personnal_counter$ aura atteint 76 

DoRepeat Set $my_personnal_counter$ = {$my_personnal_counter$ – 1} 

// à chaque tour, la variable de comptage sera décrémentée de 1 

Message $my_personnal_counter$

 // la macro commande le mouvement du volume de la piste 1 (descendant ici) 

TrackVolume trk1 = {$my_personnal_counter$ – 76} 

Sleep 10 

While { $my_personnal_counter$ > 0 }

 // La répétition aura lieu jusqu’au moment où la variable $my_personnal_counter$ sera revenue à 0

Éventuellement, la macro qui précède peut finir par un RestartMacro et continuera ainsi à jouer jusqu’au moment ou l’utilisateur l’arrêtera.

Grâce aux 2 types de routines, il est possible de faire des imbrications :

//Initialisation du compteur de piste

 Set $my_track$ = 0

// Routine pour mettre à -76db tous les fader de pistes

 DoRepeat

 Set $my_track$ = {$my_track$ + 1}

 //VarLoopTrack met trk_x à la valeur de la variable $my_track$

 VarLoopTrack trk_x $my_track$

 TrackVolume trk_x = -76

 // La routine se répète jusqu’au la piste 10

 While { $my_track$ < 10}

//remet le compteur de piste à 0

 Set $my_track$ = 0

//lance la routine de remontée des faders

 //La boucle RepeatWhile sert au changement de piste

 RepeatWhile {$my_track$ < 10}

 Set $my_track$ = {$my_track$ + 1}

 VarLoopTrack trk_x $my_track$

Message $my_track$

//Remet la valeur qui servira au positionnement du fader à 0

 Set $my_personnal_counter$ = 0

//La boucle DoRepeat sert à donner la valeur au fader

 DoRepeat

 Set $my_personnal_counter$ = {$my_personnal_counter$ + 1}

 // à chaque tour, la variable de comptage sera incrémentée de 1

 //Message $my_personnal_counter$

 // la macro commande le mouvement du volume de la piste 1 (descendant ici)

 TrackVolume trk_x = {$my_personnal_counter$ – 76}

 Sleep 10

 //While ferme la routine qui commence par DoRepeat

 While { $my_personnal_counter$ < 76 } 

// Dorepeat se reproduit jusqu’au moment où $my_personnal_counter$ atteint 76  

//EndRepeat renvoie à RepeatWhile 

EndRepeat 

Un système permet de sortie d’une boucle au moment où l’utilisateur rappelle la macro. Cela permet de laisser tourner pendant un temps indéfini et ensuite, faire autre chose qui peut soit être une sorte de coda, soit être une ou plusieurs autres boucles.

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

Set $Canal_a_distordre$ = 0 

//Durée en milliseconde de l’insert pour un canal 

Set $Duree_de_disto$ = 100 

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

Redeclare 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 

Set $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$ ON

 Sleep $Duree_de_disto$

 SFXSendMessage 1 $Canal_a_distordre$ 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

Set $init_de_coda$ = 0

DoRepeat

 Set $init_de_coda$ = {$init_de_coda$ + 1}

 SFXSendMessage 1 $init_de_coda$ OFF

 While {$init_de_coda$ < 10 }

Faire des routines dans les macros

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *