音律変更プログラム 

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