
Ubuntu日本語フォーラム

ログインしていません。
Firefoxの音声出力をPulseAudio Volume Control (GUI )で可視化して見ています。
「Output Devices」 の項目を見ると ①Usb Audio Device Analog Stereo / Port: [speakers] と ②Built-in Audio Analog Stereo / Port: [Headphones (plugged in)] の2系統の出力が認識表示されています。
「Playback」 の項目を見ると、Firefox: AudioStream On で [・USB Audio Device Analog Stereo] と [・Built-in Audio Analog Stereo] のどちらか片方の選択をするようになっています。選択した、ビルトインのヘッドホンジャックに刺したヘッドホン、またはUSB接続したスピーカーのどちらかから音声が再生されます。しかし両方を選択することはできませんから両方から同時に再生することはできません。
音声出力を①②の2系統から同時に出力再生させたいのですが、どのようにしたらできるでしょうか?
ちなみに音声はどちらか片方しか選択できませんが、音声再生中に(①②の選択にかかわらず)「Output Devices」の ②Built-in Audio Analog Stereo / Port: [Headphones (plugged in) のフェーダーをマウスを使って左右に動かすと、「ピコッ、ピコッ」とクリック音のような音は同時に再生されますし、別なウィンドウでFirefoxを2つ開きそれぞれ、USB Audio Device 、Built-in Audioと分けて選択しても別々の2つの再生音がそれぞれから同時再生されます。
1つの音声を2つの別々の音声出力から再生させたいのです。なにか方法はあるでしょうか?できればそれぞれのボリュームのコントロールもしたいです。(再生する音声はFirefox音声だけでなく、音声全般の再生を対象にしています。)(外部ミキサーや外部インタフェース、特殊ケーブル等、外部デバイスをつかわずに!)
PulseAudio Volume Control で不可能であれば、他のソフトウエアでも、このことが可能になるならば使ってみたいです。そのようなソフトがあれば教えてください、PPAによるソフトでも良い物があれば使いたいです。端末での操作も多少であればできます。関連することであれば、どんなことでも結構ですので、情報提供もとめています。よろしくおねがいします。
オフライン
pulseAudio系ではなく
jack系だとできそうですね。
昔、別のマシンでいじったことがありました。
そういったことがいろいろできそうです。
私はさっぱりわからないので諦めました。
誰も使っている人を知りませ
Synaptic 立ち上げ jack で検索すると出てくるものです
オフライン
hotohotoさん、情報ありがとうございます。
jack系ソフトは外部midi機器接続やオーディオ接続切り替え等でQjackCtlを使ったり、LMMS内でCatinaやCadence等を使うことはありますが、今回の目的「1つの音声を2つの別々の音声出力から再生させる」為の設定方法があるのか、またそのためにはどのように設定したらよいのかわかりません。Audioキャンバスに自動的に表示されるオブジェクトを全部パッチで繋いでみたりしていますが、それだけではだめでした。
jackの設定方法等も含めて、引き続き情報提供を求めます。
オフライン
Ubuntu Sound Systemの図を見ると、カーネル・モジュールでデバイスを切り替えているので、
2つのデバイスに出力するのは、出来ないと思われます。
https://wiki.ubuntulinux.jp/UbuntuStudioTips/Setup/UbuntuSoundSystem
下に有る、JackのSystemの図を見ると、Firewire(IEEE1394)のデバイスを使用すれば、出来そうな
雰囲気が有りますが、肝心のFirewire(IEEE1394)を備えたパソコンを最近は見当たりませんね。
オフライン
chica による投稿:
音声出力を①②の2系統から同時に出力再生させたいのですが、どのようにしたらできるでしょうか?
PulseAudio には「module-combine-sink」というモジュールがあります。これをロードすると、PulseAudio に仮想sink が設けられます。この仮想sink は現在利用可能な他のsink 全てに対し、受信した音声信号をバイパスします。すでにPulseAudio 内ではサウンドデバイスへの音声出力はsink に抽象されていますから、アプリケーションからの出力をその仮想sink に向けることで、全サウンドデバイスからの音声出力が可能です。
論より証拠、まずはやってみましょう。端末で以下のコマンドを実行してみてください。
$ pactl load-module module-combine-sink 27
成功するとnumerical ID が返されます。これはunload の時に利用します。
$ pactl unload-module 27
numerical ID は以下のコマンドの出力でも確認できます。
$ pactl list modules
さて、一度module-combine-sink をロードすると仮想sink が追加されるわけですが、これに対し、pavucontrol の「再生」タブでアプリケーション出力をディスパッチすると、期待の状態となります。例えば私が今使っている環境でこれをすると、以下のsink が追加されます。
$ pactl list sinks
...
Sink #2
State: RUNNING
Name: combined
Description: Simultaneous output to 内部オーディオ アナログステレオ, DesktopKonnekt6 マルチチャンネル
Driver: module-combine-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 27
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: combined.monitor
Latency: 87090 usec, configured 85333 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.class = "filter"
device.description = "Simultaneous output to 内部オーディオ アナログステレオ, DesktopKonnekt6 マルチチャンネル"
device.icon_name = "audio-card"
形式:
pcmこれに対してpavucontrol でアプリケーションの出力をディスパッチすると
$ pactl list sink-inputs
...
Sink Input #2
Driver: module-combine-sink.c
Owner Module: 27
Client: n/a
Sink: 0
Sample Specification: s16le 2ch 44051Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Sink Latency: 84582 usec
Resample method: trivial
Properties:
media.name = "Simultaneous output on 内部オーディオ アナログステレオ"
media.role = "filter"
module-stream-restore.id = "sink-input-by-media-role:filter"
Sink Input #3
Driver: module-combine-sink.c
Owner Module: 27
Client: n/a
Sink: 1
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Sink Latency: 85330 usec
Resample method: trivial
Properties:
media.name = "Simultaneous output on DesktopKonnekt6 マルチチャンネル"
media.role = "filter"
module-stream-restore.id = "sink-input-by-media-role:filter"両方のデバイスから音声出力されました。
オフライン
bybywinさん Mocchiさん 情報ありがとうございます。
#4 https://wiki.ubuntulinux.jp/UbuntuStudioTips/Setup/UbuntuSoundSystem の図表をみていて、出来ないのではないかと判断された理由が理解できずにいたところに、#5 の情報をいただいたので、さっそくためしてみましたところ、成功しました!!!(いろんな状況で何度かやってみました。途中でjackを設定した場合や、先に認識しているデバイスの順番等によってはうまくいかないことがありましたが、再起動等をしてクリーンな状況でコマンド $ pactl load-module module-combine-sink を実行して pulseAudio で設定するとうまくいきました。)(端末で $ pactl load-module module-combine-sink を実行するとPulseAudio のPlayBackに simultaneous output が現れました。)
これが出来るとオーディオインターフェース等外部デバイスを使わなくてもDJ等の ヘッドホン モニター が可能になります。音楽関係では他の使い方もいろいろありそうで広がりそうです。
海外の同世代の音楽仲間はPure Date 等の音楽ソフトを使って新しくておもしろいことをしています。私はまだパソコン歴が浅いし、時間等の都合でPure Dateでのプログラミングには入れませんが、PureDate 等を使わなくても(Pure Dateならではの事はありますが)、それ以前にJackやpulseaudioをうまく使い、組み合わせることによって、既成のデバイスやソフトの使い方に縛られない音楽制作やパフォーマンスができると感じています。
今回の質問はできたらいいなとおもっていてなかなか出来なかったことなので、出来るようになって非常に嬉しいです。情報を寄せてくださったみなさまに感謝しています、ありがとうございました。
今後は自分でもPulseAudioについてもう少し勉強ようとおもいます。おすすめのサイトや本などがあれば教えてください。
オフライン
Ubuntu Studio Tipsでサウンド関係を纏めたWikiがあります。
https://wiki.ubuntulinux.jp/UbuntuStudioTips
chicaさんの質問の、お陰で大変に勉強になりました。
モデレータのMocchiさん、何時もながらの適切な回答に感謝です。
オフライン
一度解決したのですが、このトピックに関して新たにわからないことが出てきたので質問させてください。
、フォーラムとみなさんのおかげで、PulseAudio を「module-combine-sink」を使うことによって音声出力を2系統から同時に出力再生できるようになったのですが、jackを開くとこれが出来なくなってしまいます。
qjackctlやjackを使うソフトを使った時も同じように(音声出力を2系統から同時に再生)出力するにはのような方法があるでしょうか?
linuxの音楽関係のソフトではjackをつかうものが多く、ソフト同士の連携にはjackが便利なので、jackでも同様な展開をしたいです。自分でも調べてみましたがわかりませんでした、どなたかわかる方、情報を提供してください。よろしくおねがいします。
、
オフライン
補足説明します。
Jackを使っている(選んでいる)ソフトはPulseAudio Volume Control (GUI )に表示されないので2つの出力から同時再生したり出力先を選択したりはできませんが、pulseAudioを使っているソフトとの別の出力先からの同時再生をすることは可能です。
Jackを使っている(選んでいる)ソフト同士やJack経由の単一のソフトの出力を2系統またはそれ以上の出力から振り分けて再生を実現したいということです。
具体的には Jack Mixerのようなソフトに入力した複数の音声をmixしたリアルタイムの音声データの出力を振り分けたいということです。
linuxではmixerがたくさん配給されていますが、このミキサーの機能を持つものを私はまだ他に知りませんし、Jackで使えるシンセやシーケンサーやプラグインは性能も優れていて、なおかつJackを使ったソフトには、複雑な接続や配線を可視化したソフトがいくつかあるので捨てがたいです。Jack内での接続は工夫次第で色々な組み合わせができます。jackを使えば、ソフト同士をひとつのpcの画面上でPure Dateやモジュラーシンセサイザーのように多様なパッチングができるです。
私の場合、あとは出力さえ自由になればすばらしいシステムが作れるのですが、この問題で行き詰まっています。関係するどんな情報でも結構ですので教えてください。
オフライン
補足説明に誤りがありましたので訂正します。
以下
「具体的には Jack Mixerのようなソフトに入力した複数の音声をmixしたリアルタイムの音声データの出力を振り分けたいということです。」
誤 Jack Mixer → 正 JackEQ
以上
ちなみに JackEQ は 簡単なイコライザー機能もありますが、クロスフェーダー機能のあるミキサーです。このEQ付きミキサーに入力した音声を2系統に出力させたいので今回質問をしています。出力先のひとつはモニタースピーカー用に、もうひとつはcueするためのヘッドホンモニター用にです。
オフライン