Ed Nudnick
Forum Replies Created
-
There might be a simpler solution by setting up a series of Applescripts.
Though, I’d have to “tell “Adobe Premier Pro CS6” to…
(do stuff)Any thoughts on a good reference for finding the proper names of the drop-down menu items I’d have to navigate through to facilitate this?
Naturally, file-import.
Then, analyze the footage for speech…
And, in those options, pairing it with a script text.
But, I’m not sure I can keystroke my way to all those. -
I see.
Well, hopefully Adobe has a SDK that might allow access to these functions.
Does anybody know where I could find such a thing?And, also, if there’s a list of skilled developers who could assist?
-
Perfect!
I keep forgetting about while functions and wind up concocting a bunch of IF’s embedded into IF’s.
Thanks, Dan!
-
Sorry. Sorry…
The expression below is where I’m currently stuck
transSOUND = thisComp.layer("transcribedSOUND.wav");
HLword = 0;
n = 0;
nn = 0;
xx = 0;
xxt = 0;if (text.sourceText.numKeys > 0)
{
xx = text.sourceText.nearestKey(time).index;
xxt = text.sourceText.key(xx).time;if (xxt > time) {xx--;
}}
if (transSOUND.marker.numKeys > 0)
{nn = transSOUND.marker.nearestKey(time).index;
n = ((transSOUND.marker.nearestKey(time).index - transSOUND.marker.nearestKey(xxt).index )+1);
if (transSOUND.marker.key(nn).time > time) nn--;
}
if (n > 0)
{if (n%2)
{HLword = n;}
else
{HLword = n;}
}
else
{HLword;} -
Ok. I’m getting MUCH closer.
Though, I’m having some difficulty in remembering how to prevent a value from changing until the current time actually crosses the time at the marker.
The function of “Nearest” seems to be giving me a rounding error.
transSOUND = thisComp.layer("transcribedSOUND.wav");
HLword = 0;
n = 0;
nn = 0;
xx = 0;
xxt = 0;if (text.sourceText.numKeys > 0)
{xx = text.sourceText.nearestKey(time).index;
xxt = text.sourceText.key(xx).time;
if (xxt > time) {xx--;
}}if (xx > 0)
{if (xx%2)
{x = xx;}
else
{x = xx;}
}
else
{x;}if (transSOUND.marker.numKeys > 0)
{nn = transSOUND.marker.nearestKey(time).index;
n = (transSOUND.marker.nearestKey(time).index - transSOUND.marker.nearestKey(xxt).index + 1);
if (transSOUND.marker.key(nn).time > time) nn--;
}if (n > 0)
{if (n%2)
{HLword = n;}
else
{HLword = n;}
}
else
{HLword;} -
That sounds about right…
Though, I realize I forgot all about the value of poor little “n,” which is really where the magic happens.I think the logic behind what I’m after (at this point) is to reduce n to 1 (one) in the following manner:
Subtract the value of the marker index from the current value of n each time the index value of the sourceText keyframes increases.
To achieve this, I don’t think I need to embed my original (and most importantly), working expression into another IF… ELSE statement.
But, I just have to parse the logic into another javascript/Adobe-speak hybrid.
-
Oh jeez, do I feel dumb.
The script below worked perfectly…
(with replacing the *’s with backslashes)s = text.sourceText.replace(/*r/g,"");
c = s[textIndex-1];
if (/^*w/i.test(c)) 100 else 0;
-
Mostly there. Though, since I’m not very code-experienced, special characters evade me.
So, I set up the inelegant script below.
With the variable “show,” I subtract 100 in the other layer to get the reverse effect.(See script below)
******Sadly, with this many IF statements, it slows performance.
Instead, I think I could speed it up by defining an array with all the alphanumeric characters and testing to see if that is my condition at that textIndex moment.Also, I’ve abandoned the carriage-return snafu from earlier and opted to just use a text-box for formatting. It’s a crude workaround. But, it gets it done for now.
Still curious about that.
Would likely have to set a variable to count carriage-returns, then add 1 (one) to a variable holding the [textIndex-1] value for those index-slots occurring after the carriage-return index-slots.
var show = thisComp.layer("word_slider").effect("visibility")("Slider");
c = text.sourceText.value[textIndex-1];
if (/a/i.test(c)) Math.abs(show-100)
else if (/b/i.test(c)) Math.abs(show-100)
else if (/c/i.test(c)) Math.abs(show-100)
else if (/d/i.test(c)) Math.abs(show-100)
else if (/e/i.test(c)) Math.abs(show-100)
else if (/f/i.test(c)) Math.abs(show-100)
else if (/g/i.test(c)) Math.abs(show-100)
else if (/h/i.test(c)) Math.abs(show-100)
else if (/i/i.test(c)) Math.abs(show-100)
else if (/j/i.test(c)) Math.abs(show-100)
else if (/k/i.test(c)) Math.abs(show-100)
else if (/l/i.test(c)) Math.abs(show-100)
else if (/m/i.test(c)) Math.abs(show-100)
else if (/n/i.test(c)) Math.abs(show-100)
else if (/o/i.test(c)) Math.abs(show-100)
else if (/p/i.test(c)) Math.abs(show-100)
else if (/q/i.test(c)) Math.abs(show-100)
else if (/r/i.test(c)) Math.abs(show-100)
else if (/s/i.test(c)) Math.abs(show-100)
else if (/t/i.test(c)) Math.abs(show-100)
else if (/u/i.test(c)) Math.abs(show-100)
else if (/v/i.test(c)) Math.abs(show-100)
else if (/w/i.test(c)) Math.abs(show-100)
else if (/x/i.test(c)) Math.abs(show-100)
else if (/y/i.test(c)) Math.abs(show-100)
else if (/z/i.test(c)) Math.abs(show-100)
else Math.abs(show);
-
Mostly there.
Though, there’s an offset of one character index if there’s a carriage return or line break in the source text.
So, once I figure out how to add 1 to the [textIndex] for every carriage return, this should work fine.It seems javascript sees the carriage return as a character that advances the textIndex.
But, After Effects does not.