配列は二つの部分に分かれています。上配列でVVVFの音色の切替ポイントを示しています。下配列がVVVFの音階とモーターの強さの配列です。
注意)このページのソースをスケッチにコピーすると表示のために全角スペースなどを使っているのでエラーになします。
- 上の配列 progmem_ref_kasoku[10]
0〜9までのVVVFの配列の切替ポイントを指示しています。
const PROGMEM int progmem_ref_kasoku[10] =
{
0,//0:吊りかけ音 10- 110
5,//1:吊りかけ音 10 - 220
10,//2:吊りかけ音 10- 330
15,//3:吊りかけ音 20 - 110
20,//4:吊りかけ音 20 - 220
25,//5:京急ドレミファ
40,//6:E231系
45,//7:抵抗制御
50,//8:VVVF 東洋系
55,//9:E231
60//終わり+1
};
- 下の配列 progmem_kasoku[55][8]
VVVF配列のそのものです。Duty初め、Duty終わりは以前この配列でモーターも回していた名残で、現在は意味がないです。
速度は0%〜100%のとき0〜1023です。周波数はHzで入れられますが、合っているかどうか確認していません。
また高い周波数で値を変更していくと、連続的に音が変わらないことがあります。
周波数1、周波数2があるのは、和音を出力するためです。周波数2の音は周波数1の1/3の振幅の波形になります。
標準の配列だと以下のように作っております。(東洋系VVVFの例)
| 速度スタート | 速度エンド | 周波数1スタート | 周波数1エンド | 周波数2スタート | 周波数2エンド | ダミー | ダミー |
領域1 | 0 | 170 | 277 | 369 | 554 | 739 | 512 | 512 |
領域2 | 171 | 330 | 246 | 415 | 587 | 987 | 512 | 512 |
領域3 | 331 | 500 | 130 | 207 | 370 | 587 | 512 | 512 |
領域4 | 501 | 1021 | 207 | 353 | 587 | 1000 | 512 | 512 |
領域5 | 1022 | 1023 | 353 | 353 | 500 | 500 | 512 | 512 |
表の例で、領域2は速度(1023で最高速)の171〜330の間に周波数1は246Hz〜415Hzに変わり、周波数2は587Hz〜987Hzに変わるということになります。
//速度領域始め、終わり、周波数始め、終わり、周波数2始め、2終わり、-、-
const PROGMEM int progmem_kasoku[55][8] =
{
//省略///
//8:VVVF 東洋系
{ 0, 170, 277, 369, 554, 739, 512, 512},
{ 171, 330, 246, 415, 587, 987, 512, 512},
{ 331, 500, 130, 207, 370, 587, 512, 512},
{ 501,1021, 207, 353, 587,1000, 512, 512},
{1022,1023, 353, 353, 500, 500, 512, 512},
//省略//
};