パワーサプライのノイズを測定する
パワーサプライのノイズについて測定してみた話です。後半はほぼMaxパッチの[plot]オブジェクトの話です。
最近コンパクトエフェクター用のパワーサプライを自作しようと試行錯誤しているのですが、コンパクトエフェクター用パワーサプライにおいてはノイズの少なさが求められます。特に古い設計のエフェクターは電源ノイズを拾いやすく、そういったエフェクターとノイズの多いパワーサプライを組み合わせると、出音にがっつりとノイズが乗ることがあります。
ということで、まずは手元にあるパワーサプライについてどの程度のノイズが含まれているかを測定してみました。
パワーサプライのノイズ測定については、「可燃ごみ箱」さんが簡単な回路とオーディオインターフェイスを組み合わせた方法を紹介していましたので(下記の記事)、こちらを参考にオーディオインターフェイスを使って測定を行いました。
ただし、使用機材などが異なるほか、入力信号は48kHz/16ビットでデジタル化しています。そのため、結果をほかの方の測定結果とそのまま比較することはできず、あくまで手元で測定したもの同士での比較のみになる点にはご留意ください。また、測定回路は下記のものを使用しています。直流負荷は100Ωなので、9Vのパワーサプライの場合およそ90mAの電流を流すことになります。
回路はブレッドボード上で組み立てており、測定時にはこれをアルミフレームケースに入れて、さらにその上にアルミ箔を貼った厚紙を蓋としてかぶせることで、外来ノイズの影響をなるべく受けないようにします。このアルミフレームケースはエフェクターの試作向けにフォーンジャックとDCジャックが取り付けられており、シールドのためにフォーンジャックのスリーブとケースを導通させています。
オーディオインターフェイスにはZOOMのH5を使用しています。こちらのLINE/MIC入力と測定回路を短めのパッチケーブルで接続し、ゲインの目盛りは「6」に設定しました(ゲインを最大にした場合、入力が大きすぎてクリップするようなときがあったため)。
PCにはH5用のASIOドライバをインストールしており、このドライバ経由でオーディオを取り込みます。ノイズはMaxという信号処理ソフトウェアで作成した、周波数ごとのレベル(パワースペクル)を表示するパッチ(プログラム)で測定します(詳しくは後述)。
測定結果
まずはDCジャックに何も接続せず、DCジャックのプラス側とマイナス側をショートした状態でのパワースペクトルを測定してみました。こちらが今回の測定環境における測定限界ということになります。50Hzあたりにピークがありますが、これは周辺の家庭用電源に起因するノイズだと思われます。
続いて、一般的にコンパクトエフェクターでよく使われる006P乾電池(いわゆる9V乾電池)のノイズを測定してみました。使用したのはDURACELLの「PROCELL 9V」です。
乾電池はほぼノイズゼロ、というイメージがありましたが、今回の測定ではノイズレベルはすべての周波数で一定というわけではなく、低めの周波数のノイズが最も大きく、高い周波数のノイズは少ない、という結果になりました。
次に、前回記事(能動負荷でパワーサプライの電圧と電流を測る)で使用したパワーサプライ3種類について測定してみました。まずはFREE THE TONEのFA-9ですが、低い周波数帯から高い周波数帯まで、ほぼフラットに一定のノイズが出ていることが分かります。100Hz周辺以下では006P乾電池よりもノイズは少ないですが、それよりも高い周波数のノイズは006P乾電池よりも大きめという感じです。
CAJのPB10.8DC9-2.1については、006P乾電池電池やFA-9よりも明確にノイズが多いようで、特に2~3kHz、12kHz、20kHzあたりの3か所にピークがあるのが目立ちます。商品説明によると特殊フィルター回路を搭載しているとのことで、それによってこのように一部の周波数で強くノイズが出ているのかもしれません。
GODLYKEのPOWER-ALL PA.9については、全体的にはフラットなスペクトルなのですが、100Hzあたりにピークがあります。これはギターやベースなどの信号と被る周波数帯のため、ノイズ対策がされていない機器で使用すると問題になりそうです。
最後に、秋月電子通商で購入した600円の9V/0.65AのACアダプターも測定してみました。こちらは汎用のACアダプタで、特にオーディオ機器での使用を意図したものではありません。また、極性もコンパクトエフェクターで一般的な「センターマイナス」ではなく「センタープラス」ですが、プラグを改造して極性を逆にしています。
こちらの測定結果は、予想通り全周波数帯で大きめのノイズが確認できます。実際、こちらのACアダプターをBOSSのDS-1に接続して使用すると、明らかに分かるレベルで「サー」という感じのノイズが聴こえます。コンパクトエフェクターでの使用にはあまり向かないですね。
測定における注意点
こういった測定は周辺の電磁波の影響をかなり受けるようで、最初にシールドケースに入れずに測定を行った際には50Hz近辺に多大なノイズが現れてしまいました。もちろん周囲の環境にもよるかとは思いますが、電磁波ノイズ対策はちゃんとやったほうがよさそうです。また、当初は普段PCに接続しているFocusriteの2i2(初代)というオーディオインターフェイスを使用していたのですが、こちらはパワードスピーカーを接続しているためか、入力ゲインを上げるとどうやっても50Hzあたりにノイズのピークが出る状態でした。そのため最終的には別途H5をPCに接続して使用したのですが、測定の際には関係ない機器はできるだけ接続しないほうがよいのかもしれません。
測定に使用したMaxパッチの解説
測定に使用したMaxパッチは以下のようなものです。入力した信号をサンプリング点数8192でFFTし、その結果の実数部と虚数部をサンプリング点数で割って正規化したうえで二乗和してパワースペクトルに変換し、それを[vectral~]で平滑化したうえで[plot]でプロットしています(右上部分はテスト用なので本来は不要です)。
パッチはここからダウンロードできます([fft~]や[vectral~]のヘルプにあるサンプルほぼそのままです)。
ADCのサンプリング周波数は48kHzなので、FFTのサンプリング周波数(=周波数領域での分解能)とサンプリング間隔はおよそ5.86Hz、0.17秒になります。また、[vectral~]での平滑化パラメータには「slide 5 5」を与えています。ドキュメントの記述が分かりにくいのですが、[slide]オブジェクトのヘルプを見る限りこれは各サンプルの前後それぞれ5サンプルの平均を結果として出力するようなので、およそ1.7秒間の平均値がプロットされることになると思われます。
なお、[plot]については、インスペクタでは限られた項目しか設定できず、描画する範囲やX軸/Y軸の目盛り、グリッド表示、グラフの色などはすべてメッセージを送信して設定しなければなりません。[vectral~]のヘルプにはちょうど良い感じに設定された[plot]があるので、次のようにしてこれをベースに設定を行うと楽です(また、上記のパッチは入力信号のサンプリング周波数が48kHzであるという前提で作成しているので、もしサンプリング周波数がこれ以外の場合は[plot]の横軸を調整する必要があります)。
[vectral~]のヘルプを開き、ロックを解除して[plot](画面下のグラフ)を選択してコピーする
自分のパッチにコピーした[plot]をペーストする
ペーストした[plot]の左インレットに「edit」メッセージを送信する
「Dictionary Editor」でJSONフォーマットで記述された設定テキストが表示されるので、これを全文選択してコピーしたうえでウィンドウを閉じる
パッチに[dict plot_conf]を追加し、Ctrlキーを押しながらダブルクリックする(「plot_conf」はディクショナリ名なので適当な別の名前でも構わない)
空のデータが入ったDictionary Editorが表示されるので、先ほどコピーした設定テキストをここにペーストする(ここで"data"プロパティは削除しておくほうがよいが、おそらく削除しなくても動作するはず)
必要に応じて設定内容を修正する
Dictionary Editorを閉じる
[plot」の左インレットに「dictionary plot_conf」メッセージを送信すると設定が反映される
また、これとは別に[plot]のインスペクタの「Audio」項目内にある「Audio Sample Frame Size」にはFETのサンプリング点数と同じ数(今回は8192)を、「General」項目内にある「Number of Points」にはサンプリング点数の2分の1(今回は4096)を指定しておく必要があります。
雑な解説:[fft~]や[vectral~]は入力信号を周波数領域に変換し、それをオーディオレート信号として出力します。これはFETのサンプリング点数周期(今回の例では8192サンプル周期)のデータとなっているので、これをグラフ描画するには8192サンプル分を保存できるバッファ(Audio Sample Frame)が必要です。一方で、FFTの出力データはサンプリング点数周期のちょうど半分を中心とした対象構造になっており、通常はその前半半分だけをグラフに描画します。そのため、後半半分を無視するために「Number of Points」にはサンプリング点数の2分の1を指定します。

















