Vogler(フォーグラー)は、2005年8月に開催されたイベント、メタモルフォーゼのデコレーションとしてすずえりさんが作成したデコレーション用に作成しました。
すずえりさんからのリクエストは、「音楽のビートに同期して光るものをつくりたい」ということでした。こうしたものを実現するためには、様々な手法がありますが、今回採用した手法は、シンプルなもので、次のような流れでマイクから入ってくる音を光の明滅に変換します。
- マイクからの信号を適当な倍率で増幅する
- 増幅した信号をローパス・フィルタ(LPF)に通す
- ローパス・フィルタを通った信号からエンベロープを検出する
- 検出したエンベロープに適切なスケーリングを行ってLEDの明るさを制御する
今回は、最近たまたまPSoCというプログラマブル・デバイスを使っていたということもあり、できる限りの部分をPSoC一個で実現しよう、という方針で進めました。
次の図が、今回作成したコントロール基板「Vogler」の回路図です。
見てのとおり非常に簡単な回路になっていて、マイクとPSoC以外の部分はバイパス・コンデンサと電流制限用のLED程度です。 この程度の回路で済んでいるのは、PSoCのハードウェアでかなりの部分を担当してしまっているからです。具体的には、次のような内容をPSoC内部のアナログ・ブロックと呼ばれる部分で担当しています。
- マイクからの信号を48倍に増幅する
- 増幅した信号を2つのローパス・フィルタに通す
- ローパス・フィルタを通した信号をさらに適当な倍率(0.012倍から8倍)で増幅する
- 増幅した最終的なアナログ信号をA/D変換する
ここまでをPSoCのハードウェアで処理しますので、ソフトウェアで処理するのはA/D変換して得られた振幅値を元に、適当なエンベロープを検出し、その結果でLEDの明るさを決定する部分だけです。
エンベロープの検出部分は、music-dspで紹介されている「Simple peak follower」のアルゴリズムを参考に、PSoCでも高速に動作するようにアレンジしたものを使用しています。
最終的に、LEDの明るさを制御する部分は、これまたPSoC内部の4基のPWMを使用しています。今回は、全てのLEDを全く同じ制御の仕方にしていますので、PWMは1基でも大丈夫なのですが、将来的にもう少し細かい制御をしたい場合を想定して、4基のPWMで制御するようにしました。これらのPWMは、それぞれ2本の出力につながっていますので、基板1枚あたり8個のLEDを制御できるようになっています。
以上の様な部分は、写真で見ても暗くて全く見えない部分で、目に見える部分は造形部分です。見えない部分を担当するというのは地味な仕事ではありますが、自分の作ったものが他の人に使われて最終的な作品になる、というのは面白い仕事でもあります。
(写真提供:すずえり)






People in all countries take the home loans in different banks, because this is fast and easy.
Posted by: Ilene26DELANEY | 2010.03.20 at 19:38