サンプル18(ピアノをハモらせる)

Playing Bar 1 2 3 4 5 6 7 8  
 
 

 
Drum Ptn.Nmb
Bass Ptn.Nmb
Root Note1
Root Note2
Rt.Chg.Timing


3

4

6

7

8

0

-




 W




 E




 R




 T




 Y




 U




 I




 O




 P




 @
 ハーモナイザー
 調:
 度数:  バランス:

 
 Vol: Pan:
 Rev: Oct:


S

D

G

H

J

L

;




 Z




 X




 C




 V




 B




 N




 M




 ,




 .




 /
 全てを 拍の先頭以外を
 

 

 

 
 Vol: Pan:
 Rev: Oct:
Bass Pattern


 

 

 
 Vol: Pan:
 Rev:

サンプル17に追加したソース


<body>

<td width=340px class=p10>
 ハーモナイザー<br>
 調: <select id=hmkey onchange='changeHm();'>
<option value=0 selected>C Major / A minor</option>
<option value=11>Db Major / Bb minor</option>
<option value=10>D Major / B minor</option>
<option value=9>Eb Major / C minor</option>
<option value=8>E Major / C# minor</option>
<option value=7>F Major / D minor</option>
<option value=6>Gb Major / Eb minor</option>
<option value=5>G Major / E minor</option>
<option value=4>Ab Major / F minor</option>
<option value=3>A Major / F# minor</option>
<option value=2>Bb Major / G minor</option>
<option value=1>B Major / G# minor</option>
</select>
<br>
 度数: <select id=hmval onchange='changeHm();'>
<option value=0>-8</option>
<option value=1>-5</option>
<option value=2>-4</option>
<option value=3 selected>-3</option>
<option value=4>+3</option>
<option value=5>+4</option>
<option value=6>+5</option>
<option value=7>+8</option>
<option value=8>OFF</option>
</select> バランス: <input type=number min=0 max=100 value=90 id=hmbal class=keta3 onchange='changeHm();'>
</td>

<script><!--

var shift=3;
var curkey=0;
var selKey=document.getElementById("hmkey");
var hmb=90;

function transpose(x){
 x=parseInt(x);
 switch(shift){
  case 0: return x-12;
  case 1: return x-[7,7,7,7,7,6,7,7,7,7,7,7][(x+curkey)%12];
  case 2: return x-[5,5,5,5,5,5,5,5,5,5,5,6][(x+curkey)%12];
  case 3: return x-[3,4,3,4,4,3,4,3,4,4,3,4][(x+curkey)%12];
  case 4: return x+[4,3,3,4,3,4,3,4,3,3,4,3][(x+curkey)%12];
  case 5: return x+[5,5,5,5,5,6,5,5,5,5,5,5][(x+curkey)%12];
  case 6: return x+[7,7,7,7,7,7,7,7,7,7,7,6][(x+curkey)%12];
  case 7: return x+12;
  default: return x;
 }
}

function changeHm(){
	curkey=parseInt(selKey.options[selKey.selectedIndex].value);
	shift=document.getElementById('hmval').selectedIndex;
	hmb=document.getElementById('hmbal').value;
}

document.onkeydown=function(e){	// PCキーボード演奏の発音のケースだけを例示
	e=window.event || e;
	m=kmap[e.keyCode];
	if(m>12){
		k=document.getElementById(m);
		if(k && k.className!="on"){
			if(m>59){
				Jazz.MidiOut(0x90,m+oct1*12,127);
				if(shift!=8)Jazz.MidiOut(0x90,transpose(m+oct1*12),127*hmb/100);	// 追加
			}else{
				Jazz.MidiOut(0x91,m+oct2*12,127);
			}
			k.className="on";
		}
	}
	return false;
}


changeHm()


--></script>