Raspberry Pi
(2013/1/14追記)
http://elinux.org/RPi_Bugsにオーディオ出力に関するハードウエア上のバグ情報が載っていた。
これによると、保護ダイオードのせいでDCオフセットが生じてしまうとのこと。
回路図を見ると、DCカット用のコンデンサ(C48,C34)の後ろに保護用ダイオード(D12,D13)がついている。
C48,C34が直流分をカットして交流分を流しているのだが、保護用ダイオードのせいでマイナス側に振れた分をカットしてしまっている。
実際どのようになっているか、オシロを使って測定してみた。
音源はフリーソフトの「WaveGene」を利用してwavファイルを生成。
WaveGeneの設定条件は下の図のとおり。
秒数は画面にある5秒ではなくて長めに設定してある。
これをRaspberry Piでomxplayerコマンドで再生。
$ omxplayer ファイル名
音声ファイル再生中に+キーと−キーで音量を上下できるので、これで音量を変えて測定。
無負荷状態で測定。
左がomxplayerの音量を0dB、右が+3dBで測定。
オシロの画面で左のマークのところが0Vのライン。
信号がプラス側にずれているのがわかる。
音量を+3dBにすると音が歪んでいる。
ヘッドホンを付けた状態で測定。
同じく左が0dB、右が+3dB。
ヘッドホンの抵抗分のせいかオフセット分が無いように見える。
バグ情報に従って対処してみる。
元凶のダイオード。
ダイオードを取り外したところ。
信号線とGNDの間に100KΩの抵抗を取り付けたところ。
対処後の信号を測定してみる。
無負荷状態で測定。
同じく左が0dB、右が+3dB。
DCオフセット分が無くなって、交流分だけになっている。
ただし、音量を+3dBに上げたときに歪むのは変わっていない。
若干下にずれているのは、オシロの0V時の線が左のマークより1ドット分ずれていたせい。
ヘッドホンを付けた状態で測定。
同じく左が0dB、右が+3dB。
これも同じ。
以前作ったオシロのキットが役に立った。
とはいえ、ちゃんとしたオシロがほしい今日この頃。
オシロの機能で画面のキャプチャがとれるのだが、画像が小さくファイルの転送も面倒なので写真でとった。
(2013/1/16追記)
音声再生前後でブチッって音がなるのは別の問題です。