//////////////////////////////////////////////////////////////////////// MTB Keyboard library　(06.02.17-)////////////////////////////////////////////////////////////////////////	History:////	06.02.17	作成開始////////////////////////////////////////////////////////////////////////// 実行部preloadKeyImg();// 名前による画像ファイルパス作成function getKeyImgPath( name ){	return( "../img/key/" + name + ".gif" );}// 画像の先読みfunction preloadKeyImg(){	var i=0;	var imgs = new Array();	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyw" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keywend" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyb" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyb1" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyb2" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyb3" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyb4" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keybend" );	imgs[i] = new Image();	imgs[i++].src = getKeyImgPath( "keyboct" );}// 黒鍵？function isBlackKey( note ){	return( note.length == 3 );}// 白鍵？function isWhiteKey( note ){	return( ! isBlackKey(note) );}//// 鍵盤作成// 鍵盤イメージタグ作成function makeKeyImgTag( name, file ){	var theSrc="";	theSrc += '<img src="' + getKeyImgPath(file) + '"';	theSrc += ' name="' + name + '"';	theSrc += ' hspace="0" vspace="0" align="left" border="0">'; // 改行しない	return( theSrc );}// JavaScriptを実行する「アクション鍵盤」作成function makeActionKey( funcClick, funcOver, note, oct, name, file ){	var theSrc="";	var arg = "'" + note + oct + "'";	var funcCLK = funcClick + '(' + arg + ')'; // マウスクリック	var funcOVR = funcOver + '(' + arg + ')'; // マウスオーバー	var funcOUT = funcOver + "('')"; // マウスアウト	if(false)	theSrc += '<a href="javaScript:' + funcCLK + '"';	else		theSrc += '<a href="#"' + ' onClick="' + funcCLK + '"';	theSrc += ' onMouseOver="' + funcOVR + '"';	theSrc += ' onMouseOut="' + funcOUT + '"';	theSrc += '>'; // 改行しない	theSrc += makeKeyImgTag( name, file );	theSrc += '</a>'; // 改行しない	return( theSrc );}//// オクターブ単位の鍵盤上下段作成// 鍵盤上段作成（黒鍵対応）function makeUpperKeys( funcC, funcO, start, end ){	var theSrc="";	for( var i=start; i<=end; i++ )	{		theSrc += makeKeyImgTag( "", "keyb1");		theSrc += makeActionKey( funcC, funcO, "Db", i, "", "keyb");		theSrc += makeKeyImgTag( "", "keyb2");		theSrc += makeActionKey( funcC, funcO, "Eb", i, "", "keyb");		theSrc += makeKeyImgTag( "", "keyb3");		theSrc += makeActionKey( funcC, funcO, "Gb", i, "", "keyb");		theSrc += makeKeyImgTag( "", "keyb2");		theSrc += makeActionKey( funcC, funcO, "Ab", i, "", "keyb");		theSrc += makeKeyImgTag( "", "keyb2");		theSrc += makeActionKey( funcC, funcO, "Bb", i, "", "keyb");		theSrc += makeKeyImgTag( "", "keyb4");	}	theSrc += makeActionKey( funcC, funcO, "C", i, "", "keybend");	theSrc += "\n"	return( theSrc );}// 鍵盤下段作成// ハンドラdoKeyClick(note)を呼び出すのでアプリケーション側で定義するfunction makeLowerKeys( funcC, funcO, start, end ){	var theSrc="";	for( var i=start; i<=end; i++ )	{		if(i==4)			theSrc += makeActionKey( funcC, funcO, "C", i, "", "keywc");		else			theSrc += makeActionKey( funcC, funcO, "C", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "D", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "E", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "F", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "G", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "A", i, "", "keyw");		theSrc += makeActionKey( funcC, funcO, "B", i, "", "keyw");	}	theSrc += makeActionKey( funcC, funcO, "C", i, "", "keywend");	theSrc += "\n"	return( theSrc );}