2007-05-02, 15:37 | Link #21 |
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 |
2007-05-03, 00:59 | Link #22 | |
Translator, Producer
Join Date: Nov 2003
Location: Tokyo, Japan
Age: 44
|
Quote:
__________________
|
|
2007-05-04, 09:35 | Link #24 |
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 |
2007-05-04, 10:42 | Link #25 | |
Senior Member
Fansubber
Join Date: Jul 2004
|
Quote:
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. |
|
2007-05-04, 17:20 | Link #26 |
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 |
2007-05-04, 18:23 | Link #27 |
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. |
2007-05-05, 05:02 | Link #28 |
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 |
2007-05-05, 08:11 | Link #29 |
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
|
2007-05-05, 18:17 | Link #30 |
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.. |
2007-05-05, 20:02 | Link #31 | |
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:
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. |
|
2007-05-06, 05:45 | Link #32 | |
Computer graphist
Join Date: Dec 2005
Location: Paris, France
Age: 41
|
You know, putting keyframes isn't that long either
Quote:
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...
__________________
|
|
2007-05-07, 16:59 | Link #33 |
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:
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. |
2008-10-14, 08:37 | Link #34 |
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.
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) 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" ) 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 ) Code:
/* The following adds properties (make sure you have them set with keyframes) */ .p( "Effects.Glow.Intensity" , true ) Finally, you need to do this before everything else is applied, or else no layers will be created: Code:
a.commit( ) 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" ) 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:
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 |
2008-10-18, 10:34 | Link #35 |
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:
To add two layered effect using opacity (on and off syllables) [make sure you disable them when generating]
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:
Under KRK Text Layer in each Comp:
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 |
2008-10-18, 13:31 | Link #36 |
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. |
2008-10-18, 13:42 | Link #37 | |
Senior Member
Fansubber
Join Date: Jul 2004
|
Quote:
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:
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. |
|
2008-10-18, 14:07 | Link #39 | |
Senior Member
Fansubber
Join Date: Jul 2004
|
Quote:
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 |
|
2008-10-19, 09:33 | Link #40 |
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:
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. |
Thread Tools | |
|
|