サンプル5(キーボードを拡張)


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に追加した点

基本的にサンプル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倍にしています。