JSiON.lib keim_at_Si Follow 2013-10-17 12:51:00 License: MIT License Fork2 Fav7 View5753 Play Stop Reload Fullscreen Smart Phone Fork tree Readme JavaScript 108 lines HTML 16 lines CSS 3 lines JSiON --- SiON for javascript Wonderflと連携してSiONをjavascriptから扱うテスト webpage; http://soundimpulse.sakura.ne.jp/jsion-lib/ JSiON.lib //JSiON --- SiON for javascript //Wonderflと連携してSiONをjavascriptから扱うテスト function JSiON(onReady) { JSiON._initialize(); JSiON.mutex = this; if (onReady) this.onReady = onReady; } JSiON.prototype = { //----- status isLoaded : false, isStreaming : false, isPaused : false, //----- setter/getter volume : function() { return JSiON.driver._volume(arguments[0]); }, pan : function() { return JSiON.driver._pan(arguments[0]); }, position : function() { return JSiON.driver._position(arguments[0]); }, bpm : function() { return JSiON.driver._bpm(arguments[0]); }, //----- operation compile : function(mml) { return JSiON.driver._compile(mml); }, stop : function(fadeOutTime) { JSiON.driver._stop(fadeOutTime); }, pause : function() { JSiON.driver._pause(); }, resume : function() { JSiON.driver._resume(); }, play : function(dataID, fadeInTime) { JSiON.driver._play(dataID, fadeInTime); }, playmml : function(mml, fadeInTime) { JSiON.driver._playmml(mml, fadeInTime); }, noteOn : function(note, voiceID, length, delay, quant, trackID, params) { JSiON.driver._noteOn(note, voiceID, length, delay, quant, trackID, params); }, noteOff : function(note, trackID, delay, quant) { JSiON.driver._noteOff(note, trackID, delay, quant); }, sequenceOn : function(dataID, voiceID, length, delay, quant, trackID) { JSiON.driver._sequenceOn(dataID, voiceID, length, delay, quant, trackID); }, sequenceOff : function(trackID, delay, quant) { JSiON.driver._sequenceOff(trackID, delay, quant); }, //----- setting createVoice : function(moduleType, channelNum, ar, rr, dt, connectionType, ws2, dt2) { return JSiON.driver._createVoice(moduleType, channelNum, ar, rr, dt, connectionType, ws2, dt2); }, //----- event handler onError : function(text) { alert(text); }, onReady : function() {}, onStream : function() {}, onStreamStart : function() {}, onStreamEnd : function() {}, onFadeInComplete : function() {}, onFadeOutComplete : function() {}, onBeat : function() {}, onTimer : function() {}, onNoteOn : function() {}, onNoteOff : function() {} }; //---------- JSiON.VERSION = '0.1.0'; JSiON.SWF_VERSION = 'SWF has not loaded.'; JSiON.toString = function() { return 'JSiON_VERSION:' + JSiON.VERSION + '/ SWF_VERSION: ' + JSiON.SWF_VERSION; }; JSiON.domElementID = 'JSiON_DOM_ELEMENT'; JSiON.driver = undefined; JSiON.mutex = undefined; JSiON.swfURL = 'http://swf.wonderfl.net/swf/usercode/c/cb/cb8a/cb8a1c867c99b82a0d7d39080959272ec21226df.swf?'+(new Date()).getTime(); //JSiON.swfURL = 'jsion.swf'; //---------- internal functions JSiON._initialize = function() { if (JSiON.mutex) throw "Cannot create plural JSiON instances"; if (getFlashPlayerVersion(0) < 10) throw "flash player 10 is required"; var o = document.createElement('object'); o.id = JSiON.domElementID; o.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; o.width = '1'; o.height = '1'; o.setAttribute('data', JSiON.swfURL); o.setAttribute('type', 'application/x-shockwave-flash'); var p = document.createElement('param'); p.setAttribute('name', 'allowScriptAccess'); p.setAttribute('value', 'always'); o.appendChild(p); document.body.appendChild(o); }; function getFlashPlayerVersion(subs) { return (navigator.appName.indexOf("Microsoft")==-1) ? navigator.plugins["Shockwave Flash"].description.match(/([0-9]+)/)[subs] : (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version").match(/([0-9]+)/)[subs]; } //---------- callback functions from swf JSiON.__onLoad = function(version) { JSiON.SWF_VERSIOPM = version; JSiON.driver = document.getElementById(JSiON.domElementID); JSiON.mutex.onReady.call(JSiON.mutex); }; JSiON.__onError = function(text) { JSiON.mutex.onLoad.call(JSiON.mutex); }; JSiON.__onStream = function() { JSiON.mutex.onStream(JSiON.mutex); }; JSiON.__onStreamStart = function() { JSiON.mutex.onStreamStart(JSiON.mutex); }; JSiON.__onStreamStop = function() { JSiON.mutex.onStreamStop(JSiON.mutex); }; JSiON.__onFadeInComplete = function() { JSiON.mutex.onFadeInComplete(JSiON.mutex); }; JSiON.__onFadeOutComplete = function() { JSiON.mutex.onFadeOutComplete(JSiON.mutex); }; JSiON.__onNoteOn = function(id, note) { JSiON.mutex.onNoteOn (JSiON.mutex, id, note); }; JSiON.__onNoteOff = function(id, note) { JSiON.mutex.onNoteOff(JSiON.mutex, id, note); }; JSiON.__onBeat = function(count) { JSiON.mutex.onBeat(JSiON.mutex, count); }; JSiON.__onTimer = function(count) { JSiON.mutex.onTimer(JSiON.mutex, count); }; <h1>JSiON</h1> <p>The JSiON is a bridging library of an action script software synthsizer <a href="http://www.libspark.org/wiki/keim/SiON_e" target="_blank">SiON</a>. This is NOT pure javascript library, and it requires Flash Player 10 (this library inserts an SWF object to the html inside). Detail informations are in <a href="http://blog.jactionscripters.com/2009/10/02/sion-released/" target="_blank">this entry</a>.</p> <h2>Basic Usage</h2> <p>Create one new JSiON instance and set onReady function (this is called when the JSiON is ready to use). And call "compile()" to translate <a href="http://en.wikipedia.org/wiki/Music_Macro_Language">MML</a> to musical score data (<a href="http://mmltalks.appspot.com/document/siopm_mml_ref_05_e.html" target="_blank">MML reference</a>). This function returns the ID number of compiled data. And call "play()" with this ID number to play the music.</p> <pre>var jsion = new JSiON(); var dataID; jsion.onReady = function() { dataID = jsion.compile("t100l8ccggaag4ffeeddc4"); }; ... function onClickPlayButton() { jsion.play(dataID); } </pre> JSiON.lib *{background:#cde;} p,pre{font-size:12px;} pre{background:#fff;padding:4px;} JSiON --- SiON for javascript Wonderflと連携してSiONをjavascriptから扱うテスト webpage; http://soundimpulse.sakura.ne.jp/jsion-lib/ //JSiON --- SiON for javascript //Wonderflと連携してSiONをjavascriptから扱うテスト function JSiON(onReady) { JSiON._initialize(); JSiON.mutex = this; if (onReady) this.onReady = onReady; } JSiON.prototype = { //----- status isLoaded : false, isStreaming : false, isPaused : false, //----- setter/getter volume : function() { return JSiON.driver._volume(arguments[0]); }, pan : function() { return JSiON.driver._pan(arguments[0]); }, position : function() { return JSiON.driver._position(arguments[0]); }, bpm : function() { return JSiON.driver._bpm(arguments[0]); }, //----- operation compile : function(mml) { return JSiON.driver._compile(mml); }, stop : function(fadeOutTime) { JSiON.driver._stop(fadeOutTime); }, pause : function() { JSiON.driver._pause(); }, resume : function() { JSiON.driver._resume(); }, play : function(dataID, fadeInTime) { JSiON.driver._play(dataID, fadeInTime); }, playmml : function(mml, fadeInTime) { JSiON.driver._playmml(mml, fadeInTime); }, noteOn : function(note, voiceID, length, delay, quant, trackID, params) { JSiON.driver._noteOn(note, voiceID, length, delay, quant, trackID, params); }, noteOff : function(note, trackID, delay, quant) { JSiON.driver._noteOff(note, trackID, delay, quant); }, sequenceOn : function(dataID, voiceID, length, delay, quant, trackID) { JSiON.driver._sequenceOn(dataID, voiceID, length, delay, quant, trackID); }, sequenceOff : function(trackID, delay, quant) { JSiON.driver._sequenceOff(trackID, delay, quant); }, //----- setting createVoice : function(moduleType, channelNum, ar, rr, dt, connectionType, ws2, dt2) { return JSiON.driver._createVoice(moduleType, channelNum, ar, rr, dt, connectionType, ws2, dt2); }, //----- event handler onError : function(text) { alert(text); }, onReady : function() {}, onStream : function() {}, onStreamStart : function() {}, onStreamEnd : function() {}, onFadeInComplete : function() {}, onFadeOutComplete : function() {}, onBeat : function() {}, onTimer : function() {}, onNoteOn : function() {}, onNoteOff : function() {} }; //---------- JSiON.VERSION = '0.1.0'; JSiON.SWF_VERSION = 'SWF has not loaded.'; JSiON.toString = function() { return 'JSiON_VERSION:' + JSiON.VERSION + '/ SWF_VERSION: ' + JSiON.SWF_VERSION; }; JSiON.domElementID = 'JSiON_DOM_ELEMENT'; JSiON.driver = undefined; JSiON.mutex = undefined; JSiON.swfURL = 'http://swf.wonderfl.net/swf/usercode/c/cb/cb8a/cb8a1c867c99b82a0d7d39080959272ec21226df.swf?'+(new Date()).getTime(); //JSiON.swfURL = 'jsion.swf'; //---------- internal functions JSiON._initialize = function() { if (JSiON.mutex) throw "Cannot create plural JSiON instances"; if (getFlashPlayerVersion(0) < 10) throw "flash player 10 is required"; var o = document.createElement('object'); o.id = JSiON.domElementID; o.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; o.width = '1'; o.height = '1'; o.setAttribute('data', JSiON.swfURL); o.setAttribute('type', 'application/x-shockwave-flash'); var p = document.createElement('param'); p.setAttribute('name', 'allowScriptAccess'); p.setAttribute('value', 'always'); o.appendChild(p); document.body.appendChild(o); }; function getFlashPlayerVersion(subs) { return (navigator.appName.indexOf("Microsoft")==-1) ? navigator.plugins["Shockwave Flash"].description.match(/([0-9]+)/)[subs] : (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version").match(/([0-9]+)/)[subs]; } //---------- callback functions from swf JSiON.__onLoad = function(version) { JSiON.SWF_VERSIOPM = version; JSiON.driver = document.getElementById(JSiON.domElementID); JSiON.mutex.onReady.call(JSiON.mutex); }; JSiON.__onError = function(text) { JSiON.mutex.onLoad.call(JSiON.mutex); }; JSiON.__onStream = function() { JSiON.mutex.onStream(JSiON.mutex); }; JSiON.__onStreamStart = function() { JSiON.mutex.onStreamStart(JSiON.mutex); }; JSiON.__onStreamStop = function() { JSiON.mutex.onStreamStop(JSiON.mutex); }; JSiON.__onFadeInComplete = function() { JSiON.mutex.onFadeInComplete(JSiON.mutex); }; JSiON.__onFadeOutComplete = function() { JSiON.mutex.onFadeOutComplete(JSiON.mutex); }; JSiON.__onNoteOn = function(id, note) { JSiON.mutex.onNoteOn (JSiON.mutex, id, note); }; JSiON.__onNoteOff = function(id, note) { JSiON.mutex.onNoteOff(JSiON.mutex, id, note); }; JSiON.__onBeat = function(count) { JSiON.mutex.onBeat(JSiON.mutex, count); }; JSiON.__onTimer = function(count) { JSiON.mutex.onTimer(JSiON.mutex, count); }; <h1>JSiON</h1> <p>The JSiON is a bridging library of an action script software synthsizer <a href="http://www.libspark.org/wiki/keim/SiON_e" target="_blank">SiON</a>. This is NOT pure javascript library, and it requires Flash Player 10 (this library inserts an SWF object to the html inside). Detail informations are in <a href="http://blog.jactionscripters.com/2009/10/02/sion-released/" target="_blank">this entry</a>.</p> <h2>Basic Usage</h2> <p>Create one new JSiON instance and set onReady function (this is called when the JSiON is ready to use). And call "compile()" to translate <a href="http://en.wikipedia.org/wiki/Music_Macro_Language">MML</a> to musical score data (<a href="http://mmltalks.appspot.com/document/siopm_mml_ref_05_e.html" target="_blank">MML reference</a>). This function returns the ID number of compiled data. And call "play()" with this ID number to play the music.</p> <pre>var jsion = new JSiON(); var dataID; jsion.onReady = function() { dataID = jsion.compile("t100l8ccggaag4ffeeddc4"); }; ... function onClickPlayButton() { jsion.play(dataID); } </pre> *{background:#cde;} p,pre{font-size:12px;} pre{background:#fff;padding:4px;} use an iframe compat browser, deer Play on jsdo.it games Author Share ブログに埋め込む QR Tag Download Complete! Description What kind of game? JSiON --- SiON for javascript Wonderflと連携してSiONをjavascriptから扱うテスト webpage; http://soundimpulse.sakura.ne.jp/jsion-lib/ Control Device Smartphone Controllerjsdo.it WebSocket Controller» Mouse Keyboard Touch Device Fullscreen Activated Inactivated jsdo.it games から削除する Submit Author keim_at_Si URLhttp://wonderfl.net/user/keim_at_Si/codes web page(old); http://soundimpulse.sakura.ne.jp/ qiita; http://qiita.com/users/keim_at_si Blog in Japanese; http://d.hatena.ne.jp/keim_at_Si/ Blog in English (low activity...); http://keim-at-si.blogspot.com/ Tweet Default Panel Auto play Screenshot Readme JavaScript HTML CSS Size Width: px Height: px code <script type="text/javascript" src="http://jsdo.it/blogparts/qGqu/js"></script> flash JSiON library library&test SiON sound Discussion Questions on this code? Tags JSiON SiON flash library library&test sound Favorite by alvarobyrne yoshimax 9re moriyoshi matsu4512 yd_niku taikiken: SiON Forked sort by latest page views favorite forked forked: JSiON.lib jt5d 00 1205 109/16/3 JSiON SiON flash library library&test sound forked: JSiON.lib jt5d 00 1306 109/16/3 JSiON SiON flash library library&test sound