I’ve updated the method I’m using to embed MIDI files in my DVD pages that had them. A couple of example pages are The Best of Benny Hill and Star Wars I: The Phantom Menace. I am using the JavaScript method that is described at MIDKar.com. It’s basically the same thing I was doing before directly within the page’s code without JavaScript; however, this script now adjusts the code based upon the browser it detects which should make it more compatible. I did modify their code slightly by adding an optional autostart parameter with a default value of 0 if no value is given so that it does not automatically start playing. Here’s my modified code:
// for a large number of browsers, including AOL and WebTV
// Windows Media Player is required and always used, except for WebTV
// Written by Les Gorven, http://midistudio.com/
// Ver. 4.0 (simple) auto-start parameter is true - Created: February 2, 2008
// autostart parameter added by Mark Headrick December 2, 2009
function playMedia(mediaURL,rpt,height,width,autostart) {
var mediaURL,rpt,height,width,autostart;
if (typeof autostart == "undefined") {
autostart = 0;
}
if (GetBrowser() == "IE")
playAll(mediaURL,rpt,height,width,autostart) ;
else if (GetBrowser() == "unknown")
embedSource(mediaURL,rpt,height,width,autostart) ;
else if (navigator.appName.substring(0,5) == "WebTV")
embedSource(mediaURL,rpt,height,width,autostart) ;
else
playAll(mediaURL,rpt,height,width,autostart) ;
}
function embedSource(mediaURL,rpt,height,width,autostart) {
var CodeGen = "";
var mediaURL,rpt,height,width,autostart;
CodeGen = '<embed src="' + mediaURL + '"' + '\n' ;
if (autostart == 0) {
CodeGen += ' height=' + height + ' width=' + width + ' autostart="false"' + '\n';
} else {
CodeGen += ' height=' + height + ' width=' + width + ' autostart="true"' + '\n';
}
CodeGen += ' LOOP=' + rpt + '>';
document.write(CodeGen);
}
function playAll(mediaURL,rpt,height,width,autostart) {
var CodeGen = "";
CodeGen = '<embed type="application/x-mplayer2" ' + '\n' ;
CodeGen += ' pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" ' + '\n' ;
CodeGen += 'Name="Player" ' + 'src="' + mediaURL + '" ' + '\n' ;
CodeGen += 'autoStart=' + autostart + ' ' ;
if ((height == 24) && (width == 299))
CodeGen = CodeGen + 'ShowStatusBar=1 ';
if ((height >= 50) && (height <= 75) && (width >= 200))
CodeGen = CodeGen + 'ShowStatusBar=1 ';
if ((height > 75) && (width >= 200))
CodeGen = CodeGen + 'ShowStatusBar=0 ';
if ((height <= 49) && (width != 299))
CodeGen += 'ShowStatusBar=0 ';
CodeGen += 'enableContextMenu=1 cache=0' + '\n' ;
CodeGen += 'playCount=' + rpt + ' ' ;
CodeGen += 'volume=-1 ' ;
CodeGen += 'HEIGHT=' + height + ' WIDTH=' + width + '>' ;
document.write(CodeGen);
}
function GetBrowser()
{
var agt=navigator.userAgent.toLowerCase();
if( ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) )
return "IE";
else if( ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)) )
return "Netscape";
else
return "unknown";
}
Within the page itself, I just put the following where I want the player to appear:
playMedia("/midi/SomeFileToPlay.mid",3,65,300)
</script>
If I want the song to automatically start playing, then I would change the code to:
playMedia("/midi/SomeFileToPlay.mid",3,65,300,1)
</script>
Seems to work well in both Firefox 3.5.5 and Internet Explorer 8. 🙂