Tagged: during, If conditions, macro, sleep, waitduration
- This topic has 4 replies, 2 voices, and was last updated 5 years, 4 months ago by Philippe Ollivier.
-
AuthorPosts
-
30 July 2019 at 13 h 22 min #4203Christophe CorrecParticipant
Bonjour,
Je travaille en son spatialisé (6 haut-parleurs). Je voudrais créer un mouvement très léger de chaque track sur les hauts-parleurs ( environ 5°), ajusté à la longueur des boucles. L’idée étant de simuler un musicien, rendre vivante la projection du son.
J’ai écrit la macro suivante qui fonctionne sous Logelloop 4.9 mais pas sous Logelloop 5 qui n’aime pas mes variables. J’ai le message suivant : Error : Erreur macro: Macro Rotation automatique, slot 22, line 70: $current_loop_duration_ms$:During, parameter duration, Value out of range: 0.0, not a number between [1.0 , 2.14748365E9]: Incorrect duration expression
Et en général, Logelloop 5 plante et fait planter le mac.
j’ai essayé avec des LFO, ça semble moins gourmand en consommation mais je ne trouve pas comment utiliser la longueur de la boucle plutôt que sin, ramp …Voilà la macro :
——————début de la macro—————————–
WaitBeginLoopDoRepeat
During $current_loop_duration_ms$ +0.014 TrackPanMono trk_all
WaitEndDurings
During $current_loop_duration_ms$ -0.014 TrackPanMono trk_all
WaitEndDurings
During $current_loop_duration_ms$ -0.014 TrackPanMono trk_all
WaitEndDurings
During $current_loop_duration_ms$ +0.014 TrackPanMono trk_all
WaitEndDurings
While {true}
—————fin de la macro————————————-En fait quand je fais un erase, cette macro plante, je ne peux pas l’arrêter manuellement, le bouton stop ne marche pas et c’est là que tout dégénère.
J’ai aussi essayé avec un While { $current_full_tracks_count$ >= 1 } mais sans meilleur résultat.Merci d’avance pour les retours.
Christophe31 July 2019 at 9 h 58 min #4210Philippe OllivierKeymasterSalut Christophe,
Il y a un souci avec WaitEndDurings. J’ouvre un ticket pour regarder cela et corriger aussi vite que possible. J’ai l’impression que ça rejoint un autre problème que j’ai repéré avec les WaitEndDurings, donc, c’est intéressant d’avoir ta macro pour faire des tests.Dans l’attente, je te propose d’utiliser la macro ci-dessous qui devrait faire l’affaire. Je remplace les WaitEndDurings par des “Sleep $current_loop_duration_ms$” ce qui dans le cas présent équivaut à la même chose, mais simplifie l’arrêt de la macro, car dans Logelloop 5, on ne peut plus arrêter la macro pendant un Wait. Cela évite de stopper, par erreur, une macro en cours d’exécution.
Autrement dit :
Sleep = tu peux arrêter quand tu veux
WaitDuration (et tous les autres Wait…) = tu ne peux pas faire stopJe mets aussi :
MacroStopIf {$current_loop_duration_ms$ < 500} En début de macro pour éviter qu'elle tourne s'il n'y a pas de boucle ou une boucle trop courte. Tu peux changer la durée minimale pour qu'elle corresponde à tes besoins. Bonne journée, Philippe- //*************************** macro begin *****************************
- MacroStopIf {$current_loop_duration_ms$ < 500}
- WaitBeginLoop
- DoRepeat
- During $current_loop_duration_ms$ +0.014 TrackPanMono trk_all
- Sleep $current_loop_duration_ms$
- During $current_loop_duration_ms$ -0.014 TrackPanMono trk_all
- Sleep $current_loop_duration_ms$
- During $current_loop_duration_ms$ -0.014 TrackPanMono trk_all
- Sleep $current_loop_duration_ms$
- During $current_loop_duration_ms$ +0.014 TrackPanMono trk_all
- Sleep $current_loop_duration_ms$
- While true
- //**************************** macro end ******************************
31 July 2019 at 13 h 15 min #4214Christophe CorrecParticipantSuper, merci Philippe !
Je teste ça tantôt.
Christophe13 August 2019 at 12 h 02 min #4231Christophe CorrecParticipantLa macro fonctionne nickel.
Logelloop n’aime quand même pas trop quand j’efface les boucles et que cette macro est en route, même si ça ne le plante plus. Il rame quelques instants.
J’ai donc rajouté une commande MacroStopByName avant les UndoRecord dans mes macros de morceaux et du coup plus de souci.J’en ai aussi profité pour changer tous les WaitEndDurings par des Sleep et c’est effectivement plus fluide.
Merci !14 August 2019 at 13 h 27 min #4236Philippe OllivierKeymasterSalut Christophe,
Tu pourrais ajouter une condition dans la macro pour éviter qu’elle fasse des durings trop courts lorsque la boucle est effacée. En l’occurrence, dans ma version de Logelloop la macro s’arrête sur une erreur lorsque l’on tente de faire un during de durée 0. Quoiqu’il en soit, avec la condition, la macro ressemblerai à cela://*************************** macro begin *****************************
Declare int $last_loop_duration_ms$ = 1000
Declare float $positive_pan_movement_ratio$ = 0.014
Declare float $negative_pan_movement_ratio$ = -0.014MacroStopIf {$current_loop_duration_ms$ < 500} WaitBeginLoop DoRepeat If {($current_loop_duration_ms$ > 1000) && ($last_loop_duration_ms$ != $current_loop_duration_ms$)}
$last_loop_duration_ms$ = $current_loop_duration_ms$
EndIfDuring $last_loop_duration_ms$ $positive_pan_movement_ratio$ TrackPanMono trk_all
Sleep $last_loop_duration_ms$
During $last_loop_duration_ms$ $negative_pan_movement_ratio$ TrackPanMono trk_all
Sleep $last_loop_duration_ms$
During $last_loop_duration_ms$ $negative_pan_movement_ratio$ TrackPanMono trk_all
Sleep $last_loop_duration_ms$
During $last_loop_duration_ms$ $positive_pan_movement_ratio$ TrackPanMono trk_all
Sleep $last_loop_duration_ms$
While true
//**************************** macro end ****************************** -
AuthorPosts
- You must be logged in to reply to this topic.