TNET日々のメモ RSSフィード

2018-01-07

[]Raspberry PiからUSBスピーカー経由で、Javaプログラム経由で音を流す。

HDMIに接続しているRaspberry Piは、音声出力の優先順位がHDMIになっているため、Javaから音を流すプログラムを書いた場合、HDMI接続先のデバイスから音が出ます。家の環境は、HDMIの接続先はテレビになっているので、テレビにRaspberry Pieの画面を出していないと音が出ない状態になってしまいます。

今回Javaプログラムから、定時でチャイムをUSBスピーカーから流すプログラムを組みたいと思っていて、Raspberry Piに接続したUSB スピーカーから音を出せるように、色々思考錯誤しました。

基本的には、以下のページに記載している内容を参考にさせていただいた結果、問題なくテレビのHDMI経由で音が鳴りました。

Javaでmp3を再生する(コード編) - 技術系備忘録

RaspberryPiでUSBスピーカーから音を鳴らす - uepon日々の備忘録

今回は、プログラムから流す音のみをUSBスピーカ側に流したいと考えていたので、Javaソースコードを以下のように追加しました。

// 以下、追加したソース

Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();

Mixer.Info finalMixerInfo = null;

for (Mixer.Info aMixerInfo : mixerInfo) {

if (aMixerInfo.getName().contains("MicroII")&&!aMixerInfo.getName().contains("Port")) finalMixerInfo=aMixerInfo;

};

Mixer mixer=AudioSystem.getMixer(finalMixerInfo);

line = (SourceDataLine) mixer.getLine(info);

// ここまで追加したソース

// ラインを取得

//line = (SourceDataLine) AudioSystem.getLine (info);

line.open();

上記の赤字については、接続したUSBスピーカーによるので、以下のコマンドで調べて合わせます。

$ cat /proc/asound/cards

0 [ALSA ]: bcm2835 - bcm2835 ALSA

bcm2835 ALSA

1 [MicroII ]: USB-Audio - Audio Advantage MicroII

C-Media INC. Audio Advantage MicroII at usb-3f980000.usb-1.3, full speed

今回接続したUSBスピーカーは以下です。対応OSには記載されていませんが、Raspberry Pi 3(RASPBIAN JESSIE)に接続して問題なく認識しました。



はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/tnet/20180107/1515316004