ギターはフィンガーボードを押さえて音程を決める。フリーソフト開発秘話、目次へ
というわけで、最初はドレミの練習をはじめたりする。
5弦3フレットがド、4弦開放がレ、という風にね。開放弦近くでコチョコチョやっているうちはいいが、やがて7フレットあたり、曲によっては15フレット以上で弾くことも増えてくる。
ピアノであれば、特定の音を出す鍵盤は1つだけ。しかも、黒鍵と白鍵が決まったパターンを持って並んでいる。ようするに「見ればわかる」。ところがギターだと「見ただけではどこを押さえたら何の音が出るのかなかなかピンとこない」。ポジション移動が自由なので「階名」で覚える方が楽、という事情もある。
そのうちいろいろな曲を弾くうちに適当に覚えてくるものであるが、英文を読んでいて単語を覚えたとしても、やはり単語カードで再確認した方が記憶が定着し、応用が効くものだというのも事実である。
というわけで、何弦何フレットでどの音が出るか?を意識的に覚えようと思った。え、今まで覚えてなかったのかって?うん、実は記憶するのがめんどくさいからついつい後回しにして、だって指使い覚えたらそこそこ弾けるし、楽譜読むより指使い考える方が時間かかるから、結局指使いでおぼえちゃうし。というわけで、サイコロを買ってこようと思った。正6面体(立方体)のサイコロで、1〜6弦のどこを指すかを指定し、正12面体のサイコロでどのフレットかを決める。4と11が出た・・・4弦11フレットは、C♯かつD♭。
しかし言うまでもないが正12面体のサイコロを買いに行くのがめんどくさい。東急ハンズに売っていたのは知っているが。めんどくさい。だから行かずに済む方法を考えた。
なんてこたあない。乱数発生プログラムで
「○」弦「△」フレット
を表示させて、ボタンを押すと
音名は「□」
と答えを出すクイズのプログラムを書けばいいだけのことだ。これなら往復の徒歩の時間で作れるし、お金もかからない。
であればまず何弦何フレットに何の音があるか、という表を作ることにした。しかし一つ一つ音名を入れてゆくのはめんどくさいなあ、とも思った。そこでこれもプログラムに書かせることにした。MS-Excelのワークシートであれば苦労はない。
出来上がったものを見て不満が出る。セルの中に音名が書いてあるだけじゃイメージ湧かないなあ。ならば縦罫線を二重にしてフレットっぽくしよう。。。いいんだけど全部のフレット間隔が同じだと雰囲気でないなあ。実際のギターのフレットと同じ割合で狭くなっていくようにしよう。。。こうなると弦もほしくなる。弦と音名が重なるのは見苦しいから正解のところだけ弦を消して音名を表示するようにしよう。ならフィンガーボードはそれっぽい色で塗りたいし、、、できたできた。でも1弦と6弦の外側は少し狭くないとパッと見端の弦だと分からりにくいなあ。
よし、バインディングの色で塗ろう。そうなるとナットもほしいわ。最初「各フレットごとの音名をプログラムで書く」で始まったので、こういった拡張は今までに見たことのない方向に行く。なんとクイズを一つ出すごとに画像を全て書き換える。
おそらくはCPUの無駄遣いだ。メインフレームの時代ならぼろくそに言われただろう。しかしその代りに作りこめたものは小さくない。都度描画するもんだからフレキシブル。定数変えれば7弦ギターでも、24フレットでも、さらには変則チューニングでもいけるでよ。
かくして出来上がったのは「純粋にコードだけですべての描画をしてしまう」およそMS-Excelのマクロとは思えないもの。どうせなら全部プログラムで、とここにはちょっとこだわった。
音も出そうかと思ったが、多弦ギター、変則チューニングに対応してしまったので、ややこしくなりすぎる。というわけで却下。というわけで音の高さを確認したければ、実際に弾いてみてください。
「ギターを抱えて、確かめながらクイズに答えてね。」
その方が実感として分かるので応用が効くはずだ。(直せなかったら機能にしちまえ。)HappyScale同様の機能を作りこむのは、私の性格からいって時間の問題のような気がする。(あれ、MS-Excelのバージョンが上がると描画が崩れるのよ。)