AnimeSuki Forums

Register Forum Rules FAQ Members List Social Groups Search Today's Posts Mark Forums Read

Go Back   AnimeSuki Forum > Anime Related Topics > General Anime > Fansub Groups

Notices

Reply
 
Thread Tools
Old 2007-05-02, 15:37   Link #21
dj_tjerk
Ana-chan~
 
 
Join Date: May 2006
Location: Netherlands
Well.. I started with lynda.com's essentials tutorial which you can get the same you way you can get after effects. I didn't understand a thing about how selectors and stuff work when i started, and it took me a while to do so :P

I'd just give it a try, and if you need a couple of examples (.aep wise) or help with an effect or whatever.. just ask
dj_tjerk is offline   Reply With Quote
Old 2007-05-03, 00:59   Link #22
Quarkboy
Translator, Producer
 
 
Join Date: Nov 2003
Location: Tokyo, Japan
Age: 44
Quote:
Originally Posted by dj_tjerk View Post
hmm.. I'd have to come back on my words.. I just edited 'my' script so that I need only 1 layer for a fixed length animation (like.. instant max, within 2 seconds back to zero). Of course it was possible with layer per syllable, but a plus about working with AE is that you can see what you're doing (so no 100's of layers), so i never (cough) did that before.

Anyway, here's the video (part of noein OP, my test .ass file ), a picture of how the expression (generated with for-loop in script) looks like, and the .aep project file for people with AE so they can see the whole expression.

I seriously hope more people would give AE a try now

(the expression looks more difficult than it is, and don't kill me shinji for using an expression instead of keyframes.. that's just impossible )
That's really easy to do with plain old textsub, though. Just do two layers with the top layer having an alpha \t animation.
__________________
Read Light Novels in English at J-Novel Club!
Translator, Producer, Japan Media Export Expert
Founder and Owner of J-Novel Club
Sam Pinansky
Quarkboy is offline   Reply With Quote
Old 2007-05-03, 04:18   Link #23
JediNight
キズランダム
 
 
Join Date: Apr 2003
Just say NO to exploding karaoke!
JediNight is offline   Reply With Quote
Old 2007-05-04, 09:35   Link #24
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Well, it seems like you're all interested or something, I haven't gotten the chance to read through every messages, since I'm more of an IRC guy - who likes short messages ;p

I came across about Naruto by SD. It's a very simple karaoke. They basically did the karaoke in ssa and overlay on top of a video overlayed on top of the black strip. The overlay video appears to be random motion (it doesn't base on the tunes or lyrics).

Secondly, I have used quite a few ae effects, and they all work... like Turbulence Displacement (the name is 'turbulentDisplacement' - I'll have to give a short tutorial of how to make up the names for the effects and properties since it's not written clearly in the ae scripting manual)

Thirdly, as for particles and explosions, I just got my hands on Trapcode Particular. I should be able to use that in the karaoke, but I'm not quite sure about the rendering speed since I only own a Pentium-4 3GHz with 1 or 2GB of RAM. Of course, those exotic ones aren't meant for me to run
pichu is offline   Reply With Quote
Old 2007-05-04, 10:42   Link #25
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Quote:
Originally Posted by shinjipierre View Post
mmm... I think that you lack knowledge of after effects as well... like most fansubbers...

But... as for "perspective"... it has been added in after effects CS3 in the text animation, we just have to wait in july.
And I don't understand why we wouldn't be able to do particles, flares, lights and all with what we already have. (I've already done that...)

I think you're just trying to reinvent the wheel with a weird script... What would one do with 100 layers of text... it's not really useful, one would have to make expressions everywhere... Remember that after effects isn't a coder application, it has been designed for computer graphists

Anyway, if you think you can do something better than the text animator...

Shinjipierre
I've seen some of your work (unfortunately, most of your work [if not all] I've seen can be done in ssa too)... Even if you can manage to mask the layer around the effects, you can only apply the same effect once at a time, disallowing the possibilities of overlapping effects which nowadays use quite often. Maybe I do lack of knowledge in AE, but I well understood its limitation before implementing something else. textAnimator is heavily limited, unless I desire to see craptacular effects. I have managed to run AE with over 400 layers without much difficulty. I don't see why not to expand the possibilities. Hence, that's my decision.

The full functional program will include a separate gui exe program to generate .jsx on top of a separate include .jsx file (read and eval) for easy-to-use routines. I think that will be the best choice.

Last edited by pichu; 2007-05-04 at 10:54.
pichu is offline   Reply With Quote
Old 2007-05-04, 17:20   Link #26
dj_tjerk
Ana-chan~
 
 
Join Date: May 2006
Location: Netherlands
Well.. in that case why even bother opening AE up.. just let a script write a project file and render it with aerender. That should be doable with an external program like you want.

For me.. I just like AE as it is.. and every effect can be done in .ass and AE, i just depends on what you like working with. I don't like .ass cause i feel that it's not meant for the karaoke we have today, and because i like the overview i have of my effects and layers in AE (So I personally don't want to see hunderds of layers in AE).

Quite possibly (that means if you're skilled enough), you can make a program that 'virtually' makes hundreds of layers in AE, but those are visible as one or two layers in your external program.. I'd like to see that Then I'd be able to understand what I'm doing, and able to easily change stuff (because that's what costs a lot of time.. finetuning)

And if you want some help with particle effects or whatever you think i can help you with, I'd be glad to help (that is, if it's about an external program using the render engine of AE to render it, /me not like the idea of seeing hundreds of layers in AE, making it impossible to see what you're doing and impossible to change).

btw.. i've got nothing against plugins or effects that virtually make hundreds of layers.. as long as i don't see them
dj_tjerk is offline   Reply With Quote
Old 2007-05-04, 18:23   Link #27
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Yes, unfortunately... you need to create layers in AE (basically, I don't have the mood to make a separate AE interface - it will be easier for me if I use pre-existent interface)...

Well it's basically like this...

Select the text layers you created (with text styles and lead-ins/lead-outs effects and in-syllable effects) varied by the names (Kanji 1, Romaji 2, etc)
(You can also select image layers or video layers [for other overlaying effects], etc)
Run the script
then you'll get hundreds of layers (you can UNDO and ram preview if you want to)
Render it
(You don't need to save this product, only save your version before it gets generated)

I just started writing the script, and it will be based on objects (KRK object) because it's easier to organize.

though, it might save some ram issues if you don't display all the layers, but I'll give that a consideration if this is good to go.

The problem now is that SDK only runs on XP, not Windows Server 2003 (I only have that installed), which I find it stupid. I haven't gone through the documentation, but I'm not sure if I can use that to make use of .aep, or it's only for the plugins.

And, thanks for the suggestion

Edit: another thing that comes into mind, I can make a script such that you don't even need to deal with javascript at all. You just need to template your layers and effects, and it will do the rest.
pichu is offline   Reply With Quote
Old 2007-05-05, 05:02   Link #28
dj_tjerk
Ana-chan~
 
 
Join Date: May 2006
Location: Netherlands
Well.. i once made a script that goes from ssa/ass to hundreds of layers (and solids :P), but i didn't know how to get the xy-position of a syllable so i needed to that by hand. But basically it's the same as you want to do. And I have to say I didn't really like making hundreds of layers.. it was all in precomps and whatever.. but when i didn't like the font i had to through all precomps to change it >_< (blame adobe for not making font properties expressable).

And for effects (like particular)... you can just save a template of that effect (ffx) and use the applyTemplate function to apply it to a layer in a script.. that may come in handy
dj_tjerk is offline   Reply With Quote
Old 2007-05-05, 08:11   Link #29
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
yes, I can't find a way to find the position of each character in the text layer. When you use the range selector, you can only use the index or the percentage of the characters, rather than the percentage of the 'width' in pixels. On top of that, there's no way to change the font or any of the font properties in Javascript. In other words, I still require the use of a separate program to obtain the sizes of each glyph ((system.callSystem("somecommand") will work just fine)) to deal with position-based properties. This will actually cause a problem when you decide to lay the text on the path (curve, skew, etc), such that you won't be able to use any effects with positions (like particles) without knowing the actual position (as the position will be off based on the characters widths). Other than that, I think I might be able to use the expression controls to make the generating a lot easier. (the timelines will be normalized so that you can adjust the keyframes to your effects based on your normalized/unnormalized times (it will only apply to Expression controls since you can't get keyframes data from nowhere) with lead-ins and lead-outs and the script will unnormalize the keyframes timelines) Heh I'm not sure how this will go ;p
pichu is offline   Reply With Quote
Old 2007-05-05, 18:17   Link #30
dj_tjerk
Ana-chan~
 
 
Join Date: May 2006
Location: Netherlands
Well.. you could make a script that makes one syllable at a time visible.. and motion tracks it, to find the position of all syllables

For particles.. it's really easy however.. just don't use point emitter, use layer or layer grid emitter.. The precomped text layer must then have one syllable visible at a time (or for one solid with particular per syllable, just one syllable visible all the time), and prolly the precomp (the composition size itself.. not the size it has within another composition) should be shrunk somehow.. grid layer with the max of 200.000 particles per second means.. with a 300x300 grid.. ehmm.. well.. one syllable every 0.45 seconds or so.. (it does emit particles where there are no visible parts.. that means that with a normal comp size of 704x396 there is rougly 1 particle emitted for every 2 vertical pixel.. and 1 per horizontal).

Of course, this isn't a problem when using one solid with particular per syllable.. however (as i experienced myself), it will render 90.000 particles (300x300 grid) for every syllable.. as long as the particles.. or the layer is visible (dont know that.. ) Rendering the few particularized lines in my Noein OP cost me, using 3 pc's, 2 to 3 hours to render :P

So i usually use just one solid per.. well.. everything.. as you can just put more text layers in one precomp, and use it as an emitter for all of your lines

It does really suck that font properties cant be set with expressions yes.. would've saved me a lot of time with that Noein OP :P (with all those precomps).

Anyway.. good luck I'd like to see how it's going to look like..
dj_tjerk is offline   Reply With Quote
Old 2007-05-05, 20:02   Link #31
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Ok, thanks for the idea. Motion trackers would have been nice... but, this is from AE CS3 scripting manual:

Quote:
Unused Properties and Attributes
The Time Remap and Motion Trackers properties, inherited from AVLayer, are not applicable to text layers, and their related AVLayer attributes are not used:

canSetTimeRemapEnabled
timeRemapEnabled
trackMatteType
isTrackMatte
hasTrackMatte
It turns out that I can't use motion trackers, matte on the text layer. I have to find a workaround for this dillemma.

As for font properties, it's not a problem as long as you're not changing the font and basic alignments (essentially not needed in karaoke), since you can use rangeSelector and textAnimator to modify or simulate most of the font properties.
pichu is offline   Reply With Quote
Old 2007-05-06, 05:45   Link #32
shinjipierre
Computer graphist
 
 
Join Date: Dec 2005
Location: Paris, France
Age: 41
You know, putting keyframes isn't that long either

Quote:
trackMatteType
isTrackMatte
hasTrackMatte
Track matte = getting the alpha/luminance (matte) from the layer that is above.

In order to make an "automated tracking" you would have to precomp the layers, track the precomposition... can't remember if you can track with scripting...
__________________
http://www.remipierre.fr - Some of my computer graphics work
shinjipierre is offline   Reply With Quote
Old 2007-05-07, 16:59   Link #33
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
As I was thinking, I can't do tracking at all. But, precomposing [precompose()] might help a bit in terms of displaying all hundreds of layers, so that you only see one layer consisting of the karaoke effects in your original composition.

There is one reason why using keyframes alone won't help at all, but first I'll discuss about the timings, as I have watched quite a few Karaoke as well as making some karaoke on my own (SSA and AE).

There are seven (7) timings I can think up of, and I'll let the user to set basic timings using the slider control or the markers (so no coding is ever needed, and you'll be able to see each timing keyframes right on the screen instead of thinking about it).

[TODO] (I think this will be the main core of implementation)

Timings Chart:
|<-1->|<-2->|<-3->|<-4->|<-5->|<-6->|<-7->|

Timings Description:
  1. Line Lead-in: This basically lets you to have some lead-in effects before a line is displayed. (Example: linear wipe line transition)
  2. Line Lead-in overlapped: This basically lets you to overlap some lead-in effects when a line is displayed. (Example: Gradual feathered linear wipe at the time of playing the song - it's used often in ssa karaoke)
  3. Syllable Lead-in: This basically lets you to have some lead-in effects before the syllable is played.
  4. Syllable In-Play: This basically lets you to have effects when the syllable is displayed.
  5. Syllable Lead-out: This basically lets you to have lead-out effects after the syllable is played. (This is often use quite a bit and can be extremely slow, but for now, I think it's used more often than Lead-in effects)
  6. Line Lead-out overlapped: This basically lets you to have overlap some lead-out effects when a line is displayed. (Example: Gradual gradient linear wipe towards the end)
  7. Line Lead-out: This basically lets you to have some lead-out effects after a line is played. (Example: blur-out transition)

There are two types of timings: one is absolute timing, and one is normalized timing (it will be normalized based on Timing #4 [Syllable or Line - depending which part you're on)

Okay, so what does this have anything to do with keyframing effects? A lot. First of all, when doing such effects based on keyframes instead of multiple layers, you can't have any effects on Timing #3 and Timing #5 (Lead-in/Lead-out Syllable). Unfortunately, most fancy karaokes tend to abuse Lead-in and Lead-out effects. However, some effects may allow you to create smaller sizes to fit into the appropriate region, but I'm not going to go through that mess since one will have to tweak them quite a bit. However, I can decide to let the user to take out Timing #3 and #5, allowing them to improve drastically in rendering speed, since they only need one or two (one for display and one for the effects) layers per line. (Text Animator and some effects [like bulge, etc] can use one line) The settings will be described in the Layer comments, and the name of the Layer is determined from the SSA styles and layer #.

In addition, there will be two types of effects, one is effects on the text, and one is via the layer (moving images/videos or effects [like Trapcode Particular for Particle Effects]). I haven't thought about how to approach this yet. Each syllable will be displayed not based on the position but based on the range selector (alpha to hide the rest).

In my case, since I wasn't able to find the position data using just AE alone, I have created a separate javascript (using IE, Firefox, or Opera) to get the width and height from each syllable. I recommend Opera though since it seems to display most of the Kanji properly. But, this is a temporary solution for me. I noticed in AE CS3, there's calculateTransformFromPoints, which probably allows me to transform any 3 points in the 3D coordinate system to what the layer depicts. That might be helpful.
pichu is offline   Reply With Quote
Old 2008-10-14, 08:37   Link #34
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
The script is almost ready for public testing once I finished applying on one more karaoke that involves particles on positional keys. I need some suggestions about embeddable script. I'm planning to have the script embedded into the project, so that you only need to execute the script once. I have a few designs. I would like to embed scripts into the project.

1. Have a new comp called INFO, and have a text layer with the Karaoke JSON as the source text. Then the script can be anywhere in that layer as an expression (= icon is checked off so that it won't get evaluated)
What do you think? [IMPLEMENTED: it's named "KRK" Comp, and the expression has to be under Source Text and can have the Expression disabled (= is checked off): the source text can either be your codes or the karaoke json, and the same goes for the expressions. It pretty much works as you just need to run that script on your current project file, and then your script will be run.]

-----------

I'd like to talk about the structure of the framework. The script is about 2300+ lines on about 60kB... It misses some features like vector manipulations (path [text and other filters like trapcode particular, vector draws, and our favorite: masks), and some parts need to be fixed like Bezier curves renormalization. Also, I need to design the easiest way to precomp the layers within KRKComp as individual-base, or as a group, or as a whole. Then have the script to rename the layer link as the correct layer (it will be very useful in effects like Trapcode Form -- where dispersable effects are set by layered composition rather than text layers). As far as I know, there are no scripts available to handle those unsupported features unless you write one yourself.
  • KRKProject: Main Karaoke Project
  • KRKComp: Karaoke Composition (Extended from KRKProject)
  • KRKLayer: Karaoke Layer (Extended from KRKComp)
  • KRKAnimator: Karaoke Text Animator (Extended from KRKComp)--it basically handles syllable-based and line-based keyframes for the range selectors (start, end, offset)
  • KRKProperty: Karaoke Property (Extended either from KRKAnimator or KRKLayer)
  • KRKCommon: Common object-based methods. It basically allows easy-to-use inter-objects communications, since JavaScript's prototypes are not as robust as classes.

There's a second script you need to run first. It can be launched in any web-browser. It's written in JavaScript. It basically allows one to convert the entire .ass file into a JSON (JavaScript Object Notations) which can be used in that script described above. Before using this script, you need to understand about JSON first, and how to access JSON in JavaScript. Once you're set, we can move on from here.

Syntax
Code:
var K = { ... Karaoke JSON ... } ;
var a = new KRKProject( K ) ;
a.add( "Karoake" )  ///  This will add a KRKComp into the project, and you can get it through a.comps.Karaoke (note, no semicolon ";")
.add( "Romaji" ) /// This will add in an AFX Layer called "Romaji" in Karaoke Comp (there are options too but the options haven't been tested yet)
Ok before we go on, I'd like to say, my final goal is to remove the first two lines, and with a "with" statement, you can just call in as follows in your template script:

Code:
add( "Karaoke" )
.add( "Romaji" )
add( "Particle" )
.add( "Romaji" ) // Note, on a different comp, you need to copy the same layer there, since duplicate( ) function does not duplicate to a different comp--unless I precomp() it.
comps.Karaoke // This is how you're going to go back to the original karaoke comp.
.add( "English" )
Ok, since the line hasn't ended yet, you can still add stuff to the layer. Right now, it's at KRKLayer object. You don't need to touch anything past KRKLayer (i.e. KRKAnimator and KRKProperty -- those are internal and called by KRKLayer methods).

Yes, let's move on to KRKLayer public methods. Note: they're all single letters acronyms

Code:
add( "Karaoke" )
.add( "Romaji" )

/* The following adds layers */
.l( "romaji" ) // romaji is the .ass style you want to add in.
.l( ['romaji2',0] ) // romaji2 is the .ass style you want to add in, "0" is the layer number (Dialogue: 0, ...)

/* The following adds text animators (Karaoke): Make sure they have been disabled: I'm thinking of disabling all the animators from the beginning. */
.a( ["in","out"] ) // Lead-in and Lead-out effects using Text animators "in" and "out" are the names of the Animators you selected.
.a( ["kon","on"] , true )
That will add kon and on as syllable timing. It will be normalized to your keyframes. If you don't have keyframes in 'start', 'end', and 'offset', the animator will be enabled.

Code:
/* The following adds properties (make sure you have them set with keyframes) */
.p( "Effects.Glow.Intensity" , true )
The names in the quotes are pretty straightforward, you can just paste it from expressions (alt-click the clock and you get the name so that you can just copy and paste, alt-click again to disable it). This will add the keyframes at Glow: Intensity syllable-based (if the second parameter is omitted, then it will take as line-based.

Finally, you need to do this before everything else is applied, or else no layers will be created:
Code:
a.commit( )
If I'm making template script, that line will automatically be executed at the end of the script.

Final script summary:
Code:
add( "Karaoke" )
.add( "Romaji" )
.l( "romaji" )
.a( ["in","out"] )
.a( ["kon","on"] , true )
.p( "layerStyle.outerGlow.size" , true )
comps.Karaoke
.add( "Romaji" )
.a( ["in","out"] )
.a( ["kon","on"] , true )
.l( "romaji" )
comps.Karaoke
.add( "English" )
.a( ["in","out"] )
.l( "english" )
Simple isn't it?

I think that wraps up about the script. There are some options like un-normalizations, which will allow the script to generate keys using absolute times. Oh yeah, one more thing I should mention. The script can also generate syllable per layer basis... This will indeed take a lot of time to run it, and you need to make sure it's been set correctly or else this will appear wrong.

Before wrapping up, to use this script, you need to add markers (if you don't, then lead-in, start, lead-out, and end time will be assumed as in-point and out-point times)
The markers must have chapter names like: in or <, start or [, end or ], out or >. Then you can play around with your keyframes to match up with the markers or in-point/out-point. Line and Syllable-based keyframes will be treated relatively to keyframes you created.

Other than that, I'll try to make template project for you to use to get started.
Then, I'll provide a few animators presets so that it will be so easy to use, and sample scripts for those presets.

As a side-note, this script does not contain presets (unlike Sh's and PT's and some other script I tried before) or anything that can produce karaoke. It only generates the stuff you created. So be creative

---

Before releasing this to the public, I wanted to add one more feature. Basically it will automatically create the codes for you. So that you just need to edit the part that needs edited. How it works:
  1. If the project doesn't have INFO layer or that the INFO layer doesn't have the text layer that meets the requirement for the template, then it will go into auto-mode.
  2. By means of auto-mode, you will run the script first time to have the INFO comp/ Text layer created.
  3. It will automatically create the Javascript codes in the expression based on the following settings:
    1. It will search through all of the comps
    2. Then it will search through the layers in each comp
    3. It will search through all the text animators for any possible karaoke elements (i.e. first range selector must have keyframes in start/end/offset); the naming will be based on preset naming too (line_on, syl_on [on layer: on can be anything here]; line_off, syl_off [off layer]; in, out [globals])
    4. It will search through all the properties descended from the root to look for keyframes then mark them down
    5. It will search through all the point control and expression control with keyframes to see if it's a position property (based on the name as "pos_1", etc)
  4. It will create a dummy text on that text layer to tell you to paste the JSON from theKaraoke.html you output from the .ass file
  5. You will edit the script to fit your need. I don't believe that auto-coding is completely fault-proof. It may be syntactically correct, but it might not fit your need; but this will definitely make the job a lot easier for you since now you don't need to search for the properties.

The problem I see with AFX Karaoke'rs are nonscripters, and they pretty much know nothing about JavaScript or AE object-level access using JavaScript. So, I just want to see amazing stuff, and what people can do with this script if it helps. One just needs to learn the structure and how to access JSON from JavaScript--simple requirement.

Last edited by pichu; 2008-10-14 at 16:29. Reason: Added Autocode Plan
pichu is offline   Reply With Quote
Old 2008-10-18, 10:34   Link #35
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
http://code.google.com/p/aftereffectskrk/

Okay, I fixed out most of the bugs, and is ready for public testing. The whole project is to allow one to automate karaoke easily just like Auto4 for .ass, and you have one for AFX. Since there are no presets in this script, you can't make Karaoke without knowing AFX. I also wrote a getting start guide on that page. You can learn how to make a very basic Karaoke. The script behaves like Shinji's script.

Here's the settings:

To add one layered effect:
  1. Keyframes (0-100%) for end selector at [ marker.
  2. Keyframes (0-100%) for start selector at ] marker.

To add two layered effect using opacity (on and off syllables) [make sure you disable them when generating]
  1. On
    1. On Layer: Opacity=0%,
    2. Syllable On animator: Opacity=100%. Keyframes (see single layered)
  2. Off
    1. Off Layer: Opacity=100%
    2. Syllable Off animator: Opacity=0%. Keyframes (see single layered)

Note: all use advanced.mode=Add. I have not added "before" and "after" syllable handling yet, but they'll be around when I have the time to design the inputs. It should be easy, and it can be added into part of the codes. You can also cheat this part with Line effect using Ramp Up and Ramp Down in advanced.shape.

edit: To add Before and After syllable effect, use Ramp Up and Ramp Down MODE for syllable effect. Play around with this, since I haven't done so.

Codes guidelines

There are two types of timings. Syllable and Line (usually the default).

Under KRK Comp:
  • add( "CompositionName" ): Adds a composition name. (case insensitive since this one is a linear search of your entire project; AFX does not retrieve it for you)
  • shift( time ): Shifts the karaoke by time. This is done globally to the variable.
  • setFontSize( fontSize ): It sets the font size to your Karaoke data. The font size generated from the script is 1px (it's scaled from 1000px to 1px, so the precision is three decimal places)

Under KRK Text Layer in each Comp:
  • add( "LayerName" [, false] ): Adds a Layer name. (case-sensitive). This returns KRKLayer object. All the following properties inherit from this, so you can just add a dot (.) after add("LayerName") with the action to do further work. If you change false to true, it will generate syllable per layer. false is optional and is default.
  • .p( "propertyname" [, false] ): Adds a property with the name propertyname: You can obtain the property name by alt-clicking the clock near the property to bring up expression. The name is exactly written there. false tells the script that you're generating based on the line. True if it will be generated based on the syllable on the same line (note: it's best not to have any lead-in and lead-out in the syllable timing, or else it will mess up everything unless you generate syllable by layer, then it's good to go)
  • .p( "propertyName" , { syl: true , pos: true } ) -- This one is for those who know expressions and want to handle the positional data. syl: true tells that the script to generate syllable by layer. pos: true tells it to renormalize (0 [beginning of the syllable] to 100 [end of the syllable]) the values to the positions of the syllables (or line if syl: false). If you have an expression there, it will automatically add an object o into your expression with o.w being the width of the line and o.h being the height of the line.
  • .a( "animatorName" [, false] ) -- this adds a text animator to the generator. You can add multiple animatorName here with ['animatorName1' , 'animatorName2']. Changing the false to true will add it based on the syllable
  • .l( styles [, false] ) -- This adds a line with styles. false is add by line, and true is add syllable by layer. styles are described below:
    • nothing or null: Everything
    • "style1": style1 (must be in lower case) from your .ass json.
    • ["style1" , "layer1" ]: it will use style1 and layer1 (usually 0, but you can adjust it there) from your .ass json.
    • ["style1" , "layer1" , line1/[line1,line2,line3] ]: This will get the line1 or line1,2,3 respectively
    • ["style1" , "layer1" , line1, syl1 or [syl1,syl2,syl3] ]: This will get the syllable 1 or syl1,2,3 respectively

Now you're finished. Tell me what do you think. Note: You must be good in After-Effects, understanding how properties and text animators work. Or else, you won't be able to use this script at all.

Last edited by pichu; 2008-10-18 at 15:18. Reason: Before and After syllable effects using RAMP modes
pichu is offline   Reply With Quote
Old 2008-10-18, 13:31   Link #36
_Anakyn_
poopoo
 
Join Date: Jun 2006
Location: Home
I'm with ya, pichu. We use AFX because it's a way to entertain ourselves and leechers. Good AFX users don't fill in half of the screen with suppaa heebii FX, they try to be in harmony with the animation. If I knew scripting, I'd automatize so many stuff, but since I can't right now, I can't help it but wait for someone superior (like Shinji or pichu theirselves) to create something awesome that helps us doing our stuff as fans and amateurs.

I'm gonna try this, pichu, and I'll let you know something about it. I managed to understand most part of your fixed-length script. Awesome tool, man.
_Anakyn_ is offline   Reply With Quote
Old 2008-10-18, 13:42   Link #37
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Quote:
Originally Posted by _Anakyn_ View Post
I'm with ya, pichu. We use AFX because it's a way to entertain ourselves and leechers. Good AFX users don't fill in half of the screen with suppaa heebii FX, they try to be in harmony with the animation. If I knew scripting, I'd automatize so many stuff, but since I can't right now, I can't help it but wait for someone superior (like Shinji or pichu theirselves) to create something awesome that helps us doing our stuff as fans and amateurs.

I'm gonna try this, pichu, and I'll let you know something about it. I managed to understand most part of your fixed-length script. Awesome tool, man.
No, the fixed-length time will work flawlessly in this script, since my script allows the creation of syllable per layer, allowing effects to overlap each other without destroying others.

See my ef karaoke, which uses fixed-length time (life cycle is 1.5sec for the chorus, and 3sec for nonchorus) and syllable-per-layer for the feathers. To use this feature, you'll have to define in your marker:

The first marker:
  • Chapter: unnorm
  • Comment: [
Note, the [ is placed in the comment. It doesn't matter where you put it, but if you place in the comment, it will show up in your timeline, which is pretty convenient. I haven't tested the second (end) marker yet, but I think it should work. If you put it in the first marker, the fixed-time will start at the beginning of the syllable. If you place it at the end marker, the fixed-time effect will start at the end of the syllable.

Again, I haven't tested one more part. Fixed time can be done locally rather than globally (unnorm in marker), where you define like this:
{syl: true, unnorm: 'start'} in .p or .a.

But yes, you need to understand AFX really well to use this script, since there are no easy-to-use presets made for you. I hate people coming to me said that they want to do AFX karaoke, but they have not done anything in AFX at all.

PS: before public beta release, I was testing zero-space word timing (idea taken from Shinji's script), where you define "Spacing" as a slider in your template. The script will automatically add a space between the syllables and set the tracking value to your slider control in your original template. You can then adjust it and compare against each other. It's useful in syllable zooming, where it will be moved properly. Note: you'll have to set the mode to "Word" if you want to see the effect. The script doesn't adjust this for you.

The syllable timing mode supports: Character, Character Excluding Space, and Word. Just a note, word will not work out that well if you don't use Spacing control. I didn't implement the last mode (Line) because I don't see a point doing this one.

Last edited by pichu; 2008-10-18 at 13:56.
pichu is offline   Reply With Quote
Old 2008-10-18, 13:49   Link #38
_Anakyn_
poopoo
 
Join Date: Jun 2006
Location: Home
You mean this script is similar to Paul Tuersley's? Once I'm back home I'll try it, but I'm just curious :P
_Anakyn_ is offline   Reply With Quote
Old 2008-10-18, 14:07   Link #39
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Quote:
Originally Posted by _Anakyn_ View Post
You mean this script is similar to Paul Tuersley's? Once I'm back home I'll try it, but I'm just curious :P
No, it's a lot different from his. His script uses animation presets, and provides some tools to create those presets, and as far as I'm concerned, his script only works for text animators, whereas mine works for text animators as well as effects/transforms/layer styles--u name it-- properties (minus properties that use matrices or objects as values like masks and distortion meshes [it might work--who knows since the values are not normalized]; it works for positions too). This script does not depend in animation preset. I'd like to call this a template script, in which it generates the karaoke based on your template and designed layers.

The keyframe definitions (in text animators/ first range selector, and properties), text typeface are all designed in your text layer. The script duplicates your template layer and generate based on your specifications in the 'code section' (I already made the coding a lot easier to write--the front-end methods do not require so many arguments) Currently, the script won't work with curves because I didn't normalize it correctly; so you can only have two types of keyframes: HOLD and LINEAR. The curve keyframes (Auto-Bezier and Bezier) may work for fixed-length time settings with fixed values, because the timings are not normalized.


[TODO]
There's one feature I'd like to implement later on, but it will require a very powerful system (yay getting Core 2 Quad 2.83GHz next week) to run it.

Basically I would like to precompose generated layers individually (.c), and modify the .p so that it can set run through the script to set the property to that layer (aka property using layer as a value). Why is this interesting? Heard of Trapcode Form? That's an effect I'd like to try and enable. It basically allows particles at the layer level. It means that if I get the text layers (syllable by layer - precomposed). By doing so, I can have the particles at the syllable level or line level, instead of faking it with text to particles stuff. This way, the effects can be shattered and merged for real. The shatter effect can do that, but it's very limited; Trapcode Form has this requirement, and no other scripts can do that, and you don't really want to precompose 300 layers manually... It will be a waste of time.

Last edited by pichu; 2008-10-18 at 15:35. Reason: TODO
pichu is offline   Reply With Quote
Old 2008-10-19, 09:33   Link #40
pichu
Senior Member
*Fansubber
 
Join Date: Jul 2004
Okay, sample project file is up (requires After-Effects CS3):

http://aftereffectskrk.googlecode.co...mple_v1_01.zip

It shows you the following:
  • Basic KRK codes
  • Text Animators Line transition effect (Gradient_IN and Gradient_OUT)
  • Text Animators Syllable effects
  • Property's Keyframing and Keyframe Interpolation Types (LINEAR and HOLD): see linear wipe in Syllable_1/Karoake 2
  • Syllable Zero-Spacing (via Spacing slider control)
  • Proper Syllable Scaling: Syllable on top (Syllable_Word/Karoake 2) and syllable last (Syllable_Word/Karaoke)
  • Two Lines in one layer (Kanji on top of Romaji in Karaoke 2). In this mode, line transition for the text animators will not work due to how the ranges are computed. Therefore, in order to compensate this, I use linear wipe and fading

Note: the Karaoke timing is taken from Shuffle! Memories OP1. The font used is Arial Unicode MS.

I wrote up more stuff too. Go Read on:
I hope this script makes your karaoke a lot easier to create now.

Join in #gwi-afx @ irc.rizon.net to discuss more about this script. I thought a few new additions to the methods (including time-remap features, and so forth) Please Join in, as this project is still active.

Last edited by pichu; 2008-10-19 at 11:40.
pichu is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 07:26.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
We use Silk.