Skip to content
kinneko edited this page Nov 8, 2013 · 6 revisions

HDMIから音声出力を取り出す

 BeagleBone BlackがRasPiと較べて機能的に弱い部分の1つに、アナログでの音声出力がないところがあります。

 HDMIでは音は出るので、TVなどにつないで音が出せないわけではないのですが、PC用のディスプレイなどでスピーカーの付いていない場合には音が出ません。ベビージャックに差し込んですぐに音を出せないところが、つらいところです。

 音を出すために、外付けのUSB-DACを使うという手がありますが、できれば1つしかないUSBポートは、できればHUBなどをつながないで、Bluetoothや無線LANを使うのに残しておきたいところです。

 世間には、HDMIからオーディオ出力だけを分離するアダプタ製品が売っていますので、それを使ってオーディオ出力をやってみましょう。


マイコンソフト XDAC-1

 たまたま、マイコンソフト XDAC-1が手元にあったので、これを使ってみます。

 これは、6,800円とBeagleBone Blackより高価で、Amazonで購入できず、ただ音を出すためだけに購入するのは、本末転倒なところがあります。


Audioインターフェイスの確認

 オーディオのインターフェイスの状態を確認します。aplayでも、procの中身でもどちらでも確認できます。

root@beaglebone:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Black [TI BeagleBone Black], device 0: HDMI nxp-hdmi-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@beaglebone:~# cat /proc/asound/cards
 0 [Black          ]: TI_BeagleBone_B - TI BeagleBone Black
                      TI BeagleBone Black

 ALSAで、0番に"TI BeagleBone Black"として利用できるようになっています。NXPのICを使っているようです。


XDAC-1とBeagleBone Blackの接続

 BagleBone Blackと、XDAC-1を接続します。

接続

 XDAC-1には電源スイッチはありません。ACアダプタをコンセントに接続し、HDMI端子をBagleBone Blackに接続し、イヤホンをアナログ端子に接続します。XDAC-1は、アナログ利用の場合はスイッチをA側にしておく必要があります。

 TVへのスルーアウトが必要かと思いましたが、XDAC-1単体でもEDIDを出しているので、接続は不要です。

root@beaglebone:~#  parse-edid /sys/class/drm/card0/card0-HDMI-A-1/edid
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

	# EDID version 1 revision 3
Section "Monitor"
	# Block type: 2:0 3:fc
	Identifier "EP-HDMI-RX"
	VendorName "EXP"
	ModelName "EP-HDMI-RX"
	# Block type: 2:0 3:fc
	# Block type: 2:0 3:fd
	HorizSync 15-46
	VertRefresh 59-61
	# Max dot clock (video bandwidth) 80 MHz
	# DPMS capabilities: Active off:yes  Suspend:no  Standby:no

	Mode 	"1280x720"	# vfreq 60.000Hz, hfreq 45.000kHz
		DotClock	74.250000
		HTimings	1280 1390 1430 1650
		VTimings	720 725 730 750
		Flags	"+HSync" "+VSync"
	EndMode
	Mode 	"720x480"	# vfreq 59.940Hz, hfreq 31.469kHz
		DotClock	27.000000
		HTimings	720 736 798 858
		VTimings	480 489 495 525
		Flags	"-HSync" "-VSync"
	EndMode
	# Block type: 2:0 3:fc
	# Block type: 2:0 3:fd
EndSection

 TVへのスルーアウトがある場合は、TV側のEDIDを返します。


再生テスト

 再生するための、サンプルファイルをscpでBeagleBone Blackに転送しておきます。

MacBook:~ kinneko$ scp ~/Music/iTunes/iTunes\ Music/BENI/Covers/* [email protected]:/home/root/
[email protected]'s password:
01 Ti Amo (English Ver.).mp3                  100%   14MB   2.8MB/s   00:05
02 La.La.La Love Song.mp3                     100% 5660KB   5.5MB/s   00:01
03 Hitomio Tojite.mp3                         100%   14MB   1.2MB/s   00:11
04 Kanade.mp3                                 100%   12MB   2.5MB/s   00:05
05 _One More Time, One More Chanc.mp3         100%   13MB   2.7MB/s   00:05
06 Robinson.mp3                               100%   10MB   2.6MB/s   00:04
07 Suddenly.mp3                               100%   10MB   2.5MB/s   00:04
08 Mou Koinante Shinai.mp3                    100%   11MB   2.8MB/s   00:04
09 Sakurazaka.mp3                             100%   13MB   2.5MB/s   00:05
10 Kokonishika Sakanai Hana.mp3               100%   15MB   2.1MB/s   00:07
11 Imano Kimio Wasurenai.mp3                  100% 9778KB   3.2MB/s   00:03
12 Itoshino Erii.mp3                          100%   10MB   2.1MB/s   00:05
13 True Love.mp3                              100% 9667KB   2.4MB/s   00:04

 再生用のプレーヤーとしては、mplayerがインストールされていましたので、再生してみます。

root@beaglebone:~# mplayer /home/root/01\ Ti\ Amo\ \(English\ Ver.\).mp3
MPlayer2 2.0-379-ge3f5043 (C) 2000-2011 MPlayer Team
162 audio & 361 video codecs

Playing /home/root/01 Ti Amo (English Ver.).mp3.
Detected file format: Audio only
Load subtitles in /home/root/
==========================================================================
Forced audio codec: mad
Opening audio decoder: [libmad] libmad mpeg audio decoder
AUDIO: 44100 Hz, 2 ch, s16le, 320.0 kbit/22.68% (ratio: 40000->176400)
Selected audio codec: [mad] afm: libmad (libMAD MPEG layer 1-2-3)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 343.1 (05:43.1) of 360.0 (06:00.0)  5.8%
Cannot sync MAD frame
Cannot sync MAD frame
A: 343.2 (05:43.2) of 360.0 (06:00.0)  5.8%
Cannot sync MAD frame
A: 343.2 (05:43.2) of 360.0 (06:00.0)  5.8%


Exiting... (End of file)

 再生できました。高いだけあって、音が切れてもホワイトノイズが出たりしません。

 プラグに100均のパッシブスピーカーを接続してみましたが、音量が小さくて使えませんでした。イヤホン以外で使うには、アンプは必須になるでしょう。


音量の調整機能はない

 alsamixerを起動してみましたが、"This sound device does not have any controls."のメッセージが出るだけでした。

 デバイスとしての音量調整機能は、そもそも持っていないようです。


スクリーンが切れると音も止まる

 HDMIの信号がスリープで停止すると、当然ながら追随する音声信号も止まってしまいます。スクリーンがスリープにならないような設定を別にしてやる必要があります。