音律変更プログラム |
2020.10.31
音高の変更は、MIDIでも扱う事のできるピッチベンドでも可能ですが、
これは、その音符が現れるたびに、実施することが必要です。
電子楽器のメーカーでは、周波数440Hzと規定されている音符Aの周波数値を変更するのですが、
これは、MIDIでは規格化されておらず、メーカー独自の仕様となっています。
ローランドは、GS音源、ヤマハは、XG音源という形で、MIDI仕様を拡張していて、
システム・エクスクルーシブという信号を与えることで拡張機能を制御することができます。
XG音源の場合、XG動作状態に切り替えるために、最初に、以下のエクスクルーシブを送ります。
F0 43 10 4C 00 00 7E 00 F7 <XG System On>
エクスクルーシブは、F0に始まり、F7で終わる信号列で、
各信号の意味は以下のとおりです。
F0 Exclusive status
43 YAMAHA ID
10 Device Number
4C Model ID
00 Address High
00 Address Mid
7E Address Low
00 Data
F7 End of Exclusive
音律変更ツールの最も簡単なものは、音楽研究所さんの以下のサイトにあります。
http://www.mu-tech.co.jp/music/mus13j.html
C,C#,D,D#,E,F,F#,G,G#,A,A#,B の12音高のそれぞれに、変更量をセント値で指定します。
セント値とは、平均律の各半音の音高差を、100セントとして定義するものですが、
±50の値を指定することができます。
C# に -50セント、D# に +50セント を設定してファイル出力した結果. out.mid を、
Dominoで開いた例を以下に示します。
イベントリストの、最初の行は、XGシステム・オン です。
それに続く12行が、各音に加えた音高変更で、f7の前の最後のデータが変更値です。
0セント が 40h、-50セント が 0eh、+50セント が 72h に対応します。
説明 16進数の演算に詳しくない人のための解説です。
0セントが、16進の40h、10進の64、と定義されたので。
-50セントは、64-50=14=0eh、+50セントは、64+50=114=72hです。
ローランドのGS音源には、スケール・チューン機能があり、
一つのエクスクルーシブ文で、音階の12音のピッチを変更できます。
例えば、純正律(C調)と、アラビア風音階の、平均律からのずれは、
以下のとおりです。値は、セント値です。また、0を40hとした16進数も示します
音名 純正律(C調) アラビア風音階
セント 16進数 セント値 16進数
C 0 40h -6 3Ah
C# -8 38h +45 6Dh
D +4 44h -2 3Eh
D# +16 50h -12 34h
E -14 32h -51 0Dh
F -2 3Eh -8 38h
F# -10 36h +43 6Bh
G +2 42h -4 3Ch
G# +14 4Eh +47 6Fh
A -16 30h 0 40h
A# +14 4Eh -10 36h
B -12 34h -49 0Fh
エクスクルーシブ文
純正律
F0 41 10 42 12 40 11 40 40 38 44 50 32 3E 36 42 4E 30 4E 34 7B F7
アラビア風音階
F0 41 10 42 12 40 11 40 3A 6D 3E 34 0D 38 6B 3C 6F 40 36 0F 76 F7
41 は、ローランドのIDナンバー
10 は、デバイスID
42 は、モデルID (GS)
12 は、コマンドID
40 11 40 は、アドレス
赤字 は、データ
7B, 76 は、チェックサム
チェックサムは、アドレス、サイズ、およびチェックサム自身を加算した値の下位7ビットがゼロになる値です。
具体的な計算方法は、以下の通りです。
送りたいエクスクルーシブ・メッセージのアドレスが aa bb ccH,
データまたはサイズが dd ee ffH とすると、
aa+bb+cc+dd+ee+ff = 合計
合計/80h = 商 ・・・ 余り
80h - 余り = チェックサム
ご意見等がありましたら、think0298(@マーク)ybb.ne.jp におよせいただければ、幸いです。
ホームページアドレス: https://think0298.stars.ne.jp