LEDとオペアンプを用いた音声の可視化とその研究
※まじめなタイトルと違って内容はひどく単純です。
こんにちは、montaです!
皆さんはPCで音楽を聴くときに何のプレーヤーを使っていますか?
Windows Media PlayerとかiTunesとかWinampとかfoobarとか色々ありますが、大抵のプレーヤーには視覚効果(Visualization ビジュアライゼーション)が備わっているはずです。
montaはただ単に音楽を聴いているだけではツマラナイので視覚効果をよく使っているのですが、視覚効果ってあまり種類が無いですよね?
大別して3、4種類ぐらいですか?
周波数スペクトラムとレベルメーターといった『昔からのオーソドックス系』
よくある『サイキックトランストリップ系』
私は苦手です(;´Д`) ずっと見ていると精神的に参ってきます。
Winampのプラグインライブラリはこんなのばっかりですが、欧米では人気あるんですかね?着いていけません。
おまもりんごさんのような『ネタ系』
こんな感じですか?歌詞表示はBGMでは使えないので除外しますw
あと別枠として、「modp」(旧版)というプレーヤーが実装している、
『スペクトログラム』を挙げておきます。
スペクトログラムというのは縦軸を周波数スペクトル、横軸を時間でとったグラフです。
どの周波数帯の音が何秒鳴っているかを視覚的に見られるので、例えばカラオケの練習などで原曲のボーカルの音程の推移を見たいときに重宝します。
『スペクトログラム』を表示できるプレーヤーは私が知る限りではこのmodpと、WinampのSliding Spectrogramプラグインだけです。
ただ、Slidingの方は周波数のスケールがとてつもなく大きく、一番見たい中音域(ボーカル帯)が大ざっぱにしか表示されないのが大変残念です。(modpはちょうどボーカルやメロディラインがよく見えるように中音域のみを表示してくれます)
しかし、modpはGUIが独特 and ウインドウサイズ固定で正直使いにくいので常用したいプレーヤーではないのです。
ですが、このスペクトログラムと、とあるフォーマットの曲を
鍵盤表示できるのでmodpは今でも重宝しています。
惜しむべきはここ数年開発が止まっていることでしょうか。
いっそのこと、自分でfoobar用のスペクトログラムプラグインでも書いてみましょうか?ww
話が脱線したので軌道修正。
これら視覚効果は派手なモノもありがすが、あくまで画面の中の世界です。ディスプレイの光量なんてたかが知れています。
というわけでPCの外部にレベルメーター(のようなもの)を設置します。
条件は
・USBの+5Vで動くこと
・光源にはLEDを利用
・単純な仕組みながらも綺麗
です。
ところで、オーディオアンプのスピーカー出力(+と-)に白熱電球(40W球とか)を繋いだことがある人はいますか?
音量に合わせて電球が点灯しますよね?(※白熱電球は交流でも光る)
それのLED版を作ります。(LEDなので交流を直流に整流しないとダメですが)
いわゆる普通のレベルメーター(段階表示)にしないのは、『見ていても面白くないから』『レベルメータICを買ってくれば完成』という理由です。
それこそPCの視覚効果で見ればいいじゃないですかw
作ると言っておきながら、実は条件を満たす製品が既に存在しています。
ホリから発売された『バイオハザード アウトブレイク アンブレラ サウンドエフェクトスタンド』というものです。
本来はPS2の縦置きスタンドとして開発されたものです。
4年ぐらい前に大宮ソフマップにて980円で投げ売りされてましたw
PS2の前面USBポートから給電し、ステレオRCAプラグを接続すると音声に合わせて、
超優良企業アンブレラ社のロゴが妖しく光るのです(*゚∀゚)=3ハァハァ
GIFアニメにしてみましたw
中身は赤色LEDが2つと、
単電源オペアンプ(LM358N)を使った増幅回路で構成されてます。
LM358Nは2回路入っているのにどちらの出力も同じLEDに繋がっていたり(モノラル化)、さらにもう片方のLEDにもそっくりそのまま繋がっていて2つのLEDが同時に光りますw
ステレオ構成に簡単にできるのに勿体ないですw
というわけで、
似たような回路を作りました。
音声のラインアウトを約0.5Vppと見積もり、4Vぐらいに増幅できるようゲインをかけてます。
オペアンプは同じLM358N。
回路図はいらないですよね。
ここで問題が。
直流に整流後、この回路では最大で3.3Vまでしか出せないようです。
どうやら電源電圧が5Vしかないのが原因みたいですね。
ダイオードの降圧分を含めると3.3Vぐらいが5V電源におけるLM358Nの増幅限界みたいです。
赤や黄色LEDなら2Vから点灯できて問題ないのですが、3.3V以上(3.5Vとか)が必要な高輝度な青色LEDや白色LEDが点灯できません。
ではどうしましょう?
1.電源電圧を上げる。
→USBを直列にするとでも?ww (危険です)
→IEEE1394なら12V取れるらしい (マザーボードや拡張ボードの仕様に大きく左右される)
2.昇圧型DC-DCコンバータを使う。
→高いです><;
3.レールツーレール(フルスイング)の単電源オペアンプを使う。
→せ い か い
というわけでナショセミのCMOSオペアンプLMC6482に換装しました。200円もしますw
こいつは電源電圧近くまで増幅できるのです。※レールツーレール(フルスイング)
4.5Vキタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!
ちなみにNJU7016Dも試しましたが、こちらも出力で4.5V出るもののバッファ回路無しで出力に負荷を繋ぐと瞬く間に降下してしまうのでオペアンプ一発のようなシンプルな回路では使えません。
箱に詰めてほぼ完成。ちょっとUSBケーブルが太すぎたかも。
音声のスルーアウトは搭載していません。
montaが自分のPCで使うことを前提にしているのでw
ウチはサウンドカード(E-MU 0404PCI)から二系統に同時出力できるので困らないのです。
Audiotrak等のカードでもリア出力用の端子にフロント出力のクローンを割り振ったりできるのでたぶん最近のマルチチャンネルカードなら似たようなことができるんじゃないですかね?
LEDを簡単に交換できるよう、ICソケットを2つ合わせて簡易ブレッドボード化w
このままではLEDから出た光の一部があさっての方向。に飛んでいってしまい勿体ないので何らかの方法で集光します。
このサイズのグラスって何て言うんでしたっけ? おちょこ?
まぁ名前は置いておいて↑のように背の低いグラスがオススメです。
こんな感じに綺麗に光ります。
「おゆまる」を使ってグラスに先ほどの簡易ブレッドボードを固定させて完成。
LEDを並列させて良いのかどうかは曖昧ですが、現に光っているのでたぶん大丈夫……^^;
Vfが近いモノ同士を並列させてください。
高輝度なLEDを使っただけあってかなり明るいです。眩しいぐらい。
特に青と緑と白色LEDは5000~7000mcdクラスなので
本当は音声付きで動画をアップした方がいいんですが、面倒なのでGIFで。