#YMF825の音階パラメータについて
###Maker Faire Tokyo 2017会場で、入手した『YMF825Board』で、サンプルアプリでは、ドレミファソのパラメータしか記述されていないので、keyon()関数に与えるパラメータを計算してみた。
例えば)
ドの音を出す際は
keyon(0x14,0x65);
ってなっている。
レの場合は
keyon(0x1c,0x11);
ってなっており、この引数に与えるデータって何だ?となる。
YMF825のIF仕様書によると、Control Register Write Registersの#13,#14で、FNUM,BLOCKで指定するようである。
FNUMとBLOCKの値(C2〜C4まで)は、このように定義されています。
Note | Freqency | BLOCK | FNUM |
---|---|---|---|
C2 | 130.8 | 3 | 357 |
C#2 | 138.6 | 3 | 378 |
・・・ | ・・・ | ・・・ | ・・・ |
C4 | 523.3 | 5 | 357 |
で、レジスターの構成は
I_ADDR | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
#13 | "0" | "0" | FNUM9 | FNUM8 | FNUM7 | BLOCK2 | BLOCK1 | BLOCK0 |
#14 | "0" | FNUM6 | FNUM5 | FNUM4 | FNUM3 | FNUM2 | FNUM1 | FNUM0 |
っていう並びになっています。
せめて、FNUM7〜9が一つずれていればまだわかりやすいのだが・・・・
keyon()関数は、第一引数が#13の値、第二引数が、#14の値を指定してくれということです。
うーーん、こりゃ変換が大変だということで、変換テーブル表をExcelでつくりました。
MIDIで慣らすことを想定しているので、Note番号も入れてあります。
緑色が仕様書に書かれてた数値で、その他のあたいはたぶんこうなるだろうということで計算してあります。(ご利用は、自己責任で!)
以上、ご参考までに