社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
Widget:测试
<button onclick="ASFun.play(0)">do</button> <button onclick="ASFun.play(2)">re</button> <button onclick="ASFun.play(4)">mi</button> <button onclick="ASFun.play(5)">fa</button> <button onclick="ASFun.play(7)">so</button> <button onclick="ASFun.play(9)">ra</button> <button onclick="ASFun.play(11)">xi</button> <button onclick="ASFun.play([[4],[4],[5],[7],[7],[5],[4],[2],[0],[0],[2],[4],[4,,1.5],[2,,0.5],[2]])">欢乐颂</button> <button onclick="ASFun.play([[0],[11,4],[7,4,1.5],[9,4,5.5],[9,4,0.5],[11,4,0.5],[0,,1.5],[0],[0,,0.5],[2,,0.5],[11,4,2.5],[0],[11,4],[7,4,1.5],[9,4,5.5],[0,,0.5],[2,,0.5],[4,,2.5],[5,,0.5],[4,,0.5],[2,,1.5]])">届不到</button> <button onclick="ASFun.play([[3],[1],[4],[1],[5],[9],[2],[6],[5],[3],[5],[8],[9],[7],[9],[3],[2],[3],[8],[4],[6],[2],[6],[4],[3],[3],[8],[3],[2],[7],[9],[5],[0],[2],[8],[8],[4],[1],[9],[7],[1],[6],[9],[3],[9],[9],[3],[7],[5],[1],[0],[5],[8],[2],[0],[9],[7],[4],[9],[4],[4],[5],[9],[2],[3],[0],[7],[8],[1],[6],[4],[0],[6],[2],[8],[6],[2],[0],[8],[9],[9],[8],[6],[2],[8],[0],[3],[4],[8],[2],[5],[3],[4],[2],[1],[1],[7],[0],[6],[7],[9],[8],[2],[1],[4],[8],[0],[8],[6],[5],[1],[3],[2],[8],[2],[3],[0],[6],[6],[4],[7],[0],[9],[3],[8],[4],[4],[6],[0],[9],[5],[5],[0],[5],[8],[2],[2],[3],[1],[7],[2],[5],[3],[5],[9],[4],[0],[8],[1],[2],[8],[4],[8],[1],[1],[1],[7],[4],[5],[0],[2],[8],[4],[1],[0],[2],[7],[0],[1],[9],[3],[8],[5],[2],[1],[1],[0],[5],[5],[5],[9],[6],[4],[4],[6],[2],[2],[9],[4],[8],[9],[5],[4],[9],[3],[0],[3],[8],[1],[9],[6],[4],[4],[2],[8],[8],[1],[0],[9],[7],[5],[6],[6],[5],[9],[3],[3],[4],[4],[6],[1],[2],[8],[4],[7],[5],[6],[4],[8],[2],[3],[3],[7],[8],[6],[7],[8],[3],[1],[6],[5],[2],[7],[1],[2],[0],[1],[9],[0],[9],[1],[4],[5],[6],[4],[8],[5],[6],[6],[9],[2],[3],[4],[6],[0],[3],[4],[8],[6],[1],[0],[4],[5],[4],[3],[2],[6],[6],[4],[8],[2],[1],[3],[3],[9],[3],[6],[0],[7],[2],[6],[0],[2],[4],[9],[1],[4],[1],[2],[7],[3],[7],[2],[4],[5],[8],[7],[0],[0],[6],[6],[0],[6],[3],[1],[5],[5],[8],[8],[1],[7],[4],[8],[8],[1],[5],[2],[0],[9],[2],[0],[9],[6],[2],[8],[2],[9],[2],[5],[4],[0],[9],[1],[7],[1],[5],[3],[6],[4],[3],[6],[7],[8],[9],[2],[5],[9],[0],[3],[6],[0],[0],[1],[1],[3],[3],[0],[5],[3],[0],[5],[4],[8],[8],[2],[0],[4],[6],[6],[5],[2],[1],[3],[8],[4],[1],[4],[6],[9],[5],[1],[9],[4],[1],[5],[1],[1],[6],[0],[9],[4],[3],[3],[0],[5],[7],[2],[7],[0],[3],[6],[5],[7],[5],[9],[5],[9],[1],[9],[5],[3],[0],[9],[2],[1],[8],[6],[1],[1],[7],[3],[8],[1],[9],[3],[2],[6],[1],[1],[7],[9],[3],[1],[0],[5],[1],[1],[8],[5],[4],[8],[0],[7],[4],[4],[6],[2],[3],[7],[9],[9],[6],[2],[7],[4],[9],[5],[6],[7],[3],[5],[1],[8],[8],[5],[7],[5],[2],[7],[2],[4],[8],[9],[1],[2],[2],[7],[9],[3],[8],[1],[8],[3],[0],[1],[1],[9],[4],[9],[1],[2],[9],[8],[3],[3],[6],[7],[3],[3],[6],[2],[4],[4],[0],[6],[5],[6],[6],[4],[3],[0],[8],[6],[0],[2],[1],[3],[9],[4],[9],[4],[6],[3],[9],[5],[2],[2],[4],[7],[3],[7],[1],[9],[0],[7],[0],[2],[1],[7],[9],[8],[6],[0],[9],[4],[3],[7],[0],[2],[7],[7],[0],[5],[3],[9],[2],[1],[7],[1],[7],[6],[2],[9],[3],[1],[7],[6],[7],[5],[2],[3],[8],[4],[6],[7],[4],[8],[1],[8],[4],[6],[7],[6],[6],[9],[4],[0],[5],[1],[3],[2],[0],[0],[0],[5],[6],[8],[1],[2],[7],[1],[4],[5],[2],[6],[3],[5],[6],[0],[8],[2],[7],[7],[8],[5],[7],[7],[1],[3],[4],[2],[7],[5],[7],[7],[8],[9],[6],[0],[9],[1],[7],[3],[6],[3],[7],[1],[7],[8],[7],[2],[1],[4],[6],[8],[4],[4],[0],[9],[0],[1],[2],[2],[4],[9],[5],[3],[4],[3],[0],[1],[4],[6],[5],[4],[9],[5],[8],[5],[3],[7],[1],[0],[5],[0],[7],[9],[2],[2],[7],[9],[6],[8],[9],[2],[5],[8],[9],[2],[3],[5],[4],[2],[0],[1],[9],[9],[5],[6],[1],[1],[2],[1],[2],[9],[0],[2],[1],[9],[6],[0],[8],[6],[4],[0],[3],[4],[4],[1],[8],[1],[5],[9],[8],[1],[3],[6],[2],[9],[7],[7],[4],[7],[7],[1],[3],[0],[9],[9],[6],[0],[5],[1],[8],[7],[0],[7],[2],[1],[1],[3],[4],[9],[9],[9],[9],[9],[9],[8],[3],[7],[2],[9],[7],[8],[0],[4],[9],[9],[5],[1],[0],[5],[9],[7],[3],[1],[7],[3],[2],[8],[1],[6],[0],[9],[6],[3],[1],[8],[5],[9],[5],[0],[2],[4],[4],[5],[9],[4],[5],[5],[3],[4],[6],[9],[0],[8],[3],[0],[2],[6],[4],[2],[5],[2],[2],[3],[0],[8],[2],[5],[3],[3],[4],[4],[6],[8],[5],[0],[3],[5],[2],[6],[1],[9],[3],[1],[1],[8],[8],[1],[7],[1],[0],[1],[0],[0],[0],[3],[1],[3],[7],[8],[3],[8],[7],[5],[2],[8],[8],[6],[5],[8],[7],[5],[3],[3],[2],[0],[8],[3],[8],[1],[4],[2],[0],[6],[1],[7],[1],[7],[7],[6],[6],[9],[1],[4],[7],[3],[0],[3],[5],[9],[8],[2],[5],[3],[4],[9],[0],[4],[2],[8],[7],[5],[5],[4],[6],[8],[7],[3],[1],[1],[5],[9],[5],[6],[2],[8],[6],[3],[8],[8],[2],[3],[5],[3],[7],[8],[7],[5],[9],[3],[7],[5],[1],[9],[5],[7],[7],[8],[1],[8],[5],[7],[7],[8],[0],[5],[3],[2],[1],[7],[1],[2],[2],[6],[8],[0],[6],[6],[1],[3],[0],[0],[1],[9],[2],[7],[8],[7],[6],[6],[1],[1],[1],[9],[5],[9],[0],[9],[2],[1],[6],[4],[2],[0],[1],[9],[8],[9],[3],[8],[0],[9],[5],[2],[5],[7],[2],[0],[1],[0],[6],[5],[4],[8],[5],[8],[6],[3],[2],[7],[8],[8],[6],[5],[9],[3],[6],[1],[5],[3],[3],[8],[1],[8],[2],[7],[9],[6]])">圆周率</button> <script> /** score=[ [音符,音阶,节拍,音色,响度], [音符,音阶,节拍,音色,响度], …… ]
- /
ASFun={ "initialize":function(){ ASMeta={ "synth":new WebAudioTinySynth(), "bpm":135, "volume":100, "scale":5, "timbre":0, } }, "play":function(score){ try{ ASMeta } catch(e){ ASFun.initialize() } let time=0 for(let i=0;i<score.length;i++){ let sound=score[i] setTimeout(function(){ ASFun.playNote(sound[1]||ASMeta.scale,sound[0],sound[3]||ASMeta.timbre,sound[4]||ASMeta.volume) },time) time+=(sound[2]||1)*60/ASMeta.bpm*1000 } }, "playNote":function(scale,note,timbre,volume){ if(note==null){ return } ASFun.setTimbre(timbre) ASMeta.synth.send([0x90,scale*12+note,volume]) }, "setTimbre":function(timbre){ ASMeta.synth.send([0xc0,timbre]) }, "keyboardtry":function(){ let keynote={ "KeyA":-3, //la- "KeyW":-2, //#la- "KeyS":-1, //xi- "KeyD":0, //do "KeyR":1, //#do "KeyF":2, //re "KeyT":3, //#re "KeyG":4, //mi "KeyH":5, //fa "KeyU":6, //#fa "KeyJ":7, //so "KeyK":9, //la "KeyO":10, //#la "KeyL":11, //xi "Semicolon":12, //do+ "BracketLeft":13, //#do+ "Quote":14, //re+ "BracketRight":15 //#re } let keyfun={ "Minus":function(){ if(ASMeta.scale==0){ return } ASMeta.scale-- }, "Equal":function(){ if(ASMeta.scale==10){ return } ASMeta.scale++ }, } window.addEventListener("keydown",function(e){ try{ ASMeta } catch(e){ ASFun.initialize() } if(keynote.hasOwnProperty(e.code)){ ASFun.play([[keynote[e.code]]]) } if(keyfun.hasOwnProperty(e.code)){ keyfun[e.code]() } try{ document.getElementById(e.code).classList.remove("pressup") document.getElementById(e.code).classList.add("pressdown") } catch(e){ } }) window.addEventListener("keyup",function(e){ try{ document.getElementById(e.code).classList.remove("pressdown") document.getElementById(e.code).classList.add("pressup") } catch(e){ } }) } } ASFun.keyboardtry() </script>