Business Template Forums Macros Coup de pouce Macro "Rotation automatique"

This topic contains 4 replies, has 2 voices, and was last updated by  Philippe Ollivier 4 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #4203

    Christophe Correc
    Participant

    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—————————–
    WaitBeginLoop

    DoRepeat

    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.
    Christophe

    #4210

    Salut 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 stop

    Je 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 ******************************
#4214

Christophe Correc
Participant

Super, merci Philippe !
Je teste ça tantôt.
Christophe

#4231

Christophe Correc
Participant

La 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 !

#4236

Salut 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.014

MacroStopIf {$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$
EndIf

During $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 ******************************

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.