サンプル15(ベースで5度音も弾く)

Playing Bar 1 2 3 4 5 6 7 8  
 
 
Drum Ptn.Nmb
Root Note1
Root Note2
Rt.Chg.Timing


3

4

6

7

8

0

-




 W




 E




 R




 T




 Y




 U




 I




 O




 P




 @
 
 


S

D

G

H

J

L

;




 Z




 X




 C




 V




 B




 N




 M




 ,




 .




 /
全てを 拍の先頭以外を
 
 
Bass Pattern

 
 
 

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

<body>

<td colspan=3 class=p10>
<input type=radio name=bpoc id=bpoc1 onchange='bed();'>全てを
<input type=radio name=bpoc id=bpoc2 onchange='bed();' checked>拍の先頭以外を
<br>
<select id=bporn>
<option value="only">ルートのみで
<option value="octs" selected>オクターブ上下含む
<option value="5tha">5度音も少し含む
<option value="5thb">5度音も多く含む
</select>
</td>

<script><!--

var octs=[0,0,0,0,0,0,0,0,12,12,-12,-12];	// オクターブ上下を含む
var tha=[0,0,0,0,0,0,0,0,12,12,-12,-12,7,-5];	// 5度音も少し含む
var thb=[0,0,0,0,0,0,0,0,12,12,-12,-12,7,7,-5,-5];	// 5度音も多く含む

var boc;
var born;

function tick(){
	if(playing==2){		// ループプレイのとき
		document.forms[0].elements[currbar-1].checked=true;
		currdrptnb=document.forms[1].elements[currbar-1].value;
		cht=document.forms[4].elements[currbar-1].value;
		bpp=document.forms[5].elements[count].checked;
		bvel=document.forms[5].elements[16].value;
		if(document.getElementById('bpoc1').checked){	// ベース音程変化が
			boc=0;		// 全てのタイミングを対象
		}else{
			boc=1;		// 拍の先頭タイミング以外を対象
		}
		born=document.getElementById('bporn').selectedIndex;	// 変化パターン
		
		if(bpp)Jazz.MidiOut(0x81,mbn+36,0);	// 消音処理
		
		(中略)
		
		if(bpp){
			tx=0;
			if((boc==0)||(count%4!=0)){	// 音程変化をする場合
				if(born==1){
					tix=Math.floor( Math.random() * 12 );
					tx=octs[tix];	// オクターブ上下
				}
				if(born==2){
					tix=Math.floor( Math.random() * 14 );
					tx=tha[tix];	// 5度も少し
				}
				if(born==3){
					tix=Math.floor( Math.random() * 16 );
					tx=thb[tix];	// 5度も多め
				}
			}
			Jazz.MidiOut(0x91,cbn+tx+36,bvel);	// 変化幅txを加算して発音
			mbn=cbn+tx;	// 変化幅txを加算して保管
		}
		
	}
	(後略)
}
--></script>