3 4 6 7 8 0 - W E R T Y U I O P @ |
Sound: |
S D G H J L ; Z X C V B N M , . / |
Sound: |
基本的にサンプル4の鍵盤数を増やして2段にしただけです。 特殊なことは追加していません。 上段をMIDIチャンネル1、下段をMIDIチャンネル2で鳴らしています。 上段はノートナンバー60〜76、下段は36〜52です。 それに伴いキーマップは次のように拡張しています。なお、このキーマップは ブラウザによって変わってきます。これはFirefox仕様です。 こういうことがあるので、ブラウザは極力Firefoxで統一願います。 var kmap={90:36,83:37,88:38,68:39,67:40,86:41,71:42,66:43,72:44,78:45,74:46,77:47,188:48,76:49,190:50,59:51,191:52, 87:60,51:61,69:62,52:63,82:64,84:65,54:66,89:67,55:68,85:69,56:70,73:71,79:72,48:73,80:74,173:75,64:76}; ノートナンバーが60以上のときにチャンネル1、それ以外はチャンネル2で 発音・消音するよう直接の命令部分のみ条件分けしています。 マウスクリックの消音部を例にとると次のような感じです。 document.onmouseup=function(e){ if(key){ var m=parseInt(key.id); if(m>59){ Jazz.MidiOut(0x80,m,0); }else{ Jazz.MidiOut(0x81,m,0); } key.className=""; key=""; } } 変数名・関数名の末尾に1、2をつけて倍に増やし、 それぞれのチャンネルごとに専用で使用しています。 var current_snd1 var current_snd2 function changeSnd1() function changeSnd2() のような感じで、中身も2倍にしています。