'); ldf.close(); } function CheckIkmcAvailable() { if (GIkmcVersionGoodEnough == false) { return false; } // ActiveX control is always available. if (UseActiveX) { KoanObj = KoanAX; return true; } // Check that in LiveConnect case, the main plugin is available ! if (document == null || document.KoanLC == null) { return false; } KoanObj = document.KoanLC return true; } // Determine the version of the IKMC ! // // Sets // GIkmcVersion to be e.g. "8.20" // GIkmcLevel to be e.g. "Silver" or "Platinum" function GetIKMCVersion() { GIkmcLevel = "Unknown" GIkmcVersion = "0.00" lVerString = "0.00" if (CheckIkmcAvailable()) { GIkmcLevel = KoanObj.KoanGetPlayerLevel (255); GIkmcVersion = KoanObj.KoanGetPlayerVersion (255); lStripString = new String("Version ") lFound = 0 lPos = GIkmcVersion.indexOf(lStripString) if (lPos > 0) { // Get a string looking like "5.00.1 ....." ... lVerString = new String(GIkmcVersion.substring(lPos + lStripString.length)) lPosPoint = lVerString.indexOf(".") if (lPosPoint > 0) { lVerString2 = new String(lVerString.substring(lPosPoint+1)) lPosPoint2 = lVerString2.indexOf(".") if (lPosPoint2 > 0) { GIkmcVersion = lVerString.substring(0,lPosPoint + lPosPoint2+1) } } } } } function CheckIkmcVersionNumber() { GetIKMCVersion() if (GIkmcVersion >= GIkmcVersionMinimum) { GIkmcVersionGoodEnough = true return true } GIkmcVersionGoodEnough = false GIkmcInvalidReason = 'Koan Plugin found, but version (' + GIkmcVersion + ') does not match the required version (' + GIkmcVersionMinimum + ') !'; return false } // Go to a label in the main movie, and start playing from there function GotoMainMovieLabel(PLabelName) { // Identify the Flash Movie Object ... var lFlashMovieObject = InternetExplorer ? movie1 : document.movie1; lFlashMovieObject.TGotoLabel("_flash0", PLabelName) lFlashMovieObject.TPlay("_flash0") } var GInitFeedback = 0 function MyOnTimer () { GTimerRunning = false GTimerTicks++ if (CheckIkmcAvailable()) { if (GVersionTested == 0) { GVersionTested = 1 if (!(CheckIkmcVersionNumber())) { DisplayWindowToDownloadIkmc () } } if (GInitFeedback == 0) { // Set the note feedback level ... GInitFeedback = 1; lRes = KoanObj.KoanSetNoteEventFeedbackLevel (3); // Notes/voice lRes = KoanObj.KoanSetGeneralEventFeedbackLevel (16); // Bar # } else { var lCount = 0; // Get snapshot of note events, and run-through and process them ! lCount = KoanObj.KoanGetNoteEventSnapshot (); if (lCount > 0) { // Got some note feedback ! var lFeedback = "Notes"; for (var i = 0; i < lCount; i++) { // Some example calls. // All of these calls are optional ! // lElement = KoanObj.KoanGetNoteEventHarmonyRuleNumber (i); // lElement = KoanObj.KoanGetNoteEventVoiceNumber (i); // lElement = KoanObj.KoanGetNoteEventHarmonyRuleMask (i); // lElement = KoanObj.KoanGetNoteEventVoiceNumber (i); // lElement = KoanObj.KoanGetNoteEventNextNoteRuleNumber (i); // lElement = KoanObj.KoanGetNoteEventNextNoteRuleNumber (i); // lLine = KoanObj.KoanGetNoteEventLine (i); // lFreq = KoanObj.KoanGetNoteEventFreq (i); // lLevel = KoanObj.KoanGetNoteEventLevel (i); // lPan = KoanObj.KoanGetNoteEventPan (i); // window.status=lElement; lLine = KoanObj.KoanGetNoteEventLine (i); lOnOff = KoanObj.KoanGetNoteEventOnOrOff (i); if (lOnOff == true) { // Here is where the FLASH animation is done ! // Start one of 16 different "Line"-related LED meter movies. // The meters are called LED_Meter_0 ... through to LED_meter_15 // Each one has a label at the start of its animation, called // "Start_To_Ping". GotoMainMovieLabel('label' + lLine) } } window.status=lFeedback; } // Done event processing ! } } // Restart the timer ! GTimerId = setTimeout("MyOnTimer()", 125) GTimerRunning = true } function Ikmc_OnGotFile (PGotFileNumber) { window.status="Got file=" + PGotFileNumber GGotFile = PGotFileNumber if (GGotFile == 0) { if (GGotFirstFileFlag == 0) { GGotFirstFileFlag = 1 if (UseActiveX) { KoanObj.KoanGetReqFilesBeforeAutoPlay = "TRUE" } else { lRes = KoanObj.KoanGetReqFilesBeforeAutoPlaySet(true) } } } } // Functions to call when the body of the html page is loaded ... function MyOnLoad() { // Start the timer running ! setTimeout("MyOnTimer()", 125) GTimerRunning = true if (UseActiveX) { MyOnLoadVB() } else { MyOnLoadLC() } } function MyOnUnLoad() { // Do nothing special for the General Case if (UseActiveX) { MyOnUnLoadVB() } else { MyOnUnLoadLC() } } function MyOnLoadLC() { } function MyOnUnLoadLC() { }
<IMG SRC="ikmc_flash1.gif" WIDTH=550 HEIGHT=400 BORDER=0 USEMAP="#movie1Map">

A working generative Koan-to-Flash animation.
Version: 0.6 alpha prototype. Total size, inc. html page = 26kb.
Requires Flash 6 player (about 380kb), Koan player (about 400kb) -- both are free, and contain no nagware or spyware.
Also requires your web-browser to be javascript enabled, and your PC's audio enabled.
It seems to work fine on both Netscape 4.x and IE 6.x
Made in England: come & visit!

Uses your system's MIDI sounds, so may sound different in different systems.
Sounds like Brian Eno = great, no problems!
Sounds like Rolf Harris = your system only does primitive MIDI.

This is not a video. It is generating itself in real-time.