デジタル信号を正しく再生するには? ~サンプリング定理の意味

Twitterで以下のように発言をしたら、案の定、あまり理解されなかったので頑張って説明してみます。

サンプリング定理は「信号の最大周波数」の2倍より早い速度でサンプリングすれば元信号の情報は完全に再現できる(一意に決まる)、とは言ってるけども、サンプリングしたデータをそのまま再生したとき元波形が再現できるとは一言も言ってない。

https://twitter.com/nabe_abk/status/777874934424940544

なおこの記事では、フーリエ変換が存在する連続信号(関数)のみを考えることにします。

フーリエ変換とは

フーリエ変換とは、無限に続く任意の信号を、無限の周波数までのsin波とcos波の重ねあわせとして表す変換のことです。

f(t) = 2\pi\int_{-\infty}^{\infty}F(2\pi f) (\cos(2\pi ft)+j\sin(2\pi ft) ) df

この式が意味していることは、「信号f(t)F(2\pi f)の周波数fについての積分」によって得られるということで、より工学的に解釈すればF(\omega)は周波数ごとの信号の強さ(位相差)を表していると言えます。

ですので、F(\omega)のことを周波数スペクトルと言うことがあります。

より詳しい解説は専門文献を当たってください。また「FFTとは? ~本当は正しくないFFTの周波数特性~」も参考に。

式の導出

※苦手な方は読み飛ばしてください。

f(t)のフーリエ変換F(\omega)を数式で書くと以下のようになります。

F(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(t) \mathrm{e}^{-jst} dt

このフーリエ変換F(\omega)を用いて、元のf(t)を表すと次のようになります。

\begin{eqnarray} f(t) &=& \int_{-\infty}^{\infty}F(\omega) \mathrm{e}^{jst} d\omega \nonumber \\ &=& \int_{-\infty}^{\infty}f(\omega) ( \cos(\omega t) + j\sin(\omega t) ) d\omega \nonumber \end{eqnarray}

ここで、\omega=2\pi fと置けば最初に書いた定義式になります。

サンプリング定理とは?

いくつか定義の仕方がありますが、ここでは工学的に少し分かりやすく定義することにします。

周波数f_mHz以上の成分を含まない信号f(t)のフーリエ変換をF(\omega)としたとき、2f_mHz以上の速度でサンプリングした信号g(t)のフーリエ変換G(\omega)は、f_mHz以下の範囲でF(\omega)と一致する。

この意味を理解するため、例を示して説明します。

sampling_01.png

青い信号がf(t)、緑の信号がそれをサンプリングした信号g(t)です。*1

f(t)g(t)はサンプリング定理の条件である「2倍より大きい周波数でサンプリングする」を満たしていますので、これらのフーリエ変換であるF(\omega)G(\omega)はサンプリング周波数の半分である2.25Hzより小さい周波数において一致します。

F(2\pi f) = G(2\pi f) \qquad (f < 2.25 = \frac{4.5}{2})

*1 : 今は0~1秒の範囲で示してますが、実際にはこの信号は1より後も続きます。

サンプリング定理が示すもの

  • 元信号:f(t)
  • サンプリング信号:g(t)
  • サンプリング周波数:f_s
  • それぞれのフーリエ変換:F(\omega), G(\omega)
  • f(t)f_s/2未満の信号しか含まない

このとき、F(\omega)G(\omega)\displaystyle \frac{f_s}{2}Hz未満の領域について一致する。

さらに次のことが言えます。

  • f_s/2を超えた部分で、F(\omega)G(\omega)は一致しない。
    • f(t)f_s/2を超えた周波数成分を含まない。
    • g(t)f_s/2を超えた周波数成分を含む。
  • サンプリング定理が成り立つのは、無限に続く連続信号においてである。

サンプリングされた信号とその再生

工学書の多くで次に来るのは「サンプリング定理より信号の最大周波数の2倍より早い周波数でサンプリングすれば良い」という解説であり、「その条件を満たす信号を再生し理想LPF(ローパスフィルタ)に通せば元の信号に戻る」という解説です。

サンプリング定理の前提条件を満たす限り実際にそれは正しいのですが、それと同時にこれを読んだ人の多くが誤解をする内容にもなっています。それを理解するために、サンプリングされたデータを実際にアナログ信号として再生することを考えます。

一般的なデータ再生

sampling_02.png

サンプリングされたデータをそのまま再生する場合は*2、通常赤い線のようになります。これにLPFをかけるとどうなるでしょうか?

sampling_03.png

手書きで申し訳ないですが、緑の線のようになります。

フィルタの次数を上げて理想LPFに近づけろと言う方が出てくると思うので、サンプリング周波数を1kHzにアップサンプリングした上で1023点のFIR型LPFで処理した例を次に示します。

sampling_fir_1023.png

まだ足りないという方のために4095点のFIR型LPFの結果も示します。

sampling_fir_4095.png

形は近くなりましたが遅延が酷いですね。*3

なぜこのようなことになるのかと言うと、理想LPFなんて作れないからです。それも「現実だと誤差あるし、しょうがないね」というレベルではなく、近似としても理想LPFを実現することはかなり困難です。

*2 : このような再生方法を0次ホールドと言います。

*3 : 44.1kHzのオーディオデータだとしたら、4095点FIRでは信号が50ms程度遅延する計算になります。現実的ではないと言える遅延でしょう。

サンプリング定理が成り立つ条件

  1. 理想LPFが存在すること。
  2. ある一点のデータを再生するとき、その前後のデータが無限に存在すること。
  3. インパルスを再生できること。

(1)だけで理解している気になっている人がとても多い。理想LPFってどうやって作るか知ってますか?

「ある周波数f_cHzでスパンと切れる周波数特性を逆フーリエ変換したフィルタを作ればいい」と思った人、正しいです。でもその関数がどんな形をしているかちゃんと知っていますか?

その関数はsinc関数と呼ばれる形になります。

sampling_sinc.png

この関数、見て分かるように正負方向に無限に続いています。理想LPFは、サンプリングした各点のデータとsinc関数を畳み込み演算することで実現できます。

つまりここから導き出される条件が(2)です。過去と未来の無限のデータを持ってきて処理するなんて不可能です。*4

また「データを再生して理想LPFに通す」という教科書の解説をよく考えずに鵜呑みしていると、(3)サンプリングしたデータの再生はインパルスで行うことを見落とします。サンプリング定理の項目で教科書に書かれるデータの再生とは「インパルスでのデータ再生」を示します。インパルスとは幅0で面積1のパルスのことで、これを生成することも不可能です。

インパルスで再生してからLPFで処理すると

そのまま再生(0次ホールド)ではなく、疑似インパルスで再生し、4095点FIR LPF処理した場合の図を掲載しておきます。

sampling_fir_4095_impulse.png

これでもまだ誤差がありますね。

*4 : 有限長の音声データ、音楽1曲とかなら頑張れば実現できるだろうとツッコミを入れる方がおられるかもしれません。現実の再生装置はリアルタイム処理をしなければならないので、様々な制約により、どんなに頑張っても1000点ぐらいのデータ処理が限界です。力技でデータ処理を可能にしたとしても、ある有限区間にも無限個のデータが存在しない限り理想LPFにはなりません。

デジタル信号を正しく再生する方法

前節で述べたとおり、すべての点をインパルスで再生し、それらについてsinc関数を畳み込みフィルタをする必要があるので、まとめると以下のようになります。

すべてのデータ1点1点に対して、その記録してある値がピークとなるようなsinc関数を生成し、無限の時間と分解能でそのすべての点のsinc関数を加算する。

正確を期すため数式でも示しておきますが、苦手な人は読み飛ばしてください。

  • 元の信号 : f(t)
  • サンプリングデータ点数 : N
  • サンプリングデータ列 : g(n) \quad (n=0 \sim N-1)
  • サンプリング周波数 : f_s Hz
  • サンプリング周期 : T = 1/f_s sec
f(t) = \sum_{k=0}^{N-1} g(k)\frac{\sin(\pi(t/T-k))}{\pi(t-kT)}

sinc関数\mathrm{sinc}(x)=\sin(\pi x)/\pi xを使って書くとこんな感じ。

f(t) = T \sum_{k=0}^{N-1} g(k)\mathrm{sinc}\frac{t-kT}{T}

サンプリング周期Tずつずらしながら、すべでの点についてsinc関数を重ね合わせるイメージです。

例。T=0.25, N=4, g(n)=1, 3, 0, -2のとき。

f(t) = 0.25 \left( \mathrm{sinc}\frac{t}{0.25} + 3 \mathrm{sinc}\frac{t-0.25}{0.25} - 2 \mathrm{sinc}\frac{t-0.75}{0.25} \right)

オーディオ再生ではどうやって解決しているのか?

最初に「サンプリングしたデータをそのまま再生したときに元波形が再現できるとは一言も言ってない」と書きました。そして、そのまま再生した後でLPFを通し元の波形を再現することは困難であることを解説しました。では「そのまま再生しなければ」何か手立てがあるのでしょうか?

通常のオーディオ用DAC(DA変換)ではデータをそのまま再生するのではなく「オーバーサンプリング」という技術を使用してデータを再生します。

まず元々の信号を8倍ないしは16倍にアップサンプリングします。例えば、48kHzの信号の8倍オーバーサンプリングならば「384kHz」の信号に変換します。そしてsinc関数を使った畳み込み処理でデータを補完し再生します。*5

現実のオーディオ再生におけるオーバーサンプリングの実例は、「お気楽オーディオさんのNOSDACの記事」の下部にあるオシロ波形が参考になります。左側がオーバーサンプリングなし、右側が8倍オーバーサンプリングです。6つあるオシロ画像の右下の(疑似)インパルス応答を見ると、sinc関数でデータを再生している様子がよくわかります。

ただ、オーバーサンプリングでもやってることは一般的なデータ再生の項目で述べたことと原理的に近く、この方法も近似に過ぎません。

オーバーサンプリングについて

オーバーサンプリングの目的は元の波形を再現することだけではありません。主目的はノイズシェーピングと呼ばれる処理にあります。説明は割愛しますので気になる方は調べてください。

またオーバーサンプリング(やその前提であるアップサンプリング)にはデジタルフィルタが必須で、これもまた完璧な処理方法は存在しません。よってオーバーサンプリングの処理方法によって信号は変化してしまいますし、そこに問題を見出す人も居ます。

ただ現実問題として、今市販されてるほぼすべてのオーディオ用の再生装置はオーバーサンプリング技術を使用していて、オーバーサンプリングでないオーディオ再生装置を探すことは困難です。

しかし不思議なことに、オーディオ以外の用途ではオーバーサンプリングはあまり使われていません。

*5 : 畳み込みの点数(FIRのタップ数に相当)はDACチップによって異なりますし特に公表もされていませんが、遅延や回路規模の問題もありせいぜい100点ぐらいだと思われます。

まとめ

  • サンプリング定理より、サンプリング周波数の半分未満の信号しか含まない信号をサンプリングしたとき、理論上は元の信号を一意に再現できる。
  • しかし実際には「理想LPFが存在せず」「無限のデータ列を扱うことができない」ので、再現は困難である。
  • 現実のオーディオ再生装置では、オーバーサンプリングという技術で元波形に近づけようとしている。

2016/07/06(水)Fusion PCBが微妙だったので、Elecrowを使ってみた

プリント基板の製作に、普段P板を使っていて最近Fusion PCBに移行してたのですが、色々と問題があってElecrowを使ってみることにしました。

Fusion PCBの問題

  • 製造は速いけども、早く発送する気がまるでない。
  • 一度登録したクレジットカード情報を削除する方法がない。
  • キャンセル品*1の返金を忘れられて、1ヶ月待たされた。

*1 : 注文後即キャンセル

Elecrowのルール

Fusion PCBと同じ機械なのか非常によく似ています。

項目P板Fusion PCBElecrow
最小パターン幅0.127mm0.1524mm0.1524mm
最小パターン間隔0.127mm0.1524mm0.1524mm
最小パッド間隔0.127mm0.1524mm0.2032mm
最小シルク高さ1.0mm1.0mm0.8128mm
最小シルク線幅0.127mm0.1524mm0.15mm
最小ホール経0.3mm0.3mm0.3mm
最小ランド経(PTH)0.6mmHole+0.3048mmHole+0.1524mm
銅箔厚18um/35um35um/70um35um/70um*2

細かい違い

Fusionはガーバーをアップロードするとweb上でサイズが確認できたり、枚数の融通が効きますが、Elecrowはその辺の融通が効きません。

あと量産製造だと、銅箔厚みを2oz(75um)に設定できなかったり、色の制限があったり、異種面付けができなかったりします。*3

*2 : 20枚以下のみ

*3 : 2ozは特注すればやってくれそうですので、いずれ試してみようと思います。

面付けルール

PCB Panelize is Available nowに説明があります。

  • 同一基板の面付け
    • 面付け代がかかる(Fusionは無料)
    • すべての面付け基板は同じ方向を向ける。
  • 異種基板の面付けは、種類数に関わらず5面付けまでで有料。
    • 製造枚数は20枚まで
  • 面付けはV-cut処理。

その他の条件。

  • Vcut線は外形線に書き込む。
  • 最小基板サイズ : 8cm×8cm
  • Vcutとパターンの間は0.7-0.8mm程度離す(板厚1.2mm以下は0.6-0.7mm)

「5cm×5cm未満はシルクに書き込んで分けろ。その場合の料金は無料」と書かれているので(Vcutはしてくれないと思われる)、5cm×5cm以上ならば特注対応でカットしてくれると思われます。

ガーバーデータの形式

Fusion PCBと一緒です。

  • 部品面パターン : .GTL
  • 部品面レジスト : .GTS
  • 部品面シルク : .GTO
  • 半田面パターン : .GBL
  • 半田面レジスト : .GBS
  • 半田面シルク : .GBO
  • 外形線データ : .GML
  • ドリルデータ : .TXT

ステンシル(メタルマスク)製造時。

  • 部品面マスク : .GTP
  • 半田面マスク : .GBP

注文から届くまで

送料$20だったので、OCS/ANA Expressで注文しました。

  • 6/30 注文
  • 7/04 Traceable
  • 7/05 国内着
  • 7/06 基板到着(佐川)

注文から6日後に到着してしまいました。早い。2週間かかるFusionはもとより、P板頼むより早いんですけど(苦笑)

2回目

  • 7/15 注文
  • 7/20 Traceable
  • 7/21 国内着
  • 7/26 基板到着(佐川)

国内の輸入申請で4日止まるという珍事。「Prototyping Board」の意味がわからなかったらしいんだけども、OCS/ANAさんはもうちょっとしつこく電話してくるか、そのままPrototyping Boardでググるなりしてほしい。

3コールぐらいで切れる電話なんて出られないよ。

UPSとかFedexとかなら、そんな凡ミスはしない気がしてきた。

基板の品質

elecrow_pcb.jpg

上がElecrowで、下がFusion PCBです。高解像度の画像置いておきましたので、クリックすると拡大します。

シルクが断然綺麗ですね。シルク位置は若干ずれてますが、個人的には許容範囲です。そしてP板でハズレ工場引いたときよりも綺麗です(笑)

2回目 2016/07/26

elecrow_pcb2.jpg

シルクがずれてパッドの上に完全に乗ってる。そして前回よりもシルクの印刷が汚くなってる。どうしよ……。

→サポートに問い合わせたら再製造してくれました。

量産製造 2016/09/14

200枚ほど製造してみました。

elecrow_pcb_batch.jpg

  1. レジスト不良
  2. 基板にキズ
  3. ホール潰れ(ただしP板でもパッドが小さいと言われ製造拒否られた幅*4
  4. シルク汚れ

その他、ホール潰れ(ハンダ埋まり)が1つ、細かいキズや汚れは数えられないぐらいありました。+10%ぐらい余分に製造して検品しないとダメな感じです。

*4 : ホール経1.8mm、ランド経2.4mm。推奨ランド経は満たさないけど、製造基準書は満たしているのでなんで拒否られたのか謎。しかも以前は結構な数を問題なく製造してもらっていて、再製造の度にルールの厳しくなるP板の謎。

まとめ

  • 値段やデザインルールはFusionと同じぐらい。
  • Fusionよりもオーダーの融通は効かない。
  • 7日ぐらいで届けてくれる。*5
  • シルクが綺麗。
  • 注文枚数より1,2枚余分に入ってる。
  • 1割ぐらい多めに製造して検品した方が良い。

今後はElecrowメインで使っていこうと思いました。この品質なら、よっぽどのことがない限りP板使わなくていいや。

シルクミスが痛かったので悩ましいけども、シルクミスによる再製造含めてもFusion注文するより早く届いているという事実(苦笑)

品質最優先のときはP板は揺るがないかな、という感じです。

*5 : Fusionは何を選んでもシンガポール経由で送ったりして、早く届ける気がない。

ボリュームの音質改善。L型とT型アッテネータ

はてブ数 2016/06/22 電子::アンプ

はじめに

onshitsu-r01.png

抵抗の場所と音質の謎で述べたとおり、抵抗には「音質への影響が大きい要素」と「音質への影響が比較的小さい要素」があります。

  • 直列要素は影響が大きい(図のR1)
  • 並列要素は影響が小さい(図のR2)

ボリュームは、可変抵抗という物理的制約上音質が良いものを利用しても固定抵抗に比べたら大きく劣ります。擬似Lアッテネーターはこの特性を利用して、ボリュームの音質を改善する方法です。

不思議な現象

volume-T_01.png

今回の実験回路です。VRは10KΩに固定して話を進めます。

R1とVRは擬似L型アッテネーターを構成しています。R1は2K~4.7KΩぐらいの抵抗を利用します(入力の大きさによる)。

R2は入力抵抗です。直列要素ですので抵抗があればあるだけ音質が劣化するはずでした。実際、今まで製作してきたアンプでは、R2は接続せず、常に0Ωにしています。

しかしこれだけでは理解できない現象に出くわしました。この回路では、R2を接続したほうが音が良かったのです

最初は2KΩぐらいで試したのですが、抵抗値をあげるとより音が良くなります。具体的には、R2として10KΩぐらいを接続すると一番音質が良くなりました。22KΩでは、オペアンプ入力端子のインピーダンスが上昇しすぎるのか、音質が低下し始めました。

つまり擬似Lアッテネータよりも、擬似Tアッテネーターのほうが音が良かったのです。

本当に音質を改善しているのか?

これまでの状況では、単に「オペアンプにとって入力インピーダンスがほどほどにあると音質が良くなる」という可能性を否定できませんので、きちんとしたT型アッテネーター回路を製作して検証しました。

volume-T_02.png

R1=2K(LGMFSA)、R3=1K(秋月カーボン抵抗)として、R2(LGMFS)を0Ωと10KΩで比較してみました。明らかにR2(LGMFS)を付けた方が音質が良くなります。

今度は逆にR3をLGMFSの1Kに変更した上で、R2を秋月カーボン抵抗の0Ωと10KΩで比較してみました。さすがに微妙なところですが、この場合もR2を付けた方が音質が良くなりました。

試しにR3をが切断してみると、R2の種類によらず存在しない(0Ωの)ほうが音質が良くなりました。よってこの現象は「R2とR3の何らかの相互作用によるもの」と考えられます。

また「R2の抵抗の種類によらず音質改善効果があり」、音質の良い抵抗のほうが効果が高い言えます。

オペアンプでない場合

昔、抵抗の音質をチェックしたときは、FETバッファアンプを使用しました。このとき、R2に相当する抵抗は入れない状態が一番良かったのですが、本当にそうなのか再度確認してみました。

volume-T_03.png

結論から言うと、R3にボリューム(2CP601)を付けた状態で、手持ち抵抗でもっとも音質が優れるRT0603をR2につけても音質が劣化しました。

つまり、この現象は「オペアンプの非反転入力に接続したときに改善効果があるが、FETバッファアンプのような構成では効果がない」ということが分かりました。

音質改善能力の差

さらに検証してみると、R2による音質改善はオペアンプによって大きく異ることが分かりました。改善が大きかった順に並べます。

オペアンプ電圧ノイズ電流ノイズ入力バイアス種類
LME497214nV(1K)4fA(10K)40fAbipolar
LMP77165.8nV(1K)10fA(1K)50fACMOS
LT16773.2nV(1K)300fA(1K)2nAbipolar
LMP77323.0nV(1K)1.1pA(1K)1.5nAbipolar
LT18073.5nV(10K)1.5pA(10K)1uAbipolar
LT62032.9nV(10K)0.75pA(10K)1.3uAbipolar
OPA23654.5nV(100K)4fA(10K)0.2pACMOS

データシートより抜粋。値はTypicalです。各オペアンプの測定条件は同一ではありませんので、相互比較としては誤差を含む値と思ってください。

観測した現象

他にも検証したことを含めまとめておきます。

  • 擬似Lよりも、R2を付けて擬似Tにしたほうが音質が良くなる。
  • ただしオペアンプ等の非反転入力であること*1
  • この現象はT型アッテネータのR3へR2が影響することで起こっている。*2
  • R2の抵抗値はR3の2~10倍程度がよい。ただし約20倍を超えると音質が悪化する。
  • オペアンプの種類により、改善能力に差がある。

*1 : 反転入力側も効果はあると思いますが、反転入力の時点で「入力信号と入力端子間」に抵抗が付いているので意味はない。

*2 : R3が存在しなければ、R2がついていない(ジャンパした)ほうが音質が良い。

仮説

volume-T_10.png

経路Aは入力信号の通り道です。入力信号は「R1とR3の分圧で減衰され、R1とR2を直列要素、R3を並列要素」としてオペアンプに入力されます。ですので、入力信号から見たらR2の抵抗が無いほうが良いことになります。

そしてオペアンプには入力換算電圧雑音というものが存在します。入力換算電圧雑音は、オペアンプの音質に深く関わってくるものですが、それは実際にオペアンプ入力端に発生するわけではありません。ただしアンプ回路を計測してきた実感として、オペアンプはオーディオ信号などを入力して動作させるときに、アンプの動作状況によって入力端子に雑音を発生させることがあります。*3

経路Bの電圧はR2とR3に印加されます。R3には「入力信号」と「オペアンプからの雑音」の2つの信号がかかることになります。雑音信号が入力信号に対して影響を与えることで、入力信号を歪ませます。

ところがR2があると、「オペアンプからの雑音」がそのままR3に印加されることはなくなり、雑音がR2/(R2+R3)されます。つまりR2が大きければ大きいほど雑音が減ります。

一方で、経路Bには「オペアンプの入力換算電流雑音」も生じます。この雑音は、信号源のインピーダンス(R2+R3)が大きくなればなるほど大きくなります。

  1. R2が大きいほど、R3で生じる信号歪みは小さくなり、音質が向上する。
  2. R2が大きいほど、入力換算雑音による歪みと、入力信号に対するR2そのものによる歪みが大きくなり、音質が劣化する。

この推察は、R2が大きすぎてもいけないなどの観測現象をよく説明できます。音質改善効果が大きいオペアンプは、入力換算電流雑音が小さいので(一部例外)、R2よる音質劣化が少なく改善効果が大きいと考えられます。

*3 : 例えばアンプの出力が大きく切り替わるときに、電流を急激に吸い取る(吐き出す)などしたり、電源由来のノイズが入力に漏れることもあります。

検証

仮説を検証するため、T型アッテネーターに細工をし次のようにしてみました。検証はR1=2K, R2=1K, R3=3K, U1=LME49721です。

volume-T_11.png

もし仮説が正しい(オペアンプ由来の雑音が音を歪める)のならば、U2を接続したとき音質が劣化し、またその劣化の仕方はオペアンプによって異なるはずです。

まずR9=0Ω(ジャンパ)として検証しました。U2に使用した時、狙い通り音質が劣化しました。劣化が小さかった順にオペアンプを並べます。

  • LT1807
  • OPA2365
  • LME49721
  • LMP7732
  • LT1677
  • LMP7716
  • LT6203

こうして見ると、電流ノイズなどのパラメーターと相関はないことが分かります。

続いてU2を最も影響が大きかった「LT6203」に固定し、R9に抵抗を入れて検証しました。

  • R9の抵抗値が大きければ大きいほど、影響を遮る
  • R9の抵抗の種類は全く影響がない

まとめ

  • オペアンプなどの入力にボリュームがつながっている場合、入力抵抗R2を付けた方が音質が良くなる。*4
  • R2の抵抗値は、T型アッテネーターのR3の2~10倍程度が良い。
  • R2による音質改善は、オペアンプ由来のノイズ(雑音)をR3に対し印加するのを軽減する効果による。
  • オペアンプの入力換算電流雑音が小さいほど、R2の抵抗値を大きくして大きな改善効果を得られる(例外あり)。

その他、信号源インピーダンス(究極的にはR3の値)によって、音質が最適になるオペアンプが異なるということも分かりました。

擬似L型(擬似T型)アッテネーターは音量調整がしにくいのですが、R1を付けずに通常のボリューム接続にR2として抵抗を接続するだけでも音質が劇的に改善することがあります。

実際に試してみたご報告や追試、考察へのご意見、感想、ツッコミなどありましたらコメントいただければ幸いです。*5

*4 : ボリュームが通常接続の場合も、T型のR1=R3=VRとみなせるので同様です。

*5 : そういえば、良い抵抗でT型にすると十分な音質になるので、長年製作中だった電子ボリュームは辞めました。結局最大振幅と電源の問題がつきまとい、汎用性と音質を高めると大型化せざる得なかった電子ボリューム。

2016/06/11(土)少年が逮捕されたB-CASソフトの件を調べてみた

逮捕容疑は昨年6月23日、同カードがなくても有料デジタル放送が無料で視聴できるプログラムを独自に開発し、自身のホームページ上に無料で公開して不特定多数の人が閲覧、入手できる状態にしたとしている。

(中略)

ネット上に公開された数百ページにわたるデジタル放送の仕組みが書かれた仕様書を読み込み、独自でプログラムを開発したという。プログラムをダウンロードすれば、ネットの掲示板などに投稿されている「ワークキー」と呼ばれる暗号をパソコンに入力することで放送を視聴できるようになるという。

<不正プログラム>TV無料視聴をネット公開、少年逮捕

「なんで公開されているソフトウェア仕様を実装しただけで逮捕されてるんだ?」というのが、これを読んだ時の正直な感想だったのですが、よくよく調べて記事にまとめてみました。

問題の背景

まず、現在日本国内でデジタル放送を受信する際は、すべからくB-CASカードというものが必要になります。これは、デジタル放送が暗号化されているためです。

まず、テレビの放送を受信した装置は、B-CASカードに対して「この放送(チャンネル)の暗号を解くための鍵を計算してください」と放送データの暗号に関する一部をカードに渡します。カードはそれ自体が小さいコンピューターのようなものになっており、カードは渡されたデータからその暗号を解くための「鍵」を計算して受信装置に渡します。

過去にあったBLACKCAS事件

BLACKCASと呼ばれる事件が起きます。2012年頃、BLACKCASなどと呼ばれる「すべてのテレビ局(有料放送を含む)が永久に視聴できるB-CASカード」がネット上で販売されるようになりました。

ほぼ同時期に、なんと間抜けなことに地デジ用を含めほぼすべてのB-CASカードには、あらゆる放送局の暗号を解除するための暗号鍵が記録されており、B-CASカードは「カード内に記録された各放送局ごとの有効期限の欄を参照して、その日時まで暗号を解けるようになる」という仕組みで動作していること、しかもそのB-CASカードのセキュリティーが甘々で中身を容易に書き換えられることが判明します。

例えば有料放送の場合は、受信契約をしないと有効期限が過去に設定されていて、視聴できないという仕組みです。

つまりカードの各放送局の有効期限を書き換えて、設定限界の2038年に有効期限を伸ばしてあげると、あらゆる放送局のデジタル放送を受信できるようになってしまいます。これがいわゆる2038年化です。

当時市販されていたBLACKCASは、大量に流通していたB-CASカードに対して有効期限を設定する書き換えを行ったものでした。

しかしもちろんすぐ問題になり、B-CASカード書き換えや解析していたサイトは警察かどこかに怒られたのかその手の情報を一斉削除。その後、書き換えたB-CASカードを販売していた人が何人も逮捕される事態となりました。

今回の事件

それから何年かして。

B-CASカードの動作を解析し、B-CASカードの動作をエミュレートするソフトが誕生しました。SoftCASといいます。ソースコード付きだったようで、すぐ公開が停止されたみたいですが、一度公開されたが最後、大量にコピーされて未だにネットの海をさまよっています。

検索した情報をまとめると、SoftCASは以下のとおりです。

  • B-CASカードをエミュレートするソフトで、このソフトを使うとB-CASカードが不要になる。
  • 有料放送を含めたあらゆる放送局のKW(ワークキー)を持っている

どう考えてもアウトです(笑)

さて、その後FreeCASというソフトが開発されました。これが今回の事件で捕まった人が作成したソフトのようです。このFreeCASとは一体何なのか?

  • B-CASカードをエミュレートするソフトで、このソフトを使うとB-CASカードが不要になる。
  • 無料放送のKW(ワークキー)を持っている。
  • 有料放送のKWを別途入力すると、有料放送を受信できるようになる。

つまり、SoftCASよりも性能が悪いわけです。なんでこんな意味のないことをしているのかと言う疑問には、作者の物と思われる次のテキストが答えてくれます。

FreeCASは無料の地上波しか見てない人向けというわけではないですが「有料放送部分のキーを含まなければ提訴の理由となる具体的な損害は発生し得ず、事実上訴訟リスクを回避できる」という発想のSoftCAS

法律に違反するか?

最初のYahooの記事だと「正規の受信プログラムを作っただけ」にしか読めなかったのですが、よくよく調べてみるとB-CASカードのエミュレーターだということが分かりました。

不正競争防止法違反ということですが、

デジタルコンテンツのコピー管理技術やアクセス管理技術を無効にすることを目的とする機器やプログラムを提供する行為を、営業上技術的制限手段を用いている者に損害を加える目的で行った者

が刑事罰の対象になるようです。

有料放送を受信しようがしまいが、B-CASカードのエミュレーター(技術的保護の回避装置)という時点でアウトなのかと思ったのですが、きちんと法律を読むと営業上技術的制限手段を用いている者に損害を加える目的が刑事罰の必須条件です*1ので、有料放送のKWを含まないFreeCASは法律的に難しい判断になるような気もします。

別角度から無料放送をB-CASなしで見られることによる損害を立証するのもまた難しそうですし。法律家の判断を聞いてみたいですね。

法律、ちなみに

ちなみに、法律には「装置(当該装置を組み込んだ機器及び当該装置の部品一式であって容易に組み立てることができるものを含む。)若しくは当該機能を有するプログラム(当該プログラムが他のプログラムと組み合わされたものを含む。)」ともありますので、プログラムを分割したり、キット化して組み立てる装置とかにしてもアウトみたいですね。

*1 : 例えば、HDMIの暗号化をたまたま解いてしまうHDMIスプリッタが普通にAmazonで売られているのも、目的がHDMIの暗号化を解くことではないということだと思われます。

まとめ

  • B-CASカードは完全にクラックされてる(笑)
  • 地デジ(無料放送)の暗号化なんてやるからこんなことになる。*2

こういう正規の利用者ばっかり損するシステム止めませんかね。例えばHDDレコーダーで録画したデータを、モバイル機器やPCで再生するのすら一苦労なのに*3、不正規の利用者によって放送データを抜いてネット上で山ほど公開されている矛盾。

*2 : 大量にB-CASカードが世の中に出回る → 出回った数だけクラックされる機会が増える

*3 : 本当に本当に不便極まりない。

D級ヘッドホンアンプ Ver2 / pwm-hpa2

はてブ数 2016/05/28 電子::HPA

D級ヘッドホンアンプを、専用ICを使わずに、超高速(35MHz)に発振させ、電池2本という低電圧で動作させた、画期的かつ高音質のアンプです。

目次

D級ヘッドホンアンプの回路を公開して早4年。ようやくキットにしても良いかなという音質になったので、Ver2として公開します。

はじめに

過去、D級ヘッドホンアンプを実用化した例はほとんどなく、あったとしてもスピーカー用のD級アンプに抵抗を繋いでヘッドホンを鳴らしていた程度でした。

4年前、専用ICを使わないD級ヘッドホンアンプの回路公開して以来、たいへん多くの方に作って頂きましたが、D級の欠点である「高域の再現性」がやや劣る問題がありました。

それから2年後に、VerUpとして高速コンパレーターとロジックICを使った高速発振回路により、高域の問題を解決。それにより本格的なヘッドホンアンプへと進化しました。

本回路はそれを更に改良したものになります。

Ver2の特徴

  • 音を歪ませることなく35MHz発振させている
  • 出力バッファが6パラになり、低インピーダンス出力になった。

D級アンプは発振周波数が速ければ速いほど音も性能も格段に良くなるのですが、一般的なMOS-FET素子はそこまでの高速動作に追従できません。例えば、かの有名な「TA2020」の発振周波数は300KHz程度(本アンプの100分の1)しかありませんし、市販されているほとんどのD級アンプ素子は1MHz以下の発振周波数です。*1

このヘッドホンアンプは超高速ロジックIC(中身はMOS-FET)をパラレル使用することで、高速性と低出力インピーダンスを実現しています。ちょうど、バイポーラトランジスタのLAPT素子と同じ思想で、遅くて大きいMOSを使わずに、速くて小さいMOSを複数使用することで高速性と低インピーダンス化を同時に実現しています。

また発振周波数が速くできても、周波数が速くなればなるほど左右チャンネルが互いに干渉して音が歪むという現象も発生します。この問題を解決するため、左右のコンパレーター電源を分離するなど回路上の工夫をし、プリント基板のレイアウトも色々と工夫しています。

*1 : 最新のものでようやく1.5MHzとかそういうレベルです。

回路図

pwm-hpa2.png

  • 回路原理は元の記事を参照してください。
  • 電池は2本専用です。4本だと音が歪みます。
  • R1/R2は結合や誘導による信号の回りこみを軽減するフィルタを構成しています。とても重要です。
  • 全消費電流:約55mA(単3ニッケル水素で40時間程度)

音質

おそらく言われなければ誰もD級アンプだと気づかないと思います(苦笑)

手元の環境では、低電圧ヘッドホンアンプVer3(op-dbuf3)の回路と、双璧のような感じになっていまして、音質的に抜きつ抜かれつデットヒートを繰り返しています。

op-dbuf3と比べると、好みもあると思いますが、こちらのほうが音は良いかと思います*2。更に改造したい人は、配線が大変ですけどもチップ抵抗に載せ替えてみても良いかもしれません。

*2 : op-dbuf3も改良すると今より音が良くなる模様で、その際の比較は難しい。今までの基板でも簡単に再現可能なのでキットの説明書に改良方法を書いてあります。検証が終わったら記事にも反映させます。

キット化

pwm-hpa2.jpg

低電圧HPA(op-dbuf3)と同じTB-56ケースに入るようにレイアウトしてキット化しました。高速ロジックICの、NC7WZ16がとても小さいのでハンダ付け難易度は高めです。

また入出力端子には4極ジャック(GND分離対応)を使用しました。3極でもそのまま使用できますし、4極仕様のヘッドホンをお持ちの方は、一味違った音質を楽しめます。*3

*3 : 4極のピンアサインはプラグ先端からL/R/LG/RGです

購入はこちらから

関連の頒布物もリンクしておきます。

販売元(メーカー)がBispaになっている商品については、品切れの際はBispa様にお問い合わせください。ついでに、op-dbuf3もGND分離対応になりました。

その他

  • 手元の環境では十分にテストしていますが、きちんとハンダ付けされ、かつ、ちゃんと電池が残っている状態で音が歪むなどの問題がありましたら、具体的にコメントにてお知らせいただければ幸いです。*4
  • オシロで観測すると出力にスイッチノイズが若干残っているのは仕様です。再生音には影響はありません。むしろ、スイッチノイズを完全に消そうとすると音質が悪化します。
  • ユニバーサル基板で再現するのはかなり大変だとは思いますが、絶対に不可能というわけでもないとも思いますので(この辺使えば)、興味ある方の挑戦をお待ちしています。

*4 : その場合、基本的にはR3/R4/C3/C4のいずれかの値を大きくする(3Kや330pF)他解決法はありません。ご了承ください。

作例ほか

感想・作例、心待ちにしています。

OK キャンセル 確認 その他