大人の科学 ポケットミクを改造してみる。 その9
鍵盤読取りがほぼできるようになりました。今回改善したのはチャタリング対策です。
これまでは手を抜いてADC読み取り値の移動平均を取るだけでお茶を濁していたのですが、タッチ時のデータを見ていてそれではだめだと気付きました。(そりゃそうですね。普通のスイッチと一緒ですね。)
今回平均計算をしている所で、ADC値の変動が±25を超えたら棄却するようにしてようやくほぼ安定しました。(±25は観測の結果1キー分の差文です。)
ほぼというのは、まだごくたまに1キーずれることがあるからです。。。。これはノイズ原因かな。。。。
とりあえずちょっと地味ですがドレミの音に合わせた口パクモードを入れ込みました。
分かりにくいと思いますが、画面の下にあるアスタリスクが鍵盤のタッチ位置を示しています。
いままでの動画でも動いていたのですが、ふらふらしていたのがようやく直りました。
鍵盤スタイラスADC読み取り値も安定したので、タッチ位置とADC値(つまり電圧値)の相関を取ってみました。
横軸が鍵盤タッチ位置です。左側が0番として26番まであります。縦軸がAD変換された電圧の値です。PIC内蔵ADCをVCCレファレンスで使っていますので、1023が3.3Vとなります。
まあリニアと言ってよいのではないかと思います。なお、手前・半音・奥のリボンで値にほとんど違いは見られませんでした。
「ほぼ」の分はおいておくと、とりあえずやりたかったことはできたので、
次に何やろうか考え中です。
例えば:
・音声出力の方をAD変換して連動表示(しかし何を?)
・キー操作(今IOを入力にして見ていますが、出力にしてしまえば逆に操作もできるはず。)
・鍵盤操作(今ADCで見ていますが、逆にDACを付ければ多分操作できるはず。
しかしそれは普通の自動演奏であって手間の割におもしろくなさそう。)
・MIDI操作(できるかな?)
それではまたです。
ningyotoge様。こんにちは。
キーのずれですが、声を聞いている限りではポケミクさんは正しく認識していて、私のソフトが読んだ値だけがずれるので私のソフト問題なのは間違いないです (>_<)
ただキャリブレーションで閾値か電圧が良い方に変わる可能性はありますので試してみようかと思います。
URLありがとうございます。いまのところUSB-MIDIをPICから制御する方法が分かっていないのですが、いずれはマイコンでMIDIの方も動かしてみたいと思います。
(いつになるか?ですが。。)
投稿 見習職人 | 2014/04/26 12:05
>ごくたまに1キーずれる
キャリブレーションとかは関係ないでしょうか?
あと Web MIDI API で鍵盤の音とりしてる例です
http://hot-spot.appspot.com/WebMIDI/index.html
投稿 ningyotoge | 2014/04/26 03:04