質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

2回答

2962閲覧

Linux ALSA複数スピーカー再生

tanksnog

総合スコア10

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2014/12/09 04:54

LinuxでALSAを使用し、音楽を再生しようとしてます。
C言語での開発です。
1プロセスで2つのスピーカーから別々の音楽を再生させることは出来ますか?
例えば、スピーカーAから音楽aを再生、同時に、スピーカーBから音楽bを再生するようにしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

一般的な音楽データでも2チャンネル分(左右の音声それぞれ)のデータを保持しています。
イヤフォンなどの端子を見てもらうと2つの絶縁リングで3つの部位分に区切られていることがわかると思います。(左用信号、右用信号、GND)
つまり、左チャンネルに音楽a、右チャンネルに音楽bを割り当てた音楽データを作成してやれば可能です。
また、出力端子さえ備えていれば3チャンネル以上も可能です。

投稿2014/12/09 05:35

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanksnog

2014/12/09 06:14

sho_csさん ご回答ありがとうございます。 音楽データは作成せず2つの音源をそのまま使用して実現させることはできないでしようか?
sho_cs

2014/12/09 06:35

プログラム内部で合成してやれば可能です。
sho_cs

2014/12/09 06:51

一般的なステレオ16bitのWAVEファイルであれば音声データ1ブロック分の構成は1,2バイト目に右チャンネル、3,4バイト目に左チャンネルのデータが格納されています。 音源aの左右を足し2で割ったものを1,2バイト目にセットし、音源bの左右を足し2で割ったものを3,4バイト目にセットすれば合成できます。 もちろん音源間で再生時間やフォーマットの違いがあれば調整してやる必要があります。
tanksnog

2014/12/09 08:48

sho_csさん 度々のご回答ありがとうございます。 申し訳ありません、言葉足らずでした。 一番やりたいことは、再生する音楽の合成は行わず、音楽a,bをそのまま使用したいのです。 以下、やりたいことのイメージです。 --------------- 1.スピーカーA,Bに対し、ALSAのハンドル(α、β)をそれぞれ別々に用意する。 2.αに対し、音楽aを書込む 3.βに対し、音楽bを書込む 4.2,3を並行して行う 上記を1つのプロセスで実施 --------------- 私が今まで調べてきた中では、 ・1つのスピーカーに対して複数の音源を合成して再生する(dmixを使用) ・複数のスピーカーに対して1つの音源を再生する(PulseAudioを使用) は実現できるようですが、 複数のスピーカーに対してそれぞれ別々の音源を合成せずに再生する、 この方法が見つかりません。 実現不可能なのでしょうか?
guest

0

sho_csさん
度々のご回答ありがとうございます。

申し訳ありません、言葉足らずでした。

一番やりたいことは、再生する音楽の合成は行わず、音楽a,bをそのまま使用したいのです。
以下、やりたいことのイメージです。


1.スピーカーA,Bに対し、ALSAのハンドル(α、β)をそれぞれ別々に用意する。
2.αに対し、音楽aを書込む
3.βに対し、音楽bを書込む
4.2,3を並行して行う
上記を1つのプロセスで実施

私が今まで調べてきた中では、
・1つのスピーカーに対して複数の音源を合成して再生する(dmixを使用)
・複数のスピーカーに対して1つの音源を再生する(PulseAudioを使用)
は実現できるようですが、
複数のスピーカーに対してそれぞれ別々の音源を合成せずに再生する、
この方法が見つかりません。

実現不可能なのでしょうか?

投稿2014/12/09 08:38

tanksnog

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sho_cs

2014/12/09 11:21

dmix、multiあたりでいけそうな気がします。 具体的な方法を調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問