2008 年 11 月 26 日

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で。


Filed under: Audio & Visual,日記 — monta @ 16:52

2 Comments »

  1. お世話になります。65歳の老人です。昔、ラジオ組立てはしておりました。しかし、今の回路は勉強していなくてわかりません。
    ハンデイラジオを夜聞く時、青いLEDをつけたいのでどこかにでていないかとインターネットで探していて貴方の記事にぶつかりました。
    出力回路に豆電球をつけて光線電話実験もした事を思い出しました。
    ハンディラジオの出力に合わせてLEDが光る回路を教えて頂く事はできますか?自分で作ってみたいと思うのですがいかがでしょう。
    無理でしょうかね。
    よろしくお願いいたします。

    Comment by t. — 2009 年 4 月 15 日 @ 18:56

  2. t.様、初めまして。このサイトの管理人をしているmontaと申します。
    返信が遅くなり申し訳ありませんでした。

    さて、ハンディラジオの出力にLEDを付ける件ですね。
    私が記事中で音声に合わせてLEDを光らせるために参考にした回路は、
    http://www.zea.jp/audio/aum/aum_01.htm
    ↑のページの回路です。(このアドレスをブラウザに入力してください)

    この回路の左半分を使っています。R5とC2の中点にLEDの+(アノード)を接続しています。
    回路図にある「VR」というのは可変抵抗(ボリューム)のことです。
    私の場合はVRは不要でしたので、実装していません。

    この回路の簡単な説明としては、交流の音声信号(ライン出力)をオペアンプ(LM358N)に入力して、
    LEDを光らせられる電圧にまで増幅した後に、ダイオードで直流に整流する動作をしています。

    オペアンプはご存知でしょうか?
    8本足の四角いICです。(16本足などもあります)
    中身はトランジスタ回路です。
    各足に「電源(正電源)入力」「GND(負電源)入力」
    「非反転入力」「反転入力」「出力」などが割り振ってあります。
    ※入力や出力にかかる抵抗値を変えることで、入力信号の増幅率を自由に変えることができます。
    私が組んだ回路は『非反転増幅回路』というものです。
    もっと詳しい説明は、文章だけでは難しいので他のインターネットサイトをご覧ください。

    今回、ハンディラジオの出力に合わせてLEDを光らせるためには
    次の点が重要になってくると思います。

    「1:ハンディラジオの電源電圧」
     ハンディラジオの電源は何の電池でしょうか?
     乾電池2本(3V)だと青色LEDを光らせるには一手間要ります。
     通常、青色LEDを発光させるには最低3.3Vほど必要なので、
     電源電圧が3Vでは0.3V不足しています。
     電源電圧を昇圧する回路を別に作るか、青色LEDをあきらめて、
     2Vで光る赤色・緑色LEDに変更する必要があります。

    「2:出力をどこから取るか」
     恐らくハンディラジオにはスピーカーが付いていると
     思います。スピーカーに繋がる+と-(グランド)の信号線を、
     途中でそれぞれ分岐させて、「LEDを光らせる回路」に入力するのが
     簡単な方法だと思います。
     分岐させた場合、スピーカーの音は若干小さくなります。
     
    「3:音声信号の増幅率」
     オペアンプの増幅率を決定するために、ハンディラジオの出力が何Vあるのか
     調べる必要があります。
     通常、増幅率は「ゲイン(db)」という値で表されます。
     計算式はゲイン = 20log(出力電圧÷入力電圧) です。
     「仮に」出力電圧を2.5V、入力電圧を0.5Vとするとゲインは約14dbになります。
     先ほど説明した回路図中での増幅率は「(R3の抵抗値+R4の抵抗値)÷ R3の抵抗値」
     という式で求められます。 
     例:R3 = 10kΩ、R4 = 100kΩの場合、(10+100)/10 = 11db
       14dbにまでゲインを引き上げるにはR3の抵抗値をより小さい値にするか、
       R4の抵抗値を大きくします
       

    一気に説明してしまいましたがコレで大丈夫でしょうか?
    私も自分で1から完全な回路を組めるほどの技量はとても持ち合わせていないので、
    説明が足りない部分があると思います。
    また、何か判らないことがあればお気軽にご質問ください。

    Comment by monta — 2009 年 4 月 18 日 @ 14:23

RSS feed for comments on this post. TrackBack URL

Leave a comment

※コメントの反映には2時間ほど時間がかかります。それ以上経過しても反映されない場合、スパムとして振り分けられている可能性がありますのでURLを含まない本文や日本語の名前で再投稿してください。