ドレミファソラシドが綺麗に鳴らないプログラムの話
制作中のゲームにおいてコンボが続くごとに音程をドレミファソラシドと上げる実装を目指してピッチを変更するスクリプトを書きました。
私が最初に書いたプログラムは
pitch = x * combo
のような単純なもの。
コンボに比例してピッチが上がっていけば、高音になって気持ち良くなるだろうと思っていました。
しかし、ドレミファソラシドではない。正直気持ち良い上がり方ではなかった。
解決策
以下のサイトの最上部の表を元に倍率を設定しました。
ミなら1.2599
ファなら1.3348といった具合です。
そうすることでド#等のCメジャースケール(ドレミファソラシド)から外れる音を抜いて音を鳴らすことに成功しました。
詳しくない人向けにザックリ説明すると、
短2度とか長2度はピアノにおける距離の違いです。
ド→ド#は短2度
ド→レは長2度といった具合です。
白鍵のドレミファソラシドに黒鍵それぞれド#レ#ミ#ファ#ソ#ラ#シ#ド#と、
もしこれが等間隔であれば、等倍率で上がっていっても良かったのかもしれません。
しかし、ピアノをよく見ると残念ながらミ#とシ#は存在しません。
注意
本記事ではわかりやすいさ追及のためにドレミファソラシドとイタリア式表記を採用していますが、それについて学ぶ場合CDE等ドイツ式表記で学ばれることをお勧めします。