module inscription newsletter haut de page forum mobile

Dismiss Notice

formations etalonnage sur davinci resolve

Nos Formations Etalonnage avec Forest reviennent en octobre !
Adoptez une réelle méthodologie d'étalonnage professionnelle et atteignez vos objectifs créatifs avec nos formations intensives sur 3 jours
Toutes les infos
Dismiss Notice

Formation Lumière - Pratique Intensive du 14 au 16 octobre à Paris
Formez-vous avec cet atelier de pratique intensive dans des conditions exceptionnelles ! Formation finançable.
Toutes les infos

Ateliers et Formations

Expression : Controle d'un clip a partir d'un calque audio

Discussion in 'Archives moteurs' started by cubic, Sep 22, 2005.

Tags:
  1. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Ok, en reprenant ton exemple, l'animation defile normalement de 1 à 25, à 25 elle revient à 1. Au premier pic audio, elle saute à un chiffre au hasard par ex 4,5,6,... sans s'arreter, s' il n'y a pas de nouveau pic avant l'image 25, elle revient à l'image 1 normalement et continue la lecture, s' il y a un pic audio, elle saute de nouveau au hasard, etc...
    En fait il y a un exemple sur motionscript.com avec cette expression :

    segDur = .5;// duration of each "segment" of random time
    minVal = inPoint;
    maxVal = outPoint - segDur;

    seed = Math.floor(time/segDur);
    segStart = seed*segDur;
    seedRandom(seed,true);
    startVal = random(minVal,maxVal);
    endVal = startVal + segDur;
    linear(time,segStart,segStart + segDur, startVal, endVal);
    Sauf que là tout est basé sur la durée du segment à intervale régulier, donc c'est pas vraiment la bonne méthode pour moi. En gros je veux faire la meme chose, sauf que c'est le pic audio qui déclenche le saut de l'image, et non un intervale de temps.
    Tout ça, c'est parce que je bosse sur une musique qui a un tempo irrégulier, donc je ne peux rien caler, et tout va dépendre de mon calque d'amplitude audio.
     
  2. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    d'accord, maintenant j'ai pigé :D

    essaie cette expression :
    Code:
    audio=thisComp.layer("Amplitude audio").effect("Les deux couches")("Curseur");
    audio_limit = 33;
    tr=0; 
    i=0;
    
    while(i <= time) {
       if(audio.valueAtTime(i) > audio_limit ){
             seedRandom(i,true);
             tr += Math.floor(random(25,50))/25 ;
       }
       else {
             tr += 1/25;      
       }
       i += 1/25;
    }
    tr; 
    dans cette expression, lorsque l audio va depasser 33, l'animation fait un saut compris entre 1seconde et 2seconde (25/25 =1 et 50/25=2 ) et la lecture commence ensuite a partir de cette frame;
    sinon la lecture est normale ...

    un exemple : l animation represente un carre qui se deplace de gauche a droite (en boucle).
    a chaque pic audio, l animation part d'une frame choisie au hasard, et la lecture commence ...

    audio_saut_random (300k)
     
  3. lagouez

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    14
    Appréciations:
    +0 / 0 / -0
    Je viens de parcourir ton site sur les expressions et je suis tres admiratif car non seulement on sent que tu maitrise ton sujet mais en plus de ça, c'est d'une limpidité...
    Tu as du bosser comme un fou.
    Grand grand bravo, grace a toi je me met aux expressions et j'adore ça...

    A+
     
  4. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Oui, moi aussi, c'est en tombant sur le Repaire des expressions que j'ai eu envie de m'y mettre, c'est assez jouissif de pouvoir arriver au résultat qu'on cherche sans avoir à utiliser des plug qui font rarement ce qu'on veut. Bon après faut arriver à les écrire ...:D
    Merci Nab pour l'expression, c'est exactement ce que je cherchais .:love:
    Pour mieux comprendre la variable i=0 permet de récupérer la valeur de la frame 0, et i+=1/25 dit d'aller chercher la valeur de la frame suivante. Si on met i=2 (ou 50/25), la fonction ira chercher les valeurs à partir de la frame 50 ?
    Ensuite tr indique quelle frame doit etre affichée; Si à la place de tr=0, je mets tr=16/25, la premiere image sera la frame 16, tr+= définie la frame suivante.
    Par exemple si dans ton expression, je remplace
    seedRandom(i,true);
    tr += Math.floor(random(25,50))/25 ;
    par
    tr +=0
    alors chaque pic audio fera redemarer la sequence au début (à moins que ce soit plutot tr=0 :rolleyes: , bon je vais tester).
    Est ce que je commence à comprendre, ou je suis toujours à côté de la plaque ?
     
  5. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    oui en gros c est ca, ca commence a venir :bravo:

    pour faire repartir l animation au début a chaque pic audio, tu peux essayer cette expression:
    Code:
    audio=thisComp.layer("Amplitude audio").effect("Les deux couches")("Curseur");
    audio_limit=33;
    tr=0; 
    i=0;
    
    while(i<=time) {
       if(audio.valueAtTime(i) > audio_limit ){
             tr=0;
       }
       else {
             tr+=1/25;
       }
       i+=1/25;
    }
    tr;
    "tr" , designant TimeRemap, indique la frame de ton animation qui doit être affichée.
    la boucle "while" sert a calculer sur toutes les frames de l instant 0 à l'instant courant (l expression est evaluee a chaque frame de l animation)
    a chaque fois qu'il se produit un pic audio, alors l'image devant etre affichée est l'image "0" (tr = 0).
    si il n y a pas de pic détecté, la valeur de "tr" est incrémentée de 1 image (tr+= 1/25), donc la lecture est normale, on passe a l'image suivante .

    le même exemple que précédemment avec cette expression :
    audio_restart (300k)

    ps:merci a vous deux pour vos commentaires sur le Repaire des expressions, je l ai fait pour inciter les repairenautes a se pencher sur les expressions et suis donc ravi que ca fonctionne :)
     
  6. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Oui en testant, je me suis rendu compte que c'était tr=0 et non tr+=0, ce qui parait logique apres coup, tr+=0 fige "evidemment" l'image. J'ai aussi essayé avec tr -=1/25, ce qui donne un effet assez interessant, d'avant/arriere en fonction du son... Ca y est je suis dedans :) , ça m'ouvre plein de possibilités, et avec ces quelques expressions, j'ai exactement ce que je veux.
    Merci encore Nab !
     
  7. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    et n'hésite pas à faire voir tes anims aux copains du repaire ... si tu les trouves cool :)
     
  8. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Justement j'ai mis un exemple de ce que ça peut donner exemple , y'a qlques bugs sur la piste son, mais on peut déjà se faire une petite idée.
     
  9. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    eh sympa !

    c'est tout de meme pas evident de voir le lien entre le défilement des images et le niveau audio

    mais l'effet est pas mal
     
  10. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Oui, il faut peut etre ajuster un peu le seuil, mais j'aime bien:D .
    Mais ce n'est pas avec ces images que je travaille, ça c'etait juste pour un essai. Je vais mettre un petit bout avec les bonnes images, je reviens !:D
     
  11. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Voilà j'ai mis un autre exemple qui utilise la premiere expression, si pic audio alors va à la prochaine frame. ici
    Par contre j'ai des problemes de son. Peut etre parce que j'ai importé une piste mp3 et que c'est recompressé en sotie ? Va falloir que je regarde ça de plus près ...
     
  12. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    le son passe bien chez moi :), j ai rien remarque en tous cas

    je ne sais pas comment tu animes tes "flocons" mais tu peux le faire avec des expressions... du style leur position, leur opacité, leur rotation,etc...tout ca a partir d un seul flocon a la base.

    et bien sur lier ces proprietés a l'audio....pour que le son controle tout ca
     
  13. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    C'est une animation que j'ai faite avec Flash, mais en effet ça peut etre pas mal de le faire directement avec une expression. Je vois un peu commet jouer sur l'opacité et la position (tu l'explique sur ton site :D ) , mais la fonction dupliquer ...:perplexe: , aucune idée !
     
  14. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    oui ca serait plus pratique de tout faire dans after

    pour dupliquer c est pas le plus dur, c est Crtl+D :D

    si tu me dis ce que tu voudrais avoir comme animation pour tes "flocons", je veux bien te guider avec les expressions :)

    j ai vu ton site du coup...vraiment bien. c est toi qui compose la musique ? apparemment oui, alors felicitations !
     
    #29 nab17connection, Sep 24, 2005
    Last edited: Sep 25, 2005
  15. cubic

    Trophy Points:
    550
    Likes Received:
    0
    Messages:
    29
    Appréciations:
    +0 / 0 / -0
    Merci pour tes commentaires ;) .
    L'idée ce serait d'avoir un calque avec un flocon et qu' à chaque pic audio, ce calque soit dupliquer à une position aléatoire et une dimension comprise entre 50 et 150 % de l'original (par ex), et pourquoi pas jouer sur l'opacité.
    La position ça doit etre un truc du genre position[ random(720),random(576) ] , la dimension scale [random(50,150)] et l'opacité opacity = random(50,100) . Oui, j'aime bien l'aléatoire.:D
    Dans l'expression de départ, il faut donc remplacer la variable tr, par ces nouvelles variables et là je sais plus faire .
    :D
     
Loading...

Dernières occasions

 

Share This Page

Vous souhaitez annoncer sur le Repaire ? Contactez-nous