Creating Custom Titles and Credits
for Movie Maker
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 gif as a logo.
Table of Contents
Introduction ........................................................................................... 1
Background ............................................................................................ 1
Custom Titles & Credits ............................................................................ 2
An overview of the Title xml script .......................................................... 2
Attributes of Title Element ..................................................................... 3
Child node: Param ................................................................................ 3
Reference .............................................................................................. 6
Examples ............................................................................................... 7
Overlaying Transparent Logo ................................................................. 7
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 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 provide detailed information about most of the
parameters and their values. However no such method was published to
modify the parameters of existing Titles and Credits and this limitation has
been a very annoying feature which users of Movie Maker continued to whine
about. About an 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 complained to MS that how come they have not provided the details
of such a big thing. but MS have kept quite about it.
Custom Titles & Credits
So lets see what I am talking about. If you have access to a copy of Visual
Studio or Resource Hacker you can use those to peep inside some of the
resources of Movie Maker executable moviemk.exe which besides many other
things contain five xml files. Two of these xml files 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 customer 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 severla different
parameters. Some of these parameters are shared suggesting a hierarchical
structure. You can download the standard xml files as extracted from movie
maker executable for studying how these parameters and 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-B20782039ED066F4}">
<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 vocublary. 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 whithin <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
tile can crash WMM.
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 thng).
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 Table X?. Each param node consists
of two attributes: name and value. In the following discussion we will specify
the possible values a parameter with a given name can take in the form of
name: {values...}.
InternalName: {TitleStandard, TitleMultiTitle}
The parameter InternalName specifies which class is used to implment 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 paragrahs 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 shapres
over the image.
This is another very powerful feature which extends the Movie Makers
functionality in general.
EntranceVideoRect
MainVideoRect
ExitVideoRect
These set of parametners control where the video is placed during the title
animation. The default value for all these is the full screen rectangule “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 rect 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.
Entrance/Main/Exit
The titles animations can have three phases: Entrance, Main and Exit. Many
other parameters control the effect for these phases. For example
EntraceEffect defines how the title emerges at the start. Thus specifying
EffectFade means it would fade in from transparent.
Reference
Name
BannerColor1
BoundingRect
Value type
Color: name or hex value as
#AARRGGBB
Color: name or hex value as
#AARRGGBB
Color: name or hex value as
#AARRGGBB
One of
{ BottomFlood, Explosion, FullLeftFlood,
FullRightFlood, HorizontalFlood,
LeftFlood, LowerFlood, NoBanner,
Normal, RightFlood, TopFlood,
UpperFlood, VerticalFlood }
Rect in four floats: “left top width height”
CreditLineOverlap
Description
String
BannerColor2
BannerShadowColor
BannerType
EntranceDuration
EntranceEffect
EntrancePosition
EntranceVideoRect
EntranceZoom
ExitDuration
ExitEffect
ExitPosition
ExitVideoRect
ExitZoom
FillBitmapEntrancePosition
FillBitmapExitPosition
FillBitmapFilename
Float
One of {EffectNone, EffectFade,
EffectBlur, EffectOverZoom, EffectRotate,
EffectTypeWriter, EffectFadeEllipse,
EffectFadeWipe, EffectBounceWipe,
EffectPerspective, EffectSpotLight,
EffectFlashing, EffectInverse, EffectMulti,
EffectMultiFirstLetter, EffectMirror,
EffectOutlineExplode}
Relative Position in two floats: “x y”
Relative Position in two floats: “x y”
Relative Position in two floats: “x y”
Full path to a file bitmap/png file.
Relative Position in two floats: “x y”
Font
FontSize
FontSizeMultiplier
ForceCenterAlignment
ForceFrontColor1
ForceProgress
FrontColor
TueTpe fnt name
Float
Float
Boolean {True, False}
Color: name or hex
Float
Color: name or hex value as
#AARRGGBB
One of {Right, Center, Left}
String
Boolean {True, False}
Boolean { True, False }
IsItalic
IsOneLine
IsUnderline
LogoBitmapFilename
LogoRect
MainEffect
Description
The color used for left side of the banner.
Red
The color used for right side of the banner
The color used for shadow. Use alpha value less
than FF for semi-transparent shadows.
NoBanner
The coordinates of the rectangle are in relative
coordinates: with reference from top left and as a
fraction of current width and height.
0.0
Boolean {True, False}
Boolean {True, False}
Boolean {True, False}
One of {EffectNone, EffectFade,
EffectBlur, EffectOverZoom, EffectRotate,
A description that appears in the second row of
the Movie Maker list of titles and credits
One can define
The position is relative to the BoundingRect
Same as EntranceEffect
Relative Position in two floats: “x y”
FillBitmapMainPosition
FillBitmapRect
HorizontalAlignment
InternalName
IsBold
IsHeaderFullTime
Default
Red
The position is relative to the BoundingRect
“0.0 0.0”
“0.0 0.0”
Default path is
the
“C:\Program
Files\Movie
Maker\shared”
folder.
“0.0 0.0”
“0.0 0.0 1.0
1.0”
False
Center
False
Usually specified via Movie Mkaer interface
Whether the header line in credits is to be
displayed for the whole duration.
Usually specified via Movie Mkaer interface
Usually specified via Movie Mkaer interface
MainPosition
MainVideoRect
MainZoom
MaxCharacterCount
OptimalDurationMultiplier
ProgressDelay
ProgressDuration
RenderOrder
ResizingTechnique
ReverseAlignment
ShadowColor
ShadowOutline
Speed
SwitchDuration
VerticalAlignment
EffectTypeWriter, EffectFadeEllipse,
EffectFadeWipe, EffectBounceWipe,
EffectPerspective, EffectSpotLight,
EffectFlashing, EffectInverse, EffectMulti,
EffectMultiFirstLetter, EffectMirror,
EffectOutlineExplode}
Relative Position in two floats: “x y”
Relative Position in two floats: “x y”
Integer
Float
Float
Float
One of {RenderFirst, RenderLast}
One of {NoResize, KeepVerticalConstant,
KeepHorizontalConstant}
Boolean {True, False}
Color: name or hex value 0xRRGGBB
One of { Outline, Shadow}
False
Shadow
One of {Bottom, Center, Top}
Examples
We conclude our discussion with a few examples of custom titles.
Overlaying Transparent Logo
In this example we will use the LogoBitmap parameter to overlay a bitmap
over the video. (Based on user glow’s example). Transparent png files can be
made in Photoshop or PaintShopPro. I made a
<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="Transparent logo on the bottom right corner"/>
<Param name="LogoBitmapFilename" value="logo.gif"/>
<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.25 0.1"/>
<Param name="MaxCharacterCount" value="32"/>
</Paragraph>
</Title>
<Title name="Ticker Tape" iconid="13" >
<Param name="InternalName" value="TitleStandard" />
<Param name="Description" value="Scrolls right to left in color band (overlay)" />
<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.65 1.0 0.2" />
<Param name="BannerType" value="HorizontalFlood" />
<Param name="ShadowOutline" value="Shadow" />
<Param name="FontSize" value="25.0" />
<Param name="ResizingTechnique" value="KeepVerticalConstant" />
<Param name="MaxCharacterCount" value="1024" />
</Paragraph>
</Title>
</TitleDLL guid="{353359C1-39E1-491b-9951-464FD8AB071C}">
</Titles>
</TransitionsAndEffects Version="1.0">
© Copyright 2026 Paperzz