How does Vox Proxy compare with MASH™?

 
MASH is an excellent scripting tool for Microsoft Agent. Vox Proxy is an extensive integrated application that includes Agent, but also includes many media features, extensions to Agent, and a user interface that does not look like it was designed for a programmer. For more information about MASH, see their web site at:
http://www.bellcraft.com/mash/
 
This is a summary of areas in which Vox Proxy differs most from MASH:

 

Integration with PowerPoint®

Vox Proxy provides extensive control of and interaction with PowerPoint. MASH is not intended for any PowerPoint integration, but simply to launch a presentation and play a script. Examples of Vox Proxy/PowerPoint integration include:
  • Scripts are developed interactively side-by-side with PowerPoint
  • Scripts are automatically embedded in the PowerPoint PPT file by slide
  • Navigation commands to go to any slide, last slide, next slide, etc.
  • Scripts are triggered automatically on slide-change events.
  • You can provide holds in scripts pending PowerPoint custom animation events. This allows you to wait for the user to trigger a slide animation and then have characters to react to that.
  • You can trigger custom animation events, making it trivial for characters to display bulleted points, pictures, or other animation effects.
  • Launch other slide shows
  • The script development tools automatically display scripts from the currently-displayed file and slide, allowing for a REALLY user-friendly development environment.
  • Combined with Vox Proxy’s user-defined variables, you can do some very sophisticated navigation, score-keeping, and other tasks. The end result is a seamless integration and control over PowerPoint that does not depend on timing things with your slide animations.
  • Play scripts within the free Microsoft PowerPoint 2003 Viewer

PowerPoint Integration Feature Comparison

PowerPoint Feature

Vox Proxy

MASH

Launch starting slide show
Yes
Yes
Advance to next slide
Yes
Yes
Save scripts in PowerPoint presentation file
Yes
No
Play a script if the user hyperlinks to any slide
Yes
No
Navigate to previous slide
Yes
No
Navigate to first slide
Yes
No
Navigate to last slide
Yes
No
Navigate to a specified slide number
Yes
No
Navigate to the last slide viewed
Yes
No
Launch another slide show
Yes
No
Play the next custom slide animation
Yes
No
Wait for the next custom slide animation
Yes
No
Play scripts within the free Microsoft PowerPoint 2003 Viewer
Yes
No
Develop scripts side-by-side with PowerPoint
Yes
No
 

Extension of Agent Facilities

Vox Proxy extends Agent facilities in several ways. Here are some of them:
  • You can maintain a pronunciation dictionary without having to insert those as speech tags everywhere they appear. You can either maintain such items on a global basis (for all presentations) or embed them into the current PowerPoint presentation file. This is especially nice for specialized applications such as medical terminology.
  • You can save custom “properties” for agent characters. For example, you can change a character’s default voice, pitch, or speed or set balloon defaults for characters. Once again, these can be applied globally or embedded in a specific presentation.
  • Characters can gesture or point at other characters by name or at an open Window (for example, at an Excel or Explorer window)
  • The ability of Agent to speak randomly-selected phrases is simplified and applied to animations, which is very useful if you are returning to a common slide or “menu” script. For example, the following is a valid script line. The system will play one animation at random:
    Acknowledge | Alert | Congratulate | CrossArms | HandsOnHips
  • You can maintain preference items for several things, including file locations (where character files are located, for example). Preference items can be changed on-the-fly within a script.
  • You can use system-defined and user-defined variables in scripts. This is technically beyond an extension of Agent facilities, but is so useful for Agent commands that I include it here. An example of many system-defined variables is $tod (time of day), which will return “morning” “afternoon” etc according to the system clock. A user-defined variable might be “&name1”. A simple example of speech using both would be:
    Say Good &tod! My name is &name1. Welcome to &place.
    Also available as system-defined variables are current drive locations, even if the script is being played from a CD drive. Variables have many and varied uses, and are a very powerful scripting tool. You can do arithmetic and logic with them, so you can keep score with them, use them for sophisticated navigation schemes, for evaluating user response to voice commands, and so on.
  • Characters can be automatically scaled according to the computer’s resolution. This allows characters to appear the same relative size regardless of the system they’re played on (within the limitation of Agent’s pixilation, of course)
  • During development, you can drag-and-drop characters into place on slides. The system will insert the appropriate MoveTo or Show at location.
  • Character positions can be specified either as screen percentages or as right, left, top, bottom, or center. This makes all character locations independent of monitor resolution. In MASH, character locations other than left, right, center, etc are specified in pixels at the upper-left corner of the character image. When displayed on a computer with different resolution than authored, the characters will appear in different relative locations.
  • You can turn on a “DualMonitor” mode, which will automatically relocate characters so they are visible on a projected image in a dual-monitor display mode, which many presenters use to allow them to see speaker’s notes while displaying a slide show. Using Agent (and MASH) alone, the characters always appear on the first monitor only (which is the wrong one while projecting).
  • You can place “holds” (I call them “Waits”) in scripts not only to wait for other characters, but to wait for many other events, including time from start of slide show or start of current slide, time from start of various media events, wait for media to end, or for custom timers that you can trigger in your script. For media, this allows characters to narrate a movie, for example, with perfect synchronization regardless of system performance.
  • Special features for AT&T Natural Voices, particularly for creating WAV files for delivery on CD (As with many copyrighted speech engines, Natural Voices cannot be delivered as an engine on a CD). You can enter text and convert it to wav files or you can let the program scan your entire script (all scripts in a presentation) and convert all speech for a given character to wav files using a specified AT&T voice.
  • Wait/no-wait is simplified from one character to another. For example, if you want peedy to appear while Paul says something, it would look like this:
    Show Paul at left center
    Say I’d like to introduce my friend Peedy.
    Show Peedy at right center :nowait

Integration of Other Media Controls

Vox Proxy provides commands to play media files, including:
  • Microsoft Media Player. You can provide the user with controls or no controls. Simple check-box development tools allow you to either hold the script until the media ends or allow it to play simultaneously. Combined with the media-time Waits, this lets characters narrate movies, even if the user pauses and re-starts the media.
  • Flash movies. You can open and close multiple flash movies simultaneously.
  • Play various sounds and music. Volume fading allows you to reduce music volume when characters will be speaking and increase it when they are not.
  • Display pictures and backgrounds
  • These are all available whether you’re running within PowerPoint or from stand-alone “script macros”.

Programming for Non-programmers

Vox Proxy provides pretty sophisticated programming features directly within your scripts. These can be really useful for evaluating user’s responses to voice commands, listbox selections, or an input text box. All user-input commands automatically place the user’s response into a Vox Proxy variable called &Response, which can then be used for evaluating scripts. Programming commands include:
  • IF-THEN-ELSE structures
  • SELECT-CASE statements
  • Bookmarks (labels) and GOTO command for branching within the script.
  • Read and write data from structured text files.
  • User-defined variables are a very important programming feature
  • An example using voice-command input might look like this:

    Show Paul at center
    ListenFor "...Kitchen Faucets" "...Bathroom Faucets" "...Shower heads" "...Shower Valves"
    SELECT &Response
    CASE "...bathroom faucets"
    ;Here you would have script illustrating bathroom faucets; you might navigate to a different series of slides, launch another slide show, launch a script macro, etc.
    CASE "...kitchen faucets"
    …etc
    END

Miscellaneous Features External to PowerPoint

  • Digital Clock display, including countdown or count-up timer or clock time
  • Run external programs, including displaying web pages, Microsoft Word window, Notepad, or any program registered with Windows. Allows argument-passing.
  • Input a text field, display a list selection box with results assigned to variables, display message boxes

Interact with Microsoft Excel®

Vox Proxy contains facilities for displaying Excel worksheets, customize their appearance, read and write cell information, and react to data changes made by the user. This lets you write an interactive application where characters can talk about data entered by the user. Data can be read and written to worksheets, with or without displaying them.


Script Macros

In Vox Proxy, macros are scripts saved in text files outside of PowerPoint. They are executable from PowerPoint slide scripts, from other macros, or in Windows by just running the macro file. Other users can run Vox Proxy scripts by installing the free Vox Proxy Player. You can display menus of macros, you can execute random script lines from macros (to allow random jokes or pearls of wisdom, etc). Macros can also be embedded in a PowerPoint PPT file.


User-friendly Development Tools

In addition to a tightly-integrated PowerPoint interface, the Vox Proxy Script Writer features extensive script wizards so that all script commands are available in simple selection forms as well as in an editable text box. You can access all wizards and script commands by right-clicking in the script editor. A find-and-replace works on a single slide or macro script or on all slide scripts in a presentation. You can test a specific line of speech by right-clicking on it. Scripts can be fully documented using a semicolon to delineate non-executable text.
 

Output Formats

Since MASH is not intended as a PowerPoint integration tool, it offers many formats for its script output, including VisualBasic code, JavaScript code, and a self-contained executable. Vox Proxy output is available in two forms: integrated with PowerPoint and/or as a script text file. Vox Proxy requires either the development software or the free Vox Proxy Player to run. MASH executables will run stand-alone.
 

Samples

Here are very simple sample scripts in MASH and Vox Proxy to show Paul at left center, Peedy at a specified location, and have Paul perform the "Greet" animation, and then have each say something.


MASH script:

Paul.Show
Set Req = Paul.MoveTo(PaulLeftX, PaulCenterY)
WaitFor Req
Peedy.Show
Set Req = Peedy.MoveTo(704, 512)
WaitFor Req
Paul.Play "Greet"
Set Req = Paul.Play("RestPose")
WaitFor Req
Peedy.Play "Acknowledge"
Peedy.Speak "Hi, Paul."


Vox Proxy script:

Show Paul at left center
Show Peedy at 75 25
Paul Greet, Restpose
Say Good morning. My name is Paul.
Peedy Acknowledge
say Hi, Paul.


Script Notes:

  1. Vox Proxy stresses simplicity and readbility, and implicitly performs programming functions that must be spelled out in MASH.
  2. The "Set Req=" and "Waitfor Req" are programming artifacts that are done implicitly in Vox Proxy.
  3. The locations in MASH must be in pixels at the top-left corner of each character, which will be incorrect if played on a computer with a different resolution setting. In Vox Proxy, locations are expressed as a percent of screen and are measured to the center of each character, so they stay fixed when played at any resolution.