PA屋向けスペクトラムアナライザ
年もとってきて、毎日PAやってる環境でも無くなってきてしまったので、どうも自分の耳に自信がもてなくなってきた、、、。
みたいな瞬間がふっとあって数年前にFFTをキーワードに検索したのがきっかけ。
たぶんこの二つが真っ先に目に付くでしょう。
FFT Wave
http://www2.tky.3web.ne.jp/~nozu/fftwave/index.html
WaveSpectra
http://www.ne.jp/asahi/fa/efu/soft/ws/wsimage.html
ていうか、僕がPA始めたころはスペアナなんて夢のまた夢で、スピーカメーカーの人が測定用に持っていてそれをあるツアーで使ったのが20年くらい前の話。当時は測定器、ジェネレータはうん百万だったから(やっとシム(どういうスペルなんだろう?)とかが出始めてて大規模な現場では使われだした頃)、それがやっぱりノートパソコンで実現できてしまう、という事実は衝撃的でした。
まあ、ジェネレータで測定する時間のある現場は限られてしまうし、知識がないので今回はスペアナの話。
上二つはどちらのソフトも甲乙付け難くPAというリアルタイム性が過度に強い現場でなければ十分なソフトでしょう。(たとえば宅録とか、スピーチがメインのPA現場)
でも、ばりばりLiveではちょっと視認性が悪い。で、探したのが31バンド(1/3Oct)表示ができるソフト。
RA
http://www.ymec.com/hp/signal/ra1.htm
これは31バンド表示もできるし色々細かい設定も可能。秀逸。難点は肝心の表示領域がポータブルなノートパソコン(10インチくらいのね)ではひどく小さくなってしまうところ。それ以外はとても気に入ったのでシュアウエアとして購入。
Sonyのちっちゃいノートパソコンにインストールして使っています。
ただし、いざ現場で使うとノートパソコンをセットアップするという作業すら現場では時間がなかったりで結局カバンの中で寝ていることも多いのも事実です。。。はい、。
で、今日書きたかったのはソフトの紹介ではなくPythonのお話。
正直昔からリアルタイムFFTアナライザは自分でプログラミングできないかなーと思っていた。
ところが実際にやりだしてみると障壁の高さに気づく。
まず、PCのサウンドボードからどうやって音声データをピックアップするのか?
FFTはどういうプログラムをするのか?
それをグラフィック表示するにはどうすればいいのか?
当時はDelphiを使っていたのでお金を出せばそういうモジュールが手に入ることは知っていたけどプログラミング業務に使うものでも無い物にお金を出すのは抵抗があった。
で、この夏休み。ぱらぱらと昔のPython本を読んだりネットを検索していたら西尾泰和さんがFFTの紹介をしているではないか、、、。
http://www.nishiohirokazu.org/archived_coreblog/962
え、インタプリンタな言語でFFT(スペアナ)なんてリアルタイムな処理ができるの、、、。ま、モジュールが処理するのだからインタプリンタもなにも関係ないのかと思えるようになったのは後になってからの話。
西尾さんは(ちなみに私は旧姓西尾でこう書くのはなんとなく変な感じ) MatPlotかな?をつかってWaveファイルをプロット表示しているのですがPythonでFFT処理ができるという事実を教えてくださって本当に感謝。
俄然やる気が出てさらに調べてみる。
さっきも書いた様にまずサウンドボードのデータをどうやってピックアップするのかが問題。でPythonで検索をしていくとSnackというモジュールが結構使えるらしいと判明。
http://www.speech.kth.se/snack/
ダウンロードしてDemoをみると簡易スペクトラムアナライザのコードも載っている。FFTもモジュール内で使えるらしい。
で、ものの数分でそれらしきものができてしまった。
Pythonすげぇ、、、。
初めて実感。
さて、そうするとカスタマイズしたくなるのが人情。
上記ソフトウェアもすばらしいのだが共通した不満がある。
それは線グラフ表示したときに2kHzを越えたあたりから高域のピークの山が見難くなってしまうこと。
これは例えば220Hzと440Hzという1オクターブの間は220Hzという周波数帯域しかないのに対して2.2kHzと4.4kHzという1オクターブ間では2200Hzの幅があるということ。単純に測定すると同じ1オクターブ間でも高域側では10倍測定ポイント数が多いことになる。(これは本来のスペアナの使う目的がちがうから当たり前の話だけど)
さらにPA屋は通常31バンドグラフィックイコライザーを使うことが多い。
(こんなのね)
このままだとこれらとの相性もあまりよくない。
なのでこんな感じ、
にしてみました。
ピーク表示を黄色い帯にして帯域表示にし、高域での測定ポイント数を減らし、各帯域をできるだけ1/3Oct表示に近づけたつもり。
本当は各測定ポイントの周辺でヒストグラムをとるといいのだろうけど、そこまでは知識がなかったの時間終了。
私の夏休みの自由研究はこんな感じとなりました。