热烈庆祝火环圣诞节当日喜提版号!(好好调整,管理人们等你回来)
本WIKI是由玩家自发组织的非官方攻略组建立,无偿为各位种火管理人提供游戏数据、攻略等游戏相关内容。
WIKI现在仍处于初期建设阶段,除首页外权限开放,欢迎各位种火管理人收藏起来防止迷路,也希望有爱的小伙伴加入我们一同参与编辑,一起构建WIKI!
移动端收藏本站:BWIKI收藏到桌面的方法说明
全站通知:

Widget:音频合成器

来自火环WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<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> <script> /** score=[ [音符,节拍,时值,音阶,音色], [音符,节拍,时值,音阶,音色], …… ]

  • /

ASFun={ "initialize":function(){ ASMeta={ "synth":new WebAudioTinySynth(), "bpm":120, "value":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[3]||ASMeta.scale,sound[0],sound[2]||ASMeta.value,sound[4]||ASMeta.timbre) },time) time+=(sound[1]||1)*60/ASMeta.bpm*1000 } }, "playNote":function(scale,note,value,timbre){ if(note==null){ return } ASFun.setTimbre(timbre) ASMeta.synth.send([0x90,scale*12+note,value]) }, "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+ } 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]() } }) } } ASFun.keyboardtry() </script>