A way to achieve the convenience you want, but in a slightly different way would be to use a linear expression to control the animation between the two keyframe values and trigger this from a single marker.
This is the expression I use to trigger a highligter in my tutorials which I have on the opacity:
fadetime = 0.5;
dur = 2;
if(marker.numKeys > 0){
m = marker.nearestKey(time).index;
if(marker.key(m).time > time) {
m–;
}
if(m > 0){
mt = marker.key(m).time;
if(time < mt+dur){
linear(time, mt, mt+fadetime, 0, 100);
} else {
linear(time, mt+dur, mt+dur+fadetime, 100, 0);
}
} else {
0
}
} else {
0
}
This expression sets a fadetime of 0.5 seconds, sets a dur(ation) of 2 seconds, so that the highlight fades up in 0.5 seconds, and spends 2 seconds onscreen before fading out again.
The first IF statment if(marker.numKeys > 0){ checks to see if there are any markers on the layer and if not, sets the opacity to 0.
If there is a marker, when the current time indicator hits one it sets the mt to be the time stamp of that marker: mt = marker.key(m).time;
Then the linear expression kicks in, linear ( current time , start time, end time, starting value, ending value.
My expression also triggers the fade out, but if that isn’t needed in your, something like this would work just as well:
fadetime = 0.5;
if(marker.numKeys > 0){
m = marker.nearestKey(time).index;
if(marker.key(m).time > time) {
m–;
}
if(m > 0){
mt = marker.key(m).time;
linear(time, mt, mt+fadetime, 0, 100);
} else {
value
}
} else {
value
}
I’ve used value here, so that in “rest” the Position Y property can be set to whatever initial value you want.