最近ハイレゾ対応のオーディオインターフェイスを買っているので (基本的にSDR用だけど)、一応オーディオのハイレゾについて調べてみた。

人間の限界

聴覚のダイナミックレンジ(最小で聞きとれる音の大きさと、苦痛に感じるレベルの音の大きさの比)は120dB程度らしい。

聴覚で聞きとれる周波数の範囲は最大20kHz程度で歳をとると高い周波数から聞こえなくなっていく。

ハイレゾ音源

一般的な 16bit サンプリングだと 96dB ( 20*Math.log10(2**16) )、ハイレゾの24bitになると144dBになる。クラシックとかジャズでもなければ大抵むしろダイナミックレンジは圧縮されているので、実質はこれほどいらないだろう。

サンプリング周波数は最大周波数の2倍必要なので、一般的には 44.1kHz とか 48kHz が多い。ハイレゾだと 96kHz とか 192kHz とかになったりするが、出てくる周波数的には聞こえない領域を記録していることになる。細かく記録したほうが高い周波数での位相は保たれそうだけど、人間の耳は絶対的な位相位置を聞きとれない。

実際のところ、リスナーレベルでは適切な環境でそのまま再生するとハイレゾ音源は意味がない。(意味があると言いはる人もいるだろうけど)

ではどういう場合に意味があるか?

基本は編集作業時の音質劣化防止になると思った。例えば、写真ではカメラ上では12bit〜14bit程度のダイナミックレンジで記録をするが、これは現像時の加工性を上げるためで、最終的には 8bit に圧縮している。映画でも、記録時はできるだけダイナミックレンジを広くとれる領域で撮影し、編集時に色を圧縮したりすることある。

同じように、音声データも、後から編集を行う場合、できるだけ情報量が多いほうが編集の範囲が広がることはあるだろうと思う。

再生環境では

再生環境レベルで考えると、リスナーの再生環境において大きなエフェクトをかけたり、音量をデジタルで加減する場合、加工前のデータや加工後のデータが十分なデータを持てないと、綺麗にエフェクトがかからない可能性がある。例えばデジタルで音量を下げると、その分ダイナミックレンジは圧縮されてしまう (出力時に再サンプリングして高いビットレートで出力するのは意味がある)。

誰がうれしいか

  • マッシュアップ好きな人
  • SDR (ソフトウェア無線) ユーザ (安くて性能がいいデバイスがたくさんでてくる)

備考

よくハイレゾの説明で時間ドメインでの波形の汚なさを例にしたりするけど、人間は周波数ドメインで認識してる (周波数ごとにセンサーが分かれているという意味で) ので、あまり意味がなさそう。デジタルアンプとか、めっちゃ波形汚ないけど音は普通に聞こえたりする。

ASUS 7.1chドルビーサラウンド対応USBオーディオデバイス XONAR U7 - ASUS

ASUS

5.0 / 5.0

こういう回路で、大抵の場合音量調整用のボリュームは入力についており、アンプ本体の増幅率は固定になっている。なんとなく「増幅率のほうを変えたほうが効率が良くないか?」と考えてしまう。

答え

アンプの増幅率を設定する抵抗 (入力抵抗と帰還抵抗) は繊細な部分なので、長く配線をひきまわしたりできない。余計なことをすると発振する。

また、使用時に増幅率を変えられるようにすると、ボルテージフォロワ状態で発振しないように位相余裕をとる必要があり、設計に制限が増える。つまり余計なことすると発振する。

リモートボリューム

しかし、前段で減衰させて入力を行うのは、S/N的には不利になる。なので、抵抗の位置はそのままにして、遠隔で抵抗値を可変できれば良いのではないか? と考えたりできる。

デジタルポテンショメータ (デジタル可変抵抗) はまさにそういう用途に使えそう。こういったゲイン可変のアンプは、プログラマブルゲインアンプという名前がついていたりする。一方、デジタル制御する場合、それ自体がノイズを出すので、S/N改善目的では難しい面もありそう (試してない)。

  1. トップ
  2. tech
  3. アンプの増幅率を変えず、前段で減衰させるのはなぜか?

パクツイかなり理解しにくいが、服で着飾ったりするのと同じなんだと思ったら少し腑に落ちる。服だって(だいたいは)他人の創作物だけど、組合せたら自己表現になるって思っている人がいっぱいいる。同じように他人の言葉で自分を着飾ろうという人がいても不思議ではない。

いくつか回路をシミュレーションしたが、ClassAA のヘッドフォンアンプは今まで作ったことがなく、ブリッジの応用の部分がかっこいいので、実際に作ってみたくなった。比較的高出力なオペアンプを選べば能動素子をオペアンプ以外使わなくてもかなり良さそうなので気が楽だ。

回路

シミュレーションで、出力や発振しないかなどを確認した上で、実装しやすいように (手元にある部品で作れるように) 定数を変更している。

ブリッジにしろ、帰還抵抗にしろ比率が保たれていれば良いので、比較的自由がある。

増幅率は3倍にしてあるが、1〜2倍程度でもいいかなという気がする。あまり下げると (つまり帰還を多くすると) オペアンプによっては発振しやすくなるみたいだが、事前にシミュレーションしてある程度確認できるぶん、定数設定が楽だ。いわゆる Zobel フィルタ (高周波発振を防ぐ) は入れてないけど、負荷をちゃんとシミュレーションしていないので、安全のためにはいれたほうが良さそう。

出力インピーダンスはほぼ出力についている抵抗値に等しくなる (=1Ω)。入力インピーダンスはボリュームの値になる (=10kΩ)。

電源

±9V の両電源をトランスから、リニアレギュレータを介して生成している。これは特に理由はなく、もともとあった昔作ったヘッドフォンアンプの電源を流用しているため。高校生ぐらいのときに作ったところなので、ちゃんと作りなおしたほうがよさそうだけど、そのまま…

実体配線図

例によって Eagle に回路を起こしなおし、基板検討を行い。C基板 (25×15 穴) にほぼ収まるように配置した (GND ラインがはみだしてる)。ブリッジ部分が綺麗に配線できるか心配だったが、思いのほか綺麗にいった。ジャンパはパスコン部分だけ。

低周波回路では基板上でも一点アースにして共通インピーダンスをなくすのが非常にノイズ対策に効くのだが、基板の面積的に厳しいので、GND と V+ V- を太めのスズメッキ線を使って配線するようにした。

実際つくったもの

その後検討しなおしたもの

できるだけ、電源の配置を電流が多く流れる出力側にしたり、基板サイズにあうようにした

測定

オーディオアナライザなどはないので、簡易的な測定しかできない。PCオーディオインターフェイスを介して測定を行う。

測定環境

Xonar U7 のヘッドフォン端子から、ヘッドフォンアンプに入力し、ヘッドフォンアンプから、Xonar U7 のライン入力に繋いでいる。

この状態で RMAA (RightMark Audio Analyzer を使って測る)

測定環境ではループバック測定した場合 THD 0.0019% / SN -110dB 程度。これよりも精密な測定はできないので、これよりも悪くなければとりあえず良いということにする。

測定結果

ClassAA RMAA

全体的にそんなに悪くはなさそうだけど、測定限界まで良いとは言えない。Noise level の FFT を見ると、電源を内蔵としたためか、50Hz とその高調波が出力に少し出ている (最大で -100dB 程度)。耳には聞こえないレベルではあるがちょっと気持ちは悪い。これをどうにかしないと測定限界を超えられなさそう。

つまり何も考えないで作った電源がネック

まとめ

別にこれによって音が良くなったかとかは感じないのだけど、自分で作った回路を通して音を聞くというのは気分が良い体験で、面白い。

あいかわらずノイズ対策が最も難しく感じる。いまいちどこから飛びこんでいるノイズなのかがわからない。ボリューム位置で少し変化するので少なくとも入力には多少入っているみたいだ。聴覚上聞こえなくても測定はできる。

できれば、最近そこらにころがっている5V USB を電源にしてコンパクトに作ってみたい。5V から昇圧をかけてノイズフィルタとレギュレータを通す、みたいな。

  1. トップ
  2. tech
  3. シミュレーションしたヘッドフォンアンプを作ってみる

ASUSTek ハイレゾ対応 USB DAC 7.1ch対応 Xonar U7 - ASUS

ASUS

5.0 / 5.0

現時点で最高の USB オーディオデバイスだと思う。

つくった回路の評価のためにもオーディオアナライザが欲しいところだけれど、本物は非常に高価で手に入らない。オーディオに特別思い入れもないのにそこまで投資する気にはなれない。

ただ測定なしでは作る意味が全くないので、RMAA ぐらいは通したい、ということで、今手に入る中で性能的にコスパ最高のを探したところ、そこそこ最近出た ASUS Xonar U7 が良いということがわかった。

RMAA テスト結果

さっそく音楽鳴らすよりも先に RMAA を走らせて見たけど、非常に良いっぽいことはわかった。これはヘッドフォン出力からライン入力に入れて、ライン入力のレベルを最大にしたままヘッドフォンを調整して測定した。(ループバックのテストなので、出力と入力の特性が混ざっている。つまり出入力いずれも優秀でないと良い結果にならない)

ノイズが本当に皆無なのがすごい。後段にヘッドフォンアンプをつけてボリュームを最大にしてもホワイトノイズが聞こえてこないレベル。

余談

実は UR22 を買ったちょっとした後に、SDR 用サウンドカードテストのページを見たら載っていて知っていたのだが、SDR だけのためにさらに機械を買うのもという感じで保留していた。

SDR (ソフトウェア無線) ではサンプリング周波数が同時に見れる帯域幅そのものになる。いわゆるハイレゾオーディオインターフェイスは、ハイレゾ音源がそれほどない現時点では謳い文句と裏腹にSDRでの実利が非常に大きい。

SDR 用では視覚的にFFTされた結果を見ることになるので、サウンドカード由来のノイズは非常に気になりやすい、良いSN比や帯域のフラット性が重要になる。そういう意味でも Xonar U7 は現時点で最高の選択っぽい。

  1. トップ
  2. tech
  3. ASUS Xonar U7

今まで、トランス2個とボリュームと少々の部品だけのインターフェイスで、VOX でデジタル運用していたが、音声もデジタル用の入力から入れようと思いはじめた。

というのも、マイク入力からだとデジタル入力からよりも、無線機内部での入力の増幅率が高くSN が悪化するのと、音声を一旦 PC に入れてDSPをかけて出力する際、デジタルモード用のインターフェイスに出力するほうが接続が楽になるからだ。

そういうことをしようとすると、VOX ではなく PTT をスイッチにして明確に切替えたくなるので、デジタルモードのPTT制御も含めてちゃんと作った。

USB シリアルモジュールの RTS を PTT 出力として使い (他は全く使わない)、手動PTTもRTSを手動で制御するようにした。その後にフォトカプラを入れ、PC側とは絶縁している。

また、この機会に入りこむノイズをできるだけ減らそうということで、USB 延長ケーブルを使って、USB オーディオデバイスの位置を延長し、無線機用のインターフェイスを5cm程度の極短いケーブルに変えた。これでブーンという音が入りこむのを抑えることができた。

あと、トランスの入出力にもフェライトビーズ(チップインダクタ)を入れて、送信時の回り込み対策を強化しておいた。

残念ながら、リグの内部雑音が結構あるみたいで、無音(マイクショート)しても送信状態にするとホワイトノイズが少々送信される (PWR メータは全く振れないが、近くの別の無線機で最大感度に設定すると十分聞きとれるレベル)

あと、シリアル通信か、オーディオインターフェイス由来かわからないが、USB か何かから少し高めの音のノイズが規則的に入るのが気になるが対策できていない。ノイズ対策は難しい。

  1. トップ
  2. ham
  3. デジタルモード用インターフェイスの改良

先週末に奈良に行った。

子供が歩く前に一回どっか行っておこうということで、1週間前ぐらいに急に予定を決めて1泊した。

いったところ

1日目

  • 春日大社
  • 東大寺 (大仏殿)
  • 法隆寺

2日目

  • 大神神社 (大和国一宮)
  • 石上神宮
  • 伏見稲荷大社

奈良、無限に歩けるならいいんだけど、子供抱っこして歩くには案外坂が多くてきつく、1つ1つのポイントが離れているので、厳しいかった。

LTSpice に慣れようということで、いくつか代表的なヘッドフォンアンプの回路をシミュレーションし、全高調波歪率 (THD / Total Harmonic Distortion) を出してみた。

オペアンプには単体で70mAまで電流をとれる NJM4556A で全て統一し、増幅率もほぼ同じになるように組んだ。

回路

オペアンプ1回路・バッファなしシンプル

THD=0.000134%

部品点数が少ないし、普通に使うぶんには完全に十分そう…

オペアンプ2回路・出力増強

THD=0.000131%

オペアンプ1回路・ダイアモンドバッファ

THD=0.000150%

ヘッドフォンアンプだと良く使われるバッファ

オペアンプ2回路・ClassAA

THD=0.000055%

オペアンプ2つを使ったものだけど、パラにしているわけではなく、ホイートストンブリッジを使い電圧増幅するオペアンプと電流増幅するオペアンプとで役割をわけたもの。実際に作る場合、最初のオペアンプは殆ど負荷がかからないようになっているので、もっと低歪みのオペアンプを使う。

備考

電流に余裕があるオペアンプなためバッファなしで十分良いという感じになった。

LTSpice

.four コマンドは .tran 解析の後、指定した回路のポイントをFFTして高調波歪を求められる。出力はログ (Cmd+L) に出る。デフォルトでは第9高調波まで算出するが、十分っぽい。最後に THD が表示される。

.option plotwinsize=0 を指定しないと、ものすごい数字が出てしまい、ハマった。このオプションはLTSpiceに対し、解析結果のデータ圧縮を無効にする効果がある。LTWiki の FAQ にもなっていた。歪み率を算出したいのに、データ圧縮が効いているとどうしようもない。

このへんが参考になった

LTSpice でヘッドフォンアンプを解析する2 | tech - 氾濫原 に続く

  1. トップ
  2. tech
  3. LTSpice でヘッドフォンアンプを解析する

複数の解析コマンドを簡単に切替えたい

Comment と Directive が同じ画面で編集になっているという点に気付く。

つまり、解析コマンドのまとまりごとに別の Directive のまとまりを作り、必要ないものは Comment に切替えておくという手段をとるのが一番簡単。いちいち行頭にセミコロンを付けてまわるとかしなくて良い。

よく変更するパラメータに名前をつけたい

.param ディレクティブを使えば、任意の数値に名前をつけられる。参照するときは {name} とすれば良い。

  1. トップ
  2. tech
  3. LTSpice の小技

LTSpice でヘッドフォンアンプを解析する | tech - 氾濫原 の続き

NJM4556A は 70mA と余裕があるオペアンプだが、こんなに電流とれるオペアンプはそれほどないので、もう少し普通のオペアンプで試してみる。

OPA2134 (= OPA134) という低歪みなオペアンプで試す。これは出力電流が±35mAと、丁度 NJM4556A の半分となる。

回路

オペアンプ1回路・バッファなしシンプル

THD=19.97%

電流が足りず、クリッピングしてる。

オペアンプ2回路・出力増強

THD=0.000041%

オペアンプ1回路・ダイアモンドバッファ

THD=0.000116%

オペアンプ2回路・ClassAA

THD=0.000022%

片方は電流ソースになるので NJM4556A のままにしてある。THD はこれが最低。

  1. トップ
  2. tech
  3. LTSpice でヘッドフォンアンプを解析する2