Mylenium
Here, let's see if anyone can replicate this sudden cessation of motion! I've now done this in CS4 and 3, on two separate XP PCs. Same result every time.
Create a new comp. Mine happens to be 1028 x 760, 24 fps and have a dureation of 3:28:20 (to match some audio I am working with).
Now, import a JPG or something. I've tried this out on strokes on paths in solids, JPGs, AVI - all of it reacts the same way.
Throw down your chosen item and choose Effects > Distort > Wave Warp. Your media will go all wiggly! Now set the Wave Speed to -5. Change no other settings on the Wave Warp distort.
Play. What I get is, the wave moves from right to left at a constant rate until 25:15 secs, when it stops dead and moves not again for the rest of the comp.
I've experimented with different speeds, too, and they all seem to stop after different times. It's as if Wave Speed somehow gets 'used up'.
So, another way I might put my question is - how do I get a Wave Warp to stay at a constant speed over 3:28:20? :)
I believe you've found an honest-to-goodness bug. I have posted a Bug Report, drawing Adobe's attention to this Forum thread. Feel free to also post a Bug Report yourself:
<http://www.adobe.com/cfusion/mmform/index.cfm?name=wishform>
You can work around the issue by trimming the layer at the point it stops, then duplicating it and distributing it along the timeline to fill your time requirement. Precomposing them may make things more manageable. You may need to play with your layer trim-point to remove any kinks in the animation at the layer change point.
I like your work round, but don't think I can make it work (without a lot of fuss!) with what I doing to the Wave Warp next. Check out Aharon Rabinowitz's Creative Cow tutorial on creating custom wave forms to see where I am going with it...
<http://library.creativecow.net/articles/rabinowitz_aharon/waveform_1.php>
I am actually wondering if I can do something with keyframes on the Phase property of the wave to get it to move at a constant rate throughout...? I'll have a tinker this pm.
wLength=40;
wCycles=20;
wCount=wLength*wCycles;
wTime=timeToFrames(time);
[wTime%wCount]
The trick would be to find a suitable seamless value for the wave length. Should be something like the acos of the wave speed value for sinus waves, but my brain is fried at the moment and I'm not in the mood to test it, so forgive me. Just experiment a bit and you surely will find the right values.
Mylenium
It's evident that the wave now animates for the entire duration of the comp. I've hit another snag, though, in terms of getting it to move at a useful speed, and I was wondering if your brain might be a bit less fried at some point and be able to guide me!
In essence, Mylenium, I want it to move just like it does at Wave Speed -5. I'm afraid (ashamed?) to admit that my trig just isn't up to the task...
Mylenium
//-----------begin expression--------------
//wave length
wLength=thisLayer.effect("Wave Warp")("Wave Width");
//convert time to frame count
wTime=timeToFrames(time);
//frames for one phase
wSpeed=7;
//direction, 1 for negative, -1 for positive
wDirect=1;
//reset after x cycles
wCycles=5;
//reference cycle for 1 sec
wRefFps=timeToFrames(1);
//reference angle for 1 sec = 1 full phase
wAngFps=360/wRefFps;
//remap values
wAngFrame=linear(wSpeed,wRefFps,0,wAngFps,360);
//reset
wCount=wLength*wCycles;
wReset=wTime%wCount;
//calculate angle
wAng=wReset*wAngFrame*wDirect;
wAng]
//----------------end expression---------------
tested, it works
Mylenium, I've had my head buried in Drupal for a while, so I've not had a chance to try out your expression - but wanted to say that I really appreciate the time you've evidently put into that and I'll let you know how I get on as soon as I get back to the mysterious waveform project (which will be soon)!