SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|

2006-05-05(Fri) ギターのチューナ完成

  赤い光が点にならないので、チューニングが難しい。そういえば、オリジナルでは赤い光がふたつだったのを思い出し、青いLEDを追加して、位相をズラして点灯させてみる……が、やっぱりうまくいかない。ちゃんとチューニングできている気がしない。

  画像の説明 画像の説明

  どーしてかなぁ……点灯回数を半分にしてみるか……おぉ!? なに!? じゃ、更に半分……うわぉ!!

  画像の説明

  ……ちゅーわけで、なぜか、点灯周期を4倍に延ばしたトコロ、赤い光が1点に収束するようになった。理論はわからんが、なにしろコレでうまくチューニングできるっぽい。実際、うまくできる。よっしゃぁ!!

  で、最後の仕上げ。今までは、セラロックが8MHzキッカリであると想定してプログラムを組んでいたが、実際にはセラロックには初期誤差があるので、その誤差を修正する。修正方法は簡単。セラロックが8MHzキッカリであると想定して、20秒(8MHz時に2,000,000インストラクション)周期で正確にLEDが点滅を繰り返すようにプログラムして、手元のナビホークのストップウォッチで周期を計測する。LEDが点灯した瞬間にストップウォッチをスタート、10秒後に一旦LEDが消灯し、再度LEDが点灯した瞬間の時間を計測するのである。

  なお、人間の反射神経では、点灯してからボタンを押しても大した精度は期待できない。だから、長期間計測することによって誤差を収束させる。最後に1発でもいいのだが、暇なのでラップタイムを次々に計測してみた。結果は以下のとおり。

 理想           現実           誤差
 9:40.00         9:36.64        99.421%
10:20.00        10:16.39        99.418%
11:20.00        11:16.05        99.419%
12:20.00        12:15.70        99.419%
13:00.00        12:55.49        99.422%
13:40:00        13:35:24        99.420%

  というワケで、99.420%を採用。このセラロックは8MHzより0.58%速いようである。0.9942の逆数は1.00583だ。つまり、実行インストラクション数を1.00583倍してやればキッカリの時刻を刻むハズである。実際にやってみる。点滅周期をナビホークの動きと比較してみると……30分経っても、目視では誤差が確認できないほどの同期レベル……完璧ッ!!

  で、さっきのコード、tune.rbの「us = 1000000 / f」を「us = 1005830 / f」に修正して再実行する。結果は以下のとおり。

 E:  329.6275569 Hz      3051.41 us / 4 =       762.85 us
 A:  440.0000000 Hz      2285.98 us / 4 =       571.49 us
 D:  587.3295358 Hz      1712.55 us / 4 =       428.14 us
 G:  783.9908720 Hz      1282.96 us / 4 =       320.74 us
 B:  987.7666025 Hz      1018.29 us / 4 =       254.57 us
 E: 1318.5102277 Hz       762.85 us / 4 =       190.71 us

  待ち時間をこっちの値に修正すれば、完璧なチューナの出来上がりである。ココにファイル一式を置いてく。

  なお、後で気づいたが、ギターの5弦の振幅数は440Hzでなく、110Hzだった。そりゃ、点灯周期を4倍に延ばしたらうまくいったハズである。オマケに言及しておくと、6弦と1弦は振幅周期にちょうど4倍の差があるから、1弦の点灯間隔にして、6弦に照射すると、最初の時のように4点が光る。あぁ、なんとインタレスティングなッ!!

  ……と、面白がってチューニングに熱中していたら、カミさんに「で、ギターは弾かないの?」ってツッコまれた……だって、コードの指使いが載っている教本も、コードが載っている歌本も見当たらないんだもん……とりあえず、ココココで情報収集。シツコく探していたら、某所で筋肉少女帯の「機械」のコードも発見!! コレ、歌ってみたかったんだよねぇ……あとは、カポか……どこに行ったのかなぁ、シャブカポ。結構、高かったんだよなぁ、アレ。

  画像の説明

  しかし、ギターを弾きたい人はこんなに苦労してチューナを自作したりせず、サッサと買ってしまって、サッサと練習を始めましょう。こんなに時間をかけるのは、ただの時間の無駄です。チューナなんて2,000円ソコソコで買えるんだから……ん? なに? ……いーのッ!! オイラはミュージシャン以前にエンジニアなんだからッ!! コレでいいのだッ!!

本日のツッコミ(全1件) [ツッコミを入れる]
かず (2009-01-29(Thu) 23:46)

はじめまして。<br>この記事を拝見し、私もチューナーを作ってみました。<br>特に、弦の周波数とLED点滅周波数の計算はとても<br>参考になりました。ありがとうございました。<br>URL:http://kazu900.blog47.fc2.com/