VL-BASICで音階

2022/4/8(金)
VL-BASICで音階
 
MIDIピッチベンド値
 
(b) = 2進数
(h) = 16進数
hhhhhhhlllllll(b)
0~127,0~127 = 0hhhhhhh(b),0lllllll(b)
10,00(h) = 2048 = 100セント(半音)
 1セント = 20.48
 2セント = 40.96 ≒ 41 = 29(h)
14セント = 286.72 ≒ 287 = 128*2 + 31
= 2,1F(h)
 
 2セント = 40,00(h) + 29(h) = 40,29(h)
-14セント = 40,00(h) - 2,1F(h)
(80-1F=61)
= 3D,61(h)
 
セント MIDIピッチベンド送信データ
 0  E?, 00, 40(h) … (下位,上位の順)
 4  E?, 29, 40(h) … (下位,上位の順)
-14  E?, 61, 3D(h) … (下位,上位の順)
? = Channel = 0~F(h)
 
MIDIピッチベンドは
4000(h)が±0
7F7F(h)が最大高音
0000(h)が最大低音
だそうです
 
ピッチベンドセンシティビティ
Bn,64,00(h)
Bn,65,00(h)
Bn,06,xx(h)
(xxが大きいほどピッチベンド変化大)
(nはチャンネルで0~F)
xx = 4ならピッチベンド+1000(h)で半音(100セント)
xx = 1ならピッチベンド+4000(h)で半音(100セント)
を使ってより細かくピッチベンドを指定します
(b) = 2進数
(h) = 16進数
 
ピッチベンド値の計算が面倒なのでプログラムで
計算させています
 
MIDIピッチベンド値
 
ピッチベンド値は7bit+7bitで表現されます
0hhhhhhh0lllllll(b)はhhhhhhhlllllll(b)です
(例)7F7F(h)は3FFF(h)という値を表している
なのでピッチベンドは
0000(h)~4000(h)~7F7F(h)送信値
0000(h)~2000(h)~3FFF(h)実際の値
  0  ~8192  ~16383 10進数
-8192 ~  0  ~+8191 変化量
となります
 
MIDIピッチベンド送信データは4000(h)の場合
En, 00, 40(h) (下位,上位の順)
(n=0~F:チャンネル)
 
これで、合っているか分かりませんが
音を鳴らして見ました
一応うなりは軽減しているような...?
 
ピッチベンドセンシティビティは
xx=4(たぶんデフォルト)で十分細かいので
xx=1とかにする必要はなさそうです
xx>4にして大きく変化させたいときに
使用すれば良さそうです
 
VL-BASICとblg~.zip(note001.bas)は
以下のリンクからダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい





このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)