pt_SSA Karaoke Animator

Moderator: Paul Tuersley

Post Reply
Paul Tuersley
Posts: 704
Joined: June 5th, 2004, 7:59 am
Location: London, UK

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

Image

Image

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.
Last edited by Paul Tuersley on March 22nd, 2006, 2:00 am, edited 1 time in total.
SCR512
Posts: 2
Joined: March 19th, 2006, 12:32 pm
Location: Austin, TX
Contact:

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:

Image

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

}
Paul Tuersley
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.
SCR512
Posts: 2
Joined: March 19th, 2006, 12:32 pm
Location: Austin, TX
Contact:

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?
Paul Tuersley
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)
ifrittt
Posts: 18
Joined: April 30th, 2006, 1:02 pm

If I want apply an animation preset... What should I do?
Paul Tuersley
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
bradshaw1965
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...

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");
		}
	}
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
Dale Bradshaw
Technology Director | Primal Screen
creative-workflow-hacks.com
Atlanta, GA
Paul Tuersley
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
bradshaw1965
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
Dale Bradshaw
Technology Director | Primal Screen
creative-workflow-hacks.com
Atlanta, GA
Paul Tuersley
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
bradshaw1965
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
Dale Bradshaw
Technology Director | Primal Screen
creative-workflow-hacks.com
Atlanta, GA
ifrittt
Posts: 18
Joined: April 30th, 2006, 1:02 pm

Is there a way to make the fill color "invisible" and the words only with the stroke?
Paul Tuersley
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.
ifrittt
Posts: 18
Joined: April 30th, 2006, 1:02 pm

Hmm can i make something like the /K of ssa in this script? =o
Thx
Post Reply