Manuals for All Reanimated Scripts
This page contains detailed descriptions for all my scripts.
Basic descriptions are included at the top of each script, or within special "help" or similar functions.
The ones here are meant to be more detailed, in case the basic ones aren't clear enough for you.

Some global rules for all scripts:

The Esc key almost(?) always works like the 'cancel' function.
The Enter key in most cases works as whatever the default button is.
(If Enter makes line breaks inside a textbox, you can use Ctrl+Enter instead.)

Some possibly unclear terms that I use, just in case:

tag block - a set of tags between curly brackets, e.g. {\blur0.6\bord2\pos(640,300)}
start tags / initial tags - the tag block at the beginning of a line
inline tags - tags that aren't in the first tag block but somewhere within the text of the line: like {\i1}these{\i0} italics
fbf - "frame by frame", referring mostly to mocha-tracked signs, or any signs that have a new line for each new frame of video
mocha - software used for tracking signs, in case you don't know
gbc - "gradient by character", i.e. text with tags for each character, with values gradually changing (original script written by lyger)
No-GUI Scripts

Cycle Scripts
Italicize / Make Bold
Line Breaker
Join / Split
Jump to Next
GUI Scripts

Script Cleanup
Blur and Glow
Hyperdimensional Relocator

Multi-line Editor
Apply fade
Time signs from timecodes
Change Capitalization

Copyfax This
Modify Text
Encode - Hardsub
Backup Checker

Cycle Scripts

(Blur Cycle, Border Cycle, Shadow Cycle, Alpha Cycle)

Purpose: Quick application of blur/border/shadow/alpha

These scripts are meant to be hotkeyed (wouldn't really make sense otherwise) and used as the quickest way to apply blur, etc.
Each of these 4 scripts contains a sequence. For example blur contains this:


You can change the sequence in the script. (Edit the .lua in notepad. Make sure not to screw up the quotation marks and commas.)

The first value is the default. That means if the line has no blur, this value will be applied.
Pressing the hotkey again will switch the value for the next one in the sequence.
So the first run gives you blur0.6, second gives you blur0.8, and so on.
When it reaches the last value in the sequence, it goes to the start again.

If your current blur is not in the sequence, it will give you the first value in the sequence that is higher than the current blur.
For example, if your blur is 1.4, you will get 1.5 with the sequence above. However, if it's 0.3, you won't get 0.4 but 0.6 instead, because 0.6 is before 0.4 in the sequence. In other words, the first value, 0.6, is higher than 0.3, so it gets applied, and the process stops there. So if you wanted 0.3 to go to 0.4, then 0.4 would have to be before 0.6 in the sequence.

This doesn't mess with transforms and only applies to the first block of tags.

Italicize / Make Bold

Purpose: Quick application of Italics / Bold

A script for hotkeying that applies italics to your line.*
This reads values from style and goes through all italics tags in the line.
If the style is in italics and there is no \i tag, you'll get \i0, not \i1.
For every italics tag in the line, it switches to the other one (1 vs 0).


Before: This {\i1}is{\i0} a test
After:   {\i1}This {\i0}is{\i1} a test

If the style is italics, though, you will get this:

{\i0}This {\i1}is{\i0} a test

Because the style is italics, the first tag becomes \i0.
The other tags, however, don't change in this case, because the script corrects a wrong sequence at the beginning, that is two consecutive italics tags with the same value. In other words, since the style here was italics, the first tag became \i0, and thus the second one had to be \i1.

This correction system only checks the first already existing italics tag and doesn't check \r, so not everything gets "corrected".

* This explanation is for Italics, but the Bold version works exactly the same.

Line Breaker

Purpose: Use a hotkey to insert a line break at the estimated most appropriate place in the line

This is mainly targeted at editing (i.e. dialogue), but it's useful for typesetters too.

If your line has any line breaks, the script will remove them all.
If it doesn't, the script will insert a line break.
Where it gets inserted is a result of rather exptensive and complex mechanisms, so I will only explain part of them.

The primary places for line breaks are after punctuation marks, namely . ! ? , : ; ...


Before: Beyond that sky over there, there are people waiting for you.
After:   Beyond that sky over there, \Nthere are people waiting for you.

This line breaks naturally after the second "there". If you care about where line breaks are, you obviously want it after that comma, and that's what you get, in this case very easily, by pressing a hotkey.

Now, let's look at another example:

Before: However, one must exercise caution when synchronizing with the other side.
After:   However, one must exercise caution \Nwhen synchronizing with the other side.

You have a comma there too, but the script sees that the length of the two parts would be extremely disproportionate, so it looks for another solution. In this case, it finds a conjunction that's roughly in the middle of the line and thus is a good place to start the second "line", so the break goes before "when". (The line normally breaks after "when".)

Before: the place you belong is the place where people are waiting for you.
After:   the place you belong is the place \Nwhere people are waiting for you.

This line normally breaks after "where".

So there's punctuation and conjunctions. After each attempted line break, the script checks the length of the two parts. If the length ratio is too high, it doesn't use that line break and tries something else. If it can't find a grammatically suitable place, the line break goes in the middle of the line. This, however, depends on some settings, so as a last resort, the scripts opens this GUI:

Obviously there's no logical place for a line break with just one word, so it asks you where you want that break.
Let's use a meaningful example:

What you do is simply split the line like this (with Enter), and you'll get "You fell into an old well \Nin the woods near your home,".

You can see there's also an All spaces button. This will insert linebreaks at all spaces, i.e. after each word.
As this can sometimes be useful for typesetting, there's a trick to bring up this GUI: type "n" in the Effect field, and the GUI will appear.

This script has a number of settings that the user can change to suit his needs better.
The setup GUI shows up when you run the script for the first time (that is, a version that has it).
To change the settings later, type "setup" in Effect before running the script.
You'll see this:

min. characters - Minimum characters required to place a line break. If 50, lines with fewer than 50 characters will be ignored.
min. words - Minimum words required to place a line break.
linebreak in the middle if all else fails - This can be turned off if you only want grammatical/manual breaks.
^ min. characters - Minimum characters required for line breaks in the middle of a line.
force breaks in the middle - Force breaks in the middle of the line rather than after commas etc., if you prefer that. (It's dumb.)
disable dialog for making manual breaks - Disables the option to insert manual breaks.
allow a break if there are only two words - This overrides 'min. words' and allows a break between just 2 words. Useful for typesetting.
enable balance checks - Enables checking the length ratio before/after the linebreak.
^ max. ratio - Maximum ratio allowed.
don't break 1-liners - Won't place a line break if the line doesn't break naturally.

These settings can be tuned in various ways. You can for example set it up so that you can just run it on all dialogue, and it will only break lines you want to break. With the default settings, you should only run it for lines you actually want to break.
If you want it applied to all dialogue, you should disable breaking for 2 words, probably not break 1-liners, set minimum characters/words to something higher, and possibly disable manual breaking since you might have that popping up for multiple lines.

As for the ratio, 2 may seem like a lot, but this is ratio 2.875 counting by characters and 2.2 counting by pixels:

Looks perfectly fine, in my opinion. Certainly better than breaking the line anywhere else (if you have to break it).
It could be a problem with longer lines, though, so when the length crosses a certain limit, the ratio is lowered. (This is not optionable.)

Making this work well is pretty challenging, but I've spent a lot of time testing it and changing it (there were probably 50-100 unreleased versions), and I think it works reasonably well most of the time. Teaching the script complex grammar is pretty much impossible, so there will always be cases where the break has to be changed, which gets us to the other 2 functions of the script.

The Script has 3 macros registered - 'Insert Linebreak' (that's all of the above), 'Shift Linebreak', and 'Shift Linebreak Back'.

Shift Linebreak - Shifts line break by one word to the right.
Shift Linebreak Back - Shifts line break by one word to the left.

This allows you to fix breaks that were placed weirdly by using a hotkey.
By combining these 3 functions, you can always get the line breaks where you want them pretty quickly.


Purpose: Join active line with the one after it

This is a combination of "Join (concatenate)" and "Join (keep first)".
My goal was to make it reasonably estimate which of the two you need, so that there can be only one hotkey.

If the text (without tags/comments) is the same on both lines, then it's "keep first".
If the text is different, it's "concatenate", but it nukes some redundant tags from the 2nd line (pos, move, org, clip, fad, q). If text is different but tags are exactly the same, they're nuked from line 2 as well.
If a bigger selection has the same visible text on all lines, works as "Join (keep first)" for the whole selection.

Note that if you select more than 2 lines and they don't have the same text, the script only applies to active line, whatever the selection.

The script also nukes a {join} comment at the end of line 1 and ellipses if they're at the end of line 1 and start of line 2.


Purpose: Split a line at the estimated most appropriate place

This is mainly for timers, as it splits both text and timing.
It's similar to Aegisub's "Split at cursor (estimate times)", but it doesn't use cursor.

Line is split at (in priority order):

1. line break (first one if there are more)
2. {split} or {SPLIT} marker (those can be thus placed where needed by the editor)
3. "- " (dash+space) This is for shitty subs with 2 speakers in one line "Hello. - Hi."
4. period
5. ! or ?
6. comma

If none of the above is found, nothing happens. In such a case, you use Line Breaker to place a line break first, and then you can split at the break.
This is supposed to be hotkeyed, and if you learn to use it right, it makes splitting lines during timing very fast.
For example if you have 2 sentences in 1 line, you just press the hotkey, it splits the line between the sentences, and you use ctrl+mouse to shift the end of line1 and start of line2 on audio if needed.

An extra function is a sort of auto-correction of crunchyroll stupidity. For some reason, they like to place extremely awkward words at the end of a line, like conjunctions and prepositions. So if a line ends with one of these words, they get automatically moved to the start of the next line:
that, and, but, so, to, when, with, the. (not when there's a comma after, mind you)

One more addition is that if the line has only one word (or rather, no space), it gets split into two lines with that same text. If you're timing text where somebody calls someone's name repeatedly, and there's more instances in the audio than in the subtitles, you can duplicate the line this way.

Of course the script gets rid of leading/trailing spaces, and it nukes the {split} tag too.

As for the timing part, there's a mechanism for estimating the times, which I won't explain because it's slightly complicated. It works a bit better than the one inbuilt in Aegisub, but there's really no way to always estimate correctly where the line should be split timing-wise.


Purpose: Quickly snap a line to nearby keyframes using a hotkey

This is a very simple script, the point of which is to have a hotkey for TPP's snapping to keyframes.
At the top of the script you have these settings:

kfsb=6 -- starts before
kfeb=10 -- ends before
kfsa=8 -- starts after
kfea=15 -- ends after

This should be self-explanatory. It's just like TPP's settings (when it was in frames, not milliseconds), or like ShiftCut's settings.
If you type "gui" in the first selected line's effect field, you'll get a GUI where you can temporarily change the settings.

You can select a number of lines, press the hotkey for this, and any line that's within the distances determined by the settings from a keyframe will get snapped to it.

If the script doesn't find suitable keyframes to snap to, it checks if it can snap to adjacent/overlapping lines, with the same settings.


Purpose: Move last word to the start of the next line or the other way round

Example (two lines in script):

Those who are exposed to lots of them often
go through what you went through.

Press hotkey for 'ReSplit - Forward'.

Those who are exposed to lots of them
often go through what you went through.

So as you can see, this is for re-splitting weird lines, mainly ones produced by the infamous Crunchyroll, because they really like their awkward splits.

It applies to active line, so no use selecting more lines.
One key moves the last word to the next line, the other moves it back.

Jump to Next

Purpose: Go to the line that comes after all the lines of your current multi-line "sign" (mocha, gradient, etc.)

This is easier to show than explain:

Here you have some mocha-tracked signs. Each frame has 4 lines, so you have 4 different texts.
For this example, I'm showing only a small part, but let's say the sign has 200 lines, and you're at the beginning.
What you want is to go to the next sign, in this case the one that says "Total: points". (Which it shouldn't really say, but fortunately somebody nuked that colon in time.)
So what you do is you select all the lines belonging to the current sign, i.e. all 4 different lines, and press the hotkey for the script.
What happens is that the script goes forward line by line and only stops when the text (without tags) of the line is different from all lines in your selection. So you end up with the line with 'Total points' selected.
This is very helpful with heavy typesetting when you need to find the next sign and scrolling in thousands of lines is too chaotic.

There is one option in the script (open in notepad):


In this mode it works as described. You can change "text" to "style", "actor", or "effect", and then it searches the content of those fields instead of text.
One more thing you can do is that if you're in "text" mode and type "st" in effect of the first selected line, it will search in Style. This is a way to quickly switch to "style" mode without having to edit the script.

An alternative that gives you all options in GUI form is included in Unimportant.

Script Cleanup

Purpose: Clean up your script by removing all kinds of unwanted and redundant things from lines (or whole lines)

(Almost) Everything works for selected lines.

There are two parts. The left one does more varied things; the right one just removes specified tags.

Left part:

Remove TS timecodes - removes comments starting with "TS", like {TS 5:36}
Remove comments from lines - removes all comments (Comments button is a shortcut for that)
Clear Actor field - obvious
Clear Effect field - obvious
Raise dialogue layer by 5 - raises a dialogue line's layer by 5 if it's 4 or lower (Dial 5 button is a shortcut)
Clean up tags - joins neighbouring tags - {\tag1}{\tag2}; removes anything detected as redundant (duplicate tags in the same block, tags at the end of a line, \frx0\fry0 in start tags, multiple \fad tags, \fad with 0 times, {\\k0}, \r at the start of a line); rounds values of tags to 2 decimals
(Clean Tags button is a shortcut)
Delete commented lines - deletes lines that are commented out (not visible on screen)
Delete empty lines - deletes lines with no text
Try to fix alpha / colour tags - fixes some malformed tags like alpha00
Fix start/end/double spaces - removes leading, trailing, and double spaces
Print info - tells you how many lines were changed in the Text field
ALL OF THE ABOVE - Applies all the functions above, checked or not

Remove all colour tags - obvious
Remove all alpha tags - obvious
Remove all rotations - obvious
Remove all perspective - removes all rotations, fax, fay, and org
Remove size/scaling - removes fscx, fscy, and fs tags
Remove linebreaks - \N - removes linebreaks, leaving one space between the words before and after the \N
Remove linebreaks - \N (nospace) - raw linebreak removal - simply deletes "\N"
Remove hard spaces - \h - obvious
Delete unused styles - deletes styles not used on any lines (this always applies to the whole script)
Delete unused styles (leave Default) - same but doesn't delete styles containing "Defa" or "Alt"
Move transforms to end of tag block - places transforms at the end of the tag block
Remove inline tags - obvious
Remove all {\tags} from selected lines - removes all tags (Tags button is a shortcut)

Run selected will apply anything checked on the left side.

Right part:

Kill checked tags button will remove any tags you check in the list above it.
The one distinction is that you can choose start and/or inline tags.
Just in case you don't know what that means:

{\blur0.6}How does {\i1}this{\i0} work?

The blur is a 'start' tag; the italics are 'inline' tags. The checked tags will only be removed from the checked sections.
By default, both are checked, so all tags of the checked kind get removed.
In this case here, checking 'blur' but not checking 'start' (only 'inline') would not do anything.

inverse - remove all except checked tags

If you press Cancer, you might get cancer, so don't ever do that unless you want cancer.

Blur and Glow

Purpose: Apply blur correctly to signs with border / create a 'glow' effect

Features: double border with its own properties; adjustment for fades; add only new layer for signs that already have layers
change layer; repeat with last settings; save configuration

What is 'correct' blur?

Left is wrong. Right is right. No pun intended.

"Blur / Layers" creates layers with blur, and usually doesn't require messing with the other options.

If you want double border, you have a number of options.

If the regular border is 2, the border on the bottom layer will normally be twice that, so 4.
You can check 2nd b. size and set the size of the 2nd border. You set what you want it to look like counting from the first border. In other words, the default would be 2. If you set it to 4, the outer border will be twice as thick as the first one, and the tag will be \bord6.

You can also check 2nd b. colour, which in the case above was changed to light blue / cyan.

You should check double border if you want the default double border.
If you have auto double checked, then checking 2nd b. size or 2nd b. colour automatically turns the double border mode on, so you don't have to check double border.

bottom blur is for whichever layer is the bottom and not glow, so regular border with 1 border, and 2nd border with double.

"Blur + Glow" creates glow. This is what we call glow:

Left is no glow, middle is glow with default settings, right is with glow blur 8 and glow alpha 30.

glow blur is the size of the glow (value of \blur).
glow alpha is transparency - 00 is most visible, F0 would be very faint. If 00 is not as strong as you need it to be (usually with larger blur values), you can duplicate the glow layer.

Here's an example of a real sign with glow:

It's mostly useful for signs with no border but can be used with border too, but then you have to be careful to not have too much blur compared to the border size.

Normally shadow from the original sign gets applied to bottom layer with border and to glow layer.
keep shadow on top layer leaves shadow on the top layer, like this:

keep shadow on middle layer does the same on middle layer if you have double border. If you check both, you'll have a shadow on both.
The bottom layer will still have a shadow in any case, so you have to nuke it later if you don't want it.
That's easy to do with Script Cleaner, but if there are rotations involved, you'll have to use \4a&HFF& instead of nuking the shadow.

fix \1a for layers with border and fade is for use with fades.

Left is when you don't use it. Right is when you do. You can see the difference in primary colour.
What it does is that it applies \1a&HFF& during the fade and only transforms into colour when the fade ends.
transition is the time it takes to transform from that \1a&HFF& to full colour.
0 is instantaneous, i.e. alpha will be there for the whole fade, and the first frame after fade will have full colour.
The higher the number, the longer the transition. I use the default 99% of the time, but some cases may require tweaking.

Fix fades button either adds those alpha transforms if they're missing, or recalculates them based on \fad.
Recalculating is useful when you shift a sign like episode title into another episode, but while the fades are the same, the length of the sign is different, so you need different timecodes for the ending transform.

only add glow will only add glow to layer with border, instead of creating a layer for the border too.

only add 2nd border will only add second border, instead of creating a layer for the first border too.

If you add glow or borders when you already have a layered sign, you'll have to shift layers for the top lines.
For this you can use Change layer.

repeat with last settings will use whatever settings you used last time (unless you rescanned automation directory or restarted Aegisub).

save configuration saves the current configuration of your GUI as the default settings.

If there's no blur, default_blur is used. It's set to 0.6, but you can change it by editing the script. (It's near the top, under script_version.)

The script supports xbord, ybord, xshad, and yshad, and has basic support for transforms and \r.


Purpose: Easily add tags to multiple lines

Features: transforms with several modes; inline tags with several presets; a number of special functions;
options for what lines to apply things to; 3 GUI modes; repeat with last settings; save config

This is like the old "add tags" script, except 1. you don't have to type the tags, 2. you don't get duplicate tags, 3. you can easily do transforms, 4. you can apply the tags to specific layers, styles, etc., 5. you can make inline tags, and 6. you have a bunch of extra useful functions. In other words, anyone still using "add tags" should be ashamed.

The basic functionality is extremely simple. Let's say you want \bord3 and \shad2.

You check the checkboxes, type the values, and click Apply.

If you want to transform to \bord3 and \shad2, you do the same except you click on Transform.
That will give you \t(\bord3\shad2). If you want times, you set them in the Transform t1, t2 fields. Acceleration is right below that.

That's pretty much all you need without going into specialized functions, so it's really easy.

Additional tags lets you type some extra tags, should there be a need to add something non-standard.

Repeat Last will use your last settings, so with what was said above, it would now produce that transform with \blur3 and \shad2 again.

The Special button applies what you select from Special functions. (More on that later.)

Save Config saves the current configuration to a file named "hydra4.conf" in your APPDATA folder.

Help button loads an extra part of the GUI with some basic usage instructions.

While the basic functions are powerful enough and pretty much a must for anyone who wants to typeset without being slow as hell, HYDRA has much more to offer to advanced typesetters used to dealing with dozens of lines at a time and huge, chaotic scripts.

First let me explain some additional notes to the basic tags.

There are two ways to do \[number]a tags, or alphas for colours. One is on the right where it's pretty obvious.
The other is using the colour pickers. These have both the colour and its alpha value, and you can apply either the colour, or the alpha, or both. By default it uses only the colour. If you want the alpha too, you check Include alphas. If you want only the alpha and not the colour (so an alternative to those dropdown alphas that only have a limited set of values), you check the only checkbox next to it.
Note: on older versions of Aegisub this doesn't work. (Minimum Aegisub r7993 required.)

There's a layer checkbox, which obviously isn't a tag, so that changes the layer of selected lines.
It changes by the given amount, so the layer proportions of your lines will be kept. (Layers 2, 3, 5 with "+2" will become 4, 5, 7.)

There's a global checkbox next to fade values. This lets you apply the fade not to each line, but to the selection as a whole, so that the first selected line will have the fade in, and the last selected line will have the fade out.


Under global, there's a Relative transform checkbox.
This changes the mechanism so that tags don't transform TO the given value, but BY the given value. This means that when given frz30, you won't get \t(\frz30) unless your curernt frz is 0, but whatever is needed to rotate each line BY 30 degrees.
The point of this is that when you have several lines with different rotation values, you can rotate them in sync this way.
Or for example you may have a sign with two borders and you want both borders to grow by the same amount. (Default settings would transform both to the same value, thus basically making one of the lines invisible.) So if you have \bord3 and \bord5 and transform by 2, you'll have the first line transform to 5 and the second to 7.

Transform mode - add2first - This will not create a new transform, but instead will add the tags to the first existing transform in the line, assuming there is one. If there isn't, nothing happens.
Transform mode - add2all - This will add the tags to all transforms found in the line.
Transform mode - all tag blocks - This will add the transform to each tag block, i.e. this: {\tags_here}
This can be useful with gradient by character, for example if you have gradiented colour and want to transform all letters to black.
Even more fun, you can have frz gradiented by character and apply a relative transform! (This will require HYDRA 4.0.)

Times from end - This will count transform times from the end of the line, so values 500,200 will mean that the transform will start 500ms before the end of the line and end 200ms before the end of the line.

Tag position

This allows you to make inline tags. In that text field, you have the clean text of your first selected line. You place an asterisk there, like you see in the example above, and the tags you select will go there, so in this case before the word "four".
It will work for any line that has such text, while lines that don't contain it will remain unchanged.

Aside from that, there are also several presets for inline tags. (--- presets --- dropdown menu.)

before last char. - This will place the tags before the last character of visible text, no matter what the text is.
This is very useful for mass gradienting lines with different text. If you want to style a song so that it's gradiented by character from green to blue, for example, you first set the green at the beginning of the line, and then set blue before the last character this way. Then you run gradient-by-character, and all lines will be gradiented whatever the text is.
in the middle - This will count characters and place the tags in the middle of the line. (If odd number, it goes before middle letter.)
1/4 of text - Similarly, this counts the characters and places tags at 1/4 of the line. (If 20 characters, it goes after the first 5.) Obviously this works in the same manner for the other presets with this pattern.
custom pattern - This uses an asterisk, just like the basic mode, but it can use shorter patters, as opposed to the whole text of the line.
For example you can use the pattern *and, and tags will be placed before the word "and" in any line that contains that word, no matter what the rest of the text is and however many times that word is in the line. Note that this doesn't recognize "words" but only patterns of characters, so you'd also get the tags before "android". It's also case-sensitive, and there can't be tags/comments inside the pattern.
section - This latest addition (Hydra 4) lets you put tags before a given pattern and then changes the tags back after it!

So as you may have seen in the screenshot in the Blur and Glow section, here the word "one" needs to be red.

So what you do is select section from the preset menu, and leave only the word "one" in the Tag position text field.
Then you select red colour from the tags and apply.

The word "one" becomes red, and the tags after it return back to white.
As with the previous option, there can't be any tags/comments inside the section.
You can apply it to several words, as long as there are no {} in the pattern in the actual line.

Special functions

fscx -> fscy - Applies the value of fscx to fscy, making them the same.
fscy -> fscx - Same but the other way round.
move colour tag to first block - If you use hotkeys for colour pickers, the colour gets sometimes applied somewhere in the middle of the line or at the end because that's where the cursor is in the textbox area.
This moves a colour tag that isn't at the start of the line to the start. If it finds more, it deletes them all and uses the last one in the line.
This is a lot more useful if hotkeyed or at least if it's set to be the default choice, but if you need to set colours to a bunch of lines and don't want to make sure the cursor is always at the beginning of the line, you can just set the colours wherever and then run this.
convert clip <-> iclip - Changes clips to iclips and vice versa.
clean up tags - This is the same as in Script Cleanup, so scroll up.
sort tags in set order - This sorts tags in each tag block based on the order in settings.
clean up and sort transforms - 1. Merges transforms without timecodes together. 2. places transforms after other tags.
back and forth transform - This will transform back and forth between the current state of the line and tags you select.
So for example, you select \bord 10 and \frz 20 and run the script. It will read the current bord and frz from the line or from style and create transforms based on given interval. Interval is the field above "^interval", with "500" in it by default. This means that it will take 500ms to transform to \bord10\frz20, then 500ms to transform back, another 500 forward again, etc. for the whole duration of the line.
This way you can create wobbling effects and such.
select overlaps - This used to be shipped with Aegisub. I don't know if it still is, but somebody wanted that included in HYDRA, so here it is. It selects lines that overlap with other lines.
convert clip to drawing - Uses coordinates from a clip to create a drawing.
convert drawing to clip - Same but the other way round.
clip square grid small - This creates a checkerboard clip. Not too useful, but you can convert it with the above tool to drawing. This also allows you to resize it with the scaling tool and convert back, so you can get various sizes.
clip square grid large - Same but larger, which, in the light of what I just said, is quite redundant.
create 3D effect from shadow - This is one of the more useful things in this menu.

It's the difference between these two. Left is ordinary shadow. Right is the 3D effect.
You can best see it on the top part of the last letter. The space between the letter and the shadow gets "filled".

split line in 3 parts - Use the fields for 'Transform times' to set duration of line 1 and 3. If you set for example 200 and 300, your line will be triplicated, with the first one being 200ms long, the last one 300ms, and the middle one whatever is left of the original duration.
If you set either of the two to 0, you'll only have 2 lines.
This can be useful for song styling when you want to apply some transforms to the first or last 500ms, for example, because applying the transforms to the lines with the whole duration can be much more laggy, and lines with too many transforms can look too chaotic to work with them.

Apply to

This is quite simple. You can choose to which of the selected lines you want to apply the changes based on the 4 restrictions.
When dealing with multi-layered signs, you may need different tags for different layers, so this can make it easy.

Start mode

You can set starting mode in the GUI itself now (Hydra 4) in the top right corner, and it gets saved into the config file.
There are 3 modes: basic, medium, full. The basic mode loads faster, and for beginners who only need basic things, the GUI can be less confusing in the basic mode.

Hyperdimensional Relocator

Purpose: Do all kinds of things involving mainly \pos, \move, \org, \clip, rotations, and masks

Check space travel guide and click on Positron Cannon, and you'll have all the information you need.


Purpose: Recalculate values of tags by multiplying or adding

This mainly allows you to change the size of things proportionately, like for example scaling together with border and shadow.

Change values to - This will increase/lower values of selected tags based on given percentage.
With a value of 120%, you will get a 20% increase in value of checked tags, so fscx100 will become fscx120, fs60 will become fs72, etc.
With multiply/add more with each line and fscx100, you'll get 120, 140, 160, 180, etc. for consecutive lines.

Increase values by - This will increase/lower values of selected tags based on a given number.
With a value of 5, the value of checked tags will increase by 5, so fscx100 will become fscx105, fax0.05 will become fax5.05, etc.
With multiply/add more with each line and fscx100, you'll get 105, 110, 115, 120, etc. for consecutive lines.

Alternative 2nd value allows for a different value for all Y things (fscY, Ybord, Yshad, frY, faY, all Y coordinates) + fad2 and t2.
It will be used as Multiply or Add depending on the button you press.

Example: Checked fscx, fscy, pos x, pos y; tags are \fscx100\fscy100\pos(300,200)

-> Change values to 150%; Alternative 2nd value 250%. Multiply.
-> Result: \fscx150\fscy250\pos(450,500)

-> Increase values by 20; Alternative 2nd value -10. Add.
-> Result: \fscx120\fscy90\pos(320,190)

anchor clip - This makes sure that multiplying values for clip coordinates won't send your clip somewhere off the screen.
Rectangular ones are anchored in the middle, vectorial ones at the first point of the clip.

all pos/move/org - This is like checking all 8 pos/move/org checkboxes, so that you don't have to click on all of them.

Rounding - How many decimals are allowed for recalculated values.

Mirror - This is intended for mirroring mocha data. Applied to fbf lines with pos going from 200 to 260, it will go from 200 to 140.
Works with position, origin, rotations, and rectangular clip. If clip changes size/shape, results will be weird.
Also works with move (though that makes pretty much no sense to use) and fax/fay.
(I'm not sure how it's useful, but Hdr wanted it.)


Purpose: Operations with colours

Features: colorize by letter; match colours; gradient; adjust RGB/HSL; remember last settings; repeat with last settings; save config

The GUI covers all kinds of different operations, so let's break it down by buttons.


The blue+green area is what settings the button uses. This still covers several varied functions, though.

The default action is Colorize by letter, and the green area covers the relevant options.
What you do with this is pick a number of colours (2-5) and set them letter by letter to the whole line. (Spaces don't count.)

Colours is where you select how many colours you want.
The 5 colour pickers are where you select the colours.
Apply to is where you select the colour type you want this applied to.
Colorize by word will switch colours after each word rather than character.

Don't join with other tags will not join the first colour tag with the initial tags. (I don't remember why this option is there, and you probably shouldn't use it.)
Note: Comments are now preserved (v4.21+), but all shifted to the end of the line.


The Shift function is closely related to this. It simply shifts all the colour tags by one character. (Doesn't work by word.)
It was only made for one colour type, so it won't work if you have two types colorized. The type is determined from the tag before the last character, and the tag block must only contain the colour.
If Shift base is # of colours, you have to select the number of Colours so that the script knows which colour the first letter should be.
This should be used for a line colorized the way described above.
If, however, you have for example a gradient and want to shift the colours of the whole line around, you set Shift base to line, and the first letter will be the colour that was previously the last letter.
Continuous shift line by line is what really makes this interesting. You use it on fbf lines, and the colours get shifted by another character with each line. You may have a different colour for only one letter, shift by line, and the effect will be that colour running across the text.

Other Colorize functions

Tune colours - Loads all colours from a line into a GUI and lets you change them from there. For more info, check this.

Set colours across whole line - This is like a preparation for gradient-by-character.
Select number of colours and colour type.
For 3 colours, it will place one at the start, one in the middle, and one before the last character.
Works for 2-10 colours and sets them evenly across the line. (Then you can run GBC.)

Gradient - Creates a gradient by character.

There are two modes: RGB and HSL. RGB is the standard, like lyger's GBC; HSL interpolates Hue, Saturation, and Lightness separately.
Use the \c, \3c, \4c, \2c checkboxes on the right to choose which colour to gradient.
Shortest hue makes sure that hue is interpolated in the shorter direction. Unchecking it will give you a different gradient in 50% cases.
Double HSL gradient will make an extra round through Hue. Note that neither of these 2 options applies to RGB.
Use asterisks places asterisks like lyger's GBC so that you can ungradient the line with his script.
Restart after each \N will create the full gradient for each line if there are linebreaks.
There are several differences from lyger's GBC:
- RGB / HSL option
- You can choose which types of colour you want to gradient
- Other tags don't interfere with the colour gradients
- Asterisks are optional

Save configuration - Saves current settings as defaults.

Remember last - Remembers last settings. (Until reloading automation directory.)

Match Colours

c->3c - For each primary colour in the line, the border becomes the same colour. Same principle for the next 3 options.
c<->3c - Switches primary and outline colours.
Invert - Inverts colours.


Violet colour applies to both parts.

Rather obviously, this adjusts Red/Green/Blue or Hue/Saturation/Lightness for all colour tags of selected type in all selected lines.
As colour values are hexadecimal, one step is 1/255th of the colour scale, and thus -255/255 are the limit values.
Apply to missing means it will be applied to the colour in Style if there's no tag in the line.
Randomize - Example: if you set Lightness (or any RGB/HSL) to 20, the resulting colour will have anywhere between -20 and +20 of the original Lightness.

Repeat with last settings - Whichever button you press, the settings from the last opening of the GUI will be used.


Purpose: Select or sort lines based on given criteria

This is explained in detail in this blog post, so I will only address what has been added since then.

If you're selecting by Numbers and use ==, you can set ranges.
This means that selecting layers with ==, you can match 4-6, and layers 4, 5, and 6 will be selected.

regexp has been updated to be real regexp and not lua.


lines w/ comments 1/2 - This selects lines that have comments in {these} brackets - mode 1 from all lines, mode 2 from selected lines.
same text (contin.) - This reads clean text (no tags/comments) of selected lines and then goes line by line checking if they have the same text as any of the selected ones, adding them to selection. It stops at a line that has a different text from all the selected ones. In other words, it selects all following, continuous lines that match the text of the selected lines. Effectively, this is mainly useful to select a whole mocha-tracked sign or a gradiented sign.
same text (all lines) - Same as previous, but applies to the whole script.
its/id/ill/were/wont - Selects lines containing these words so that you can make sure they weren't supposed to be it's/i'd/i'll/we're/won't.
range of lines - Selects a range of lines based on numbers you see in subtitle grid. Type something like "500-600" in the Match this field.
move sel. up - Moves your selection up by 1 line, so if lines 5-8 are selected, lines 4-7 will be selected.
move sel. down - Opposite of previous. For both presets, you can move by more lines if you type the number in Match this.
move sel. to the top - Moves selected lines to the top of the script. With mod checked, active line/selection doesn't go to the top but stays where it is.
move sel. to the bottom - Same as previous (including the mod part) but for bottom of the script.
sel: first to bottom - Shifts lines in selection, moving the first selected line to the bottom of the selection. (1-2-3-4 -> 2-3-4-1)
sel: last to top - Opposite of previous - last line in selection goes to the top of selection.

The mod checkbox works with two more things.
With sort by time it sorts by end time.
With OP/ED in style it selects not only by style name, but also all lines that appear (timing-wise) between the start of the first OP or ED line and the end of the last OP/ED line. The purpose is to also select signs that are part of OP/ED but don't have OP/ED in style name.

Multi-line Editor

Purpose: Edit multiple lines like on a pad

Features: Edit text, style, actor, and effect; replacer with regexp; remove tags/comments/linebreaks; capitalization

This was written so that you can edit multiple lines without having to jump between them. Also if you're editing a sentence that extends over 3 lines, you can easily see the whole sentence here and move words among all the lines.
Your selected lines get loaded in the editor, as you see above, and the GUI expands based on how much text you load, up to a certain limit. You can still go beyond that limit if you use the Taller GUI button, though.

When you edit the lines, you click on Save, and they get saved back to the subtitle script.
Line breaks in the editor determine what one line in the script is, so you can't change the line count - save for one exception. If you load only one line and make line breaks in the editor, these become \N when you save it. This is useful when you're typesetting for example a cell phone sign with long text and need to make line breaks manually in many places.

In the textbox on the right, you can see some useful information: duration, characters per second, and character count for each line.
The content of this box is only informative and doesn't save anywhere, so it doesn't matter what you do with it.

You have a number of tools at your disposal. There are 4 buttons to remove things: tags, comments, linebreaks, and leading dash+space. This last one is for removing this garbage from subtitles that have two speakers in one line.

The Add tags button adds the tags you check at the top of the GUI.

The Capitalize button cycles through 3 modes of capitalization for the whole text: lowercase, uppercase, and titles.

Then there is a Replace function that has improved a lot in the latest versions. It's quite similar to ctrl+h, but applies to the text loaded in the Editor. I generally use ctrl+h for the whole script and this one for selections.
It has a mode for whole word only without requiring that you know regexp. This means replacing "and" won't replace the "and" in "android".
It has both standard regexp and lua pattern matching. (If you check both, lua applies.)

A recent addition is the Switch button that switches to another mode.

In this mode, you can see Style, Actor, and Effect the same way as Text, and you can edit all of them the same way.
Replacer can also be used on all of them. The checkboxes at the top determine what the Replacer will affect.
You must always maintain the original line count for each of the 4, or you won't be able to save the results.


Purpose: Copy specified things from selected lines / paste things to selected lines

Features: copy any tags; copy between columns; many modes of pasting

The main idea is to copy something from X lines and paste it to another X lines.

tags - start tags
text - text AFTER start tags (will include inline tags)
all - tags+text, i.e. everything in the Text field
any tag - copies whatever tag(s) you specify by typing in the textbox, like "org", "fad", "t", or "blur,c,alpha"
export CR for pad - copies the text of the whole script in a way suitable for pasting on a pad
signs go to top with {TS} timecodes; nukes linebreaks and other CR garbage, fixes styles, etc.
colour(s) / alpha - copies colours / alphas selected by checkboxes above

Other copy options should be obvious.

Copy from / to is a quick copy function between columns.
Switch switches text in the selected columns. Copying strings to number fields does nothing.
Attach attaches data from one column to another. For example if you have "01" in effect, and "Text" in text, and use the settings below, you will get "01 - Text" in text. (Effect remains unchanged.) Checking After would make it "Text - 01". If effect was empty, you'd be just attaching the text you type in "Link".

Once you get your data, click on Copy to clipboard, select the lines you want to paste to, load the GUI again,
and click on Paste from clipboard. This will load the saved text in the textbox.
You could use ctrl+c / ctrl+v instead of the buttons, but Windows has limits on the length of that, and the buttons bypass that restriction.
Now you use one of the three paste buttons, depending on what you're pasting.

Paste tags pastes start tags.
Paste text pastes text after start tags.

Paste extra
all - This is like regular paste over from a pad, but with checks to help identify where stuff breaks if the line count is different or shifted somewhere. If you're pasting over a script that has different line splitting than it should, this will show you pretty reliably where the discrepancies are.
any tag - This is for pasting tags, in the "\tag1\tag2" format. Doesn't matter whether you copied or typed them.
superpasta - This allows copying columns from one selection to another.
Just copy several whole lines with ctrl+c, select new lines, paste the whole thing in the GUI, select superpasta, and you'll get this:

You can paste for example Effect from some lines to Effect in other lines, but also to another field in those other lines, like Actor.
You can also apply this to the same lines you copied from and copy things between columns. As copying between columns has now been added directly to the main GUI, this is pretty much redundant, but it can do several of those operations at the same time.
Checkboxes determine which column should be copied, and dropdown menus determine where it should be copied to.
text mod. - This pastes over text while keeping inline tags.
If your line is {\t1}a{\t2}b{\t3}c and you paste "def", you will get {\t1}d{\t2}e{\t3}f.
This simply counts characters, so if you paste "defgh", you get {\t1}d{\t2}e{\t3}fgh, and for "d", you get {\t1}d. Comments get nuked.
gbc text - This is for pasting over lines with gradient by character. You get this:
[start tags][pasted text without last character][tag that was before last character][last character of pasted text]
For colours, the gradient should be replicated in full.
de-irc: paste straight from irc with timecodes and nicknames, and stuff gets parsed correctly.
[12:30:24] Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,Text
Timecode and nickname gets nuked, and the rest is applied like regular paste over.

If pasted data doesn't match line count of selection, you get choices for what you want to do.

If you have more lines selected than you're pasting, you can either Loop paste or Paste only copied lines.
In the case above, Loop will paste that one line into all 4 selected, while the other option only pastes that one saved line, and the remaining 3 stay the same.
If you had 3 lines copied and 8 lines selected, Loop would paste lines 1 2 3 1 2 3 1 2 into the 8 selected.

If you have more lines copied than selected, you can Paste only what you have copied, or Paste all lines.
The former will paste whatever fits into your current selection. The latter will keep pasting to lines after the selection until the clipboard is empty.

You can use Replacer on pasted data.
This applies to what you have pasted in that large textbox and allows you to modify the data you're pasting.
You can, for example, copy values from one type of tag and paste as another type of tag.
Example: copy 'bord', replace 'bord' with 'shad', and paste border values as shadow values.
Another example would be copying primary colour, replacing \c with \3c, and pasting as border colour.

Apply fade

Purpose: Create an ordinary fade as well as other fading effects

Features: alpha/colour/blur fades with accel; fade letter by letter; fade across multiple lines;
fade in using \ko; fade to/from current frame; remember last settings; save config

For a regular fade, type only Fade in / Fade out values.

Checking alpha will use alpha transform instead, with the Fade in/out values and accel.
Checking from/to colours will do colour transforms (with accel). If only one checked, the other will be alpha transform.
Checking blur will do a blur transform with given start and end blur (and accel), using the current blur as the middle value.
In case of user stupidity, i.e. blur missing, 0.6 is used as default.

Letter by letter
This fades each letter separately, in a sequence.
The dropdown menu is the fading time for each letter, while Fade in/out are for the overall fades.
So if you have 10 characters and use 120ms/letter and 1200ms Fade in, the fades will follow perfectly one after another.
If the Fade in is 1000 ms, they will overlap a little. If 500ms, you'll have about 3 letters fading at a time.
rtl fades right to left. Delete removes a letter-by-letter fade (by removing all transforms and alphas).

Letter by letter using \ko uses {\ko#} tags instead of transforms for fade in.
If the Fade in is under 40, it's used as \ko[value]; if it's 40+, it's considered to be the overall fade, i.e. when the last letter appears.
\ko by word fades in by word instead of by letter.
(Inline tags are supported, but if you fade by word and have tags in the middle of a word, it won't work as you want it to.
Also, \ko actually works with decimal values, like \ko4.6.)

Fade across multiple lines will create a set of alpha transforms across lines.
This can be used if you want to fade out a whole part of a conversation. Like people walking away and talking, sound gets quieter...
This nukes all present alpha tags. It supports shadow alpha (\4a).
Global time will use times relative to video, rather than of each individual line. This makes a difference with gaps between lines.

Fade in to current frame - sets fade in to current video frame.
Fade out from current frame - sets fade out from current video frame.
These are for setting fades very easily without requiring any numbers.
The current frame will be the first/last fully visible, so for Fade in, set to the first frame after the fade, not the last frame of the fade.

Remember last settings - the GUI will remember your last used values (until automation reload).

[Save config] - Saves your current settings as defaults.

Extra functions:
Fade between 0 and 1 gives you that fraction of the line's duration, so Fade in 0.2 with 1 second is \fad(200,0).
Fade value of 1 is the duration of the whole line.
Negative fade gives you the inverse with respect to duration, so if dur=3000 and fade in is -500, you get \fad(2500,0), i.e. 500 from end.


Purpose: Timing operations

Features: cut lead in/out; prevent overlaps; fix overlaps; apply to selected styles; custom presets for keyframe snapping; save config

This started with some things the TPP didn't do and ended up as a complete replacement of TPP, including functions of the shifting tool.

For clarity, let's divide this by colours again.

The top part is general settings.

Apply to selected / Apply to all lines - This should be obvious.

Styles to apply to - There are 3 presets: All, All Default, Default+Alt.
All Default applies to all styles with "Defa" in the name.
Default+Alt applies to styles with "Defa" or "Alt" in the name, so this will match stuff like "Default Flashback" or "Alternative".
Below that, the dropdown menu shows all styles present in your script.
The box next to it lets you type an additional style you want to include.
This may be useful if one of your dialogue styles has an odd naming pattern.

Info (link/snap) - For linking and keyframe snapping, this gives you information about how many lines were affected.
This can be useful when applying something to the whole script, unsure whether your settings are a good idea.
If you find no lines were changed, your settings were useless. If too many lines were changed, maybe you did something wrong, etc.

Mark changed lines - Same purpose as the Info above, but this marks the lines in Effect so that you can check the changes.

Lead in/out
Simple. Check which of the two you want (or both), set values in milliseconds, go.
Cut overrides Add, so it doesn't matter whether Add is checked or not.
You can also cut by using Add and negative values.
Prevent overlaps from adding leads - This makes sure that applying lead in/out won't create overlaps with adjacent lines.
Don't add leads on keyframes - This is useful when you're fixing a script that's already snapped to keyframes.
For example if your timer makes short lead outs, you can add 150ms lead out to all dialogue lines with these 2 checkboxes checked pretty safely (and then Link Lines).

Link lines
Max gap - Maximum gap between lines to be linked. If the gap is longer, no linking.
Bias - Where the lines will be linked. 0.5 is in the midle of the gap. 0.8 means 80% of the gap goes to the first line, 20% to the second.
Fix overlaps - This allows you to fix what would be unwanted overlaps. If two consecutive lines overlap by less than this number, they will be made not to, based on the Bias, which works like the one for linking.
You can for example set this to only 50 if you want to just fix accidental 1-frame overlaps. (Assuming "normal" frame rates.)
If you want to only fix overlaps, set linking gap to 0.

This is really just like TPP, so there isn't much to explain.
Keyframe settings are in frames, not ms. Preset numbers are in the same order the GUI shows above it.
Preventing overlaps is something TPP doesn't have, afaik.
Overlaps would happen when lines are linked before a keyframe and your Ends before number is higher than Starts before, for instance.
Max CPS - If snapping to a keyframe would result in a CPS higher than the given value, the line won't be snapped. "0" disables this. (Or you can just set a high number.) This setting will allow bleeds if the lines would otherwise be hard to read. However, it only applies if the bleed is over 3 frames because 1/2/3-frame bleeds are just never good and hardly make much difference for readability.

Shift times - This is as straightforward as it gets. Shift backward or forward by milliseconds.

All - This button applies Lead in/out, Link lines, and Keyframe snap.

Save config - Saves your current configuration. This also lets you modify (add/remove) the keyframe presets.


Purpose: Do a shitload of things that the other scripts don't do

Features: import/export signs; make chapters; number lines; motion blur; merge inline tags; reverse text; fake capitals;
clone clip; convert \k to \t\alpha; convert framerate; many special effects for styling; info about line; save config

This is by far my largest script. The only one over 100 KB, abour 20% larger than Relocator.
It has a Help button and Help menu, so use those. It's also explained in more detail in this blog post.
I might put some more descriptions for some functions here later, but writing this page is enough work as it is, so not now.

Time signs from timecodes

Purpose: Time signs from timecodes like this one: {TS 5:36}

Features: shift times; snap to keyframes; fill in times for lines without timecodes; use multiple timecodes; add blur; save settings

This checks for timecodes like {TS 5:36} in your line and uses them to set start and end times for the line.
It can use a bunch of different formats of the timecode, but it's best to stick to this.

Shift timecodes by ... sec - If your translator uses a different raw than the one you typeset to, you can use this to shift the times.
For lines without timecodes... - For multi-line signs where timecode is only on the first line.
Automatically remove {TS ...} comments - Removes coments starting with 'TS', i.e. the timecodes it used for timing.
Automatically add blur - You should do that for every sign anyway, so why not right away.
Snapping to keyframes - Snaps start/end of the sign to nearby keyframes. Set how far it should look for keyframes.
Save current settings - Saves a config file.

You can have multiple timecodes for the same sign, like {TS 5:36, 5:47, 6:52}, and the script will create a line for each sign.

Change Capitalization

Purpose: Change capitalization of text

This is as simple as it gets, and it's all described right there in the picture.


Purpose: Multipurpose

Features: save/load masks; shift tags in line; apply \an or \q2 tags; alpha time signs

Creates a mask with the selected shape.
from clip takes the shape of the mask from a clip in your line. See here.
create mask on a new line does the obvious and raises the layer of the current line by 1.
If you select a secondary colour (\2c), this will be then used as primary colour for the mask on new layer.
remask only changes an existing mask for another shape without changing tags.
Save/delete mask lets you save a mask from active line or delete one of your custom masks.
To save a mask, type a name and the mask from your active line will be saved (appdata/masquerade.masks).
To delete a mask, type its name or type 'del' and select the name from the menu on the left.

Shift Tags
Allows you to shift tags by character or by word.
For the first block, single tags can be moved right.
For inline tags, each block can be moved left or right.

This mini GUI has start tags on the left and inline tags on the right. Check those you want to shift. Click on Shift Left or Shift Right.
Check word if you want to shift by words instead of letters, and set how many letters/words to shift by.
remove selected tags deletes them instead of shifting.
All Inline Tags checks the checkboxes above it.
You can create regular start tags quickly and use this to shift them to become inline tags.

an8 / q2 - Applies selected tags.

Mocha Scale
Recalculates fscx and fscy for a given font size.
tag end is an option to add the tags at the end of the line instead of beginning.
I don't think this is needed anymore, so I might replace it with something else soon.

alpha shift
Makes text appear letter by letter on frame-by-frame lines using alpha&HFF& like this:
The original lines must all have the alpha tag at the beginning.

Alpha Time
Either select lines that are already timed for alpha timing and need alpha tags, or just one line that needs to be alpha timed.

In the GUI, split the line by hitting Enter where you want the alpha tags.
If you make no line breaks, text will be split by spaces.
Alpha Text is for when you have the lines already timed and just need the tags.
Alpha Time is for one line. It will be split to equally long lines with alpha tags added.
If you add "@" to your line first, alpha tags will replace the @, and no GUI will pop up.
Example text: This @is @a @test.

Replaces strikeout or underline tags with \alpha&H00& or \alpha&HFF&. Also @.
@	->	{\alpha&HFF&}
@0	->	{\alpha&H00&}
{\u1}	->	{\alpha&HFF&}
{\u0}	->	{\alpha&H00&}
{\s0}	->	{\alpha&HFF&}
{\s1}	->	{\alpha&H00&}
@E3@	->	{\alpha&HE3&}

CopyFax This

Purpose: Multipurpose

Features: apply \fax easily; copy things from one line to others; split by linebreaks

Fax It
Adds a \fax tag. to the right just adds a "-" (minus). (Yes, that's pretty useless.)
from clip calculates the fax value from the first two points of a vector clip.
I the clip has 4 points, points 3-4 are used to calculate fax for the last character and a fax gradient by character is made.

Copy functions
All copy functions copy things from the first selected line to the other selected lines.
If the other lines already have the thing that's being copied, it gets replaced, of course.

Copy Stuff
This lets you copy almost anything from one line to others.
The primary use is to copy from the first line of your selection to the others.
If you need to copy to a line that's above the source line in the grid, just click Copy with the selected things and then use Paste Saved on the line(s) you want to copy to.

The GUI always loads data from the first selected line (not active line).
Check what you want to copy from this line to the other lines in your selection.
The tags on the left are start tags; on the right are inline tags. Inline tags will only be pasted to the first tag block.
As you can see, you can also copy, Start Time, End Time, Style, and Text.
If you select only one line, check some things, and click Copy, this will be saved in memory. (It's the script's memory, not clipboard, so reloading automation nukes it, but you can use clipboard for other things.)
You can then select one or more other lines and click Paste Saved, and the things saved in memory will be applied to those lines.
You can also copy tags inside one line. This is similar to Shift Tags, but it leaves the tag in the original position too.
So you can type an asterisk (*) before "your name", check "\blur1", and the blur tag will be copied there.
Copy tags after all linebreaks copies selected tags after all linebreaks in all selected lines.
This is useful when you have gradient by character and linebreaks - you need the gradient for each "line" separated by linebreaks, so you copy the needed start tag after each linebreak.
[Un]hide lets you hide/unhide checked tags (by making them comments). If yuo check a tag, it gets hidden. If you don't check anything, whatever was hidden gets unhidden. This way you can hide something that you want to reuse later. Good for clips, for example.

{\fad(2000,0)\an6\blur0.6\pos(980,108)}Azure Waters
Check "\fad(2000,0)", click [Un]hide:
{\an6\blur0.6\pos(980,108)}Azure Waters{//fad(2000,0)}
The fade is now just a comment. If you run the script again, check nothing, and click [Un]hide, the line will return to its previous state.

Copy Tags
Copies the first block of tags in its entirety from first selected line to the others.

Copy Text
Copies what's after the first block of tags from first selected line to the others (including inline tags).

Copy Clip
Copies clip from first selected line to the others.
shift clip every frame will shift the clip by that amount each line.

Copy Colours
Copies checked colours from first selected line to the others.
Unlike Copy Stuff, this can read the colours from the style when tags are missing.
You can also include alpha for the checked colours.

Split by \N
Splits a line at each linebreak.
If there's no linebreak, you can split by tags or spaces.

Splitting by linebreak will try to keep the position of each part, but it only supports \fs, \fscy, and \an.

Modify Text

Purpose: Have things that editors might need all in one script

This is very old and I don't think anybody's using this, so I will ignore it until somebody complains.

Encode - Hardsub

Purpose: Encode a clip or the whole video with or without hardsubs, using x264 encoder

- x264.exe (8-bit and/or 10-bit depending on what you want to do. Mocha clips must be 8-bit.)
- vsfilter.dll / vsfiltermod.dll for hardsubbing
- avisynth (not required when encoding for mocha)

Encode - Creates scripts for encoding with settings from the GUI. It will ask if you want to encode now or later.
x264 - Navigate to where your 8-bit x264.exe is. The path will appear in the top line of the GUI.
x264 10bit - Same for 10-bit x264.
vsfilter - Same for vsfilter.dll.
vsfiltermod - Same for vsfiltermod.dll.
Target - If Target folder is Custom, then this loads the path to the folder where you want your encode to go. The dialog only select files, so you have to select a file in that folder (or just type the path in the GUI).
Secondary - Select secondary subtitles.
Enc. Set. - Shows a list of recently used encoding settings to choose from.
Save - Saves settings.

Other Options:
Source video - The video from which you're encoding. This will automatically show the name of the video you have loaded in Aegisub.
Target folder - If Same as source, then the encode will be where your source video is. If Custom, then you need to specify a path.
Encode name - Specify which extension you want, and adjust the encode's name if needed.
Primary subs - Choose which filter you want to use. The file you have loaded in Aegisub should show up there.
Secondary - Check this if you want two subtitle files, choose filter, and use the Secondary button to load a file.
Encoder settings - Settings that will be used for encoding. Change as you wish.
Settings 4 mocha - Settings that will be used instead if you check Encode clip for mocha.
Trim from / to - First and last frame of the clip you want to encode. If unchecked, whole video is encoded.
Encode clip for mocha does automatically the following (meaning you don't have to do those manually):
- disables 10bit
- enables trimming
- disables subtitles
- sets target to .mp4
- disables avisynth use
10 bit - Uses the 10 bit x264 binary specified in the settings at the top.
Delete batch file after encoding - Deletes the encoding batch file when done.
Delete avisynth script - Same for the avisynth script.
Keep cmd window open - Keeps the cmd window open when encoding's done. This allows you to see what errors there were if encoding doesn't work.

You can encode clips for mocha with this if torque's Motion script fails to encode for some reason, or you can use it for easy hardsubbing.


Purpose: Mux video with subtitles, suitable for muxig fansub releases

Features: create CRC; create xdelta; automatically use group tag; two subtitle files; mux chapters

Half of this script is documentation, so there's really nothing to add here.


Purpose: Show a list of hiragana/katakana with corresponding romaji

This was mainly a fun experiment to see if I can do this. (It was very tedious.)
If you're typesetting and don't know which sign is which, this can help you identify them.
If you type hiragana/katakana/romaji words in the corresponding fields and click on Transcribe, you should get the other two.
It's probably buggy, and I probably won't fix anything much about it.

Backup Checker

Purpose: Save a backup of your script so that you can later check the original lines after you've edited them

The GUI looks pretty much like Multi-line Editor, just with different functions.
Load from Memory - Loads lines from memory, which is also what gets loaded by default (if you saved it before).
Load from File - Loads lines from the file with the filename you see. (Type to change if you want from a different one.)
Save to Memory - Saves the current script to memory. (This gets erased if you reload automation scripts.)
Save to File - Saves it to a file with the name you see there, in the .ass script's folder. (You can make any number of these files.)
Memory to File - Saves the content of memory to a file.
File to Memory - Loads the content of a file to memory.
No Comments - Removes {comments}.
You can easily switch between different backups.
If you split/join lines, the backup will be off by those, but you can just select more lines to load the ones you need to see.