Provide your videos with subtitles
MikuMikuTelop, originally written by SoboroP and then translated into English by harryhack91 as MikuTelopE (along with fixing the bug that prevented its usage on computers with non-Japanese locale) is not an MME effect as such but a *tool* to generate ones. Using it, you can apply any volume of text messages to your MMD video in a breeze.
Download the archive from the link provided on a dA page mentioned above and unpack it somewhere in your MMD folder. Launch the MikuTelopE.exe, hit “Load” and select one of .txt files in the “samples” folder (your actual files don’t have to be resided there, so apply whatever policy you use to organize your files, as long as you can find your works afterwards :) ). Immediately you will see that a subfolder named “your_file_name_MMT” is created next to it. Load your MikuMikuDance project, open “PostTelop.x” (at this moment the screen will turn red; keep calm and carry on) and then “MikuMikuTelop.x” from that subfolder into the Accessory Manipulation Panel, and you’re good to go. Hit “Play” and you will see your subtitles playing on top of a video you made. That’s it, there’s nothing else you need to do to make subtitles!
…Provided you have the file, of course.
A script to produce subtitles with MikuTelopE is a simple text file you can write in Notepad. It consists of three types of lines: format and positioning description commands (preceded by “:”), timing commands (preceded by “@”), and actual text (everything else). If you’re not used to doing things through scripting, it may feel complex at first, but in reality it’s not that difficult. Let’s see how it works.
Lights…
These commands are used to describe lines’ format:
- :screen width,height
- :font font_name
- :size font_size (relative to *screen* size)
- :fontcolor R,G,B (in 0-255 interval)
- :alpha opacity (float value in 0-1.0 interval)
- :edge border_size (relative to *font* size)
- :edgecolor R,G,B
- :shadow shadow_distance (0 to 9)
- :shadowcolor R,G,B
- :shadowblur radius (0 to 9)
- :margin hor,vert – background plaque’s parameters
- :backcolor R,G,B,alpha (alpha is 0-255 as well here)
- :bold
- :bold_off (same for all subsequent commands)
- :italic
- :underline
- :strikeout
- :tate – vertical orientation of the line
Every line of text present in the script produces a .png file that is then projected to the screen by the MikuMikuTelop.x effect. While the size of the image *file* depends on screen height as declared in the script (the more you provide in the “:screen” command, the bigger would be an image for a title with the same font “:size”), the *visible* size of a title is leveled according to proportions of the actual MMD screen size. All font-related commands are cumulative – you can describe a format fully (or just go with defaults) and then change one or another parameter to specify another:
:fontcolor 255,0,0
:italicThis line will be red and italic
:fontcolor 0,0,255
This line will be blue and italic
:italic_off
This line will be blue and straight
Also you can make ready presets to lines of various types. Here is an example of the text file, putting together the assignment of type color & font for each model, and the timing for the subtitles:
// A sample script, ready for processing:
:fontcolor 255,0,0
:font Arial
:set Meiko:fontcolor 0,0,255
:font Courier
:set Miku:get Miku
@0
Hi, how are you?:get Meiko
@3
Same old, same old…
Camera…
Positioning in MikuMikuTelop is a tricky matter, needing to get accustomed to. You must remember that regardless of screen size and proportions, subtitles are always positioned using a 200×200 Cartesian coordinate grid:
Here are commands that are used to describe subtitles’ emplacement:
- :pos x,y
- :pos_x x
- :pos_x +x (relative to the previous X declaration)
- :pos_y (similarly)
- :pos_next (calculates the X position according to the previous line’s width)
- :pos_nextline (same for previous line’s height)
Depending on aligning (see below), lines of text are attached by the middle, edge, or a corner to the “anchor” – position described by “pos” commands. By using “pos_next/line” commands, you can put two or more lines adjacent to each other without calculating their exact location for all but first one. It’s not very convenient, though, as those positions are calculated *really* close to each other, without slightest gap between texts and with no regards to such additional effects as fonts’ border, margin, or shadow (hint: for horizontally adjoining lines you can use leading whitespaces to create a necessary gap). While the readme does not recommend using multi-line titles, short sequences seem to be processed correctly.
Lines can be aligned using following commands:
- :align_left
- :align_center
- :align_right
- :valign_top
- :valign_center
- :valign_bottom
Here’s a practical example of aligning the text:
:pos 0,0 :align_left
:valign_top
@0
align_left
valign_top:align_right
:valign_bottom
@0
align_right
valign_bottom
The first command places an anchor in the center of the screen. Then, two different sets of position instructions are used to display their own descriptions. As you can see, rather than placing a title to the top, bottom, right, or left from the anchor, it sticks its top, bottom, right, or left edge to the anchor, respectively. If this looks non-intuitive, well, that’s Japanese for you.
Action.
Timing of subtitles has flexible form:
@1,2
This line will start at 1 second and *last* for two seconds@1~2
This line will start at 1 second and *disappear* at 2 seconds@1
This line will be visible proportionally to its length in characters@100F~200F
This line will start at frame 100 and disappear at frame 200@+1
This line will start 1 second after the previous line disappears@*1
This line will start 1 second after the previous line appears
Additional commands related to time:
- :fade length (default 0.5 seconds)
- :autotime duration – defines seconds-per-character default length
- :timebase shift – automatically moves all subsequent titles
You do not place more formatting commands between timing commands and actual text.
I said, Action!
// A sample script, ready for processing:
:autotime 0.1
:fontcolor 255,0,0
:font Arial
:align_left
:set Meiko:fontcolor 0,0,255
:font Courier
:align_right
:set Miku:get Miku
@0
Hi, how are you?:get Meiko
@3
Same old, same old…
Hit the save and go straight to MikuMikuDance. You don’t have to recompile the script by hand – as long as MikuTelopE hangs in memory, it monitors the state of all scripts loaded into it and recompiles them automatically (and, as you might have noticed from your previous experience, MMD also monitors and reloads automatically MME effects as you edit them). Now, what have changed on the screen? As you can see, instead of moving the red line to the right side, it ousted the blue line outside the border of the screen. Apparently, the default horizontal position for an anchor was not at the center of the screen as we used to see with subtitles, but close to the left edge (not *at* the edge, though, or we wouldn’t see even a glimpse of it and would stay rather perplexed at results). Should be easy to fix. As for timing, it looks good enough – as long as we are doing a “silent film” flick. If we were following a certain voice file, though, we’d need more precise synchronisation than autotime setting allows. Let’s change the script once again:
// A sample script, ready for processing:
:pos_x 0
:fontcolor 255,0,0
:font Arial
:align_left
:set Meiko:fontcolor 0,0,255
:font Courier
:align_right
:set Miku:get Miku
@0.5~2.5
Hi, how are you?:get Meiko
@3.3-2.2
Same old, same old…
Oops! The sound we hear suggests something bad happened. You won’t see it until you place MikuTelopE process in the foreground, but it just threw an error message at you. It seems that something in our new script is wrong. A brief investigation shows that the “duration” parameter of the second timing command does not accept fractional numbers. Can’t fathom why the exception, but that’s how it works. Fix it…
@3.3-2
…and now it works!
Well, that should be enough to allow you to study MikuTelopE’s possibilities further for yourself.
Q&A: Does it mean Nameplate is obsolete?
No, of course not. There are qualities that make Nameplate an instrument of choice for certain purposes.
- MikuTelopE only works with texts. Sure there are many sophisticated fonts, including those that allow to use pseudographic, like Wingdings, Webdings, etc, but in the end of the day MikuTelopE is solely a text engine, while Nameplate lets you display anything you can draw, limited only by the size of your .png file.
- While positioning of Nameplate requires more effort (especially if you use moving camera), it is also more flexible. Images placed on the screen can be moved (moving a respective Dummy Bone) and resized (by effect’s “Si” setting). So far, the current version of MikuTelopE has no such functionality.
I load the file, but get a “couldn’t find .\template” error!
This happened to me when I tried to use MikuTelopE on an XP machine. Fortunately, the error is not fatal. First, hit “Refresh” – the script will compile properly this time. Then find “MikuTelopE\template” subfolder and manually copy files “MikuMikuTelop.x”, “PostTelop.fx”, and “PostTelop.x” from there to the folder containing your script. After that, it will work normally.
Models used for the head picture: Kaito wears male suit by MMDFakeWings18 and Bowler Hat by Rainb0wCat & Crazy eyes. Rin Kagamine wears Loli dress by Saler1.
– SEE BELOW for MORE MMD TUTORIALS…
— — —
– _ — –