モジュール詳細:音階ダイヤル

*クルッ* 待って、何か聞こえなかった? *クルッ*

  1. モジュールには、3つのダイヤル、それぞれの上にある小型のディスプレー、3つの音符と1つの音部記号を表示している上部の大型ディスプレー、及び左上にSUBMITボタンがある。
  2. 各ダイヤルは0~9とその真上に表示している音符を循環させる。ダイヤルを回すと、あるスケール(音階)を構成する音が再生される。
  3. ダイヤルの真上の画面を押すとダイヤルが現在設定している音が再生される。大型ディスプレーを押すと、残り時間に応じて3つの音のいずれか一つが再生される。
  4. ダイヤルは左から1、2、3と読み取られる。
  5. 各ダイヤルを正しい方向に設定し、正しいタイミングで送信することでモジュールを解除することが出来る。
  6. 間違った方向に設定したり、間違ったタイミングで押すとミスが記録される。

ステップ1:初期位置

ダイヤルごとに、以下の手順に従う。

  • A:大型ディスプレーが再生する音符の位置は「3 - (残り分数を3で割った余り)」で求められる。
  • B:このダイヤルが再生しているメジャースケールを判別する。これは、ダイヤルを一番低い音が鳴る位置に設定し、それと大型ディスプレーが再生する音を比較することで判別できる。
  • C:以下の表に対し、このダイヤルのスケールを段に、ダイヤルと同じ位置にある大型ディスプレーの音符を列に使用する。
  • D:表の交点から得られる数字が、そのダイヤルの初期位置である。
C/B#C#/DbDD#/EbE/FbF/E#F#/GbGG#/AbAA#/BbB/Cb
C813169574020
Db124362951708
D374231852690
Eb195430728436
E648542310579
F245165068973
F#652071386479
G248953718706
Ab305219886947
A753096894201
Bb410862175039
B011622897534

Cスケール

Dbスケール

Dスケール

Ebスケール

Eスケール

Fスケール

F#スケール

Gスケール

Abスケール

Aスケール

Bbスケール

Bスケール

ステップ2:最終位置

ダイヤルごとに、以下の手順に従う。

  • A:以下の楽譜から、このダイヤルの真上にある音符と全く同じものを探す。
  • B:以下の楽譜から、このダイヤルと同じ位置にある大型ディスプレーの音符と全く同じものを探す。
  • C:楽譜から見つけた2つの音符の間にある音符の個数を数える。ただし、以下の音符のみをカウントする。
    • このダイヤルの真上の画面の背景が白い場合、線に重なっている音符(赤色の音符)のみをカウントする。
    • それ以外の場合、空白に重なっている音符(青色の音符)のみをカウントする。
  • D:10で割った余りを求め、このダイヤルをその数字に設定する。

ステップ3: 押すタイミング

ダイヤルが現在再生する音とダイヤルの画面上に表示されている音符の音程を求める。ダイヤルの画面の音部記号は大型ディスプレーの音部記号と同じものである。

注意:2つの音が1オクターブ以上離れている場合、高い方の音を取得し、P1-M7の範囲になるまでそれを1オクターブ下げる。

これを全てのダイヤル/画面に対して行い、音程とダイヤル/画面の位置を以下の表に使用して数字を取得する。

1つ目2つ目3つ目
P1967
m2131112
M25513
m3834
M31298
P421211
TT1076
P53102
m611810
M66139
m7423
M7745

3つの数字を掛け合わせニ進数に変換する。二進数への変換は、数字を2で割った余り(0または1)をこれまでに求めた余りの左に記入し続けることで行える。これを割られる数字が0になるまで行う。

780 / 2 = 390 余り:0
390 / 2 = 195 余り:0
195 / 2 = 97 余り:1
97 / 2 = 48 余り:1
48 / 2 = 24 余り:0
24 / 2 = 12 余り:0
12 / 2 = 6 余り:0
6 / 2 = 3 余り:0
3 / 2 = 1 余り:1
1 / 2 = 0 余り:1
二進数: 1100001100

二進数の桁数が3の倍数ではない場合、桁数が3の倍数になるように二進数の前にゼロを追加する。

3つの画面の背景を読み順で取得し二進数の各桁の真上に記入し、各桁に対応する色が割り当てられるまで3色の並びを繰り返し記入する。

二進数:001100001100
色のパターン:白 黒 黒(WBB)

WBBWBBWBBWBB
001100001100

S = 0とする。各桁と色の組み合わせに対して、

  • 色が白で桁が1の場合、Sに1を足す。
  • そうでなければ、色が黒で桁が0の場合、Sに1を足す。

Sを10で割った余りを求め、カウントダウンタイマーの秒数の下一桁がこの数字になったときに送信する。

音部記号、音符記号、変化記号、なんじゃそりゃ!

音部記号は書かれた音符のピッチを示すために用いられる。これは楽譜の各行の初めに記入されている。以下は各音部記号ごとの再生される音を示している。英数字のペアは以下のキーボードの鍵盤を参照している。

ト音記号

ヘ音記号

ハ音記号

キーボード

音符の横に#またはbの記号がある場合、その音符は1半音上/下になる。

半音とは、キーボード上で隣り合っている鍵盤のことである。例えば、G#はGとAの鍵盤の間にある。BbはAとBの鍵盤の間にある。つまりE#はFと同じ意味になり、Fbはその逆を意味する。B#とCbに対しても同じことがいえる。

音程

音程とは2つのピッチの差を示す。我々の耳が識別できる音程は12種類ある。以下の音符は、以下のオーディオファイルに読み順で対応している。

音声
音程P1m2M2m3M3P4TTP5m6M6m7M7
半音の差01234567891011

ただし、2つの音がM7より高い位置にあるように聞こえることもある。その場合は、低い方の音を1オクターブ上げるか、高い方の音を1オクターブ下げ、P1~M7の範囲内に収まるようにする。

オクターブとは12半音差を意味する。2音はP1のように似た音程になるが、一方の音がもう一方より高くなる。

2つの音の差を得るときは、モジュールに書かれた音符に対しても同じようにする。