Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Start chained pulses at key marker

  • Start chained pulses at key marker

    Posted by Eden Exposito on December 14, 2012 at 12:23 pm

    Hi Again!

    Im trying to modify my expression to start a chained pulses in the first keymarker instead “0”. But i dont know how do this offset. Seems be simple but i don see it.

    I Had done a screenshot of the desired behavior

    Thanks for your time again!

    /* ----------- OSCILACION ----------- */

    /////////// EDEN COMENTA: ///////////
    /*Esta expresión crea una función de oscilacion automática en función del tiempo y los sliders */

    /////////// VARIABLES ///////////
    frecuencia=effect("Oscilador 2D")("Frecuencia Opacidad");
    opacidad_maxima=effect("Oscilador 2D")("Opacidad Maxima");
    opacidad_minima=effect("Oscilador 2D")("Opacidad Minima");
    invertir=effect("Oscilador 2D")("Invertir Fase Opacidad").value;
    desvanecimiento=effect("Oscilador 2D")("Desvanecimiento Opacidad");
    desfase=effect("Oscilador 2D")("Desfase Opacidad");
    activar_opacidad=effect("Oscilador 2D")("Activar Opacidad").value;
    multiplicador=effect("Oscilador 2D")("Multiplicador Opacidad");
    periodo=effect("Oscilador 2D")("Periodo (seg) Opacidad");
    duracion=effect("Oscilador 2D")("Duracion (seg) Opacidad");
    activar_pulsos=effect("Oscilador 2D")("Pulsos Opacidad").value;
    usar_easein=effect("Oscilador 2D")("Ease In").value;
    duracion_easein=effect("Oscilador 2D")("Duracion Ease In");
    usar_easeout=effect("Oscilador 2D")("Ease Out").value;
    duracion_easeout=effect("Oscilador 2D")("Duracion Ease Out");
    tiempo_pulsos=time%(periodo+duracion);
    valor=(opacidad_maxima-opacidad_minima)/2;
    desfase_pulsos=effect("Desfase Pulsos")("Angle");
    t=time;
    var sign= (invertir) ? -1 : +1;

    /////////// FUNCIONES ///////////
    function funcion_oscilacion (t, desfase, frecuencia, desvanecimiento, invertir)
    {return (((sign*Math.sin(desfase+t*(frecuencia))))/Math.exp(desvanecimiento*t));}

    /////////// CODIGO ///////////
    oscilacion = (activar_opacidad) ? (funcion_oscilacion (time, desfase, frecuencia, desvanecimiento, invertir)) : value;

    oscilacion_pulsos = (funcion_oscilacion (tiempo_pulsos, desfase, frecuencia, desvanecimiento, invertir));

    switch (activar_pulsos){
    case 0:
    oscilacion
    break;
    case 1:
    if (tiempo_pulsos<duracion_easein){
    oscilacion_pulsos_ease = usar_easein ? ease(tiempo_pulsos,0,duracion_easein,0,valor): ease(tiempo_pulsos,0,0,valor,valor);
    }else{
    oscilacion_pulsos_ease = usar_easeout ? ease(tiempo_pulsos,duracion-duracion_easeout,duracion,valor,0): (tiempo_pulsos &lt; duracion ? valor: 0);
    }
    (multiplicador*(oscilacion_pulsos_ease * oscilacion_pulsos + oscilacion_pulsos_ease)/Math.exp(desvanecimiento*t)) + opacidad_minima
    }

    Dan Ebberts replied 13 years, 5 months ago 2 Members · 1 Reply
  • 1 Reply
  • Dan Ebberts

    December 14, 2012 at 5:02 pm

    One way would be to replace “time” in all your calculations with vairable “t”, calculated this way:

    t = 0;
    if(thisComp.marker.numKeys > 0)
    t = Math.max(time-thisComp.marker.key(1).time,0);

    Dan

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy