MannX (Media Annotator -- XML) is a browser-based system, currently based on Java, Javascript, and XSLT, for linking
  1. A video -- any sort of video -- and three textual documents:
  2. An XHTML script for that video: usually a transcript of words audible in the video, but any words which can be synchronized with that video will fit the model.
  3. An HTML commentary, expounding on any points arising in the script and video.
  4. An HTML glossary of terms appearing in the script, video, commentary, and glossary.

It works in IE 6.0 on Windows, or in Mozilla+Firefox on Windows+Linux+OS X. Within MannX,

  1. you can play to a point in the video and then ask the script and commentary to synchronize with it;
  2. you can select text in the script and ask video and commentary (if there is any commentary on that script segment) to synchronize;
  3. you can select text in the commentary and ask script and video to synchronize;
  4. you can select text (a word or phrase) and look it up in the glossary.

Here's a screenshot of a straightforward interview, in which Professor Ken Valente of Colgate University's Mathematics department describes his shift from mathematical research towards research on the history of mathematics. As you look at it, notice the division into (video above the script) on the left, and (glossary above the commentary) on the right.

There's a lot going on in this screenshot. The words highlighted in the script are the words you'd hear if you clicked the "Play" triangle at this point. Those words were highlighted, from one "synch-point" to the next, simply by clicking once on the script. You can see that he says something about "the Journal of Algebra". You can also see those same words copied into a text box under the video; the highlighted segment of the script is always copied into that text box. Within that text box, we select the word "Algebra" and click on the Dictionary button: that tells the dictionary to scroll to the right definition, if available.

Meanwhile, the commentary clarifies the script's remark: he must have meant the "Journal of Pure and Applied Algebra", and the commentary includes a link to that Journal.

(Silly coincidence: As I (Tom Myers) sat typing this, my eight-year-old daughter asked me to define "algebra", as an unfamiliar word which appeared in the book she was reading. So I showed her the screen I was working on. Unfortunately she didn't want to talk about algebra; she just wanted to finish that book and go back to My Teacher Glows in the Dark. "Daddy, how long is a light-year?")

Installation To play videos in MannX, you just have to

  1. Run IE6.0 on Windows, or Firefox (or Mozilla) on Windows, Linux, or OS X.
  2. Make sure Sun's Java Plugin (JRE 1.4.2 or better) is running your applets.
  3. Install Sun's own Java Media Framework, or at least place its jmf.jar file into the Plugin's extensions directory.

That first step is not likely to be a problem, although we do recommend Firefox or Mozilla; for one thing, it's helpful to use tabbed browsing to explore comment links without going back and forth to an applet which is trying to manage a movie. (We develop on Mozilla/Linux, then test on IE+Firefox/XP, and on Firefox/OS X when we can get to it.) You likely already have the Java Plug-In installed, too. On Mozilla or Firefox, you can look at "about:plugins" to see which version of Java you're running. As we write (May 2005), 1.5.0 is standard. Mozilla/Firefox offers explanations and download links.

On Windows or Linux, you can install the JRE directly from Sun and it should plug itself into IE, Mozilla, or Firefox if present. On OS X 10.3, it's a little more complicated. You may need to install Apple.com's 1.4.2 upgrade, and even then you may find that Firefox or Mozilla continue to run an older Java version although Safari (which does not run MannX) takes the upgrade. If so, you have to install the open-source Java Embedding Plugin: download the zip file, and follow the instructions. "To install the Java Embedding Plugin (JavaEmbeddingPlugin.bundle) and the MRJ Plugin JEP (MRJPlugin.plugin), drag them to the /Library/Internet Plug-Ins folder." We hear that Apple's Tiger (10.4, May 2005) includes Java 1.4.2_07, which ought to be fine -- we will try to keep on top of this situation.

On any given machine with a working Java Plugin, Java has a special extensions folder in which to put specially trusted code; on OS X, that's always Library/Java/Extensions. On Windows or Linux, it should be a directory called "jre/lib/ext". You can ask the Java Plug-in Control Panel where it is or you can just look on your disk for any such directory...on a machine with more than one version installed, you might see:

$ locate -r "/jre/lib/ext$"
/usr/local/j2sdk1.4.2_03/jre/lib/ext
/opt/jdk1.5.0/jre/lib/ext
Download and unzip the pure Java version of JMF. and put jmf.jar into the lib/ext directory; if you're not sure which lib/ext directory it should go in, it's perfectly all right to put it into all of them.

Now you can go to http://www.n-topus.com/mx/valente4/playerFrames.htm and see the prerelease demo -- movies are slow downloads, but it should work.

Content Creation: You start with a video; JMF is very restrictive about codecs, and we mostly use Cinepak, 320x240. Ray Nardelli of Colgate has discovered that he can get pretty nice Cinepak results with Final Cut Pro, using "high quality" and some blurring. Then we make a copy of a working sample's folder, and edit the four basic files: config.js, theScript.xhtml, theDict.htm, and comm01.htm. In the first of these, you just need to change some settings; for example, in the "valente4/config.js" file, you would find the lines var projectName = "valente4"; and var movieFileName = "interview-segment4.mov";, whereas in "wilson/config.js" there's var projectName = "wilson"; and var movieFileName = "Wilson_ALaw.mov";. There are no other differences between them. In theScript.xhtml, you replace the transcript of the working sample with the transcript of your video, formatted as you please -- but it does have to be XHTML because it will be processed by an XSL stylesheet. With any items that need comment, you can insert links of the form <a href="comm01.htm#c37" target="theCommentary">item</a>; that comment will go into a section of comm01.htm, a section beginning <p><a name="c37"> and ending </a><p>. The better you can keep them in order, the happier your viewers will be with synchronization results. theDict.htm is easy: you see an HTML table of definitions, and you replace them with the ones that interest you from script and commentary, in alphabetical order. (If you want to use a non-alphabetic language, go back to config.js and set var isChinese=true; so that Javascript will know not to assume alphabetized dictionaries.)

Now, what about synchronization? We have an "author mode" in which you can play the movie, and in which a click on the script introduces a synchronization point to say "the current time for the movie corresponds to the place I'm clicking." There are also a few buttons to help adjust the time if you don't get it exactly right, and one button to save the altered script -- that requires that our applet code (JMFJSApplet.jar, for the JMF version) go into your plugin's extensions directory so that it will have permission to write a file. The author mode works only in Mozilla/Firefox.

Licensing: We're preparing to release MannX as a mysql-style dual license for open-source or commercial development, including mysql's FLOSS exception. Your data -- videos and document sets -- are independently licensed, just like the data in a mysql database. In other words, if you want to use our code to add value to your videos and documents, that's great -- you can sell them for whatever the market will bear, or release them with Creative Commons licenses, or whatever you like -- that has nothing to do with the code. You do have to make sure that others can freely download the source of any code you're distributing with your product (that's our code, after all) because it's open source. If you want to change or extend our code, then there's a question: are these changes/extensions open source as defined here? If so, no problem. (Ideally, you just contribute your work back to the MannX project and we love it and add it to our distribution with credit to you, but that's not necessary.) If you don't want your changes/extensions to be open source, there's still no problem, you just need a commercial license for your MannX development.