Custom Titles & Credits

Effects & Transitions
Tips & Tricks
FAQs
Links & Forums

 

Effects & Transitions
Tips & Tricks
FAQs
Links & Forums

 

Show Print Layout

Creating Custom Titles and Credits
for Windows Movie Maker

Author: Rehan Ahmad
First Published: March 2005
http://www.rehanfx.org/customtc.htm
 

Summary: Windows Movie Maker contains an undocumented feature that allows users to add customizations for built in titles and credits. These custom titles and credits are created via the similar xml interface as described for effects and transitions. The new customization feature allows the users to overcome many technical limitations in Movie Maker for example exact placement of text and overlaying a transparent image as a logo.

Table of Contents

bullet

Introduction

bullet

Background

bullet

Custom Titles & Credits
bullet

An overview of the Title xml script

bullet

Attributes of Title Element

bullet

Child node: Param

bullet

Child node: Paragraph

bullet

Reference
bullet

Parameters

bullet

Edited XML Files

bullet

Examples
bullet

Overlaying Transparent Logo.

bullet

CNN Style Ticker Tape

bullet

Users Contributions

Introduction

In this article I would like to share a secret about Windows Movie Maker. In simple words the secret is that Windows Movie Maker supports an undocumented way to customise Titles and Credits in a similar way as custom effects and transitions are made via writing xml code. When I discovered this a few months ago I wanted to produce a tool (so called TitleMaker) that can generate the xml for custom titles and credits as different parameters are modified. So I kept the secret hidden while I worked on the tool. However due to my other engagements this project did not make much progress. Now recently some other inquisitive people have independently discovered this secret and so it became impossible to hide it any longer.

It is about time that this knowledge be shared with general public who may be able make better use of it. I can imagine this information will be most welcome by many users who have been complaining about Movie Maker's restrictions about titles and credits.

Background

Movie maker is a really great tool for quick editing of home movies. Its ease of use and simplicity means whoever uses it once becomes almost addicted to its way of working. Its major feature is drag and drop simplicity. Bring in a movie clip, drag it to the timeline, drag a few effects over it, drop some transitions between the clips and finally press "Save Movie". Here comes your masterpiece. Apart from initial hiccups (especially its difficulty with 3rd party codecs) the process goes nice and smooth. This very drag and drop simplicity is also its major restriction. Yes a restriction... particularly when it comes to do things that are not already provided for in the standard installation. For example it provides an Effect for slow motion called "Slow Down"; which reduces the playback frame rate for the clip over which it is applied to half. Similarly there is an effect for "Speed Up" which increases the playback frame rate to double. However what if you want to only increase it to a specific amount. To do this and many other tweaks of built in effects and transitions Microsoft have devised a very quirky method via modification of xml files. This is all well and good as they provided detailed information about most of the parameters and their values.

However no such method was published to modify the parameters about the built-in Titles and Credits and this limitation has been a very annoying feature which users of Movie Maker continued to whine about. About a year ago I reported that there exists a way to do it after coming across the xml files inside the resources of the movie maker executable. I was hoping that MS will come clean and provide the necessary details for this undocumented feature. I had shown my discovery to PapaJohn who then inquired from his contacts at MS that why they had not provided the details of such an important thing. But MS have kept quiet about it.

Custom Titles & Credits

So lets see what I am talking about. If you have access to a copy of Microsoft Visual Studio or some other resource editor (such as Resource Hacker) you can peep inside some of the resources of Movie Maker executable: moviemk.exe. Besides many other things it contains five xml files: two of these are for the built in effects and transitions while the other three are for titles and credits. Here is how it looks ...

People who have been experimenting with custom effects and transitions would immediately recognize the familiar structure of the xml file. Similar to custom effects and transitions, movie maker will read any xml file placed in the AddOnTFX folder which contains parameters for custom titles and credits. There seems to be many Classes (COM Objects) corresponding to different type of Title or Credit. Each of them would take several different parameters. Some of these parameters are shared suggesting a hierarchical structure.

You can extract the xml files yourself from movie maker executable (or download my edited version of these files from Reference section below) for studying how these parameters are used.

The rest of the article deals with my understanding of several of these parameters. I will mainly talk about Titles but the same discussion applies to Credits as well.

An overview of the Title xml script

Let study the xml script in more detail. The following figure shows the script for the simplest of the titles called "Basic Title".


<Title nameID="62917" iconid="13" EffectID="{A6E2C753-30EB-4e3e-B207-82039ED066F4}">
  <Param name="InternalName" value="TitleStandard"/>
  <Param name="DescriptionID" value="62963"/>
  <Paragraph>
    <Param name="EntranceDuration" value="0.0"/>
  </Paragraph>
</Title>   

Before we proceed any further, it would be best if we can equip ourselves with some xml vocabulary. In the xml speak an expression enclosed in less-than and greater than signs like <exp> is known as an Element. For each element there should exist and EndElement like: </exp>. The whole section of xml code within these two tags is termed as a Node. The extra expressions that appear within an element are called its attributes. If the node expression is just a one liner, the start and end element expressions are combined e.g.: <exp ... />. In the xml code above we can see that the title element contains three attributes: nameID, iconid and EffectID. Furthermore the title node within <title ...> ... </title> contains a few other nodes such as <Param ... /> which are called its child nodes. The title node is generally made up of one or more param or paragraph child nodes.

Attributes of Title Element

name="string"
nameID="resource id"

nameID refers to a resource identifier for a string value. For custom titles this parameter should always be converted to name and its value can be any string name for the title you like to have. This together with the Description parameter fills an entry in the Titles and Credits list of movie maker.

iconid="resource id"

This parameter is always required but has no significance for titles or credits as the titles are never displayed as icons. If you skip this parameter the custom title can crash WMM. All the standard titles and credits seem to use a dummy iconid of 13.

EffectID="{guid}"

This is an optional parameter which identifies a particular instance of a title or credit. WMM uses this value to uniquely identify between similarly named titles. If the names are always different then this parameter can be skipped. But if you must specify it the right hand guid value must be a unique guid number. It is important to note that a guid of any standard title should not be used with your custom title, otherwise it would cause WMM a lot of confusion. (and that is a bad thing).

Child node: Param 

The param nodes that occur directly under Title node specify several parameters to define the layout of the title within movie maker interface and its behaviour and effect over the text expression typed in by the user. Here we will study a few important parameters only. A detailed reference of other parameters and their values is outlined in the table below. Each param node consists of two attributes: name and value. In the following discussion we will specify the possible values that a parameter with a given name can take in the form of name: {values...}.

InternalName: {TitleStandard, TitleMultiTitle, CreditStandard}

The parameter InternalName specifies which class is used to implement this particular instance of title. There are two types of internal classes: one that deals with single paragraph titles (TitleStandard) and the other that can deal with multiple paragraphs (TitleMultiTitle). Presumably the TitleMultiTitle class should also be able to deal with single paragraphs given that it can deal with more than one, but this distinction seems to imply that TitleStandard class is perhaps optimized for dealing with single paragraphs in some way.

DescriptionID: {resource id}
Description: {string}

The string value specified by the Description appears in the second column within the list of titles and credits movie maker displays for choosing a title animation. DescriptionID does the same thing except the actual string is stored in the resource section of the DLL and only its identifier is specified here. However for custom titles we should always use Description tag. Example: <param name="Description" value="This text appears on the 2nd column in movie maker interface" />

BoundingRect: {"left top width height"}

This is an important parameter as it defines the placement of the title string within the frame. The four values it takes are specified in relative coordinates i.e. as a fraction of the frame width and height. For example to place the bounding rectangle to bottom right corner we can use a value like: Example: <param name="BoundingRect" value="0.5 0.8 0.45 0.15" /> Having just this parameter gives a whole new freedom to movie maker's titles as exact placement of titles was not possible with the standard interface. Now we can place any of our title anywhere we like. Also see the example below.

FillBitmapRect
FillBitmapEntrancePosition
FillBitmapMainPosition
FillBitmapExitPosition
FillBitmapFilename

This set of parameters controls how the inside of the title’s text is filled. The Bitmap specified by FillBitmapFilename is loaded and then moved around according to the other parameters. It is not displayed as a bitmap but would interact with the text of the title wherever it would overlap it.

This type of effect is used in “Paint Drip” title animation where the titles text is dynamically filled with some dripping paint.

LogoBitmapFilename
LogoRect

This parameter specifies an overlay image (bmp/png) to be displayed over the video. The important point to note is that the bitmap can have transparency. This would allow placement of semi-transparent or non-rectangular shapes over the image.

This is another very powerful feature which extends the Movie Makers functionality in general.

EntranceVideoRect
MainVideoRect
ExitVideoRect

These set of parameters control where the video is placed during the title animation. The default value for all these is the full screen rectangle “0.0 0.0 1.0 1.0”. If you just specify one of these three parameters the other values will be used to interpolate the placement for intermediate positions. For example the “News Video, Inset” title specifies only MainVideoRect, while the other two are full screen. This causes the video to zoom to inner rectangle at the start and zoom out to full screen at the end.

BannerType

This parameter specifies what type of rectangle to show as the background for title text. It can take a lot of possible values, but not all of which seem to work with all types of titles.

Values for Entrance/Main/Exit phases

The titles animations can have three phases: Entrance, Main and Exit. Many other parameters control the effect for these phases. For example EntranceEffect defines how the title emerges at the start. Thus specifying EffectFade means it would fade in from transparent. If the duration is specified for any of the phases, the total duration of the title cannot be less than the sum of these durations. For example the "News Video, Inset" specifies EntranceDuration and ExitDuration to be 1.0 seconds each; this implicitly defines the minimum duration of 2.25 for this title animation. Presumably 0.25 is the min duration for Main phase. There is no MainDuration parameter and the duration for the main phase is to be specified by the user interface (by adjusting the time of the title in the Timeline view).

Child Node: Paragraph

Each Title node has one or more paragraph child node(s). These correspond to the text lines contained in the title. For example a main text line and a subtitle text line. Each line can be individually formatted by specifying other param parameters. Although for credits one has to enter several text lines but not as many paragraphs need to be specified in the xml. Specifying two paragraphs would mean that each credit entries would consist of two paragraphs. Number of credit entries is specified via user interface and can be about 50.

Reference

The reference material consists of

bullet

Parameters and

bullet

XML Files

 

Parameters

This section contains details of the parameters that can be used to define custom titles/credits.

 

Name

Value type

Default

Description

BackgroundColor1

Color: name or hex value as #AARRGGBB

Black

The background color. If BackgroundColor2 is present, this one specifies the color of the top left corner of the gradient. For titles in TitleOverlay track the background gets shown when the picture rectangle does'nt cover the full frame. 

BackgroundColor2

Color: name or hex value as #AARRGGBB

Same as BackgroundColor1

The background color of the bottom right corner of the gradient.

BannerColor1

Color: name or hex value as #AARRGGBB

Red

The color used for left side of the banner.

BannerColor2

Color: name or hex value as #AARRGGBB

Red

The color used for right side of the banner

BannerShadowColor

Color: name or hex value as #AARRGGBB

 

The color used for shadow. Use alpha value less than FF for semi-transparent shadows.

BannerType

One of { BottomFlood, Explosion, FullLeftFlood, FullRightFlood, HorizontalFlood, LeftFlood, LowerFlood, NoBanner, Normal, RightFlood, TopFlood, UpperFlood, VerticalFlood }

NoBanner

The banner types with Flood in their name fill the BoundingRect with the a gradient from BannerColor1 to BannerColor2.

BoundingRect

Rect in four floats: “left top width height”

"0.0 0.0 1.0 1.0"
(full frame)

The coordinates of the rectangle are in relative coordinates: with reference from top left and as a fraction of current width and height.

CreditLineOverlap

Float

0.0

 

Description

String

 

A description that appears in the second column of the Movie Maker list of titles and credits

EntranceDuration

Float

0.0

Duration of the entrance phase.

EntranceEffect

One of {EffectNone, EffectFade, EffectBlur, EffectOverZoom, EffectRotate, EffectTypeWriter,  EffectFadeEllipse, EffectFadeWipe, EffectBounceWipe, EffectPerspective, EffectSpotLight,  EffectFlashing, EffectInverse, EffectMulti, EffectMultiFirstLetter, EffectMirror, EffectOutlineExplode}

 EffectNone

Type of effect to be played at the start phase of the animation.
(Some of these effects need to be explored!)

EntrancePosition

Relative Position in two floats: “x y”

"0.0 0.0"

The position is relative to the BoundingRect

EntranceVideoRect

Rect in four floats: "left top width height"

"0.0 0.0 1.0 1.0"
(full frame)

The video is initially shown in this rectangle.

EntranceZoom

A single or two floats: "x" or "x y"

1.0 / "1.0 1.0"

The zoom value of the title text at the start phase of the title animation. Can specify different zoom values for x and y dimensions. If a single zoom valueis specified, it is used for both directions. Negative zoom vlaues cause invertion of the frame in the corresponsing direction.

ExitDuration

Float

0.0

The amount of time in seconds it takes to complete the Exit phase of the animation

ExitEffect

Same as EntranceEffect

EffectNone

What type of effect is played during the exit phase of the title animation

ExitPosition

Relative Position in two floats: “x y”

0.0 0.0

The position is relative to the BoundingRect

ExitVideoRect

 Rect in four floats: "left top width height"

"0.0 0.0 1.0 1.0"
(full frame)

The bounding rectangle where the video is displayed during the Exit phase of the title animation

ExitZoom

Two floats "x y"

1.0 1.0

Zoom value for the exit phase. Can specify different zoom values for x and y.

FillBitmapEntrance
Position

Relative Position in two floats: “x y”

“0.0 0.0”

The start position of the bitmap that is used to fill the inside text area

FillBitmapExit
Position

Relative Position in two floats: “x y”

“0.0 0.0”

The end position of the bitmap that is used to fill the inside text area

FillBitmapFilename

Full path to a file bitmap/png file.

 

The bitmap that is used to fill the inside text area during the main phase of the title animation. Default path is the “C:\Program Files\Movie Maker\shared” folder.

FillBitmapMain
Position

Relative Position in two floats: “x y”

“0.0 0.0”

The position of the fill bitmap that is used to fill the inside text area during the main phase of the title animation

FillBitmapRect

 

“0.0 0.0 1.0 1.0”

The rectangle for the bitmap used to specifes the fill pattern

Font

TrueType font name

 

if specified within the xml file, it cannot be over ridden in the user interface.

FontSize

Float

 

if specified within the xml file, it cannot be over ridden in the user interface.

FontSizeMultiplier

Float

1.0

Specifies how much to adjust the font as specified by user.

ForceCenter
Alignment

Boolean {True, False}

False

Overrides any other implcit or explicit alignment.

ForceFrontColor1

Color: name or hex

 

 

ForceProgress

Float

 

 

FrontColor1

Color: name or hex value as #AARRGGBB

white

The color of the foreground text. Should be left to be selected via user interface. If FrontColor2 is present this one specifies the left color of the gradient.

FrontColor2

Color: name or hex value as #AARRGGBB

same as FrontColor1

Should be left to be selected via user interface

HorizontalAlignment

One of {Right, Center, Left}

Center

 

InternalName

One of {TitleStandard, TitleMultiTitles, CreditsStandard} 

 

Use TitleStandard or TtileMultiTitles for titles and CreditsStandard for credits.

IsBold

Boolean {True, False}

 

Usually specified via user interface

IsHeaderFullTime

Boolean { True, False }

False

Whether the header line in credits is to be displayed for the whole duration.

IsItalic

Boolean {True, False}

 

Usually specified via user interface

IsOneLine

Boolean {True, False}

 True

If the text entered by the user goes over a single line the title is compressed

IsUnderline

Boolean {True, False}

 

Usually specified via user interface

LogoBitmapFilename

String

 

Name for an image file (PNG/BMP/GIF/JPG) file to be used as the overlay image. The path is relative to the "C:\Program Files\Movie Maker\Shared" folder.

LogoRect

Rect in four floats: "left top width height" 

"0.0 0.0 1.0 1.0"
(full frame)

Specifies the placement of the overlay logo bitmap.

MainEffect

One of {EffectNone, EffectBlur, EffectOverZoom, EffectRotate, EffectTypeWriter,  EffectFadeEllipse, EffectFadeWipe, EffectBounceWipe, EffectPerspective, EffectSpotLight,  EffectFlashing, EffectInverse, EffectMulti, EffectMultiFirstLetter, EffectMirror, EffectOutlineExplode}

 EffectNone

Some of these values may not work.

MainPosition

Relative Position in two floats: “x y”

0.0 0.0

Position of the text. It is relative to the bounding rectangle specified for the  text.

MainVideoRect

Rect in four floats: "left top width height"

"0.0 0.0 1.0 1.0"
(full frame)

Specifies the placement of video for the main phase of the animation

MainZoom

Two floats "x y"

 1.0 1.0

Zoom value for the main phase of the title animation

MaxCharacterCount

Integer

 

Restricts how many characters should be displayed. Useful if long text entered by the user may spoil the effect intended.

OptimalDuration
Multiplier

Float

1.0

Scales the minimum duration by this factor

ProgressDelay

Float

0.0

Allows adjustmenting delay between animation progress for different paragraphs

ProgressDuration

Float

 

Allows adjustment of progress duration for the animation of one paragraph relative to the others.

RenderOrder

One of {RenderFirst, RenderLast}

 

Controls the order of rendering. Specify for potentially overlapping lines/images.

ResizingTechnique

One of {NoResize, KeepVerticalConstant, KeepHorizontalConstant}

NoResize

If the font size is specified via user interface, this parameter determines how the text will be resized.

ReverseAlignment

Boolean {True, False}

False

Determines if (for example) the second paragraph needs to be aligned in opposite direction to the first.

ShadowColor

Color: name or hex value #AARRGGBB

 

Shdow color of the text. Use values less than FF for AA for translucent shadows.

ShadowOutline

One of { None, Outline, Shadow}

None

Shadow or outline

Speed

Float

1.0

This param Needs to be investigated

SwitchDuration

Float

 

Perhaps only for EffectFlashing

VerticalAlignment

One of {Bottom, Center, Top}

Center

This important option is missing from the the user interface.

Edited XML Files

These xml files are extracted from Movie Maker resources and have been edited to replace the resource IDs with their corresponding text values thus making them easier to study.

bullet

Titles1.xml

bullet

Titles2.xml

bullet

Credits.xml

To save right click and select "Save Target As..."

 

Examples

We conclude our discussion with a couple of examples of custom titles.

Overlaying Transparent Logo

In this example we will use the LogoBitmapFilename parameter to overlay a bitmap over the video. (Based on Glow’s example). Transparent png files can be made in Photoshop or PaintShopPro. I made a 3d image for my website and then placed it in the C:\Program Files\Movie Maker\Shared\ folder. Note that this is one level above the AddOnTFX folder used everywhere else.

The LogoBitmapRect specifies the location where we want the image to be displayed. In this example the bottom right corner is used "0.75 0.75 0.25 0.25". Also observe the paragraph node which places a title text on to the bottom left next to the bitmap.

IsOneLine and MaxCharacterCount are used to ensure that the users do not enter long strings which can destroy the intended look of the title. If this limit is not required for your case then experiment with removing these parameters.

 

CNN Style Ticker Tape

The Ticker tape title that comes with Movie Maker is placed a bit too high. In many news programs such as CNN we see that the ticker tape is placed just near the bottom edge. In this custom title we have  tweaked the Ticker Title to achieve the same placement.

The placement is controlled by BoundingRect parameter which we have changed to "0.0 0.9 1.0 0.1" which places it right at the bottom edge.

EntracePosition and ExitPosition specify the intial and end position of the text. Note these coordinates are relative to BoundingRect. BannerType is HorizontalFlood which is filled with just a single color the default red.

Instructions to use this xml:
Copy paste into notepad and save as C:\Program Files\Movie Maker\Shared\AddOnTFX\mytitles.xml. Restart Windows Movie Maker. Go to the titles section and locate titles named: "My Logo" and "My CNN Ticker Tape".

 

<!--

     Description: Example Custom Titles: "My Logo" and "My CNN Ticker Tape"

     Author: Rehan

     Reference: http://www.rehanfx.org/customtc.htm

-->

<TransitionsAndEffects Version="1.0">

<Titles>

<TitleDLL guid="{353359C1-39E1-491b-9951-464FD8AB071C}">

<Title name="My logo" iconid="13" >

<Param name="InternalName" value="TitleStandard"/>

<Param name="Description" value="Place a logo on the bottom right corner and text on bottom left"/>

<Param name="LogoBitmapFilename" value="logo.png"/>

<Param name="LogoRect" value="0.75 0.75 0.25 0.25"/>

<Paragraph>

<Param name="IsOneLine" value="true"/>

<Param name="BoundingRect" value="0.05 0.85 0.70 0.1"/>

<Param name="MaxCharacterCount" value="32"/>

</Paragraph>

</Title>

<Title name="My CNN Ticker Tape" iconid="13" >

<Param name="InternalName" value="TitleStandard" />

<Param name="Description" value="CNN type ticker tape" />

<Param name="OptimalDurationMultiplier" value="3.0" />

<Paragraph>

<Param name="IsOneLine" value="true" />

<Param name="EntrancePosition" value="1.5 0.5" />

<Param name="ExitPosition" value="-0.5 0.5" />

<Param name="BoundingRect" value="0.0 0.9 1.0 0.1" />

<Param name="BannerType" value="HorizontalFlood" />

<Param name="VerticalAlignment" value="Top" />

<Param name="FontSize" value="16.0" />

<Param name="ResizingTechnique" value="KeepVerticalConstant" />

<Param name="MaxCharacterCount" value="1024" />

</Paragraph>

</Title>

</TitleDLL>

</Titles>

</TransitionsAndEffects>

 

Custom Titles & Credits Contributed by Users:

bullet

Quite a few titles by carefree chris:
Action Movie (Flies in left and right)
Question, Response (Delay between first and second lines)
Zoom to centre (Fade in, zooms while moves to centre)
Top to bottom zoom in out (Zoom in from top to middle, zoom out from middle to bottom)
... and some more ...

bullet

Header/Trailer Graphics using Titles by Patrick Leabo

bullet

Overlapping - Another title variation by dlk

bullet

Glorified Subtitle by dlk

bullet

Lower subtitle by considerate_guy

bullet

Newspaper Title -Spin and zooms in (Overlay) by considerate_guy
Zoom out further by atarileaf

bullet

Fading In and Out of Logo Image by evholen

bullet

More Subtitle Titles by marquisite

bullet

Layered moving titles by glow
 

bullet

< ... search for "TitleDLL" in the forums ... >
 

 

If you like this article or any other free tools and tips provided on my website please consider making some donation to encourage me to work more on such things.

 

Home | Effects & Transitions | Tips & Tricks | FAQs | Links & Forums

Questions or problems regarding this web site should be directed to info@rehanfx.org.
Copyright © 2005 RehanFX. All rights reserved.
Last modified: 10/02/05.