オーディオ向けスペクトラムアナライザの製作





第二歩 テープLEDの色でパワーを表現 2016年10月14日

第一歩がうまくいったので、次は何らかの形で各バンドのパワーを表現したい。いずれは一般的なスペアナ同様にLEDの点灯数でパワーを表現したいが、LEDがバンド数×パワーレベル数×チャンネル数 = 5×7×2 = 70個必要となり、 ハード的にもソフト的にも第一歩からいきなり作るのは厳しい。そこで、第二歩としてNeoPixel LEDを使い、色でパワーを表現することとした。

NeoPixel LEDはパルスの個数で個々のLEDの点灯を制御でき、流れるLEDが簡単に作れる優れものだ。信号線1本と電源線2本を数珠繋ぎにすることで複数LEDを駆動でき、LEDを何個接続してもマイコンとの接続が1本なのはうれしい。しかもArduinoでライブラリが供給されており、ソフト的にも扱いやすい。

別件でNeoPixelのテープLEDを入手していたのですぐに実験開始。テープの両端から7個を使用することとした。両端が左右のチャンネルの最低音のパワーを示し、テープの中心に向かうほど高い音のパワーを示すようにした。発行色は、パワーが大きい順に青、緑、黄、赤、ピンクとした。

試作機の動作はこちら。ピアノの鍵盤の奥にテープLEDを設置した理由は、テープLEDが丸まらないようにするのにちょうどいいから。




第一歩と同じく60Hz、160Hz、400Hz、1kHz、2.5kHz、6kHz、13kHzの正弦波を順に流した後、今回はマリオのBGMでも動作させてみた。発行色の変化だけでもそれなりに楽しめる。ソースはこちら。 最低音バンドとそれ以外で発光の閾値を使い分けて、(28、29行目の配列thとth_low)バンドが変わっても同じ振幅なら同じ発行色となるようにした。(最低音バンドのみ感度が低かった)そのせいで104行目からの色判定関数がやや冗長になってしまった。なお、このソースを使用する場合はライブラリの取得を忘れずに。



ライブラリはAdafruit NeoPixelが必要

回路はごくシンプル。Auduinoにスペクトラムシールドを接続し、デジタル12番ピンにNeoPixelの信号線、5V出力ピンとGNDピンにNeoPixelの電源ピンを接続した。他の外部回路は不要。NeoPixelの駆動用電源はACアダプタが推奨されるが、 本作例のように10個程度の場合はAruduinoの供給で不足ないようだ。

次は各バンドのパワーをLEDの個数で表現したい。NeoPixelの親戚のLED Matrix Panelを使うとハードもソフトも楽できそう。実はNeoPixelを複数本接続し、1〜7個目のLEDを最低音、8〜14個目を次に低い音域用・・・とすれば今の段階でも実現できるが、 配線が大変で、複数本のテープLEDを丸まらないように管理するのが面倒なので、LED Matrixまであえて待つこととした。



第一歩 閾値を超えたらLED点灯 2016年9月27日

偶然 MSGEQ7 というオーディオ用スペクトラムアナライザ(スペアナ)向けICを見つけた。データシートによると、 このICにストローブ信号を入力する度に各周波数帯の強度をアナログ電圧で出力するらしい。

なるほど、PICやaruduinoへのインプットインターフェースとして使いやすそうだ。これまで開発を続けてきたLEDの点灯制御と合体させ、音と光の連携もおもしろそう。

手始めにスイッチサイエンスからスペクトラムシールドを取り寄せ、試してみることにした。スペクトラムシールドはMSGEQ7がオーディオのRとLの2チャンネル分とステレオジャックが2個すでに はんだ付けされており、ピンヘッダを取り付ければarduinoに接続してすぐに使える優れもの。しかも、2個のジャックのうち1個は入力をそのまま出力するので、既存のオーディオ環境に挿入可能。

ただ、スペクトラムシールドには可変抵抗がなく、MSGEQ7とジャックがコンデンサを通して直結のため、レベル調整はソフト側でしか行えないのが制約だろう。

まずは、オーディオ信号の各周波数帯の出力があるかないか(閾値を超えているか否か)でLEDを点灯させてみることとした。たたき台としてメーカーのgitのソースを使用したが、 思ったような動作でなかったので修正した。各周波数において左右のオーディオ信号のパワーに差がある場合、LEDを点灯させるようなプログラムだったのを各周波数において閾値を超えた場合、LEDが点灯するように修正した。(回路はこちら


試作機の動作はこちら。



動画では順に周波数60Hz、160Hz、400Hz、1kHz、2.5kHz、6kHz、13kHzの正弦波を入力している。さしあたり、各正弦波に対し1個ずつ発光できている。

第一歩は成功。今後、音と光のコラボを実現していきたい。YouTubeを検索すると、海外での製作記事が多い。三次元配列LEDに出力するなど、技術、趣向を凝らしたものが多く、興味はつきない。

参考までに、今回使用したarduinoソーステスト用音声ファイル

次の構想はNeoPixelとの連携。aruduinoに対する外部回路が最小限で済むうえ、配線が少なくて済み、フルカラーLEDが扱える。最近は便利なツールが登場し、電子工作の幅が相当広がったように思う。



Back