This script imports karaoke subtitles from Substation Alpha files (.ssa/.ass) and creates new text layers with user designed text animation. In this new version you can also add a bouncing ball to your karaoke. The script requires After Effects CS3 or later.
Watch the tutorial video and download pt_SSAKaraokeAnimator from aescripts.com
Changes in pt_SSA Karaoke Animator v2.3, released Dec 2010:
- Added a bouncing ball option.
- Removed the old animation system. Now only works with animation presets.
- Built-in help and user guide to learn how to create your own presets.
- Includes some new built in presets.
- Various bug fixes.
pt_SSA Karaoke Animator
Moderator: Paul Tuersley
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
Last edited by Paul Tuersley on March 22nd, 2006, 2:00 am, edited 1 time in total.
Hi Paul, thanks for the great work on your SSA import scripts.
I experienced an issue with this latest version. I had created a preset and this preset was saved as a txt file in my scripts folder. After saving the preset I closed out of After Effects. When I reopened After Effects again and attempted to run the script I was presented with a nasty little error:
If I rename this preset to like .bak then the script will behave properly.
Here is the preset saved... It's actually pretty useless for an effect but it looks fun:
{
// Blur+Color+Rotation
presetNames[presetNames.length] = "Blur+Color+Rotation";
presetArray[presetArray.length] = new Array(
["Position",0,0,0,-10,0,0],
["Scale",100,100,200,200,100,100],
["Rotation",0,360,0],
["Opacity",100,75,100],
["Stroke Color","255/0/0","0/50/255","200/70/0"],
["Stroke Width",1.4,1.4,2],
["Blur",0.2,0.2,5,9,0.2,0.2],
["Animation",0,0,1,0,2],
["Ease",1,1,1],
["Trails",1]);
["Duration",1,0.5]); <-This is the fabled line 16 the script is bitching about
}
I experienced an issue with this latest version. I had created a preset and this preset was saved as a txt file in my scripts folder. After saving the preset I closed out of After Effects. When I reopened After Effects again and attempted to run the script I was presented with a nasty little error:
If I rename this preset to like .bak then the script will behave properly.
Here is the preset saved... It's actually pretty useless for an effect but it looks fun:
{
// Blur+Color+Rotation
presetNames[presetNames.length] = "Blur+Color+Rotation";
presetArray[presetArray.length] = new Array(
["Position",0,0,0,-10,0,0],
["Scale",100,100,200,200,100,100],
["Rotation",0,360,0],
["Opacity",100,75,100],
["Stroke Color","255/0/0","0/50/255","200/70/0"],
["Stroke Width",1.4,1.4,2],
["Blur",0.2,0.2,5,9,0.2,0.2],
["Animation",0,0,1,0,2],
["Ease",1,1,1],
["Trails",1]);
["Duration",1,0.5]); <-This is the fabled line 16 the script is bitching about
}
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
The original link now downloads a new version 1.1 which hopefully fixes the problem. It was caused by presets being saved incorrectly if Trails was checked and the script failing when it tried to load those presets.
You'll also need to either delete or edit the SSA_Karaoke_Presets.txt file before the script will run correctly. To edit it (if you don't want to lose your own presets) open the file in a text editor, locate any lines that say ["Trails",1]); and change them to ["Trails",1],
Let me know if it works.
You'll also need to either delete or edit the SSA_Karaoke_Presets.txt file before the script will run correctly. To edit it (if you don't want to lose your own presets) open the file in a text editor, locate any lines that say ["Trails",1]); and change them to ["Trails",1],
Let me know if it works.
Yes, that worked!
Thanks!
Regarding Kanji support, I have been able to import kanji in the previous version of the script (IE: The orginal script that did slider effects only) but with this latest version it will import but it will not properly assign a layer for each kanji instance. The SSA file I was using for import was saved in Unicode which has worked fine in the past. Any reason for this issue to occur?
Thanks!
Regarding Kanji support, I have been able to import kanji in the previous version of the script (IE: The orginal script that did slider effects only) but with this latest version it will import but it will not properly assign a layer for each kanji instance. The SSA file I was using for import was saved in Unicode which has worked fine in the past. Any reason for this issue to occur?
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
The code which reads SSA files is pretty much unchanged from the previous script, so there's no obvious reason why it wouldn't work. If you send me one of your SSA files I'll check it out. (send to paul.tuersley@btinternet.com)
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
There wasn't an obvious way of getting animation presets to work with the SSA script, which is why I decided to add my own UI for custom animation controls instead.
If you can create a project that shows how it might work, send me a copy and I'll see if there's a way to incorporate it into a future version of the script. To get started, I'd suggest using the older script viewtopic.php?t=247 to generate Range Selector keyframes which you then combine with the animation preset of your choice.
Paul T
If you can create a project that shows how it might work, send me a copy and I'll see if there's a way to incorporate it into a future version of the script. To get started, I'd suggest using the older script viewtopic.php?t=247 to generate Range Selector keyframes which you then combine with the animation preset of your choice.
Paul T
-
- Posts: 98
- Joined: March 14th, 2006, 2:16 pm
- Location: Atlanta, GA
- Contact:
Hi Paul,
What a great script! I'm especially impressed with the UI, great work all the way around. I was doing a little bit of Friday afternoon playing around and wondered if you might find something like this fun to include...
which when called from "show preview" on an OSX machine produces something like this:
test.mp3
If it doesn't match where your going with the script, I completely understand, like I said just a bit of Friday messing around.
One weird bit, the -o output flag doesn't seem to be functioning when called via AE, is that a security limitation? Not sure yet.
Once again, great work!
best,
Dale
What a great script! I'm especially impressed with the UI, great work all the way around. I was doing a little bit of Friday afternoon playing around and wondered if you might find something like this fun to include...
Code: Select all
function roboKaraoke(){
if(system.osName == 'MacOS'){
var sayString = "";
for(x=0; x < textArray.length; x++){
//quick hack could be better
var stringLength = textArray[x].length * .10;
var duration = durationArray[x];
if(stringLength < duration){
//pad with "-"
var padString = "- ";
var pad = '';
var time = parseInt((duration - stringLength) * 10);
for(y=0; y < time; y++){
pad += padString;
}
sayString += textArray[x] + padString;
}else{
sayString += textArray[x];
}
}
//whether to output file, would be set via pref including filename
fileFlag = true;
//use -v command switch to change voices, would be set via pref
alert(sayString);
if(fileFlag){
var osString = "say -o test.aiff " + sayString;
}else{
var osString = "say " + sayString;
}
var err = system.callSystem(osString);
if(err){
alert(err);
}
}else{
alert("roboKaraoke only works on MacOS");
}
}
test.mp3
If it doesn't match where your going with the script, I completely understand, like I said just a bit of Friday messing around.
One weird bit, the -o output flag doesn't seem to be functioning when called via AE, is that a security limitation? Not sure yet.
Once again, great work!
best,
Dale
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
Hi Dale,
That is pretty cool. On my system it is correctly generating a "test.aiff" file. I think you're having that problem because you need to turn on Preferences > General > Allow Scripts to Write Files and Access Network.
It's a shame there isn't an accurate way of ensuring it is correctly in sync with the karaoke timings. And as you said, it's not really something I think people would want added to the script. But it's certainly an interesting idea, thanks for posting it.
Paul T
That is pretty cool. On my system it is correctly generating a "test.aiff" file. I think you're having that problem because you need to turn on Preferences > General > Allow Scripts to Write Files and Access Network.
It's a shame there isn't an accurate way of ensuring it is correctly in sync with the karaoke timings. And as you said, it's not really something I think people would want added to the script. But it's certainly an interesting idea, thanks for posting it.
Paul T
-
- Posts: 98
- Joined: March 14th, 2006, 2:16 pm
- Location: Atlanta, GA
- Contact:
Hi Paul,
I've got preferences > General > Allow Scripts to Write Files and Access Network turned on.
I've been experimenting with system.CallSystem() for a bit now, and I seem to get different results from machine to machine. I've had a problem with multi-column output on one machine that doesn't seem to happen on another, and now you're getting different results than I am with outputting a file. I had a reply on my blog from Christopher Prosser on the ae engineering team about sending in these anomalies to aebugs@adobe.com so I think rather than raising a fuss about them now I'll just let things sort out and chalk it up to .0 initial release stuff or user malfunction on my part.
It would be great if we could get better documentation, example and use cases on a lot of this extendscript stuff though.
Cheers,
Dale
I've got preferences > General > Allow Scripts to Write Files and Access Network turned on.
I've been experimenting with system.CallSystem() for a bit now, and I seem to get different results from machine to machine. I've had a problem with multi-column output on one machine that doesn't seem to happen on another, and now you're getting different results than I am with outputting a file. I had a reply on my blog from Christopher Prosser on the ae engineering team about sending in these anomalies to aebugs@adobe.com so I think rather than raising a fuss about them now I'll just let things sort out and chalk it up to .0 initial release stuff or user malfunction on my part.
It would be great if we could get better documentation, example and use cases on a lot of this extendscript stuff though.
Cheers,
Dale
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
I wouldn't hold back on sending stuff to aebugs@adobe.com If we don't report these problems then chances are they'll still be there in future versions. As you said, it's hard to know if they're bugs or user errors, but either way I'm sure the AE Team would like to hear about them (i.e. even it it isn't a bug, it shows where the documentation may need to be improved).
BTW: That's some great work you're doing over at http://www.creative-workflow-hacks.com Looks like it's gonna be another really useful resource.
Paul T
BTW: That's some great work you're doing over at http://www.creative-workflow-hacks.com Looks like it's gonna be another really useful resource.
Paul T
-
- Posts: 98
- Joined: March 14th, 2006, 2:16 pm
- Location: Atlanta, GA
- Contact:
Hi Paul,
Sorry if I wasn't clear. I meant that I would send my scripting anomalies to aebugs@adobe.com rather than wonder out loud in public forums about why I wasn't getting the results I expected. At least until I'm really sure about the problems or workarounds I'm proposing.
Thanks for the kind words.
Cheers,
Dale
Sorry if I wasn't clear. I meant that I would send my scripting anomalies to aebugs@adobe.com rather than wonder out loud in public forums about why I wasn't getting the results I expected. At least until I'm really sure about the problems or workarounds I'm proposing.
Thanks for the kind words.
Cheers,
Dale
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
New text is created using the current settings in the Character panel, so if you first manually create some text with an invisible fill, subsequent text created by the script will also have an invisible fill.
Alternatively, you can just select all the text layers after they've been created and set the fill to invisible using the Character panel.
As I haven't put a Fill Opacity parameter in the script interface, you can't animate the fill opacity separately.
Alternatively, you can just select all the text layers after they've been created and set the fill to invisible using the Character panel.
As I haven't put a Fill Opacity parameter in the script interface, you can't animate the fill opacity separately.