GW短期集中連載!マイクロはちゅねで楽しいネット工作の世界へ

第5回 マイクロはちゅねに,目と耳をくっつけてみる

この記事を読むのに必要な時間:およそ 2 分

同じようにネギを振っているだけじゃつまらない

前回までで,マイクロはちゅねは自分でネギを振れるようになりました。しかし,ずっと同じペースで延々とネギを振っているだけでは,見ていてすぐに飽きてしまいます。

いろいろな外界の状況に応じて動くように改良すると,俄然面白くなってきます。今回は,動きに変化をもたせるための情報をマイコンへ与えるという話です。

音楽を聞かせてネギを振らせてみよう

面白くてつぶしの効くテーマとして,音楽に合わせてネギを振らせることを考えてみましょう。たとえば以下の動画に出てきます。

ここで「音楽に合った振り方とは一体何か」という深遠な問題もあるのですが,まずは「音が大きければ速くネギを振り,音がしなくなると止まる」といった程度の簡単な方法を想定することにします。

基本的なやり方は,アナログ・オーディオ信号をマイコンのADC(A/Dコンバータ)に入力して電圧を測定し,その結果からネギ振り速度を計算するというものです。ただしオーディオ信号は微弱なので,マイコンのADC(たとえば10bit精度でフルスケールが3.3Vなら,3.3V/2^10=3.22mVの分解能しかない)に直接入れても変化を検出できません。図1のように簡単なアンプを通す必要があります。

図1 音楽に合わせて動きを変化させるには,何はともあれ,オーディオ信号をマイコンのADCに入力する必要がある。ヘッドホンなどの信号は微小なので,簡単なアンプを通して振幅を大きくする

図1 音楽に合わせて動きを変化させるには,何はともあれ,オーディオ信号をマイコンのADCに入力する必要がある

ADCにつながったら,次に考えなければいけないのは,どれだけの速度でデータを処理するかという事です。オーディオのサンプリングレートとしては一般に44.1KHz等がよく使われますが,それを鵜呑みにするのではなく,次に挙げたことなどを検討します。

  1. ADC自体がそのレートで動作するか
  2. マイコン・プログラムの速度が間に合うか
  3. 本当にそのレートで処理することが必要か

たとえばネギ振りは,メカの反応速度の限界ゆえ1秒に高々10回位しかできないものですが,その速度を1秒に44100回も細かく調整してみたところで意味がありません。よって,音量に反応させるのであれば,ずっとゆっくりしたサンプリング・レートで構わないという事になります図2)。また,ある一瞬での音量ではなくて,一定時間(ウィンドウ)内の平均音量の値を利用したほうが自然になります。

図2 音量の値が欲しければ,一定期間内でのADC出力の平均値をとるのが良いが,過剰に高速なサンプリングをしても意味がない。これに対し,ある周波数帯の情報が欲しければ,その2倍以上の周波数でサンプリングする必要がある

図2 音量の値が欲しければ,一定期間内でのADC出力の平均値をとるのが良いが,過剰に高速なサンプリングをしても意味がない

著者プロフィール

森岡澄夫(超電磁P)

ニコニコ技術部所属。マイクロはちゅねを皮切りに,はちゅねミク小型化戦争やはちゅねミククローン戦争などで作品を発表。現在は,はちゅね宇宙航空研究開発機構(HAXA)の主謀者として積極的に活動中。

URLhttp://www002.upp.so-net.ne.jp/morioka/

コメント

コメントの記入