RSS Twitter Facebook

2012/10/12 (2012年10月 のアーカイブ)

鍵盤どうやって描いてますか?


鍵盤の絵を描く必要にせまられている人がどれくらいいるのかは謎ですが・・・
とりあえずあまり考えずにこんな感じで描いてるケースが多いのではないでしょうか。黒鍵はちょうど白鍵の境界に中心を合わせて配置する、と。

1オクターブ並べると右の図のようになります。これでもマウスでクリックすると音が出るようなアプリの場合、位置からキーを判定するのが面倒ですね。計算で出すのは面倒だから各キーの矩形情報をテーブルで持って内部かどうか、みたいなやり方ですかね。

メジャーなソフトシンセなんかでも、このように描かれているものも多くありますので、別に気にする事でもないのですが、これは実際の鍵盤を見ると微妙に違ってますよね。実際は黒鍵の位置は中心からずれた場所に配置されて結構やっかいな事になっています。


これをどう考えるべきかというと、つまりC~Eの範囲を5分割、F~Bの範囲を7分割すると考えて、白鍵の幅を1とすると黒鍵側の配置はC~Eで3/5=0.6 、F~Bは4/7=0.5714..の幅を並べたような感じになります。更に言えば黒鍵の幅は一定でもう少し幅が狭い(白鍵23mmに対して黒鍵底面11mm) ので、この位置に中心を合わせてもう少し痩せた状態になります。どうせ矩形テーブルで位置を判定するなら中心合わせじゃなくて黒鍵の位置を微修正した方が良いかもですね。

そして・・・

逆に考えると、ソフト的に手抜きする方法もあります。実際の鍵盤とは若干ずれるのですが、1オクターブを白鍵側を7分割、黒鍵側を12分割すると考えてしまえば、ソフト的には白鍵側か黒鍵側かを判断した後、X座標を分割幅で割ってキーの位置を直接計算できます。

鍵盤の絵が小さい時なんかはもうこれで良いんじゃないかなと思うのです。F#の右端なんかがちょっと気になるので絵としてはもう少しごまかした方が良いかも知れませんが、ソフト的に単純になるのは魅力なのですよ。黒鍵のあたりをグリッサンドした時に等間隔でセミトーンが並んでいるのでなんとなく気分が落ち着くという効果もあるかも知れません。

Posted by g200kg : 2012/10/12 11:00:36