Copyright: ® MMB 1998-2001
Citation: ® MMB 1998-2001


Introducing Multimedia Builder
Introducing Multimedia Builder 4.8

Windows-based multimedia authoring system allows you to create autorun CD menus, Multimedia Applications on CD-ROM, Demos, Presentations, MP3 players and much more. The software is great for beginners as well as for advanced users.

MMB creates small stand-alone Windows exe applications and has all the bells & whistles you will ever need. You will love this easy-to-use, intuitive software.


General Overview

Easy to learn, Non-expensive Software

Now you can develop multimedia apps, autorun menus or front-ends for your CD's without having to spend months learning any programming language.

Make an autorun for your CD-ROM

If you are already developing software on CD-ROM, creating your own CD-Audio or making your MP3 CD you will love this easy-to-use, intuitive software.

Multimedia applications in minutes !

Create multimedia applications with graphic, text, sounds, MP3 ,Video, supporting CD Audio or Mixed-mode CD's, executing applications and much more...
Apply many cool effects to your images.

MMB has many great features!

MMB creates small stand-alone exe applications and has all the bells & whistles you ever need.
Create a cool app and send it to all your friends for kudos.

With MMB you can create:

•	Autorun CD browsers (menus) for corporate CD-ROM's.

•	Tutorials

•	Cue Cards

•	Kiosks

•	CD Audio and Mixed-mode CD Audio Players

•	MP3 Players

•	Front-end for your corporate or personal CD's

•	File launchers and toolbar

•	Computer based training

Note:

In this help we skip all the basic GUI descriptions and go directly to the bone - describing the functions, objects and how to use the sofware in general.

 We are sure you will find the interface very logical and easy to use.


List of MMB Features
List of Features

Here are just few major features. When you will be working with MMB you will see the list of all the features would be many pages long. In fact you might never see a similar Windows applications with so many features for this price!

•	WYSIWYG design

•	Object Oriented environment

•	Easy interface

•	Click-to-create objects and actions

•	Support of all popular graphic formats

•	Compatible with Macromedia Fireworks using the same PNG format

•	Multiple Undo/Redo

•	Grouping and Ungrouping objects, nested grouping

•	Alignment tools

•	Blending graphics with background

•	Alpha Transparency Masks for blending

•	MP3 format with feedback

•	24-bit color

•	Create Stand-alone exe applications

•	Optimized performance

•	Real Glow and Drop Shadow

•	Effects: Sharpen, Blur, Flip

•	Special effects: Fire, Cutout, Bevel

•	More than 40 bitmap effects and filters

•	Background Bitmap Tiling

•	Background sound can play across page boundaries, looping

•	Objects are in layers

•	Define your own graphic buttons, save, load to/from library

•	Window doesn’t have to be rectangular - support for custom shapes

•	You can directly paste graphics from your graphic editor into the MMB without saving

•	Video can be played on any speed

•	Fade out effect

•	Wizard for objects and actions

•	Support for CD audio and Mixed-mode CD's

•	Stand-alone linker

•	Script language for more power, variables, string variables, timers

•	Animated Gif

•	Embedded Waves

•	Midi

•	Bargain price


Whats new?
What’s new?

MMB 4.8 History

•	Fully customizable interface.
The new verion of 4.8 MMB designer GUI is changed to the latest trends with full toolbars, menu, and keyboard customization. Now you can customize the designer anyway you like.
You can practicaly customize any important aspect of the designer interface, including:

•	Drag and drop buttons between toolbars and menus

•	User-defined image editing of buttons (simple bitmap editor is included!)

•	Ability to create a new, empty toolbar that you can add buttons and menus to

•	Context menu customization

•	"Alt+drag" customization

•	Keyboard shortcut key assignments customization to any command

•	MMB will remember the new position of any toolbars, menus or page/object list and all your customization, even menu can float or be docked to any side.

•	User-defined tools - you can add additional application shortcuts to the MMB Tools menu

•	Smart expanding Menus shows basic and frequently used commands on personalized versions of menus. The menu learns by itself which commands you use the most.

•	Tear-off menus: Submenus can be teared-off so they can float as a toolbar:

•	Ability to change look (skin), currently build-in themes: Standard, Windows XP, MAC look and Gradient.

•	Change other aspects such menu animation, shadow etc..

•	Added shortcut to the object actions (menu Object-Action) - you can tear-off this menu and use it as a toolbar or move the buttons anywhere you like.

•	A new Rulers for a workplace

•	Guides with snap to Guides feature. To add guide you drag it from the rulers, if you want to delete guide, drag it outside window. You can also Add/Edit the guides by numbers as well (right click on rulers)

•	Support for updatable MEF file. This will work with  Real-DRAW - you are able not only to load the design but also update it later.

•	Mostly designer enhancements:

•	Smaller fonts in Object list, more objects are visible in the list - Is it too small or it is OK?

•	By clicking on the new list button you switch between Full object list and Separated object list.

•	In separated list the objects are divided and sorted into 5 list groups : Graphics, Text, Buttons/HotSpot, Script and Misc. This will help to better navigate in large project. Members of Grouped objects are displayed with an arrow on front: . The rest works like normal list, you can select multiple objects with Shift also across the list groups.

•	Script object display a name of the script on the project desktop

•	ReplaceImage for Hotspots as well

•	Binding Object - Added option how to close (Un-Bind) the program. Two way:
- Terminate Process-default (brute force method which doesn't give the program chance to do anything about it)
- Send Close and wait. This is softer method and it gves the application a chance to do closing stuff (for example ask if you want to save changes etc...) Also if application doesn't like the first method, try this one.

•	Binding object - advanced option, added another Caption string: Caption must NOT have string... Along with Must Have string, this is your chance if the app you binding has many windows and MMB can't decide which one to bind and bind the wrong one. Youcan specify which string the main caption must have and which it must not have. If empty - then it doesn't apply.

•	HTML Object Disable right-click menu option. The browser control will not display its context menu after selecting this option.

•	HTML Object: Hide Border Option and Always Hide Vertical Scroll Bar Option. This can create a web page which is seamless with your MMB page design with no border and no vertical scroll bar. (The horizontal scroll bar is created dynamically if the web page you displaying require larger width (if you use tables or frames for example).
Note: if you use Hide Vertical Scroll Bar it will always hide the scrollbar. Even if the page is longer than the HTML object height user won't be able to vertical scroll (only with Microsoft Scroll wheel)

•	Binding Object - Un-Bind on Page Exit option (default). If checked the Binding exe file will be terminated if user goes into other page. That means any time you go to the page with binding object the exe will start again. This is probably great for applications as Flash animations etc... you don't want them to run if you are in other pages.
Unchecked - once the binding object is created it is not terminated on page exit but hidden. That means any time you go to the page with binding object, the object will stay the same as you left it last time.

•	If you apply a Show(...) script command to an EditBox which is already visible it will put a focus in it and select all the text.

•	If you hide binding object the screen is updated properly.

•	The HTML link page: now works also with transitions.

•	SendCommand script command to send Menu Commands to the binding Object. SendCommand("Object","a,b") where a, b are the indices of the Menu item you want to run based on zero.
See detailed info in binding.mbd sample.

•	Clipboard script command to send/ receive a string to/from clipboard.
Clipboard("SEND/GET","stringvariable$")

•	Experimental: Project-General Settings-Style, new style Windows Desktop Component. This will make the player snap to the background - it will stay always on the windows desktop, emulating the behavior of Active Desktop component, however without any need to have Active Desktop enabled or even installed. Unfortunately it can't be combined with Full Screen Background option so if you want to perhaps cover whole desktop you have to make the project non movable and resize the player with script. Example of resizing the player to full background:
SysCommand("MoveWindow","0,0")
SysCommand("ResizeWindow","ScreenWidth,ScreenHeight")
This option is experimental - it may be removed from release if it cause problems. Also during testing from designer, MMBuilder will hide to uncover the background - don't be surprised then.

•	Please test if the player correspond properly to the internal player.

•	Keyboard input fix for HTML object. It should also fix all the keyboard problems related to Input Boxes and other windows (such a plugins), input boxes gain and lose focus properly now

•	You can move between Input boxes with TAB key, the Tab order is the same as layout order

•	The Variable associated with Input Box will be from now automatically initialized with the default text. You don't need to separate initialize the variable any more. This is more logical and easier. (You can still override the variable in Page Start script)

•	Smarted LoadText.

•	Load custom cursors - normal or animated. The cursor dialog in page, text button, bitmap button and hotspot has now 5 Custom cursor location. If you select unassigned custom cursor it will prompt you to load either *cur or *ani file. These cursors will be auto-loaded into Embedded files. So if you don't want the cursor anymore, you can delete it from there.

•	HTML Object
Html Object is a full Browser object in MMB. It uses Microsoft IE control. - example Browser.mbd

•	Hopefully a final fix for Tooltip controls for Objects

•	Binding object can be hidden or moved with Move command

•	Introducing Binding Object
Binding Object is a way how to easily put exe file into MMB - it will become a part of the player: for example flash movie with flash projector player, your installer, notepad with text, another indenpendednt mmb project etc...
See example binding.mbd included in the beta archive, shows notepad, regedit and plays a flash movie inside page.Tested on Win2000 and Win 98SE
Note: Not all exe files can be binded, but many I tested could (for example you can even bind CompactDraw or PhotoBrush....) Some exe files may be unhapy to be binded and may freeze your system - save often. Some exe files can't be binded at all or shws garbage (Winamp).You can't call just the file to open associated exe yet. you need to specify the executable and then the parameter (file). You can hide Menu , status bar or toolbars from the binded applications.

Fixes:

•	If you typed a space in the edit box, it displayed 2

•	While in long loop, you couldn't interact with edit box even that Refresh() command was used

•	In LoadText, you can now explicitly specify if you want to load the string variable as a string or in fact you wan't to open the file which path is in the string variable.
Now if you are in doubt, use the command before variable:
STRING:variable or FILE:variable
Also if the file doesn't exist the LoadText will display it as a string.
Example:
path$ = '<SrcDir>\myfile.txt
LoadText("Text","FILE:path$") will load the text from a file specified in the path$
LoadText("Text","STRING:path$") will load the text from the path$ directly - in our case the Text will show the <SrcDir>\myfile.txt

•	You can Minimize now while in full back mode.

•	When executing web link using Netscape 6, MMB displayed "file not found error" while the page was loaded ok. Displaying of this error was disabled, even that it is legitimate.

•	Generate Autorun.inf option added into Check & Distribute - so now you can switch off generating the inf file if you don't need it.

•	Autorun.inf is now finally generated with the filename of the exe instead of default autorun.exe

•	The Change Resolution now don't allow up-sizing by default, only down-sizing. You can change this with Allow Up-Sizing, but you will be warned that this isn't a good idea. If users have low resolution set on the display, they have it for a good reason so we shouldn't try to up-size it by default - this will solve many problems with older hardware.

•	Solving some display compatibility issues with Transitions and Dynamic FX.

MMB 4.7 and earlier

•	E-Card. In this version we make sure the E-card is not dependable on any system files. E-Card is a downsized player, good for creating small presentations to be sent by e-mail. With E-card you can't use MP3 or mod.

•	OBJECTX( Object label) and OBJECTY( Object label) functions added in the script.
These functions return the current position (left, top corner) of the object specified by the label.
Example x= OBJECTX(Text1)

•	ISVISIBLE( Object label) function was added
This returns
-1 if object doesn't exist on the page,
0 if object is hiden
1 if object is visible

•	OpenFile$ variable was added. This variable will have the path after using OpenFile script command.

•	VolumeUp can now take a parameter - the volume from 0-100
Example: VolumeUp("50") will set volume to half

•	ReplaceImage can load BMP beside the JPG

•	MOUSEX() and MOUSEY() functions added in the script.These functions return the current position of mouse cursor.

•	Added Default cursor listbox into the Page Properties.
The last item there is a dot cursor - great for touch screens.

•	Plug-In's loading code
Plugin's are now loaded before the window and they don't require to be visible.

•	MoveObject("Object","x,y,w,h")
Move (and/or resize) the object (or group) to the x,y position. The w and h parameters are not required and if they are defined the object is resized - However it wont resize any bitmap object or text - it resize only its active boundaries. But it works fine for rectangle, buttons, hotspots...etc..
Yu can make a code:
for i=0 to 100
MoveObject("Bitmap","i,20")
Refresh()
Pause("30")
next i
and it will move the object form left to right!

•	MoveTo("Object","x,y,steps,type")
This simple command moves object (or group) from current position to the x,y using # of steps. The type can be EASYTO, EASYFROM or none to define the linearity in time. It basically does the same as code above, however you can specify slowing or accelerating with the TYPE.

•	Refresh() command
This command will force to redraw the changes. It also works like a pump, if you use Refresh() in a loop the program reminds active and in fact you can still interact with the active objects (while the loop is continuing).

•	Pause("ms") command
Pause command in the script, takes a number of ms to pause before continuing the script

•	CBK_Time and CBK_Total can be addressed as an integer variables
Example: a=CBK_Total
This always returns the number of seconds (equivalent to what would be displayed in these objects.

•	Ability to insert Contents Copyright into the project executable
This allows you to insert your text in the Comments field of executable properties. For example you can put your copyright for the contents you created or comments about used materials. You can put up to 60 characters. That doesn't replace the other MMB player properties, but it resolves some legal issues if your custommer doesn't want to put your copyright on the project pages but you still want to have your copyright or name there. Many other authoring tools didn't allow you to do this. You can access this option in the Check & Distribute dialog box.

•	Dynamic Changes of Display Resolution
You can tell the project before the start to change (or at least to try) the Display Resolution to one of few typical resolutions. You can set this option in the Project-General Settings. You can make a project which will play always on a full screen. Note: Some video cards (very old ones) don't allow to dynamically change the resolution so the project will continue in its standard size. The most common sizes are 640 x 480 and 800 x 600 and should work on most of the cards. The resolution will be returned to the original settings after you exit the project. Checking this option will uncheck "Standard Window" and "Movable" from the default values - because it makes little or no sense, however you can turn them back on if you making a "special" project.

•	Control over Process Priority

This new version allows you to control the priority of the process. You can change the priority in the Project-General Settings. If you select High, the application you create will steal more CPU for itself from other windows application, making the transitions and FX running smoother. This is great for presentation type of applications where you don't expect user to be often switching between applications. The Normal settings is good for most of the application (it is the default setting) and the Low priority setting can be used for special (background) application which shouldn't use much CPU (launch bars etc..)

•	Masking Video

In 4.6 you can use B/W mask for Video Masking. With the Mask, video doesn't have to play in rectangular square anymore and it can have any shape you want.

You need to prepare an image mask with size of the video. The video will be played through this mask where the black pixels will be video and white transparent. The mask could have any shape or image (for example black text on white background). You can load the mask in the Video Properties. (Two buttons were added - Load and Clear Mask) You can create a very interesting effects because finally you don't have to be stuck with the boring rectangular video found in many authoring tools...

•	MCI object was added
This makes easier to play video or audio using MCI without doing much scripting. Let's say you want to play ASF so instead of bunch of messy MCICommand script lines you simply draw a MCI object which could play your asf automatically on page start or you can control basic functions (play, stop, close) with new script command MCIObject.

•	3 additional script timers were added
TimerA, TimerB and TimerC were added to the ScriptTimer command, making that four timers for script. You can use ScriptTimer command as before - then it uses the standard timer or you can use syntax:
ScriptTimer("TimerA=Script","500")
(You can use TimerB and TimerC the same way) These are independent timers. The same rules apply for them like for the standard timer: After the script is executed the attached timer is killed as well as if you go to another page.

•	The Secure Layer

In the Check and Distribute a Secure layer option was added. This will process the mbd data in such way that no Text or Script would be visible if you look at it in the Hex editor. Also the file can't be loaded back to the designer (no password will help!) so it can only be played. However, note that the loading of file with Secure layer would need more time and memory that without this layer so you should use it only on necessary files. The same option was added to Compress and Export to easy create mbd files which can't be viewed in Hex editors and loaded in designer.

Fixes in 4.6

•	Script from On Move cursor fixed

•	String arrays now works in designer and in the player the same way:
toon$[0]='O'
toon$[1]='k'
string$ = toon$[1] + toon$[2]

•	You can add backslash at the end of a string by using \\
path$ = 'c:\mydir\\'
will be displayed as c:\mydir\
There was a conflict because in 4.5 we used \' to enter ' into the string:
string$ = 'That\'s great!'
which will be displayed as That's great! and there was no way to add backslash at the end of the string then. Now you just use double backslash to ad a backslash at the end of a string. Complicated? Hope not that much!.

•	You can now exit from th For - Next loop by using Return() command

•	The Path Replace, the Checking for Fixed paths in Check & Distribute and the Text Replace tools were update for new changes.

MMB 4.5

•	Active Objects can have Tool Tips. That is a text you can see on runtime when you move mouse over some object and wait. You can set the Tooltip simply by writing the text in the Tooltip entry of the object properties. Very easy way how to add professional touch to your application.
The objects supporting the Tooltip are: Text Button, Bitmap Button, Text EditBox and Hot Spot

•	Enhanced Object list. It supports multiple selection. Whenever you select more objects on the workspace they will be highlighted in the Object list. In addition to this you can select multiple objects directly in the list by holding Shift and you can also unselect the object in the list or on the workspace the same way.

•	Snap to Grid was added. You can switch it on by clicking on the Snap To Grid button on the toolbar. The Grid settings are under menu Settings. You can change both X and Y grid. When the Snap to Grid is active the grid marks are visible and you can place the objects by mouse only on these marks. You can still use arrow keyboard keys to move the object by pixels..

•	Quick Object Roll-Up was added You can add a Bitmap, Paragraph Text, Bitmap button or MMB Object just by double-clicking on the file in the Quick Object file list.
This is very useful if you have many graphic or text objects on the disk. The same way you can import all supported images, Bitmap buttons (BTW) or exported Objects (OBM).
The Roll-Up window can be minimized and maximized by clicking on the white rectangle or double-clicking on the top handle.

•	Dimensions Roll-Up window was added You can change the position of objects by entering a number.

•	Pages in the project can be easy repositioned and copied with new Page Manager

•	Animated Gifs reviewed - better support for optimized animated gifs with disposal methods. Enhanced Animated Gif properties dialog box. Run Script after last frame added. Load New file button added.

•	In Paragraph text properties switching between enhanced and international editor added. Also a new button to load text from the file into the editor.

•	In the page actions Go To Page was added a list box for pages just to make it easier to use.

•	In Video Object added Run Script after video Stop/Finish

•	Added arrays to the string variables in the Script ( a$[1] = b$[a+1] )

•	The Text Buttons and Bitmap Buttons now change back to default image if you click on a button and drag cursor off the window before lifting it

•	Looping of MP3 Playlist. Whenever the last item of the playlist have instead of mp3 file word LOOP then the playlist will loop.

•	Fixed the Video & EditBox problem - after video stopped the edit boxes were no longer receiving input.

•	Video & the Go to Next Page on FW & BW problem fixed

•	Bonus: Color Tweak effects 30 new bitmap color, art and special effects.

MMB 4.4

•	Text Button can have customized font

•	Ability to change the default cursor on most active objects - ten predefined cursors

•	Full Script editor enhancements - color highlighting keywords, wizard, remembering the size and position
New Script Editor

•	Paragraph text editor enhancements (Drag and drop text)

•	MP3 can be also a command line parameter in the player (So now you can associate your MMB mp3 player with mp3's)

•	Ability to Resize Page, Move Page, Stay On Top from the script
(See Syscommand.mbd)

•	Ability to copy file and to create a full path directory.
(See Syscommand.mbd)

•	Ability to Show or Hide Objects on any page from any page (Master pages included) from script (See updated Masrterpages.mbd)

•	Ability to run designer directly from CD without installing it on hard drive.

•	You can use ' in string: Don't panic you would write with backslash:
a$ = 'Don\'t panic'

•	Smarter Copy-Paste Groups

•	Added <Windows> and <System> in the Script

•	Bonus Color Tweak Effects with 30 new color,art and special effects

MMB 4.3

•	CBT is here ! Full String support in script

•	Input Box Object

•	Change icon in the compiled application

•	Get info from MCICommand

•	Video Object enhancements - actions on Video finish

MMB 4.2

•	MP3 enhancements

•	ID3 Tags

•	MP3 List Enhancements

•	Replace Text, global function

MMB 4.1

•	MMB Plug-In support

•	Templates

•	Load text from external file

MMB 4.0

•	New Transitions, Page Curl, Fire

•	14 cool new Bitmap Effects (menu Effects),Water, Impresionists, Warp, Bump....

•	Matrix Object

•	VR Panorama Object

•	Dynamic FX

MMB 3.3

•	Page Transitions

•	Embedded MIDI and MOD

•	Embedded external files

Animated Gif
New object - animated gif was added. It has its own properties which allows you to control the gif transparency, background color, speed, auto play, loop..
For sample see Ronnie's demo agif.mbd on the users gallery or the included simple animation.mbd.

Embedded Wave
Yes you can embedded wave into mbd file. Use it for small click sounds and you will be happy.

Script Object - Keyboard Shortcuts
New Object was added. This object can be used for your global functions or any functions. It has also feature to run that script if user press some keyboard shortcut. See example keys.mbd

Full Screen Background
This will cover all windows with solid fill, image, tiled image or stretched image.
Great for kiosks. See examples: kiosk.mbd and fullback.mbd

MIDI
The script now has MidiPlay and MidiStop commands

Size
If you compile the stand alone file you will see it is arround 300 kB smaller than in version 2.0. This allows you to put the file on the old floppy disk, so you can distribute your presentation on that medium.

For -next loop
Added to the script. The syntax is typical Basic syntax:

for a=1 to 5
...
next a

Password
Now you can protect your mbd files from editing by putting password. Go to menu File- Compress & Export and there is a place to put the password. You cannot protect the files you are saving with Save or Save As commands, you can protect only files you are exporting.

Other
Move 10 pixels - If you use Keyboard Arrows, the object will move 1 pixel, but if you use CTRL+arrow the object will move 10 pixels.

Interaction with other objects - the "Moving Mouse over the object" has more actions in the combo-box: Show only, Hide only and Run script. The first is great if you want to show Animated gif if mouse is over some object - the animated gif can hide itself after last frame (See Animated Gif properties). With the other commands you can do some other magic on mouse move.

CBK_MP3EOF - The script object with this name will run when MP3 song reach its end... for more see sample mp3list.mbd in the package.


MMB 3.1

 Print Text Function

 Page Import/Export

 Bitmap Button has new option 'Auto-Button'

 This allows you to create bitmap button only from one Image. The

 button will have look and feel like Text Button but with a bitmap.

 Video Object has the option to load MPEG, VideoDisc or MOV -

 using MCI - this saves some writing in script for MCI.

 OctaMed sound support (*.med). Thsi is the first from upomming mod

 formats.

 OpenFile command and internal <File> added. This allows you to pop-up Open File dialog

 For Example: OpenFile("MPEG files |*.mpg||","*.mpg")

 Then you can use the <File> (the same way like you were using <SrcDir>). So for example for MCI you can use:

 MCICommand("play <File>")

 VolumeUp and VolumeDown commands were added

 Custom Shape window: The B/W Mask option was added allowing you to create any shape even with holes

 The candy See Through was added. This will turn the background of

 project transparent and then you can cast shadow on desktop or

 make fully semitransparent window. However it has some limitation.

 Cover Windows taks bar in Full Screen background option.


MMB 3.1_1

MMB 3.0

 Animated Gif support.

 Embedded Waves.

 Midi.

 MCI commands (allows you to play MPEG or video disc.)

 For-next loop.


MMB 2.0

 Full MP3 support with feedback.

 Script language with variables.

 Timer functions (NextPageafter, ExitAfter.)


MMB 1.3

 New Object - Paragraph Text

Paragraph text with word wrap and scroll bar.

Master page and Master Top Layer

 CD Audio or Mixed-Mode CD support.

For those who wish to write their own CD-ROM, and have access to a recordable CD drive.

In version 1.3, each page can play different audio tracks from the CD.

Great for the Mixed-mode custom CD - on track 1 you have your programs, MMB player and data, and on other tracks you can put audio songs.

 Objects can play Tracks from CD Audio.

In the Sounds Actions you can write into the On Click box commands for CD Audio:

CD:2 - will play second track

CD:STOP - Stop Playing

CD:PLAY	- Play

CD:PAUSE - Pause

CD:FW - play next song

CD:BW - play prev. song

CD:PLP - Play/Pause

 You can easily create a simple CD player now. (See CDAudio.mbd sample)

 Selection preview.

See exactly how the selected object will look.

To open/close selection view: Click on the large button at the bottom of Object List.

Preview allows you to see hidden objects, groups, and much more.

For lots of graphics which slows down the design process, switch off the preview!

(It goes into the groups, etc., so it may slow down the designer.)

 Stand Alone compiler is now part of the designer.

 In the External Commands and page actions - "Minimize" function was added.


MMB 1.2

Improved Object List

The group object can expand (tree like) to show objects (or groups) in this group.

You get the following advantages:

∗?	•	You can refine the position of the object in the group without ungrouping it.
Expand the group in the object list, select the desired object, and refine the position with the keyboard arrows.

∗?	•	You can remove the object from the group and move it outside. See Remove from Group.

∗?	•	You can delete objects inside the group without ungrouping it

Better Tracker

The tracker - rectangle around the selected object was sometimes jumping to the wrong position.

(If you open any dialog box) and now it is also visible on the black background.

Bug fix - DropShadow and Glow

This bug was caused when resizing the rectangle of the bitmap, and inserting a drop shadow or glow.

Bug fix - change Label inside the group.

If you changed the Label of the object inside a group, the objects appeared unselectable or even invisible.

The Remove all effects in the menu Effects was renamed to Restore original.

New:

Add new Actions in "Interactive with other objects" for Mouse Click on the object.

Show/Hide

Show an object or a group. This will stay until an object hides it.

Hide an object or a group. This will stay until an object shows it.

Invert (Show-Hide)

Show or Hide an object or a group.

If the object is hidden, this will show it and vice-versa.

Those actions allow the creation of nice effects like menus etc. See NewMenu.mbd sample.

Note: One object can show/hide a nested group (Group1) inside another group (Group2).

Another object can show/hide this group (Group2)... There is a lot of logic inside. See the demo.

New - Add to Group

In order to add an object to an existing group select the object, hold down the SHIFT key, and select the desired group. Click Add to the Group button or from menu Arrange select Add to Group.

You can also add a group into another group the same way, but remember to select first the object you want to add and then the group where you want to place the object.

New - Remove from Group

You can remove (ungroup) single object from the group. Select the object inside the group in the Object list, and press Remove from Group button.

New - Scalable Bitmap Objects

Bitmap objects are now scalable. If you resize the bitmap object the image will resize as well.

You can return the image to the original anytime (even after you save), just by clicking Restore Original from Effects menu.

Note: After you resize the image all effects (sharpen, blur, flip, gray scale) will be removed.

This is because MMB is trying to make the new resized image with the best possible quality.

To preserve the ratio, hold down Control when resizing.

New - Tile. (menu Effects)

After you resize the image you can apply this effect. If the new image is bigger than the original, the image

will be tiled to the size of new image. If the new size is smaller the image will be cropped.

Note: If you resize the image again the tile effect will be removed.

New - Reduce size

Resizing bitmaps and applying effects will create temporary bitmaps inside the project.

Those bitmaps are not necessary for distributing and removing them can significantly reduce the size of the project.


Project Settings
Project Settings?

Menu Project - General Settings

You can configure different settings according to your application: kiosk, window, toolbar, etc.

Click on an item to get more information:

 Window Size.

 Window Title.

 Standard Window.

 Client Border.

 Custom Shape Window.

 If 256 colors detected.

 Palette.

 Style.

 Background Mode.

 Disable Alt-Tab in Win95.

Advanced

Display Resolution

Force the display driver to set new resolution. This is great if you want to have project on full screen. However not all adapters will allow to change the resolution - in that case MMB will stay in the window.

Allow Up-Size

Normally you should leave this un-checked. By default we don't want to up-size low resolution display - it is a big chance that if user has low resolution he has old hardware. Use this only if you are certain who will view the file. If un-checked, MMB will only down-size the display (which should work on all systems)

Remember that rreasonable forced resolution is 800x600 or lower.

Set Process Priority

 If you select High, the application you create will steal more CPU for itself from other windows application, making the transitions and FX running smoother. This is great for presentation type of applications where you don't expect user to be often switching between applications. The Normal settings is good for most of the application (it is the default setting) and the Low priority setting can be used for special (background) application which shouldn't use much CPU (launch bars etc..)

Real examples summary:

Option	Kiosk	Corel Install	MS Autorun	Toolbar
Standard Window	NO	YES	YES	YES/NO
Client Border	YES	NO	NO	NO
Movable	NO	YES	YES	YES
Always on top	YES	NO	NO	YES
Save Last Position	NO	NO	NO	YES
Full screen Background	YES	YES	NO	NO
Disable  Alt-Tab	YES	NO	NO	NO


Window Size

Shows the Width and Height of the application window.


Window Title

The title (caption) appears at the top of the Standard Window.


Standard Window

If checked, the window of your application will be a standard window – with caption, border and close button.

If unchecked, the window will be a custom window – no border, caption or close button are displayed.

Also, you can create and use your own artwork.


Client Border

A thin black border will be drawn in the window's client area.

Very good if you need to add a thin border to the window without any border (unchecked Standard Window).


Custom Shape Window

This unique feature moves MMB’s Non Standard window even further.

The window can have a custom shape – taken from a library or an image.

Trace Shape from Image.

To work properly, the image must be on solid background with enough space around.

Specify the start point (where the tracer will start.)  It should be in the background of the image.

The tracer tolerance allows you to specify a closer shape.  "0" value: no tolerance.

For maximum effect, create your background artwork on a solid background.  Then, create the shape with the tracer, and use the same image for the background (in Page Properties.)

B/W Mask
You can use another option – B/W mask. The white part will be invisible (transparent) and the black color will become a window. With the B/W Mask you can create windows with custom shape with holes.

This is the difference between B/W Mask and the Tracer. Tracer only outline the picture. B/W Mask allows you to create any shape you like. (The same way like WinAmp is using Skins.)|


If 256 colors detected

With the runtime, if MMB detects 256 color it can run another page (not the first one), run another file, or just continue.

On the separate page (or file), optimize graphics to display 256 colors.


Palette

Note: Only for 256 colors.

Graphics MMB

Optimized palette for most full-color pictures.  Use this palette when creating pictures or images.  Extract the palette in the Palette directory (palette.bmp) using your graphic editor, and then apply it on all images.

Windows Standard

Windows standard palette is recognized by all graphics applications.

Use it whenever your projects deal with screen captures.


Style

Always on top

Put the active window on the top of all windows – topmost window.

Save Last position in registry

Applications generated by MMB remember its last position which is stored on registry under a specified name.  The next time you run it, it will open in the same position.

Remember to use a different name in the edit box in order to store the position of your applications. Otherwise, they will share the same position.

Tip: Use it for toolbars and launchers applications.


Background Mode

Use this mode to hide the desktop with a specific background.

Tip: Use it to create application for kiosk or exhibition stands.

It's also great for creating Autorun Browsers where the background use an image in relation to the project.

In Background Mode, chose Solid Fill (select the color), or use an image (load it with load button.)

Then, specify how it will be displayed:

Normal:  Top-left corner of the screen.

Tile:  Tile the chosen image.

Stretch:  Stretch image to full screen.

Tip:  The last option allows you to create very interesting presentations.

Chose pictures with patterns which could be stretched nicely.  Don’t use small pictures, pictures with text.

Use a standard display ratio like 4:3 – for example, 640 x 480 is adequate for most screens.

Corel products installation offers some nice examples.


Disable Alt-Tab in Win95

Great for kiosks where you don’t want a user to switch from one app to another.

It also disables Ctrl-Alt-Del, and other windows commands.

It doesn’t disable Esc.  You have to handle it otherwise.

Tip: To disable Esc, use CBK_EXIT (for more info see CBK objects.)


Multiple Pages

A multimedia project can be built on more than one page.

Each page of an interactive project can include: text, buttons, graphics, hot spots, video, and actions objects.


Custom Window

This is where MMB stand apart from the competition!

You can create custom shape windows on top of the desktop... any shape you like!

Be imaginative, and give up the "Square look."

Click here [image] to see an example.


Example of Custom Shape Window


Autorun CD Browser

Autorun CD browser provides a graphic interface (GUI) for your CD-ROM files and, product setup.

It makes the setup process easy and more enjoyable.

 Impress your customers by using graphics, video and sound in your applications!

 Market other applications by providing product information within the CD browser.

 Provide contact information for your company, E-mail and link to your web site.


Sound

MMB can play more than one sound simultaneously.

A great tool to enhance your programs!

Play background music in loop mode, and at the same time play other sound effects. Based on Microsoft’s DirectSound technology.

Even if your customer doesn’t have DirectSound, he/she will be able to hear Sound Actions directly through standard Windows sound output.

Video

Play video at any speed, and let the user control it.

See also What’s new?


List of Features

 WYSIWYG design (What You See Is What You Get).

 Object Oriented environment.

 Click-to-create objects and actions.

 Smart script language (you can still make projects without any script!).

 Support all popular graphic formats.

 Multiple Undo/Redo.

 Grouping and Ungrouping objects, nested grouping, add to groups.

 Alignment tools.

 Blend graphics with background.

 Alpha Transparency Masks for blending.

 Multiple sound channels.

 Full MP3 support.

 24-bit color.

 Optimized performance.

 Real Glow and Drop Shadow.

 Visual Effects: Sharpen, Blur, Flip.

 Background Bitmap Tiling.

 Background sound can play across page boundaries, looping.

 Embedded wave.

 Layered Objects.

 Create your own graphic buttons, save, load to/from library.

 Move away from rectangular windows!  Support custom shapes and library – tracing from image.

 Paste graphics directly from your image editor to MMB without saving.

 Play video at any speed.

 Fade out effect.

 Wizard for objects and actions.

 Create Standalone projects.

 Powerful Compression.

 Timer.

 Animated GIFs.

 Optional full screen background.

 Bargain price.


How to Work With. . .


Objects


Group Manager

Select objects by their name, and assemble them into a group.

This is great if you want to create a group from objects by theirs name.


Group

Group is a virtual object - a group of multimedia objects.

Grouping is effective for protecting and maintaining connections and relations between objects. If you move group you move all the objects in the group. The same for most of the actions like Show, Hide etc...

Group command lets you lock objects together to create a single object.

You can select any grouped objects to move, copy or hide them.

Click on the following to get more information:

 Create a group of objects.

 Add objects to group.

 Remove objects from group.

 Ungroup objects.

Group Manager can help you to create groups by selecting the names of objects.


Create a group of objects

How to create a group of objects:

 Select all the objects you want in the group.

 Choose Group from the Arrange menu (or CTRL+G) to create the group.


Ungroup objects

How to ungroup objects:

 Select the group.

 Choose Ungroup command from Arrange menu (or CTRL+U).

Within the group, you still have access to the properties of each object through Group Properties.

The group command also lets you create nested groups – groups composed of objects or groups of objects.

To select and group an object by its name, use the Group Manager command.

Tip: Group objects together if you want to prevent accidental changes to related objects.


Add objects to group

To add an object to an existing group: select the object, hold down SHIFT, and select the desired group.

Click Add to Group button, or from menu Arrange select Add to Group.

Also, a group can be added to another one the same way,.

First, remember to select the object you want to add, and the group where you want to place the object.


Remove objects from group

You can remove (ungroup) single objects from the group.

Select the objects inside the group in the Object list, and press Remove from Group button.


Group Object

Group object is a group containing objects. See Groups for more information.

Open the Group properties to have access to the grouped objects or other nested groups.

Tip: Double click on an object to see its properties.

If you Hide the group, all objects within the group will also be hidden.

Note: A group could have nested groups - for example if you group a two other groups together.


Align Object
Align Objects

Multimedia Builder provides controls to align any series of objects.

Use align tools to line up your objects precisely (left, right, top, or bottom.)

To align objects, select those you want to align:

 Click to select the first object.

 Hold down the Shift key, and select the next object.

 Repeat until all objects are selected.

or

 Click near and outside the objects to be aligned. As you drag the cursor, a rectangle appears.

 Hold and drag the mouse around the objects, and release it.

You can use any of the alignment tools.  See a brief description under Visual Overview.


CBK Objects

These are special feedback objects.

CBK_Total

If any text object has this Label then the total time from MP3 file will be displayed here. Make sure you create the text object with enough space around it to accommodate the number format XX::XX

CBK_Time

Displays the current time of playing MP3 file.

CBK_MP3Type

The type of current MP3 file (MPEG 1 Layer 3)

CBK_MP3Bit
BitRate of current MP3

CBK_MP3Freq

Frequncy of current MP3

CBK_MP3Name

File Name of current MP3

For Example see macmp3_2.mbd

CBK_NumInList

Number of items in the MP3 list

CBK_CurItemList

Currently selected item from the MP3 list. (See mp3Tags.mbd sample)

CBK_MP3EOF

If any script on the current or Master Top layer page has the label CBK_MP3EOF, the script will be executed when the current playing MP3 song ends up.

If there is no such script with this label on current page, MMB will look into Master Top Layer, if even there is no such script, the song will just end and that's all.

There could be anything in the CBK_MP3EOF script - you can put there NextPage and the MMB will go to the next page when mp3 file reach its end, you can Show some picture, you can open another MP3 song…

CBK_Menu

Use this to create a Menu group you want to hide if the user clicks away from the group.

Instead of using hotspots around the menu, make the label of the group starting with CBK_Menu.

Whenever the user clicks on the screen, all objects starting with CBK_Menu will be hidden, except the menu under the cursor.

CBK_EXIT

Use this to catch the Close button on the title bar or the Escape key.

Note: The object or group MUST be in the Master Top layer.

Whenever the user press Escape or click on the Close button, the CBK_EXIT object will be shown and/or  the script (if any) on the MouseUp of the CBK_EXIT will be launched.

Example:

On Master Top Layer create rectangle.

Insert the text:  «Do you want to exit?», and two buttons: «OK» and «Cancel».

Now group all 4 objects.

Rename The Group to CBK_EXIT

Expand the group in the object list so you can access the items in it.

On Button OK:  Trigger the Exit action.

On button Cancel: Hide the CBK_EXIT group .

Now hide the whole CBK_EXIT group.

Tip: From the Wizard tool (on tool bar) select Capture Exit and ESC key, then select the type from submenu - this will insert the object for you.


Pages


Page Properties

A page is the place where you design your multimedia project. Each project could have one or more pages.

To access the page properties, double click on the page icon on the bottom of designer or select from menu Page - Properties

Click on each elements to learn more:

 Label.

 Background.

 Background Music.

 Digital Audio.

 Script.

There are also 2 separate special "pages" Master Top Layer and Master Page.

Note : You can also add Comments to your project.\

Page Properties

(Written by Rodd)

You can alter the properties of the current page by selecting 'Page' and then 'Properties...' from
the MMB drop down menu; or you can simply 'double-click' the pages 'icon' in the page selection
area.

Label: This is the name of the page. By default the first page of the a project is labelled 'Page 1'.
You might like to change the 'label' of the page to be more descriptive of the operation of the
page. The page label is used by MMB to locate the different pages of your project, so that it can
switch from one page to another.

Background: This allows you to choose the background graphic or background colour of the current
page. You have the option of using the background graphic/colour that was chosen for the
master page, OR a specific graphic/colour for the current page only.
From Master Page: the current page will simply show the background graphic/colour that was
chosen for the [Master Page].
Color: choose a colour from the drop down list as a background for the current page.
Image: allows you to choose a graphic file from disk to use as a background graphic. If the
graphic is smaller than the current page you can also choose 'Tile' to fill the current page with the
graphic.

Play audio track from CD Audio or Mixed-mode CD
This allows you to select a music CD track as background music for this page. You have the option
of selecting which CD track you want to be played. Please note that when referring to a Mixed-
mode CD the first audio track will be track 2 (since track 1 will not be music but will be data)!
Note: the music doesn't automatically stop when leaving the current page.

Script:
This will allow you to write a script that will be run automatically each time the page is accessed.
Please note that 'plugins' tend not to function correctly when run directly from this page script. It
is advisable to have the page script run a seperate script (using the 'ScriptTimer' command) which
runs the plugin.

Page Transition:
This allows you to change from the current page to another page using a special graphical/optical
effect. There are many graphical effects to choose from (including special page effect plugins), and it
is best to experiment with the different transitions to see its effect.

Background Music:
This allows you to select a 'wave', MP3, Midi, MOD, or MED file to run as background music for
this page. You can choose to have the music continually replay by ticking 'Loop (WAV, MP3)'.
Note: the music doesn't automatically stop when leaving the current page.

Select 'OK' to accept the changes or 'Cancel' to discard the changes.


Label

It's the name of the page.

A label is a unique string of text which represents a page, or can be called upon by an action.


Background

A page can have a solid background defined by a color.  It can also be a bitmap background.

To load a Bitmap as a background, press the Load Image button.

If the image is smaller than the page size you can Tile the image.

Tip: You can find some pretty interesting background in the directory Background.  They can be tiled for exciting effect.

You can copy all graphic properties included in the first page to any other subsequent pages.

The background graphics are very important.

Put as much graphics as you can into the background.  Redrawing the background is much faster than any other objects.

You can combine objects with background.


Combine Objects with Background

Select the objects you would like to combine.

From the menu Arrange, select Combine – Objects with background.

From the next dialog, select Delete source objects, and Use this image to create a new background.

A page can use the background included in the first page, or from the Master Page.


Background music

MMB can play different background music on each page.
The music can play across page boundaries.  If the next page has no background music, the last one will continue playing.

You can loop music. You can find music on the Internet, or on CD’s like Corel Stock Music Library.

You can select to play MP3 file on page start. This doesn’t go through multichannel sound.

You can use embedded waves as well – just write the Internal Name of the embedded wave file.


Digital Audio

MMB can play audio tracks from CDs.  A track can start playing as soon as a user enters a page.

Use this function to build your Mixed-mode CD where the first track is a data track (your player and MBD data file and other data), and the other tracks are audio tracks.

Mixed mode CDs are widely used for games and multimedia, because playing audio tracks doesn’t take much resources like playing WAVE files.


Script

You can trigger any actions or change variables using Script language.

Note:

Background music plays through the DirectSound channel.  It's mixed with other sound effects without interruption.

The user must have DirectSound which is installed on almost 95% of the systems.  (In the future it will be 100%, since Win95 SP 2 and Windows98 have DirectSound by default.)

MMB allows you to create Distribution Files, and can detect the system of the user.  In the worst case (user without DirectSound), a user will not be able to hear background music, but he will be able to hear Sound Actions, which are played through standard audio output.

See Check Project and Distribute Files.


Master Page properties

A Master Page can have a background. (The same as a "regular page".)

To use a Master Page background on another page, check Background – From Master Page on the desired page properties.

Otherwise the page will have its own background or the one from the first page.


Master Page and Master Top Layer

Note: This is a very important feature for project with many pages.

Don’t copy common objects to all pages, which is a waste of space.

Instead, put common objects on the Master Page or Master Top Layer.

What's the difference?

Master Page

Will appear as a bottom layer on each page. The objects on the page will appear all the time on the top of the objects from the Master Page.

Tip: Great to insert your artworks. You can also insert interactive objects, but make sure no other objects cover them.

Master Top Layer

 Will appear as a top layer on each page. The objects on the page will be behind the Master Top Layer objects.

Tip: Great for active objects like menus, buttons, windows, etc.

This diagram represents some elements in a project relative to one another.


Text


Text Button

You can create standard Window button. It can have different fill and color.

It behaves like a standard windows button…

Actions

Text button is an active object all of the time. See the Actions.

Menu style

This is a special style of the button where it looks like a menu item. Great for building menus.

The Button can have its own font or it can use standard font (MS Sans Serif)


Text Properties

Texts are an integral part of any multimedia design.

Use text objects to display headlines, body text or any other words that will be displayed on the screen.

Tip: Text can be active or inactive.

Label: Unique string representing the object. Use this name to interact with other objects.

Hide: Hide object. The object will not be visible for the viewer, and no object actions will be trigged.

Font: Open the font dialog box.

Align: Align the text Left, Center or Right.

Enable the actions: Enable the object to trigger some actions.

Color Interaction: If actions are enabled, text can change color when the mouse moves over or user clicks on the text.

Action Buttons: See the actions.

Note: For longer texts and paragraphs use the Paragraph Text object instead.


Paragraph Text

The Paragraph Text object has automatic word-wrapping (scrollable) for long text.

Drag the text rectangle on the screen and the text will fill the rectangle.

Note: If the text is longer than the visible rectangle, the Scroll Bar will appear.

Tip: A user can scroll the text two ways: by dragging the scroll bar, or by clicking on the text and moving the mouse up or down. ( The cursor will transform into a hand.)


Images & Graphics


Bitmap Object

Bitmap object can be active or inactive.

Bitmap object can be built from two parts: Image and Transparency Map (Alpha transparency).

Bitmap object can be Active object (clickable) as well.


Image

Any single color can appear transparent.  The background will show through, whatever it is!

To make one color of the image transparent, check Transparent color and select the desired color in color box.

To use the color of the top left pixel in the image, click the color box and select automatic from the color box.

The transparent color is different from Alpha transparency.  It's either transparent or it is not, no in-between.


Transparency Map (Alpha transparency)

To make an image (or part of it) transparent or semitransparent, you have to use more sophisticated tools – Alpha Transparency Map.

It is usually Black & White pictures where Black means Full transparent and White is opaque or it has the opacity  specified in the Opacity box ( 0 – fully transparent, 1 - opaque).

You can switch on/off the alpha transparency by checking Enable Alpha Transparency check box.

If you don’t define the transparency map, but you enable the Alpha Transparency, the image will blend with the background with opacity defined in the Opacity edit box.

You can apply a few useful effects with the transparency map – invert, make it grayscale and blur the map.

The typical usage of the transparency map is the Glow or Drop Shadow. The image is just rectangular with some color. The shape and the effect is done by the Transparency map.

If the Transparency map is smaller than the image, it will be tilled, so you can use it for some nice effects.

Fill button – near the Color combo box.

You can fill whole images with a single color as defined in the color box. A great way to change the color of the Glow or Drop shadow like objects.

You can make this object interactive by enabling the actions.

For more info see the Actions.


Clone
Clones

Clone object will inherit all graphic properties from its parent, but it can have different actions.

If you change the parent, all clone objects will change the same way.

For example, you create the bitmap and then clone another five objects out of it.

If you later load other bitmap into the parent, all other five objects will change .

Clone tool can save a lot of space.

Read more in Clone Bitmap


Line

Line is an inactive object. It can not have an action.


Bitmap Button

You can create custom graphic buttons out of 3 images.

The normal Image, The Highlighted image if mouse is moved over the button and the Click Image if the mouse is clicked on the button.

Auto-Button

This allows you to create bitmap button only from one (Normal) image. The button will have look of Windows button – with your image. You need to load only the Normal Image.

Refine Bitmap position:

You can change the relative position of the highlight and click image to the normal image: To get soft delightful effect or if the images don’t have the same origin.

All of the images can have one transparent color.

The color box will help you to define the background color with Automatic color. It is the top left pixel of the image.

You can save your buttons and make your own library for easy access later.

Bitmap buttons are an essential part of all large graphic multimedia applications.

You can make this object interactive by enabling the actions.

For more info see the Actions .


Glow/Drop Shadow

This will create a new object based on the parent object (bitmap with one color, transparent, text or rectangle).

The Glow/DS object will be placed behind the parent object.

Click on an item to get more information:

 Label.

 Group with parent.

 Opacity.

 Color.

 Orientation – Offset X, Y.

 Feather.

 Direction.

TIP:

Glow/DS object is a bitmap object with alpha transparency map.

You can change the color of the Glow/DS object at any later time by opening the properties  - changing the color in color box and pressing Fill button.

Don’t check the Transparent Color check box !

Wizard – You can easily make an object that will glow if the user moves the mouse over the object.

Select the parent object (for example the Text), click the Wizard icon on the Toolbar and select «Glow on mouse move». Now test the page and move the mouse over the object. The object will then glow.


Label_1
Label

String represents the new object.


Group with parent

New object will be grouped with parent after the new object is created.


Opacity

0 – 255. You can make Glow/DS more transparent by selecting a value less than 255


Color

Color of the result Glow/DS object can be set later – see the TIP


Orientation  Offset X, Y
Orientation – Offset X, Y

Glow usually has the position 0,0 relative to the parent, and Drop Shadow is usually shifted a little bit to the right – bottom


Feather

How much diffuse will the new object have.

1 – the Glow/DS is almost sharp,

Bigger number – more blur


Direction

Direction of the diffusion


Windows Metafile

Windows Metafile (WMF) format is very popular vector format. You can export vector graphics (for example from CorelDraw) into the vector format. Metafile format can be scaled without loosing the quality.

MMB also has support for this format.

In this version there are some restrictions: Metafile object cannot be active, it doesn’t even have properties.

To place metafile objects on the screen:

Select Metafile from the Object menu.

Draw a rectangle on the screen, then the Open dialog will appear. Select .WMF file.

Resize the rectangle to desired size.


Optimize the Speed
Optimize the Speed and Colors

Crop the Images to the size you really need.

Put as much bitmap graphic as you can into the background – the background image redraws much faster than other objects. The tool Combine objects with background in Arrange menu can help you.

Big images with alpha transparency can slow down the application

For 256 colors – you have the palette.bmp file inside the Palette directory.
You can use this image to extract palette inside your graphic editor. All your graphics should use colors from this palette. Convert your pictures with your graphics editor to 8 bit  with using this palette.
For Corel Photo Paint there is already palette prepared inside the MMB’s Palette directory.

Reduce the size of the project. Click Reduce size from File menu. This will      remove all unused temporary bitmaps from the project.


Crop

Cropping cuts away rectangular areas on an image without affecting the resolution or dimension of the area that remains.

To crop an image:

Select image object.

Select Crop from menu Effects

Draw rectangle inside the image.

You can Restore the original image by clicking Restore Original in menu Effects.

If you resize the cropped image, the original image will be restored.

If you are satisfied with your new image then you can apply «Make new original» from menu Effects. After that you can resize the new, cropped image like it was the original image.


Make new Original

Bitmap images leave original image as a temporary. Whenever you resize the image, the original image is resized. This preserves the best possible quality.

The same works for cropping and Tile – the full image before cropping or tiling is still remembered. If you resize the cropped or tilled image – the original image will resize instead.

Make new Original replace the temporary original with the current image.

Then you can resize tilled image or cropped image like you would do with normal image.


Tile

To tile the image:

Resize image, It should be bigger than the previous.

Click Tile in menu Effects.

To apply Tilling you should use Make new Original.

Otherwise after resizing the original image will be restored.


Sparkles

Sparkles works best on dark background.


Reduce size
Reduce size (File menu)

Resizing bitmaps and applying effects will create temporary bitmaps inside the project.

Those bitmaps are not necessary for distributing and removing them can significantly reduce the size of the project.

You should use this command if you are resizing the bitmaps or using effects before you distribute the files.


Hotspots


Create Hot Spots
Create Hot-Spot

Hot Spot is an active object.

Hot spot is an invisible area you can define on the screen where your viewer (user) can click or move mouse to make something happen. The area could be around a word, on the image etc.

Hot spot is invisible to the viewer. However, in the designer you see hot spots as an area with a dashed border.


Animated Gifs

Animated Gifs are very common on Internet. You can get thousands of gifs just browsing the net or buying a not expensive clipart CD.

You can work with ANIGIFS like with any other objects – grouping them, moving them in layers, etc.

Experiment with the settings!

This is not all what you can do with the anigif!

If you Show anigif in you ractions - anigif start animate from the first page, if you Hide it it dissapear.

In script you can control more:

AGifPlay("ANIGIF OBJECT")

- play gif (for example if autoplay feature is off)

AGifStop("ANIGIF OBJECT")

- stop , the next play will continue from this frame

AGifReset("ANIGIF OBJECT")

- reset - set the first frame

Note: Anigifs takes more CPU than static pictures. You can use Anigifs in layers - be careful - the alpha transparent bitmaps takes more time to redraw - if you overlap Anigif and some Alpha transparent bitmaps - the gif will slow down.

Don't try to put too much on one page ! The anigifs are great for highlighting something special.

Click on an item to get more information:

 Label.

 Info.

 Speed.

Advanced

Transparency

Automatic - Force

You can chose how to create transparency in your image. Note - this goes beyond standard gif transparency, you can turn non-transparent gifs to transparent by forcing the transparent color.

Auto Play
The gif will start playing as soon as it will be visible

Loop

The gif will play in loop

After Last Frame

This works only if Loop is not selected. You can chose what to do when animation will reach its last frame. It could hide the object or run a script.


Info

Frames

Number of frames in the gif (gif must have more than 1 frame to be animated)

Disposal

There are few types of animated gifs using different optimization – the number bigger than 0 shows the gif is using one of the optimization (keeping the first frame and showing only differences, keeping the prev. frame …)


Speed

Frame rate

The rate in ms (the time between the frames) , it is the rate of first frame – other frames can have different rate

Adjust

Adjust the frame rate by percent (200% 2-times slower).

Note: Speeding up the animation doesn’t have to have a desired effect all the time.

Example: you have Frame rate 10 ms, you adjust the speed 50% (5 ms). No effect ! The 5 ms is not enough for the computer to redraw the frame. (Even the 10 ms is not enough!)


Background_1
Background

Color

This is the color retrieved from the gif marked as a background color

However you can select another color to be a background - this will allow you to turn almost any gif into the transparent gif.

Transparent

Make the selected color transparent - sometimes if you see the result very strange - select other background color (for example the gif is on white background, but the background color was retrieved as a black)

Auto Play

Automatically start playing the gif on Show or page start.

Tile

You have to resize the gif first (make it bigger) and then click this option. This will let you to create animated patterns. Not all gifs are good for this functions - you cannot use transparent option.

Loop

The gif will loop the animation

Hide after last frame

This will hide the gif after last frame was displayed - good for showing some animation which will hide itself on the end.


Video


Video Object

In order to play, stop or control the video, you have to place other controls on the screen with assigned «Interaction with other objects and Video» action or you have to start video from script with PlayVideo.

The video object has two files: The Still image and the video itself.

The Still image stays on the screen when video is closed (it is not playing) and it is a normal bitmap object.

 TIP: Wizard can insert video buttons for you.

After you create a video object, select it and click on wizard. Select «Create video controls».

This will create a few bitmap buttons attached to this video object.

Click on an item to get more information:

 AVI File.

 Hide Still Screen.

 Sound.

 Speed.

 Loop.

 Save Still.

 Load New.

Advanced

Full Screen
The video will play on full screen. This is supported for AVI. However some MPEG drivers allows full screen some not.

After Video Stop/Finish

After the video stops you can chose one of the actions for example to go to next page or run script.

MASK

With the Mask, video doesn't have to play in rectangular square anymore and it can have any shape you want.

You need to prepare an image mask with size of the video. The video will be played through this mask where the black pixels will be video and white transparent. The mask could have any shape or image (for example black text on white background). You can load the mask in the Video Properties. (Two buttons were added - Load and Clear Mask) You can create a very interesting effects because finally you don't have to be stuck with the boring rectangular video found in many authoring tools...

MPEG and VideoDisc support.

Remember this is done by MCI – build-in in windows – and using directly device drivers. Since many user can have many device drivers – it could happened some user might not be able to play MPEG or VIDEO disc if they don’t have driver for it.
Also you might try to load MOV (Quick Time) video as well using Video Object. Just type in the Open dialog box *.mov and press enter. Here is even stronger warning – you have 50% chance your system (driver) supports MOV, because this is format of the Apple – the Windows enemy.

The AVI is the safest and sure way in Windows – this is supported in any versions of Windows.

See also MCIObject for playing different video formats


AVI File

Video is an external file, it will stay outside the mbd file.

It is essential to specify a relative path to the file using <SrcDir> or <SrcDrive> commands in the path.

You can do it later for all objects with «Replace Path» in Project menu.

More about relative paths in External Commands and Page Actions topic.


Hide Still Screen

Video, if it is not playing is represented on the screen by the still image. However you can hide this still image.


Sound_1
Sound

You can disable sound if the sound channel exists in the AVI file

Note:

AVI Audio plays through the standard audio output and it cannot be played at the same time with DirectSound channels.

 Be aware!,  video with sound  will shut down  DirectSound Channels and any background music will stop playing.
Shortly, the sound of video cannot be mixed with background sound.


Speed_1
Speed

MMB allows you to play video at any speed. The default value (normal speed) is 1000. Less than < 1000 , and the video will play slower and in reverse.


Loop

Video can play in the loop until the user triggers the STOP action .


Save Still

Maybe you would like to save the still picture for the future or to use it somewhere else. This will be handy.


Load New

Load new AVI  file or reload the old one and select different still image.


Video import

This dialog imports the AVI file and allows you to grab  the frame to represent video on the screen if this is not playing -  the Still Image.

Just play or skip to the frame you would like to use as a still image and press OK.

If you try to grab video from mpg file sometimes it doesnt work - the captured image is black - this is because of the MCI driver which doesn't allow capture from screen.

In that case you have to put any other bitmap object with your desired image on the Top of the black video object. When video is playing it will always play on the top of all objects.


Sound


Sound Actions

Moving the mouse over the object or clicking on the object can trigger a sound action.

The supported files are .WAV files.

Wave files are external files and are not included in the MBD file. You have to provide the relative paths to the .WAV files. See comments in External Commands

The On Click section can play instead of a Wave file the Audio track from Audio CD or Mixed-mode CD.

To use this function you will write instead of wave file name CD Audio command.

Commands:

CD:TrackNumber	- will play desired track number. Note, if you’re using Mixed mode audio the audio track will starts from 2.

(example CD:2)

CD:STOP	- Stop playing

CD:PLAY	- Start Playing – use after CD:PAUSE or CD:STOP

CD:FW	- Play next track

CD:BW	- Play previous track

CD:PLP	- Play or Pause (the same action can play or pause playing)

You can use Script to do the same – using CDAudio commands.

As you can see you can build your own little CD player with Multimedia Builder.

You can use also embedded wave files by writing the name or by clicking on the Embedded wave button. The Embedded Wave Dialog Box will appear where you can add new wave or select existing wave.


Embedded Wave

Embedded waves allows you to add small sound into the project without having external files.

This is great for Actions – sound on button click etc… Don’t put music there – it will make the project file very big. The big files should stay external!

How to use it ? Just load some wave, give it a name and then just use this name instead of the path in your sound action or PlayWave script commands.


Script_1
Script

Script is very powerful part of MBD.

Click on an item to get more information:

 Start Clicking (Mouse Down).

 The Click is Finished (Mouse Up).

You can assign more actions than just using the Action forms (External,Sound ..)

For writing functions you can use Script Wizard which will guide you through the functions.

See the Script language.

Note: All script actions will perform after other actions (from forms) in this object are done.


Start Clicking
Here you want to put some special actions if user click the button, but he still doesn’t release it. For example Show button down etc. This is not good for standard meaning of actions – most of the actions you should put to the next edit box


The Click is Finished
User release the mouse button – this is the full click.

Here you will put most of the actions: Page actions, sounds etc….


Script on page start

Any page can on start trigger some actions using the script language.

You can of course change or create any variable.

See the Script language

Example:

You write on first page script:

NextPageAfter(30000)

If user doesn’t click on anything after 3 minutes (30000 milliseconds)

The next page will appear.

You can create some small animations using just couple of hundred milliseconds.


Script Wizard

See the Script language

Script Wizard will help you to write script actions without remembering the keywords.

It will not help you to add ‘if’ command or variables.


Script language
Script language String Variables  Functions

See also Scripting Basics in the Tutorial Section

Variables

All variables are global – they are valid for all pages.

The variables are internally float (3.1415) not integer (3)

You don’t have to define variable – all variables have default value 0.

Example:

a = a + 1

See Also String Variables

Arrays

Variables can be in arrays:

Example:

A[1] = 0

A[b+1] = A[b]

You don’t have to declare the arrays and arrays can be also negative

You can use the basic operations * / + - etc…

   Boolean operators = < > & |

The if - then statement

The if statement controls conditional branching. The body of an if statement is executed if the value of the expression is nonzero.

The keyword then is not required but it will be inserted there by the interpreter.

Expression can use any combination:

a<=b; a<>b; a=b; a=>b; a<b; a>b

You can use booleans & for and, | for or

if (a=b & a<10) then

end

...

The keyword end must close the inner code.

Example:

A = A+1

if (a>4) then

  Show("text1")

  Show("Rect1")

end

You can have if statement nested inside other if statements – but don’t do it if you can avoid it – the code will be messy

Important – there is no else command, you have to make another if statement instead.

For – next loop

The syntax is typical Basic syntax
Example:

for c = 1 to 5

** functions

next c

The loop can be counting up or down:

for c = 5 to 1

** functions

next c

To exit from the loop you can use the Return() command (this will exit the Script)

Infinite loop
In special cases (Semi-Parallel process) you may want to use infinite loop. It has syntax of:

for c = 0 to infinity

...

next c

For more about this reffer to the Semi-Parallel processes.

See functions

See String Variables


Editor

Editor for Script language.


Script Object

Script Object is non active object with only script inside.

It is not visible on runtime.

The Script Object can have assigned keyboard shortcut so whenever user press the keyboard shortcut the script will run.

This will allow to create applications without mouse, or with hidden keyboard commands (exit, special page etc..)

In order to use the shortcut option check «Run Script by Pressing» and specify the keyboard shortcut – any combination of a character, shift, control, alt.

(You can have only Shift, Control or Alt without any character)

In the combo box are special keys like up,down,home …

For more info about Script Language  go here.


External Commands and Page Actions

You can use External Commands to launch an executable when your viewer clicks on an interactive object (With Enabled actions)

For example, you can:

Run another project

This is a special action. It can run another MBD file project in the same window (like another page) or in a separate window.

If the Second parameter is NEW_WINDOW, the MBD file will be in a separate window. If the second parameter is THIS_WINDOW the new MBD will be in the same frame – the user will think it is just another page.

If your project has a lot of graphics, it’s a good idea to separate pages into different MBD files.

Multimedia Builder is designed primarily for small projects – like Autorun Browsers etc. You can create bigger projects, but you have to have different pages or groups of pages in a different MBD file, otherwise the MBD file will be very large.

Do not provide a fixed path unless you’re certain that your application will reside in a specific directory on your viewer’s system.

Provide a relative path. The path is relative to the location of the MMB player on your viewer’s system.

Use the <SrcDir> or <SrcDrive> to tell MMB to use the actual directory where the player will be located on your viewer’s system or actual drive.

TIP:

You can change all paths to the relative paths at the end of development using Paths Replace in Project menu. During development you can use fixed paths just to make it run. After you finish you can run Check & Distribute files in Project menu and you will see a list of errors if you are using fixed paths.

New:

In order to play videodisc etc.. the <CD>  was added. This is the shortcut for the first CD ROM in users system.

Click to see an example.

Page Actions

Only for Goto Page (Label)  you have to specify the Label of the page (example: Page 1)

External Commands can Run a program, browse the disc, jump to a web page (you need to specify http:// and URL), send an E-mail through default E-mail client ( you need to specify mail to: and the e-mail address) and much more…


External Command Example

The player is named AUTORUN.EXE and it is located on a CD inside the INSTALL directory.

Let’s say the CD-ROM is drive D:\ on the viewers system.

The command: <SrcDir>\BIN\INSTALL.EXE

will be translated into: D:\INSTALL\BIN\INSTALL.EXE

And <SrcDrive>\VIEWER\VIEWER.EXE

will become: D:\VIEWER\VIEWER.EXE


Actions

Any one object can trigger (at the same time) three different actions:

External Commands and Page Actions

If the user clicks on the object, this action can :

 Start an installation, run any external program, jump to your web page, send an e-mail, open a document, display a help file, run another MBD file, Browse the CD, etc…

 Move between pages of the MBD project

 Exit

Interaction with other objects and Video

Object can interact with other objects on the same page. (show/hide object, play video) on user actions:

 Mouse move over the object.

 Mouse click on the object.

This action allows you to add a professional look to your application (buttons glow when mouse moves over …)

Sound Actions

Object can play a sound if mouse moves over the object and/or another sound if mouse clicks on the object.

Multimedia Builder supports multiple channels, so you can still play a loop in the background without interruption.


Interaction with other objects and Video

An object can interact with other objects.  For example, a glow appears around a text when the mouse moves it.

Click on an item to get more information:

 Moving mouse.

 Mouse click on object.

Clicking the mouse on an object can trigger another action after the first one.

For example, the first action can hide a whole group and the second action can show a single member of the group.

For two actions with a mouse click and nested grouping you can create almost any effect.


Moving mouse

Show/Hide

Shows the object specified in the Object list box and then hides it if the mouse is not over the object anymore.

Show/Fade out

Instead of simply hiding an object, the object will slowly fade out. The object must only be a graphic object with Alpha transparency enabled.


Mouse click on object

Show/Hide

Show and then hide an object when the user releases the mouse button.

Video actions on Video Object -  Play, Stop, Pause Skip, 2x slow or 2xfast

Show

Show an object or a group. This will stay until an object hides it.

Hide

Hide an object or a group. This will stay until an object shows it.

Invert (Show-Hide)

Show or Hide an object or a group. If the object is hidden, this will show it and vice-versa.


Check Project and Distribute Files

At the end when you finish designing the multimedia application you would like to create distribution of your files.

From menu Project select Check & Distribute (Same as from menu File - Compile)

Click on an item to get more information:

 Distribute Project.

 Player.

 Full

 E-card

 Other Players

 Checking the Project.

The Secure Layer

This will process the mbd data in such way that no Text or Script would be visible if you look at it in the Hex editor. Also the file can't be loaded back to the designer (no password will help!) so it can only be played. However, note that the loading of file with Secure layer would need more time and memory that without this layer so you should use it only on necessary files.

The same option was added to Compress and Export to easy create mbd files which can't be viewed in Hex editors and loaded in designer.

Contents Copyright
This allows you to insert your text in the Comments field of executable properties. For example you can put your copyright for the contents you created or comments about used materials. You can put up to 60 characters. That doesn't replace the other MMB player properties, but it resolves some legal issues if your custommer doesn't want to put your copyright on the project pages but you still want to have your copyright or name there. Many other authoring tools didn't allow you to do this. You can access this option only in the Check & Distribute dialog box.

Generate Autorun.inf
If you creating autorun menu for CD then you need to generate autorun.inf and put it on CD together with the exe, mbd and all other files. Autorun.inf and the MMB project (exe or player.exe) must be in the root of the CD.
If you creating other than CD  projects then you don't need autorun.inf generated.


Distribute Project

You have to select the location where you would like to copy all necessary files.

Select the location with the Locate button. The standard windows dialog will allow you to create a new directory if you’d like.


Player

Today 95% of users have DirectSound installed and in the near future everybody will have (it comes with the new  Windows 95 and Windows 98).

But still, to be sure – MMB has two players – for DirectSound and without DirectSound.


Standard
Full Player

This is the default player - it has all the libraries included. In most of the cases you will use this one.


Auto
Other Players

Some other players may be avialable in the future with enhanced functionality. This is interface which will provide access to them


DirectSound only

Use this option if you need to have only DirectSound player.

Be careful – users without DirectSound will not be able to play your application at all!


Checking the project

This tool checks the project against fixed paths for WAVE, AVI and other external files.

 (See comments about relative paths in  External Commands and Page Actions )

You can create a distribution even if you have errors. You will be able to play the application, and you will only have problems with external files with fixed paths.

Resizing bitmaps and applying effects will create temporary bitmaps inside the project.

Those bitmaps are not necessary for distribution and removing them can significantly reduce the size of the project.

Compression

For distributing files on Internet or if the requirement is the size of file you can use powerful compression.

If you don’t have the problem with space, you should select uncompressed – the project will load much faster then with compression.

The compression will change the quality. The significant quality change can be seen after Good Compression.

Only one compression doesn’t change quality – ZIP (100% Quality)

If you want to compress files, but you don’t want to create *exe files (for example to send mbd to user gallery on Internet) you can use from menu File – Compress & Export instead.

Stand Alone

Standard MMB output is the player and the MBD data file.

With Stand–Alone checked, the compiler will produce only one .EXE file – the MBD data file will be linked inside the .exe file.

Important Note:

Check Project and Distribute files doesn’t copy the external files (WAV, AVI or other externals) to the distribution location. (They could be very big!)

You will be informed after you press the OK button.

In order to finish distribution of the files, you have to press OK.

The result message will pop-up.


Add Comments to Project

From the menu File – Comments…

You can add comments to your project.

If you want this window to open automatically after you open the project in designer, check the check box «show next time on Open».


Paths Replace

Menu Project - Paths Replace

Wave files, AVI files and other external files (setup files etc..) are not part of the MBD file (they could be very big) and they will stay separate.

It is very important they have paths relative to the player on the users system, not fixed paths.

(See comments about relative paths in  External Commands and Page Actions )

This tool allows you to change all paths in the project at once for Commands, Wave files AVI files and Script.

Click on an item to get more information:

 Search String.

 Replace With.

 Replace Whole Path.

 Replace All.

Note: The commands, waves and video files are separate files because it is good idea to put them separately on the distribution disk.  See example.


Separate Files Example

All external files (Setup, etc.) will be put in directory <SrcDir>\BIN

All wave files we will copied to <SrcDir>\Waves

And all videos we will copied to <SrcDir>\AVI

The <SrcDir> will be replaced at runtime with the actual directory of the player.


Search String

The string that will be replaced. Search for common strings, for example C:\WAVES


Replace With

Replace strings with this for example <SrcDrive>\WAVES


Replace Whole Path

Whole path to the file will be replaced. Great if you don’t have sources with some part of the path common. (If you use sound files from all disks on your computer but on distribution disk have to put them on one directory)

Example:

In project you use Wave files

C:\Windows\sound.wav

D:\MSOffice\Ppoint\beep.wav

We put Replace With string: <SrcDir>\WAVE

Check the Replace whole path and press Replace All

The result will be:

< SrcDir >\WAVE\sound.wav

< SrcDir >\WAVE\beep.wav

Now you have to copy all wave files to your distribution into the directory WAVE


Replace All

This is the actual button to make the replace action. You cannot cancel this operation, so it is a good idea to save the project before.


Functions
Basic Functions

The typical function has syntax:

Function("parameter1","parameter2")

There are functions with zero, one or two parameters. The parameters in many cases could be replaced by string variables, the syntax however stays the same: Function("variable$","variable$")

Hide("OBJECT")

Hide object or a group of objects

Show("OBJECT")

Show object or a group of objects. If you show animated gif the gif will start animate from the first frame.

Invert("OBJECT")

Show or hide object or group of objects. If the object/group was visible before this will hide it and oposite.

Example:

Hide("Rectangle 1")

a$ = 'Text0'

Show("a$")

Note: MMB 4.4 alows you to modifyfrom one page object on another page Master Layer and Master Page included.

Use syntax:Hide("Page::Object")

For example to hide object Rectangle1 on Master Page you use:Hide("Master Page::Rectangle1")

Examples:

Hide("Master Page::Rectangle1")

Hide("Master Layer::Rectangle1")

Show("Page 1::Text")

VideoPlay("VIDEO OBJECT")

VideoStop("VIDEO OBJECT")

Play and stop video (AVI) object

RunMBD("PATH TO MBD","PAGE LABEL")

Run an another mbd project in the same window. You can specify a Page where the new project will start – but you don’t have to.

This is very important command for creating big applications. You will put different blocks to separate mbd files and instead of moving between pages you will move between files.

This allows you to make really big multimedia without memory problems – the old project is deleted from memory as soon as new one is loaded.

Also if you using Full Screen Background (Kiosk)– this allows you to change the background bitmap jumping to another file and loading the background from there.

Don’t forgot to use <SrcDir> in the path !

Run("PATH","PARAMETERS")

Run external programs. You can run file viewers, setup utilities etc..

Also you can run another mbd project in different window. Even if you create stand alone file (autorun.exe) – call the same file with another mbd file as a parameter. (<SrcDir>\autorun.exe  <SrcDir>\otherfile.mbd). This will pen another project in different window – with different size and settings)

FirstPage()

LastPage()

NextPage()

PrevPage()

Page("PAGE LABEL")

Page commands – jumping to different pages within the project.

In the Page command you can specify LASTPAGE instead of page name. This will jump to the last viewed page within the project.

Exit()

Quit the application immediately.

Minimize()

Minimize the application. This is the Minimize button action.

ExitTimer("MILLISEC")

Exit application after number of milliseconds. Be aware the PageTimer will cancel this command. Also clicking on any active object will cancel the command – this is important – you can provide user with button to go back not to exit.

With this command you can wait until sound will play, or display your logo for few seconds etc…

PageTimer("MILLISEC","PAGE")

Got to a page after number of milliseconds. If you don’t specify the page – the next page will be taken. You can also use commands instead of page label: THIS_SCRIPT – will just run the script on the same page

THIS_PAGE – will start the same page again.

The difference is – page start will put all objects to its default stage and it will look also for background music – and then it will run the script.

Important: Clicking on any active object will cancel the command !

Using another PageTimer or ExitTimer will cancel the previous PageTimer.

With this you can make the self running presentation – if user doesn’t click on anything in few minutes MMB will go to the next page. If user click on some active object, the page timer will be canceled (User wants to stay on the page) and is up to you if you will leave it like that or start PageTimer again on Button click. For example you can make the portfolio show, where each item  is on different page and if user wants to stop the show he will just press the button Pause.

DisplayValue("TEXTOBJECT","VARIABLE")

Display an integer part of the variable in some text object. Good for counters etc…

Message("ANYSTRING","VARIABLE")

Mostly for debugging. You can make pop-up the message with an integer value of some variable.

LoadText("TEXTOBJECT","VARIABLE")

Tis command can load a text into text object (Paragraph Text, Text, Text Button) from String variable or file.  The command decides itself if the text in variable is just a plain text or it points to the file. It can expand the string to full path as well.

C$='<SrcDir>/MyFile.txt'
LoadText("Object","C$")
*** load a text file from the path directly to the Object.

C$='Whatever text'
LoadText("Object","C$")
*** display just the text directly in the Object.

In both cases (direct text or variable) the command will guess if the argument is a pointer to a file or just simple text. Now it should be much easier to use this command.

Read more in LoadText.

Return()

Return from executing the script. You can use it in if – end statement.

AGifPlay("ANIGIF OBJECT")

AGifStop("ANIGIF OBJECT")

AGifReset("ANIGIF OBJECT")

Animated Gifs commands. The play will play anigif from the actual frame, the stop will stop the animation.

The reset will set the actual frame to the first frame. How the anigif will animate depends on the Anigif properties.

RunScript("OBJECT")

Run script of some other object.

The best would be to run Script Object script so you can build some kind o global functions. However you can run script from any object – the Mouse Up script will run.

You can run the same script – and you will create recursive calls. Unless you are sure what you are doing don’t use recursion.

ScriptTimer("OBJECT","MILISEC")

Run script on object or Script object after a number of milliseconds. (See RunScript). Good for hiding some message after few seconds etc…

MCICommand("MCI STRING")

MCI commands.

This will send a string to a device. The string will tell the device what to do.

With this command you can access the devices for playing MPEG, video discs, record sound, play animation etc..

You can use <SrcDir>, <SrcDrive> or <CD> in the string.

Also use <This> with the parent comand to tell the device the MMB window will be the parent.

Here is a small sample to play MPG movie inside the mbd project in the position (100,50,100,100):

MCICommand("open <SrcDir>\sample.mpg alias MPEG style child parent <This>")

MCICommand("put MPEG window at 100 50 200 200")

MCICommand("window MPEG state hide")

MCICommand("play MPEG")

Example: (Open and close door on CD (beer holder))

MCICommand("set cdaudio door open")

MCICommand("set cdaudio door closed")

Some of the MCICommand functions can return a value (for example number of tracks on CD)

The variable MCIResult will have the result number.

Example: (returns number of tracks on CD)

MCICommand("status cdaudio number of tracks")

DisplayValue("Text","MCIResult")

Example2: (returns length (in seconds) of track 1)

MCICommand("status cdaudio length track 1")

DisplayValue("Text_totalsec","MCIResult")

Example3: (returns status of CD audio)

MCICommand("status cdaudio mode")

if (MCIResult==-2) then

  Show("Playing")

end

if (MCIResult==-1) then

  Show("Stopped")

end

For a complete understanding and the syntax, consult Microsoft Documentation.

This is accessing the device directly – be prepare for crashing if you are going to experiment.

OpenFile(" filter", "default")

Opens The File Open Dialog Box. The selected file will modify <File> shortcut and OpenFile$ string variable
The Filter

Example:

MPEG Files (*.mpg)|*.mpg|All Files|*.*||

This will create in file open dialog box two choices MPEG Files and All Files.

Note the | character between the items and the double || on the end.

The format is : Text displayed in The combo box |associated extension||

The other parameter is the default extension. Example

*.mpg

After using this command you can use <File> whenever you will use <SrcDir>

Example:

OpenFile("Text Files (*.txt)|*.txt|All Files|*.*||","*.txt")

Message("The file you selected is","OpenFile$")

LoadText("Paragraph","<File>")

This example will load a text file and display it in the Paragraph object (with label Paragraph) and display a message box with the path.

FileString("substring","variable")
Use after OpenFile
Searches <File> string for the first match of a substring.
You put the substring (for example): .wav
If the <File> has substring '.wav' in its string the variable (Second Parameter) will become 1

OpenFile("All Files|*.*||","*.*")

FileString(".wav","result")

if (result = 1) then

  WavePlay("<File>")

end

InstallFont
If you using some font which user might not have on his system – it will be substituted with other font – that’s not the effect you would like.
Using InstallTTF you can temporary install your font on users computer. This font will be uninstalled after you exit the application. The example: Put your funny.ttf font on the distribution CD and on the beginning of the application call: InstalFont(“<SrcDir>\funny.ttf”)

You can use Embedded Font.

Clipboard("SEND/GET","stringvariable$")
SEND or GET string variable to/from clipboard.

FileExist("PATH TO FILE","VARIABLE")

Tests if external file exists. If yes the VARIABLE will get value 1 else 0

Sound & CD Commands

SaveVariable/LoadVariable

Print Commands

Text-To-Speech Commands

MP3 List Commands

External Image Commands

Image Matrix Commands

Plugins and Plugin Commands\

SysCommand

Animation Commands


Text-To-Speech

What is Text-to-Speech?
Text-to-speech is a process through which text is rendered as digital audio and then spoken .
TTS has a big potential of the market's five major segments: education, disabled, computer interface, consumer and telecommunications.

InstallTTS
Install MS Text-to-Speech Engine from specified path.
The command first test the system if such installation is needed.
If user doesn't have TTS engine installed on his system, MMB can  very fast install it. You have to just put the TTS installation exe file on your CD and the rest is very fast and automatic.
The tts installation should be on Multimedia Builder directory inside TTS folder. There should be the file :

msttss22L.exe

If this file is not there (it has 2MB) you have to download it from the internet. Go to www.mediachance.com download page. (Note : In internet distributed MMB this file is not included – it would make the MMB installation too big for downloading)

If you planning to use TTS in your program for distribution you should call InstallTTS on the beginning of the program. If user already has TTS engine, the comand will continue with no delay.

InitTTS
Initialize TTS engine. This could take a few seconds on slow computer so the best place is to put it on the beginning of the program after InstallTTS command. This command displays small black box saying – Installing TTS, Please wait.

Say
Say the text.The TTS engine must be installed and Initialized.

SpeakText
Speak the text of any object which has text : Text Object, Paragraph Object, Button.
The TTS engine must be Installed and Initialized.

StopTTS
Stop what TTS is currently saying.

PauseTTS
Pause what TTS is currently saying, you can resume it by ResumeTTS command

ResumeTTS
Resume paused speech.

PitchTTS
The Pitch of the voice. (Frequency Hz) Between 50 - 200, default is 100

SpeedTTS
The Speed of the voice. (Words/minute) Between 30 - 450, default is 150


MP3 List

You have your "internal" mp3 list where you can add mp3 files or import files from external list.

MP3ListReset()
Delete All items from internal MP3 list.
MP3ListAdd("<SrcDir>\path")
Add Mp3 file to the internal list
MP3ListPlay("")
Play the internal list of MP3 files
MP3ListNext()
Play the Next song from the internal MP3 list
MP3ListPrev()
Play the Previous song from the internal MP3 list
MP3ListLoad("path")
Import the internal List from external list file.
This file is just list of mp3 files  for example :

<SrcDir>\zabka.mp3

<SrcDir>\sunshine.mp3

If you don’t specify any virtual directory with <SrcDir>, <SrcDrive> or <CD> the path to the list will be inserted there.

MP3ListRND()

Randomize existing virtual list.

MP3ListEdit()

Open  special window that enables user edit the virtual MP3 list, save to disk or load it from disk.

The adding new items is very easy - just drag and drop mp3 files from explorer to this edit window.

For sample about MP3 Lists see mp3list2.mbd

SearchForMP3("path")

This command will recursive search all directories from the path for mp3 files and it will fill up the MP3 List.

Example:

SearchForMP3("<SrcDir>\mymp3\")

See mp3Tags.mbd sample file


SaveVariable

SaveVariable
Save the variable in the registry under the Name identifier. Use LoadVariable to load the variable back.

LoadVariable
Load the variable from the registry Name.

Remember to set in General Settings the Registry entry: Check Save Last Position in Registry and set an unique name of your application. Then uncheck the Save Last Position in Registry.
The variable will be saved in the registry under the:

Registry Name (From General Settings) + The Name from the Save/Load Variable command
You should use it like that:

You have variable HiScore

WHenever the variable is updated use:

SaveVariable(“High Score”,”HiScore”)

And on the beginning of the program use
LoadVariable(“High Score”,”HiScore”)

So anytime you start program the HiScore will be loaded from registry.

If you use “High Score” name in some other application, you really need to change the registry name in the General Settings.


Credits

Thanks to all of you who sent me any suggestions or just nice words.

Special Thanks to:

Edd Twilbeck - for his ideas and encouragement and of course for the logo.
Derrick Yohn - for making this web space reality not just my dream.
Artur Svarc - for his beta testing.
Ronnie Toon - for sending me pages and pages of great suggestions.

Pierre Labelle - for Helping me with the Help File.
My great wife Zuzana - for her endless patience (she really hates computers now!)

and many other people...


About the Author

Why I started making my own multimedia program ?

What do we have for creating autorun menus for our software or front-end for Mixed-mode audio CD's in reasonable price?
There are many authoring tools on the market. Some of them are really good, but you don't want to spend $1000 to create autorun menu or CD browser. Some of them are cheaper, but you don't want to spend a month to learn how to use it.
I started making MMB to be able in 30 minutes create professional looking autorun browser. And here it is !
It couldn't be done without help of other people on the internet I never met.

So, what is MMB?
It's an authoring tool with great features and one of the best price in the industry!

It is great for small projects, autorun menus, cd browsers, multimedia applications for Mixed-mode CD's, toolbar applications etc.

However, if you going to make Encarta size multimedia, you should invest a bit more.  Yet, you can create an autorun for it!

Happy Authoring!


Capture Bitmap


Buttons - Project

•	New Page.

•	Open Project.

•	Save Project.


Buttons - Copy/Paste

•	Copy.

•	Paste.

•	Paste Bitmap from Window Clipboard.

•	Undo last action.

•	Redo last action.


Buttons - Settings

•	General Project Settings (File, title...)

•	List of Pages in the project.

•	List of Objects in the project.


Buttons - Image Effects

•	Blur bitmap image.

•	Sharpen image.

•	Flip horizontal.

•	Flip vertical.

•	Restore original bitmaps (Size, Effects...)


Buttons - Motion Effects

•	Fire and Explosion.

•	Cut Out.

•	Bevel.

•	Drop Shadow.

•	Glow.


Buttons - Other Effects

•	Wizard.

•	Insert Buble.

•	Insert Sparkle.


Buttons - Project Actions

•	Check and Distribute the Project.

•	Compile and Run the Project.


Buttons - Pages

•	Add a page to your project.

•	Master page of the project.

•	Master Top Layer of the project.

•	Show Objects from Master Page and Master Top Layout.

•	Delete a Page from the project.


Buttons - Page Actions

•	Previous Page.

•	Next Page.

•	Page Properties.

•	Test Current Page.


Buttons - Images Display

•	Bring to Front.

•	Send to Back.

•	Bring Forward.

•	Send Backward.


Buttons - Alignment

•	Align Left.

•	Align Right.

•	Align Top.

•	Align Bottom.


Buttons - Group

•	Group Manager.

•	Group.

•	Ungroup.

•	Add Selected Object to the Selected Group.

•	Remove Selected Object from the Group.


Buttons - Tools

•	Arrow: New Page.

•	Text.

•	Paragraph Text.

•	Text Button.

•	Bitmap.

•	Bitmap Button.

•	Animated Gif.

•	Video.

•	Rectangle: Insert and Fill.

•	Circle. Insert and Fill.

•	Line.

•	Hot Spot.

•	Script Object.


Area - Objects

•	Name of objects included in the project.


Area - Thumbnail

•	Image in thumbnail format.


Area - Pages

•	All the pages in the project are stored in this area.


Work Area

•	This is the place where you create and let flow your imagination!


Menu Bar

Includes all the elements divided into well organized objects.


External Image Commands

ViewJPG("PATH TO EXTERNAL JPG","CENTER")

This command opens external JPG and BMP file in new view window. With optional CENTER as a second parameter the window will be centered on the screen.

This command is great for Image disks - where user clicks on a small image in the mbd projects and the full version will be opened in the separate window.

Clicking on the window will close it. The window will remain its position for next time if no CENTER command is used.

ReplaceImage("BITMAP OBJECT","PATH TO EXTERNAL JPG FILE")

This command replace the current image in the Bitmap Object from external JPG file. The image Object will be resized to the size of new image.

ReplaceImage is permanent in one session - that means it will replace the image in the running project until you run the project again or use RunMBD command. Once you replace the image you may go to other pages and back but the image will stay replaced until you close the application.

ReplaceImage is great if you need to show many big images in the MBD project. For example catalog of houses. You don't have to put all the images in to the MBD objects (This will make it huge and you will need to split it to multi mbd files). Instead just create one page with one Bitmap Objects and the commands will replace the image in that objects from external jpg file. Like that you can easily create huge image kiosks or catalogs.

The Command works on Bitmap Object as well as on HotSpot. In case of Bitmap Object you will replace existing Bitmap with new one from disk. In case of Hotspot you will use the hotspot as a placeholder for the new image. Of course any actions set for hotspot will also apply on the new image.
Example:

You need to create project which bitmaps need to change often. Istead of redoing the project everytime you simply create the object with default bitmaps or hotspots and then on Page start you use ReplaceImage to load actuall jpg into the bitmap object.

Remove Image - you can leave the second parameter in ReplaceImage empty and this will remove the the image from the object.

ReplaceImage("BITMAP OBJECT","")

You can use this if you need to free some memory - remove images of object which will be no longer used.

Example:

Your project needs many images. All the images won't fit in the memory so you will need to load particular image on the page and then when going from the page you can remove it to free up some memory.

On Page script you will use ReplaceImage to load image from disk (CD) into a Hotspot. (Hotspot can be used instead Bitmap Object for creating a virtual placeholder).

Then on all buttons which are for going from the page (such as Next or Previous) you use ReplaceImage with the empty second parameter. This way the image will be always loaded when the page shows and unloaded when we exiting from the page.

As with many other command you can use page directive for bjects:

Page::Object

ReplaceImage("Page 1::Bitmap2","")

This example command will remove Image from Bitmap object called "Bitmap2" on page "Page 1"


Print Commands

PrintText("TextObject","FONT_FRM_OBJECT")
Print Text Object. First parameter is the text object (Text, or Paragraph Object)
In second parameter you can specify additional parameters.
Normally the text will be printed with the default print font (the optimal font and size for documents).The FONT_FROM_OBJECT parameter will print the text with the same font like in the object.

PrintPage("fit")
Prints the full page - what you see is what will be printed.

PrintRect("Rectangle","fit")
Prints only part of the page surrounded by any Object Rectangle. This object can by anything and it doesn’t have to be visible. It could be for example square on the background – everything what is inside the square will be printed.

Both commands have another option fit – this is the percentage of the fit to the page. Default (nothing) is 100 (means 100 %)

If you put 75 – it means the printed image will be just 75% of the width of the paper.


Sound & CD Commands

Wave

WavePlay("PATH TO WAVE","command")

WaveStop()

Wave comands. Play or stop external or internal (embedded) Wav file.

In the command you can specify LOOP, this will loop the wave until you use WaveStop().

Be aware looping works best with DirectSound. Without direct sound you will have gaps between the loops.

To use embedded wave just put the name of the wave without any path.

The names of embedded waves are (and must be) without extension.

MP3

MP3Open("PATH TO MP3")

MP3Play()

MP3Stop()

MP3Pause()

MP3 commands. MP3 file must be external. You have many ways how to play MP3 file (External Commands and Page Actions – there you have also MP3 FW and BW, From Page properties, from Sound Actions, from script)

If you use empty string in MP3Open, the Open file dialog will appear.

Look for CBK Objects to see how to get feedback from the mp3 player.

CD

CDPlay()

CDStop()

CDPause()

CDTrack("NUMBER OF TRACK")

CDFW()

CDBW()

CDPlayPause()

CD audio commands. Be aware if you making Mixed-mode CD’s the first track has number 2 (the 1 is the data track)

In CDTrack you can also use the variable: CDTrack("a")

Midi

MidiPlay("PATH TO MIDI","[LOOP]")

MidiStop()

Midi commands. MIDI files are external files.

MOD files

MODOpen("PATH TO MOD")
Open and Play Mod module File.

MODPlay()
Play opened MOD File.

MODStop()
Stop opened MOD File.

PlaySound("path")
Play all supported sound formats. The format depends on file extension. The command will first stop all currently playing sounds. You can use it after the FileOpen command passing the <File>

PlaySound(“<File>”);

Volume

VolumeUp("volume")
Increase Master Volume by 5% if no volume parameter specified. Volume parameter 0- 100 (percent of volume)

Example:

VolumeUp("40")

VolumeDown()
Decrease master Volume by 5%


E-Card

E-Card is a smaller stand-alone executable which you can send to somebody via e-mail.

The most important thing for e-card is the size, because it takes a while when you download files with e-mail client.

Some of the functions of the standard player were taken off.

The Restrictions.

 No mp3 or mod

 No full screen background

 Some other small restrictions.....

E-card should work on all Windows95/98/NT systems the same way as standard Stand Alone player.

From version 4.6 E-card is not dependable on any windows system dll's


VR Panorama

360 Panorama pictures are special pictures taken with digital camera in few angles and then stitched together - producing one long Panorama image.

MMB can play back the 360 Cylindrical Panorama images with the VR Panorama object.


Image Matrix

Image Matrix is an advanced Script object.

Imagine you would like to create a Game board with 5 x 5 stones, On each position of the board you can have one of the 3 images or nothing. This could be a lot of work with putting simple bitmap object and then all the show - hide commands for all objects!
Image Matrix helps you do this and a lot of other projects.

The size of the Image Matrix object is determined by the number of Columns and Rows. You must have at least the image #1 defined. The Columns and Rows are multiplied by the image #1 width and height producing the total Matrix size.

All the 3 images should be the same size.

See also the Matrix Functions.


Matrix Functions

MatrixSet("matrix object[column,row]","image index (0...3)")

Set and image for the Image matrix item.

For example we would like to display on position 2,3 (Column 2, Row 3) image number 2.

The matrix object has label MyMatrix:

MatrixSet("MyMatrix[2,3]","2")

We can use 0 in the matrix to tell MMB to set the value for all rows or all columns, or even for all items:

MatrixSet("MyMatrix[0,3]","2")
set the image 2 for all columns in the row 3

MatrixSet("MyMatrix[5,0]","2")
set the image 2 for all rows in the column 5

MatrixSet("MyMatrix[0,0]","2")
set the image 2 for all columns and rows (all items)

MatrixGet("matrix object[column,row]","variable")

This command will put to the variable the index of the image at the position [column,row]

Look at this program:

cur = 0

MatrixGet("MyMatrix[2,3]","cur")

if (cur = 1) then

  MatrixSet("MyMatrix[2,3]","2")

end

Current Column and Row

If you click on the Matrix object it would be nice to know on which Column and Row you actually clicked.
The variables MXCOL and MXROW receives this information.

Consider these two lines inside the script in the Image Matrix Object MyMatrix:

MatrixSet("MyMatrix[0,0]","1")

MatrixSet("MyMatrix[MXCOL,MXROW]","2")

These two lines does all the dificult job inside the Image Matrix object script.

The first line sets all items to image #1 and the second line set the item you clicked on to image #2.

The variables MXCOL and MXROW are the real beauty behind the Image Matrix.


Dynamic FX

Dynamic FX are animated images like Plasma, Fire, Smoke. Dynamic FX don't take much space, because they are generated on runtime, but they take more CPU.

On slow computers they can take so much CPU so your Sript Timer or Page Timer commands will have no time to execute. Always remember this when you working with Dynamic FX.

There are many parameters, just experiment and you wil get very impresive results.


String Variables

Basics

String variables have $ sign at the end:

mystring$

To asign a string to the variable we use:

mystring$ = 'This is a text'

Note: we use ' not " character

To put a ' character (Like in Oscar's) use \'

Example:

mystring$ = 'This is Oscar\'s project'

You can add backslash at the end of a string by using \\
path$ = 'c:\mydir\\'
will be displayed as c:\mydir\

Strings can use operator plus (as many as you want):

a$ = 'MMB '

mystring$ = a$ + 'is cool'

CHAR function

You cannot mix numerical and string variables.

To convert a numerical variable to string we use CHAR function

value = 2.45

mystring$ = CHAR(value)

VAL function

To convert a string variable to numerical variable we use VAL function

mystring$='1.222'

value = VAL(mystring$)

String in IF-END command

We use similar syntax to numerical variables:

if (mystring$='yes')

....

end

or

if (mystring$<>'yes')

...

end

Additional functions operating on strings:

Clipboard("SEND/GET","stringvariable$")
SEND or GET string variable to/from clipboard.

LoadText("TEXTOBJECT","VARIABLE")
Put the string into Text object (Text, Paragraph, Text Object...)


Input Text (Edit Box)

The Edit Box exports the text to the defined string variable and in case of integer or float type input box it also exports the numerical value to the defined numerical variable.

You must note:

This is only one way: from Input box to the variable, not the other way.

New in 4.8: The Variable associated with Input Box is now automatically initialized with the default text. You don't need to separate initialize the variable. (You can still override the variable in Page Start script)

To change the text in the Input Box on runtime you have to use:

LoadText("OBJECT","STRING VARIABLE")

The string variable doesn't have to be the one associated with the Input Text Object.

for example:

my$=' Enter your name here'

LoadText("EditBox","my$")

If you use non-string type (integer or float) the user will be able to enter only the characters used by this type (numbers, floating point, exponet, minus sign)


SysCommand

SysCommand("command","parameters")

SysCommand is an interface to more advanced properties of your project - like size of the window, position etc... The first parameter is the command. Comand is not case sensitive, however we use here command with mixed case - for better visibility. Parameter is aditional parameter, numbers, string etc... depend on command.

Commands:

ResizeWindow

SysCommand("ResizeWindow","width,height")

Dynamicaly resize the window. The width and height could be constant numbers or variables. If width or height is zero - then the diameter will stay the same.

Example:

SysCommand("ResizeWindow","0,400")  - resize the window to height 400 pixels. The width stays the same.

SysCommand("ResizeWindow","320,400")   - resize the window to width 320 and height 400 pixels.

a = 200

b = 100

SysCommand("ResizeWindow","a,b")   - resize the window to 200 x 100

CenterWindow
SysCommand("CenterWindow","")

Move the project window to the center of the screen.

MoveWindow

SysCommand("MoveWindow","x,y")

Dynamicaly move the window to the position x and y (Left Top corner of the window)

Example:

SysCommand("MoveWindow","0,0")   - move the window to height left top corner of the screen.

Note: MMB has defined variables ScreenWidth and ScreenHeight with current width and height of the user screen (not the project) in pixels.

AlwaysOnTop

SysCommand("AlwaysOnTop","")
Set the project window always on top (Top most). The window will stay all the time on the top of all other windows.

NOTAlwaysOnTop

SysCommand("NOTAlwaysOnTop","")

Return the project window to the normal (not top most)

CopyFile

SysCommand("CopyFile","source$,destination$")

Copy a file from the source to the destination. If a directory of the destination doesn't exist this command will also create necesary directories.

Example:

destdir$ = 'C:\Program FIles\CopyTest'

dest$ = destdir$ + '\testfile.txt'

source$ = '<Embedded>\text.txt'

SysCommand("CopyFile","source$,dest$")


Plugins

Plugins are windows dll build with MMB SDK (software development kit). Plugins expands the functionality of MMB.

Plugins can behave the same way as other objects. This sections is for developers. The plugins are compiled using VC++ and the MMB SDK. If you are user of some MMB plugin please refer to the documentation included with the plugin.

Note: The MMB plugins are dll's and plugins made for MMB. Other plugins like plugins for Photoshop will be not working !

To load plugin: Menu Object - Plug In - draw plugin rectangle on the work area

The rectangle says: Plugin (Empty), double click on it and from the properties window you can load the dll.

Dll can be external or embedded. If the plugin DLL stays external you dont have to write <SrcDir> if the plugin will be in the same directory as the autorun.exe or in the subdirectory Plugins.

After you load the DLL, MMB will ask you if you want to use embed the plugin or not. If you select yes, the plugin will be embedded.

Plugin can have its own properties. If this is the case of the plugin - the Plugin properties will be enabled.

Also some plugins require one, two or three bitmaps to be loaded - then the Image 1...3 will be enabled.

The plugins for MMB are in the sub-directory Plugins. By default there is only one sample plugin TenBlobs.dll

Script Action: Plugin can have also a script on click asigned to it. If user click on the Plugin Object this script runs.

Some plugins (like standard Dll's) doesn't require any MMB interface and they don't display anything as an objects.

For example dll which has its own separate window or dll which play some special sound format etc..

There are few Functions in the script for such dll's or plugins:

PluginRun

PluginRun("PlugIn","GlobalVoidFunction")

You load dll without MMB interface as a plugin, the properties will say Unknown Interface but you can still run a global void functions from it.

See SDK for more info. The first parameter is the loaded Plugin object. The DLL doesn't have to be made with the SDK.

PluginSet("PlugIn","variable")

PluginSet("PlugIn","stringvariable$")Set the variable or string variable to the global function of the plugin - the DLL must be done with the SDK.

PluginGet("PlugIn","variable")

PluginGet("PlugIn","stringvariable$")

Get a value or a string from the plugin. The plugin must be made with the SDK.


Clone Bitmap

If you select any Bitmap Object and go to the menu Object, you have enabled the item "Clone Bitmap Object".

This will make a virtual copy of the bitmap object. The new Clone object 'copy' all the visual properties of the parent Bitmap Object.

Now if you change the parent object (Bitmap) for example enabling the Alpha transparency, all the child objects will change as well.

Note: Clone Objects can exist acros pages!

On 'Page 1' we copy the Clone Object to the clipboard (Ctrl+C) and here on Page 2 we paste it (Ctrl+V)  - we have child of the parent bitmap from Page 1.

If you open the Clone properties, you will see its Parent is 'Page 1::Bitmap'

Knowing the fact the clone objects takes very little space we can make some tricks (animations) with the script and clone objects without creating huge files

Exploring the Clone Object Properties you notice the Clone Objects have some litle indenpendency from the parent. They can be indenpendently Shown/Hiden and they each have its own action properties.

See CloneObject.mbd sample


LoadText

LoadText("TextObject","variable$")

LoadText("TextObject","path")

LoadText("TextObject","<List>")

LoadText("TextObject","<List>Number")

LoadText("variable$","path")

LoadText("variable$","<List>Number")

Important command for string variables.

The load text loads a string, a file from the path, a list or a single item from the list into the text object (Text, Paragraph text, Input Edit)It also loads a file from the path and a list (or item from the list) into the string variable.

The list is the MP3 list

Tis command can load a text into text object (Paragraph Text, Text, Text Button) from String variable or file.  The command decides itself if the text in variable is just a plain text or it points to the file. It can expand the string to full path as well.

C$='<SrcDir>/MyFile.txt'
LoadText("Object","C$")
*** load a text file from the path directly to the Object.

C$='Whatever text'
LoadText("Object","C$")
*** display just the text directly in the Object.

In both cases (direct text or variable) the command will guess if the argument is a pointer to a file or just simple text.
If the file doesn't exist the LoadText will display it as a string.

Direct format

The previous format let MMB guess what we like to do (read text from file in string variable or display the string variable as a text). If you (or MMB) are in doubt, use the direct command before variable:
STRING:variable or FILE:variable

Example:
path$ = '<SrcDir>\myfile.txt
LoadText("Text","FILE:path$") will load the text from a file specified in the path$
LoadText("Text","STRING:path$") will load the text from the path$ directly - in our case the Text will show the <SrcDir>\myfile.txt

See more in loadtext.mbd sample file and StringBasic.mbd sample.


MCI Object

Another way how to play Video (or Audio as well) is to use MCI interface. This could be done by using MCIcommand from the script.

However because the working with MCIcommand is abit complicated the easy MCI object was introduced.

This makes easier to play video or audio using MCI without doing much scripting. Let's say you want to play ASF so instead of bunch of  MCICommand script lines you simply draw a MCI object which could play your asf automatically on page start or you can control basic functions (play, stop, close) with new script command MCIObject.

You can use it even without any scripts if you select Run afterpage start. Then the video will simply play and finish.

To control MCI object  you use script command

MCIObject("Object","play")

MCIObject("Object","stop")

MCIObject("Object","pause")

MCIObject("Object","close")

where Object is the Label of the MCI Object

Note MCI objects uses the windows drivers to play selected format! User has to have Windows Media Player installed to support formats like mpeg, ASF, mpeg4 ...


Primitive
Primitive Object

Primitive objects can be active.

Rectangle

It can be filled, with a border (Line), without a border (None), or using a windows border – raised or sunken.

Circle

Uses the same properties as the rectangle object.

Polygon

With this version of MMB the polygon has very limited functionality – it cannot be resized, but it can have a different fill and border, or no border at all.

Line

Line is an inactive object. It can not have an action.

You can make this object interactive by inserting some actions.

For more info see the Actions.

Tip: Nice multimedia applications can be created just by using the primitive objects and text!


Object
Objects

MMB is visual object oriented authoring tool. It means that you visually place a multimedia object (Button, Image, HotSpot, Video etc.. on the screen. You can resize it and if you doubleclick on it you will see its properties. You can find all the objects in the Object menu and most of them are on the left vertical toolbar.

Introduction to Objects

Written by Rodd.

Objects are the parts that you can insert into your projects pages of Multimedia Builder to really make it perform.
By using Objects your project can:-
Display information, graphics, special effects, or other (hidden) objects.
Gather information, and calculate or make decisions based on the information.
Objects can be added to a page by either selecting the top menu 'Objects' and then selecting the particular object; or by simply clicking on the object icon on the 'Object bar' at the left side of the screen. The objects' properties settings will have a section called 'Actions'.
Many objects may have a 'Tooltip' option. Any text entered into the 'tooltip' section of the object properties will pop-up as a prompt when the cursor is placed over the object when your program is run.

An 'Active' object is able to perform actions including: running external command and page actions; interact with other objects and video; play sound actions; or run scripts.

Text:
Use 'text' objects to display headlines, body text or any other words that will be displayed on the screen. A text object can be active.

Paragraph Text:
The Paragraph Text object has automatic word-wrapping (scrollable) for long text.
Drag the text rectangle on the screen and the text will fill the rectangle.
If there is more text than can fit inside the visible rectangle, the Scroll Bar will appear.

Bitmap:
Bitmap object can be active or inactive. Bitmap object can be built from two parts: Image and Transparency Map (Alpha transparency). Primitive objects can be active. A Bitmap object can actually be any of the following graphic file types: BMP; JPG; GIF; PCX; PNG; TIF.

Bitmap Button:
This allows you to make a button from three images (for the normal view, mouse over view, and clicked view); or
you can choose 'Auto-Button' to make a button with the look of a Windows button using a single bitmap for the normal view.

Edit TextBox: this object allows you to get data from the user to use in your program. It puts the data into a variable for use within scripting.

Animated GIF: allows you to insert an animated GIF graphics file into your project. This AniGIF can also be controlled in script by using 'AGifPlay', 'AGifStop', or 'AGifReset'. In the Animated GIF properties window you can also select Transparency, Auto play, Loop, Speed, and 'After last frame' actions (hide AniGIF, or run Script).

Video: allows you to insert a video in your project using the following formats: AVI, Mpeg, MOV, VideoCD.

Image Matrix Object: Image Matrix is an advanced Script object.
Imagine you would like to create a Game board with 5 x 5 stones, On each position of the board you can have one of the 3 images or nothing. This could be a lot of work with putting simple bitmap object and then all the show - hide commands for all objects!
Image Matrix helps you do this and a lot of other projects.
The size of the Image Matrix object is determined by the number of Columns and Rows. You must have at least the image #1 defined. The Columns and Rows are multiplied by the image #1 width and height producing the total Matrix size.
All the 3 images should be the same size.

Dynamic FX:
Dynamic FX are animated images like Plasma, Fire, Smoke. Dynamic FX don't take much space, because they are generated on runtime, but they take more CPU.

Fill Rectangle:
Allows you to draw a rectangle and select the fill colour and border. The rectangle can be active.

Circle:
Allows you to simply draw a circle and select the fill colour and border. The circle object can be active.

Line:
Allows you to draw a straight line on the page in your project. Lines cannot be active.

Hotspot:
HotSpot is an invisible area you can define on the screen where your viewer (user) can click or move mouse to make an action happen. The area could be around a word, on parts of an image, etc. Hot spot is invisible to the viewer. However, in the designer you see hot spots as an area with a dashed border. A HotSpot is an active object.

Script Object:
Script Object is non active object with only script inside. It is not visible on runtime.
The Script Object can have assigned keyboard shortcut so whenever user press the keyboard shortcut the script will run. This will allow to create applications without mouse, or with hidden keyboard commands (exit, special page etc..)

Objects not on the left 'Icon Bar':-
Polygon: allows you to draw a polygon on the page. You can select the fill colour and a border. The polygon object can be active.

Metafile: Allows you to insert a Windows metafile graphic into your project. Metafile graphics cannot be active and do not have a properties window!

PlugIn: allows you to insert a PlugIn into your project. A PlugIn is a small program which has its' own capabilities that can be inserted into your project. PlugIns can be made and distributed by independant programmers. Please refer to 'instrucional documents' provided by the individual programmers to set that PlugIns properties. examples of existing PlugIns are: clock; multiple timers; advanced functions; etc.

Cursors
Any interactive 9clickable) object can have different cursor - you can choose from predefined cursors or load your own (also animated).
The cursor dialog in page, text button, bitmap button and hotspot has assigned 5 Custom cursor location. If you select unassigned custom cursor it will prompt you to load either *cur or *ani file. These cursors will be auto-loaded into Embedded files. So if you don't want the cursor anymore, you can delete it from there.

See Advanced Objects


Animation Command
Animation Commands

MoveObject("Object","x,y,w,h")
Move (and/or resize) the object (or group) to the x,y position. The w and h parameters are not required and if they are defined the object is resized - However it wont resize any bitmap object or text - it resize only its active boundaries. But it works fine for rectangle, buttons, hotspots...etc..
Yu can make a code:

for i=0 to 100
MoveObject("Bitmap","i,20")
Refresh()
Pause("30")
next i
and it will move the object form left to right!

MoveTo("Object","x,y,steps,type")
This simple command moves object (or group) from current position to the x,y using # of steps. The type can be EASYTO, EASYFROM or none to define the linearity in time. It basically does the same as code above, however you can specify slowing or accelerating with the TYPE.

EASYTO starts with normal speed and slows down as it approaches the end .point

EASYFROM starts slowly and then it accelerates

Refresh() command
This command will force to redraw the changes. It also works like a pump, if you use Refresh() in a loop the program reminds active and in fact you can still interact with the active objects (while the loop is continuing).

Pause("ms") command
Pause command in the script, takes a number of ms to pause before continuing the script.
Note: this will result in semi-parralel processing. While the script is pausing, the rest of the project is active and in fact you can run by some action the same script again.


Compress and Export

Menu File-Compress and Export

Sometimes you just want to export the MBD project without actually creating the executable player. (For example you want upload your project to the discussion board) This allows you to chose the compression different than the default compression.

Password

You can chose a password which prevents to open the file in designer. The file will play in player without limitation.
This options can be use for example if you creating a large presentation which is divided into few mbd projects. With password you can prevent from seeing this file in designer.

The Secure Layer

This will process the mbd data in such way that no Text or Script would be visible if you look at it in the Hex editor. Also the file can't be loaded back to the designer (no password will help!) so it can only be played. However, note that the loading of file with Secure layer would need more time and memory that without this layer so you should use it only on necessary files.


Introduction to pages

A page is used to contain a group of objects and their functions. The groups of objects and functions
are arranged on a page so that the page can perform a chosen operation. Therefore you can
think of pages as a way of organising your program into seperate operations needed by your program
to do its job. You can use pages as a way of jumping around from one operation to another in your project.

Although many projects can be built using only one page, using multiple pages can make the building
of the program easier and more logical to understand. This can also be handy if you want to
update your project at a later date.

The disadvantage is that each page added can add to the size of your final project, making it less
suitable if you want to distribute it across the internet.

Multimedia Builder also has two special pages that provide added functions to your project:
Master Page: objects on this page will show on all pages (under that pages objects!)
Master Top Layer: objects on this page will show on all pages (over that pages objects!)

(Written by Rodd)


Getting Started

At the menu select:
‘Project’ and then ‘General Settings’

Enter a size for the display area of your project in ‘Window Size’
For example enter 320 x 240
Enter your own ‘Window Title’
eg enter ‘My First Project’
Click ok

Run your project to see what it looks like!
Select ‘Project’ and then ‘Run’ from menu.

Exit your project back to the MMB editor.
Now you can start adding ‘Objects’ and ‘Functions’

More Info on ‘Getting Started’

In the “Project Settings’ window.
Window Size: When choosing a window size consider the following:-

Aim to keep your project window size to 640 x 480 or less. This is the standard setting to suit a 14” monitor (and we can assume that this is the smallest monitor that will be used by others to view your program!). If you make your project window larger than 640 x 480 and a user runs it on a computer with a 14” monitor then a portion of your program will not fit on their screen.
Common settings for monitors: 14” = 640 x 480, 15” = 800 x 600, 17” = 1024 x 768.

Standard Window: If you remove the ‘tick’ your project won’t display the normal MS Windows style of window. That is, no title bar (eg My First Project or the default ‘Welcome!’), no exit button, and no border.
If you then place a tick in ‘Window has Custom Shape’ you will be able to use the ‘Outline Shaper‘, or ‘B/W Mask’, options to change your projects display window from the standard rectangle to any other shape that you choose. Refer to the help on ‘Outline Shaper’ or ’B/W Mask’
To learn how to use these advanced options.
Movable: if this option is selected AND your project window is smaller than the screen the user can use the mouse to drag it to another position on the screen.

Style section:
Always on top: when this is ‘ticked’ your program will always be on top of any other programs that you run at the same time. In other words your program will be visible over the top of any other running programs. A typical use for this would be a small ‘Menu’ program that starts other programs, whereas you don’t want the new programs to cover over your menu!
Save last position in registry: if this option is selected MS Windows will remember the previous screen position of your program, the next time your program is run. It is advisable to give each of your programs a unique name for the registry key (default is ‘MyApp’) if the ‘Save last position in registry’ option is used.

Background Mode section:
Full screen background: if your project window is smaller than the screen other programs or Windows icons can be seen behind it (and therefore selected by clicking them with the mouse). The ‘Full screen background’ fills the surrounding space with the color selected (Solid Fill) or a picture file (Image) and prevents the user from selecting any other background programs with the mouse.
Disable Alt-Tab in Win95: This works in Win95/98 but not NT or Win2000.
By selecting this option you can prevent the user from pressing the ‘Alt’ + ‘Tab’ keys to switch between programs. Also works with ‘Ctrl’+’Alt’+’Delete’ keys!!
Cover Windows Taskbar: select this option to prevent the user from using the MS Windows taskbar to ‘Start’ or switch between programs.

If 256 colors selected:
If a users computer is only set to display 256 colors you can use this option to run another file or simply to go directly to a specific page in the project. The page may simply display a message telling the user that the computer needs to be set to more than 256 colors to use the program! The separate file may be another project that is limited to using 256 colours.

Palette:
Note: Only for 256 colors.

Graphics MMB: Optimized palette for most full-color pictures. Use this palette when creating pictures or images. Extract the palette in the Palette directory (palette.bmp) using your graphic editor, and then apply it on all images.

Windows Standard: Windows standard palette is recognized by all graphics applications.
Use it whenever your projects deal with screen captures.

Note:
For added security also refer to the CBK_EXIT topic for capturing the ‘Esc’ key!!!

(Written by Rodd)


Embedded Fonts

1. In the first page of your project (oh sure, you could put it on the last page just to be contrary, but do you honestly think it's going to work?) click on "Project"

2. Click on "Embedded Files"

3. Click on "Add"

4. Navigate to the folder containing your font, select it and click open

5. On the "Embedded Files" window, click "OK"

6. At the bottom of the page, click on "Page Properties"

7. In the new window, click on "Script"

8. In the cute little box, type the following

InstallFont("<Embedded>\thefont.ttf")

9. Save your project

10. Thank all the folks at MMB Forum that are always so
kind to share their knowledge with the rest of us.

11. *Make sure that the font is freeware or you have the right to distribute it.

(By E.Barry)


Scripting Basics

Scripting Basics

Scripting in MMB is something many users overlook. They think it is too difficult of confusing. I'm here to tell you that it's not. While it can get complicated, the things many users want, like buttons that do more than one thing when clicked, are nothing more than a few easy lines.

MMB's script language is built around four main types of elements: commands, variables, decision structures (doing things based on a variable's value), and loops. There is also a fifth element, called comments, but they have no functions, they only make your script easier to read.

Before we get started making something that really works, lets learn about comments. To add a comment you simply add an asterisk (*). From that point on, nothing else on the line will be read by the MMB, it will just skip to the next line.

Commands

The second easiest element of scripting are the commands. Commands are simply a special word, called a keyword, followed in parentheses (and quotes) by the information it needs to perform a specific function (the pieces of information are called parameters). With the exception of SysCommand, all commands only perform one function. A command looks something like this:

Keyword("Parameter")

("Keyword" is of course not a real command, but just an example.)

Most commands require at least one parameter. They are usually things like paths, objects on a page, or variables. Some commands require two parameters, each of which are in quotes and separated by a comma. Each one is not in its own set of parentheses though. All the parentheses do is separate the keyword from its parameters, within the parenthesis commas separate the parameters. So a command with more than one parameter would look like this:

Keyword("Parameter1","Parameter2")

So a brief review before we move on, a command is simply a line of script that does a specific function. They are made of the keyword, which starts the command, and parameters. The list of parameters (or pieces of information a command needs to know) is placed in parentheses, and commas separate parameters when there are more than one. The parameters themselves are placed inside quotation marks. Also, some commands don't need any parameters, these are still followed by parentheses, but have nothing inside them (i.e. Run() ).

Variables

Variables are a very important aspect of scripting. They allow you to do more than just execute a series of commands. Variables can be thought of as boxes that hold values. Values are, as you can probably understand, are the information stored in the variable. Imagine you want to keep track of whether a button has been clicked. You would use a variable to tell you.

There are two types of variables, which are very easy to remember - numeric and string. As you can probably tell, numeric variables hold only numbers and string variables hold both numbers and other characters, like a text file. So MMB can tell the two apart, the names of string variables have to be followed by a dollar sign ($).

But wait! What is a variable name you ask? Simply put, what the MMB uses to remember what each variable is. OK so maybe that wouldn't be that easy. But how about this: If variables are like boxes, the names are like the labels on the boxes. If someone tells you to bring them the box with something specific in it, you wouldn't know what box it was in unless if all the boxes weren't labeled. So a variable name allows MMB to remember what box it put the value (information) in. You can name a variable anything you want, though it can only be alphanumeric characters (that is, letters of the alphabet and numbers) and underscores (_). Also, like I said before, if you want the variable to be a string you need the last character of its name to be a dollar symbol.

So you know what a variable is, but now you want to know how to user these gifts of God. Well it's pretty easy. When you want to put something in a variable, all you have to do is make a line that starts with a variable name, then put an equal sign, and then the value. (String values must be surrounded by single quotes aka apostrophes (').) Typed out it would look something like this:

**for a numeric variable

MyVariable=10

**for a string variable

MyVariable$='My String'

(Notice I used comments at the end of each line. They are there to make the script more understand able. They aren't necessary to set a variable.)

If you want to change the value of a variable later, you do the same thing, entering the new value. You can also the value of one variable copied to another by putting its name in place of the value, like this:

**for a numeric variable

MyVar2=MyVal

**for a string variable

MyVar2$=MyVar$

MATH FUNCTIONS

Now you may be wondering what good is it to have two different kinds of variables. Why do you need numeric variables if you can just as easily use a string to hold the numbers? One of the reasons are math functions.
The format is almost exactly like kindergarten math - basic addition, subtraction, multiplication, and division. The only differences are that you use * for multiplication, and / for division. Here's an example of how to use math functions:

A1=10 + 2 **equals 12

A2=A1 - 2 **equals 10

A3=A2 * 2 **equals 20

A4=A3 / 2 **equals 10

Notice that for A2, A3, and A4 we use variables in the equations. That's the beauty of math functions, instead of just taking numbers, it can also use numeric variables. That's why you can't use strings. The math functions can't use letters, because you just can't do math with letters! So numeric variables are used just to make sure there aren't any strings.

Another nice aspect is that you can use the value of the variable you want to store the result in as part of the equation. You do it just like above, here's an example:

A1=A1 + 1

This works because MMB first replaces the variable name in the equation with its value, then doing the equation.

THE LIFE OF A VARIABLE

So if I have a variable, will I always be able to open it? Only while the program is running. When the program closes (either by choice or crashing) the program removes all its variables from memory. Why can't it just leave the variables there for later? Because programs use RAM to store variables. RAM is for short-term storage only. There is a limited amount of space there, and if every program kept all its variables there, soon you wouldn't have any memory left to run things. In fact, even if it could just leave it there between uses, the computer clears everything from RAM when it shuts down. But you * can * access a variable between pages in your project. Also be aware that when you use the Run Another Project function, (or the RunMBD command, which does the same thing) unless you use the NEW_WINDOW parameter you will lose all the variables you previously had. To use variables again later you can use the SaveVariable and LoadVariable commands to save to the registry (which will be covered in another lesson).

OK, I'm finished with a variable, now what? Don't do anything. In fact, there's nothing you can do other than just leave the variable there. As stated before, when the program closes it will get rid of the variable for you.


Predefined Functions

Constants and system variables

There are few constants:

TRUE – has value of 1

FALSE -  has value of 0

ScreenWidth - returns width of the display screen

ScreenHeight - returns height of the display screen

MXROW, MXCOL - for matrix object, returns the position of clicked matrix object - see Matrix

MCIResult - returns result from MCICommand function. See more in Basic Functions
CBK_Time - as the CBK_Time object, but this variable returns the Time in seconds (integer)
CBK_Total - as the CBK_Total object, but this variable returns the Total Time in seconds (integer)

OpenFile$ - after using a command OpenFile from the script, this string variable will have the path of the opened file

Random Function

RND(Maximum)

Will return random integer number in the range 0 …maximum

Example:

A = RND(50)+1

Integer function

Always makes an integer value from the expression.

a = INT(x/100)

if (a=0) then

...

end

ABS function

Returns Absolute value of expression

a = ABS(x-100)

Mouse Functions

MOUSEX( )
MOUSEY( )

returns x and y position of the mouse cursor

x = MOUSEX()

Object Functions

OBJECTX( Object label)
OBJECTY( Object label)
These functions return the current position (left, top corner) of the object specified by the label.
x = OBJECTX(Text1)

ISVISIBLE( Object label)
This returns
-1 if object doesn't exist on the page,
0 if object is hiden
1 if object is visible

visible = ISVISIBLE(Text1)

if (visible = 0) then

  Show("Text1")

end


Semi-Parallel processes

Once we use Refresh() command in the loop we start Semi-Parallel process or what we call Parallel loop.

That means while the loop is still counting we can interact with any objects, run other short scripts and make other actions.

See first example: Normal loop

for n=0 to 10000

  a=n+1

next n

Normal loop will pause the MMB (it will be inactive) for the time until loop will finish. You can't click on any buttons during the looping.

This is Parallel loop

for n=0 to 10000

  a=n+1

  Refresh()

next n

The command Refresh() will process the parallel interactions - that means while the loop is still looping we can click on buttons and run short scripts.

You have to remember
Any other (parallel or not) loop will pause the first one until the second will be finished. See the chart below

The loop chart:

You should use Prallel loop only if you are certain what it does.

Example of using infinite loop.

With Parallel loop we can use also infinite loop option. (But you have to remember to exit)

The script will make the object Circle sticky to the mouse cursor - until some other object doesn't set the stop to 1.

stop = 0

for n=0 to infinity

  MoveObject("Circle","MOUSEX( ),MOUSEY( )")

  if (stop=1) then

    Return()

  end

  Refresh()

next n


FAQ

What OS are supported ?
MMB and the applications you create with it works on Windows Platform. It works on Windows 95, Windows 98, Windows 2000 and Windows NT.

Is there a version for MAC?
No there is no version for MAC.
MMB is for Windows platform only.

Do I have to pay any royalties?
No. You need to just register once and you can make as many applications as you want.

Can I distribute the files I create?
Yes. If you are registered user you can distribute your files free of any royalties etc...

Is there a book about MMB?
We are not aware of any book about MMB. However MMB may be mentioned in books about multimedia generally. The best place to learn MMB is looking at a many samples on this or many others web pages dedicated to MMB. Also Discussion Board is a great help.

What is the recommended graphic application to make my art work?
We recommend CompactDraw (www.compactdraw.com) because it is the only program where you can make a fully functional page with buttons and then export it to MMB. However there are other tools you can use as a PaintShop Pro, PhotoShop etc...

What is autorun ?
When a CD-ROM disk is inserted into the drive the Windows examines the disk looking for file autorun.inf .The autorun.inf is a simple ASCII text file and could be edited just with the notepad and it tells windows what program to run and what icon to show for the drive when it appears in the My Computer folder.

What are the lines in autorun.inf ?
Inside the autorun.inf file you will see lines:
[autorun]
OPEN=autorun.exe
ICON=autorun.exe,0

The autorun.inf file must be on the root of the CD. However you can even put that file to the root of a harddrive and then your icon of the harddrive will change.
Note: You can use for the icon directly icon file if you want so the third line will look like: ICON=myico.ico

How to enable Autorun on my computer?
Select Start Button, then Settings > Control panel. Doubleclick on System. Select Device Manager tab, expand the CD-ROM entry and click on appropriate CD-ROM drive and click Properties. Select Settings tab and finally check the "Auto insert notification" box.a
Trick: If you as an user don't want the AutoRun application to start when you inserting new CD, hold down the Shift key while you insert the CD !

I f I want to make an audio CD with digital multimedia track, what is the format and software to do it?
The industry standard format is CD Extra. In this format the audio tracks are recorded in the first session and the second session are the data. You can create CD-Extra with most of the mastering software, Adaptec Easy CD Creator for example.
There is a also an older format named Mixed Mode CD. On such CD the audio and data are recorded in the same session where the data are as a track 1 with following audio tracks. The disadvantage of this is that a CD player can play a CD from track 2 skipping the track 1.

Why I can't play Audio Tracks from my CD-ROM
You can't play Redbook audio (regular CD audio tracks) and read files off the CD at the same time. Redbook audio tracks are streamed off the CD at 1x speed. If your drive is faster than 1x (let's hope so), it actually slows down to play Redbook.
Most games do one of two things:

•	Copy all game files to the hard disk during install. This ensures the fastest possible loading times, brisk play, and huge installs (Balder's Gate install is over 500MB).

•	Read all necessary data off the CD before starting the Redbook track. If your level/map/whatever data is small enough to fit entirely in RAM, you can get away with this.

MMB actually offers a third strategy: embed your data. This means your data gets unzipped to a temporary directory each time you run. If at all possible, I would recommend not using this option unless absolutely necessary.
I would probably use MP3s, since they are already so nicely supported by MMB. This sort of depends on what kind of machines you need to run on and how CPU intensive the rest of your project is. MP3s can eat some clock cycles, Redbook audio is free.

Why my video doesn't play on other computer?
The video on PC is a complex issue. Please read the next questions about AVI

Avi or MPEG ?
The AVI format is supported in all versions of Windows. The MPEG format is not supported directly by OS and it require a MPEG software player installed which supports MCI.
New Windows Media Player can play many formats and MPEG as well. All new Windows 98 installation should have MPEG support already installed (or not...). For older versions of Windows you have to carry the Windows Media Player installation or DirectShow 6 and newer with you.
MPEG format has better compression and quality than standard AVI, however it needs more CPU to play the video.
To make it more difficult not all AVI's are the same. AVI uses Codec's to compress its data. (And in fact it can also use MPEG codec)

What is CODEC ?
You can use uncompressed AVI, but you will end up with hundreds of MB of data just for few minutes. Instead you should use a compression/decompression software. CODEC is such software component. In order to be able to play the video encoded with any CODEC the component must be installed on the computer.
As always there are many Codecs, producing better or worse video quality. You can choose any one, but remember if you go wild you will have to also install the CODEC on the user computer before he will be able to play your video.
There are already few Codecs installed on every Windows95, 98, 2000 by default:
Cinepak, Indeo 3.2, Indeo 4, Indeo 5, Microsoft Video 1.
Each codec is identified by 4 letters code in AVI file (for example Cinepak is CVID)

Microsoft Video 1
The original CODEC shipped with ancient Video for windows.
Quality: Bad, it is CODEC from times when 256 colors was a luxury.
Tip: The best is to avoid this CODEC.

Cinepak
Cinepak was originally developed by Radius to play small movies on 386 from CD ROM.
Quality: Many years ago this was amazing, however today it doesn't compare well with newer CODECs
Tip: All Windows Versions will be able to play AVI encoded with Cinepak. To play the video, the CODEC need just very little CPU.
If you want to have video play back on any Windows machine Cinepak would be your choice.

Indeo 3.2
Developed by Intel in 80's
Quality: Not much to say, the quality is in the range of Cinpak - which means 'medium' quality. It doesn't like fast movement.
Tip: All Windows versions should be able to play AVI encoded with Indeo 3.2. The time needed for compressing is less than Cinepak, however it needs faster computer to play back than Cinepak. (Today's Pentiums are far fast enough anyway)

Indeo 4 and 5
Some name but different technology than Indeo 3.2.
Quality: Produces better results than Cinepak or Indeo 3.2, but needs fast Pentium
Tip: Most of the Windows 95 and 98 will have this CODEC already installed. However it requires a fast Pentium to play it back

MPEG-1
MPEG-1 provides excellent quality (audio and video)
This format is very popular and most of the MPEG files you download from Internet are encoded in MPEG-1.
Also it is the format for VideoCD (VCD).

MPEG-2
MPEG-2 is designed for broadcast quality digital audio and video. The image quality is outstanding. This is the format DVD uses. To play MPEG-2 videos you need fast Pentium or special hardware.

MPEG-4
MPEG-4 is designed for high quality web streaming video. It is similar to H.263 (video conferencing CODEC)
The quality is excellent even at low datarates. Microsoft has its own implementation in the new ASF format

So which CODEC?
Well that's again your choice. There is no one for all. If you look at the previous paragraphs it looks that if you want to play video on any windows computer you use AVI format encoded with Cinepak. The quality is not the best, but it will play on all computers for sure. If your video has low motion ( talking head) you can also try Indeo 3.2 CODEC. Then if the quality is important use MPEG, but you have to let user install Microsoft Windows Media Player first (it is free)


Text Replace

Menu Project - Text Replace

With this Tool you can simply replace text items on each page.

You can replace the caption of Text button, andt the text on Text Object and Paragraph.

Also it allows you to replace a ToolTip on any object where tooltip was defined.

Note: Remember to press Apply button after you make a changes.

Tip: This tool is excellent to make a language clones of your project , or fix an error made on multiple pages.


Binding Object

Binding Object is a way how to easily put exe file into MMB - it will become a part of the player: for example flash movie with flash projector player, your installer, notepad with text, another independent MMB project etc...
See example binding.mbd included in the beta archive, shows notepad, regedit and plays a flash movie inside page.Tested on Win2000 and Win 98SE

Note: Not all exe files can be binded, but many could (for example you can even bind CompactDraw or PhotoBrush....) Some exe files may be unhappy to be binded and may freeze your system - save often. Some exe files can't be binded at all or shws garbage (Winamp).You can't call just the file to open associated exe yet. you need to specify the executable and then the parameter (file). You can hide Menu , status bar or toolbars from the binded applications.

Binding objects has many advantages - you don't need to create a special version of your exe file, no ActiveX, no DLL..

You can have many BO on one page, you can have some even in Master Top Layer...

Comunication Between MMB and Binding Object

MMB can send Menu Commands to the binded Object. Menu Command is the index of Menu as it appear on the original software. The Menu Index is zero Based.

SendComand("Binder","1,7")

Example: Binding notepad.exe

You need to count  the menu separators as well.

In case of Nested Submenus, you can use the third optional parameter C

Sending String to Binding Object

To send string to the object (here Notepad), we can use MMB command - Clipboard.

First we send the string to the clipboard, then we invoke Select All and after that Paste command in the Binding Object. Click the Send Text button.

See the script below:

C$ = 'Hello from MMB!'

Clipboard("SEND","C$")

**select all

SendCommand("Binder","1,7")

** Paste

SendCommand("Binder","1.4")

With the same idea we can get string from the object.

First we invoke Select All, then Copy and then we get the string from clipboard.

**select all

SendCommand("Binder","1,7")

** Copy

SendCommand("Binder","1,3")

Clipboard("GET","C$")

**display it

LoadText("TextDisp","C$")

(Un-Bind) the program.
- Terminate Process-default (brute force method which doesn't give the program chance to do anything about it)
- Send Close and wait. This is softer method and it gves the application a chance to do closing stuff (for example ask if you want to save changes etc...) Also if application doesn't like the first method, try this one.

Un-Bind on Page Exit option (default). If checked the Binding exe file will be terminated if user goes into other page. That means any time you go to the page with binding object the exe will start again. This is probably great for applications as Flash animations etc... you don't want them to run if you are in other pages.

Hide Menu - Hides the menu of the binded application. If the app has nonstandard menu size or you need to hide larger height, use advanced options.

Hide Sizing Grip - Some application have Sizing Grip (like for example notepad.exe). You can mask it with this option so user won't be able to resize the binded application.

Advanced Properties

Help To locate window:

Some complex application may have many "Parent" windows - MMB may not always choose the right window so you have additional options which window of the binded application to bind in MMB. You can specify which string the main caption must have and which it must not have. If empty - then it doesn't apply.

Client main window Caption must have string
Client main window Caption must NOT have string...

Note: In simple application (like notepad, Flash player etc. you don't have to worry about this. You should use this only if MMB choose wrong window from the application to bind.

Wait Before Binding - some applications may take longer time to start and MMB may not catch the window (it try to find the window too early, but the application does something else at this moment and don't yet have window created) This will tell MMB to wait before binding.

Additional Cut from Top or bottom - you can simply Crop the binded application from top or bottom. Great in cases when you need to hide toolbar or statusbar for example.


HTML Object

Html Object is a full Browser object in MMB. It uses Microsoft IE control. - example Browser.mbd
This dependency on IE is one small disadvantage, using IE control has many other advantages:

•	One of the most complete HTML control

•	You can print from it

•	You can use forms, Java, Java Script, Applets, Frames anything IE can

•	You can view files from CD,disk or connect directly to Internet

•	You can use FTP

•	It works also as ActiveX container enabling you to view Acrobat pdf files, Flash movies and anything to what you have plugin/ActiveX

•	No need to pay royalties - comes free

•	No need to carry additional dll's

•	Works with IE 4.x and newer, no need for special version

•	Most of the users already have it installed, all users using Win98SE and 2000

•	If other authoring tools use it so why not MMB

•	MMB specific issues:

•	You can show or hide Status Bar

•	All commands are invoked with Script command, so you can create your own buttons (if you want) or actions for Back, Forward, Stop, Print, Open, Reload.... or you can have no buttons at all
MMB Html Object can insert ready made buttons for you if you need them and you are in hurry.
Syntax:
Browser("Browser","Back")

•	Html browser can be hidden by Show, Hide  or moved by Move Command

•	You can use Embedded Html files - but remember to embed all other dependent files such images or other pages.

•	If user doesn't have IE, then the Object will run whatever default browser user has installed.

Special HTML commands

You can use a special links in your HTML files to tell MMB player to go to other MMB page or run script
The syntax:

<a href="page:Page 2">Go To Page 2</a>
To move to specific page of MMB project or use next, previous, first or back

<a href="script:Script1">Run Script1</a>
To run specific project on current page or other pages using script:Page 2::Script syntax)

Hide Border and Always Hide Vertical Scroll Bar
You can Hide the border of the control and eventually hide the vertical scrollbar. This way you can display HTML file in your MMB project without disturbing  the look of your application.


Embedded Files

You can embed any biary file in the project. It could be exe file, text file, pdf file etc.

From Menu Project - Embedded Files

Please make sure that you don't use this as a storage for your files. You should embed only if it is necessary.

Please use big files outside the project - don't embed them - they will slow down the startup of your application.

How to access embedded files.

Where normally you use <SrcDir> in case of embedded files you use <Embedded> prefix.

Example:

We embedded setup.exe into the project

to call the file we use script

Run("<Embedded>\setup.exe","")

What to embed?
Exe files are usually not a good idea to embed, however you can use embedded files for:

- jpg for VR panorama

- html files for HTML Object

- text files, etc.

- files for Binding (if not big)

Note: Custom Cursors are always embedded as Embedded Files.

Please don't embed AVI or MPG files if it is not necessary. These files are usually big and uncompressing them takes additional time.