パルスオーディオ

パルスオーディオ
開発者
  • レナート・ポエタリング
  • ピエール・オスマン
  • シャームズ・E・キング
  • タヌ・カスキネン
  • コリン・ガスリー
  • アルン・ラガヴァン
  • デビッド・ヘニングソン
初回リリース2004年7月17日[ 1 ] (2004年7月17日
安定版リリース
17.0 [ 2 ] / 2024年1月12日 ( 2024-01-12 )
リポジトリgitlab .freedesktop .org /pulseaudio /pulseaudio
書かれたC [ 3 ]
オペレーティング·システムFreeBSDNetBSDOpenBSDLinuxIllumosSolarismacOSMicrosoft Windows(メンテナンスされていません)
プラットフォームARMPowerPCx86 / IA-32x86-64MIPS
タイプサウンドサーバー
ライセンスLGPL-2.1以降[ 4 ]
Webサイトpulseaudio.org

PulseAudioは、 freedesktop.orgプロジェクトを通じて配布されているネットワーク対応のサウンドサーバープログラムです。主にLinuxMicrosoft Windows上のWindows Subsystem for LinuxAndroid上のTermuxなど)、 FreeBSDOpenBSDmacOSなどの様々なBSDディストリビューション、 Illumosディストリビューション、Solarisオペレーティングシステムで動作します。アプリケーションとハードウェア間のミドルウェアとして機能し、生のPCMオーディオストリームを処理します。[ 5 ]

PulseAudioは無料のオープンソースソフトウェアであり、 LGPL-2.1以降のライセンスの下で提供されています。[ 4 ]

2004年にPolypaudioという名前で設立されましたが、2006年にPulseAudioに改名されました。[ 6 ]

PulseAudioは、互換性のあるPulseAudioサーバー(pipewire-pulseとして知られる)を提供する新しいPipeWireと競合しており、PipeWireは現在、 Fedora LinuxUbuntuDebianを含む多くのLinuxディストリビューションでデフォルトで使用されています。[ 7 ] [ 8 ] [ 9 ]

Microsoft Windows のサポート

Microsoft Windowsでは、PulseAudio はWindows Subsystem for Linuxで実行されます。

NTカーネルは以前はMinGW ( GCCbinutilsなどの様々なツールを含むGNUツールチェーンの実装)を介してサポートされていました。しかし、NTカーネルポートは2011年以降更新されていません。[ 10 ]

ソフトウェアアーキテクチャ

PulseAudio の動作フローチャート
PulseAudio はソフトウェアでミキシングを行うデーモンです。

大まかに言えば、ALSAはサウンドハードウェアドライバを提供するカーネルサブシステムであり、PulseAudioはアプリケーションとALSA間のインターフェースエンジンです。ただし、PulseAudioの使用は必須ではなく、PulseAudioがなくてもオーディオの再生やミックスは可能です。

PulseAudioはサウンドサーバーとして機能し、1つ以上のソース(プロセス、キャプチャデバイスなど)からのサウンド入力を受け入れるバックグラウンドプロセスを生成します。バックグラウンドプロセスは、これらのサウンドソースを1つ以上のシンク(サウンドカード、リモートネットワークのPulseAudioサーバー、またはその他のプロセス)にリダイレクトします。 [ 11 ]

PulseAudio の目標の一つは、ハードウェアに直接アクセスしようとするプロセス(レガシーOSSアプリケーションなど)からのストリームも含め、すべてのサウンドストリームを PulseAudio 経由で再ルーティングすることです。PulseAudio は、 aRtsESDなどの他のオーディオシステムを使用するアプリケーションにアダプターを提供することでこれを実現します。

Linuxにおける一般的なインストールシナリオでは、ユーザーはALSAをPulseAudioが提供する仮想デバイスを使用するように設定します。これにより、ALSAを使用するアプリケーションはPulseAudioにサウンドを出力し、PulseAudioはALSA自体を使用して実際のサウンドカードにアクセスします。PulseAudioは、PulseAudioを直接サポートしたいアプリケーション向けに独自のネイティブインターフェースを提供するほか、ESDアプリケーション向けのレガシーインターフェースも提供しているため、ESDの代替として最適です。

OSSアプリケーション向けに、PulseAudioはpadspユーティリティを提供しています。このユーティリティは などのデバイスファイルを置き換え/dev/dsp、アプリケーションにサウンドカードを排他的に制御しているように見せかけます。実際には、アプリケーションの出力はPulseAudio経由で再ルーティングされます。

libcanberra

libcanberra は、デスクトップ イベント サウンド用の抽象 API であり、「PulseAudio サンプル キャッシュ API」の完全な代替品です。

libSydney

libSydneyは「PulseAudioストリーミングAPI」の完全な代替品であり、libSydneyが最終的にはPulseAudioで使用される唯一のオーディオAPIになることが計画されています。[ 15 ]

特徴

PulseAudioの主な機能は以下のとおりです。[ 11 ]

  • アプリケーションごとの音量コントロール[ 16 ]
  • ロード可能なモジュールをサポートする拡張可能なプラグインアーキテクチャ
  • 多くの一般的なオーディオアプリケーションとの互換性[ 17 ]
  • 複数のオーディオソースとシンクのサポート
  • プロセッサリソース効率を高めるゼロコピーメモリアーキテクチャ
  • ローカルネットワーク上でPulseAudioを使用している他のコンピュータを検出し、そのスピーカーから直接サウンドを再生する機能
  • アプリケーションがサウンドを再生しているときに、サウンドを再生するために使用する出力デバイスを変更する機能 (アプリケーションがこれをサポートする必要はなく、PulseAudio はアプリケーションがこれを検出することなくこれを実行できます)
  • スクリプト機能を備えたコマンドラインインターフェース
  • コマンドライン再構成機能を備えたサウンドデーモン
  • サンプル変換およびリサンプリング機能を内蔵
  • 複数のサウンドカードを1つにまとめる機能
  • 複数の再生ストリームを同期する機能
  • 動的検出機能を備えた Bluetooth オーディオ デバイスのサポート
  • システム全体のイコライゼーションを可能にする機能

採択

PulseAudioは、 Fedora Linuxのバージョン8から一般ユーザー向けに初めて登場し、 [ 18 ] 、 Ubuntu、 [ 19 ]、 Debian[ 19 ] Mandriva LinuxopenSUSEなどの主要なLinuxディストリビューションに採用されました。PulseAudioはGNOMEプロジェクトでサポートされており、 KDEでもPlasma Workspacesに統合されているためサポートされており、 Phonon(KDEマルチメディアフレームワーク)とKMix (統合ミキサーアプリケーション)のサポートが追加され、マルチチャンネルスピーカーの設定を支援する「スピーカーセットアップ」GUIも追加されています。PulseAudioはIllumosディストリビューションOpenIndianaでも利用でき、MATEデスクトップ環境ではデフォルトで有効になっています。

Nokia N900Nokia N9Palm Pre [ 20 ]など、さまざまなLinuxベースのモバイルデバイスがPulseAudioを使用しています。

Linux Foundationのプロジェクトであり、 IntelSamsungで構成される Technical Steering Group (TSG) によって管理されているオープンソースのモバイル オペレーティング システムであるTizen は、 PulseAudio を使用しています。

導入段階における問題

  • PortAudio APIPulseAudioの設計と互換性がなかったため、修正が必要でした。[ 21 ] OSSを使用するほぼすべてのパッケージとALSAを使用する多くのパッケージは、PulseAudioをサポートするために修正する必要がありました。[ 22 ]グリッチのないオーディオ機能のさらなる開発には、PulseAudioコアの完全な書き直しが必要であり、ALSA APIと内部の変更も必要でした。[ 23 ] [ 24 ]
  • ディストリビューションに初めて採用されたとき、PulseAudioの開発者であるレナート・ポエタリング( systemdの作者でもある)は、PulseAudioを「今のところオーディオを壊すソフトウェア」と表現しました。[ 25 ]ポエタリングは後に、「UbuntuはPulseAudioを採用した際、素晴らしい仕事をしたとは言えない。十分な準備をしていなかった」と主張しました。 [ 26 ] Ubuntu「Hardy Heron」(8.04)への採用は、その後のUbuntuのリリースで改善されました。[ 27 ]しかし、2009年10月、ポエタリングはUbuntuのPulseAudioの統合にまだ満足していないと報告しました。[ 28 ]
  • 特定のソフトウェアによる古いサウンドコンポーネントとの相互作用: Linux版Adobe Flashなどの特定のプログラムはPulseAudioを不安定にしていました。 [ 29 ] [ 30 ] Flashプラグインの新しい実装では競合する要素は必要なくなり、その結果FlashとPulseAudioは互換性を持つようになりました。
  • バッファオーバー/アンダーランの早期管理:PulseAudioの以前のバージョンでは、バッファオーバー/アンダーランの不適切な処理により、処理されたオーディオが歪むことがありました。[ 31 ]
  • ヘッドホン使用者の場合、不具合のあるアプリケーションを使用した際に、極端に大きな音量で騒音性難聴を引き起こす可能性があります。 [ 32 ] [ 33 ] [ 34 ] [ 35 ]

その他のサウンドサーバー

JACKは、リアルタイムかつ低遅延(5ミリ秒以下)のオーディオパフォーマンスを提供するサウンドサーバーです。JACK2以降は、対称型マルチプロセッシングを利用した効率的な負荷分散をサポートしています。つまり、すべてのオーディオクライアントの負荷を複数のプロセッサに分散できます。JACKは、 ArdourReZoundLinuxSamplerなどのプロフェッショナルオーディオアプリケーションで推奨されるサウンドサーバーであり、複数のフリーオーディオ制作ディストリビューションでデフォルトのオーディオサーバーとして使用されています。

JACKとPulseAudioは共存可能です。JACKの実行中にPulseAudioは自動的にJACKクライアントとして接続し、PulseAudioクライアントがJACKクライアントと同時に音声を録音できるようになります。[ 36 ]

PipeWireは、PulseAudioとJackの両方で現在処理されているユースケースをサポートすることを目的としたオーディオおよびビデオサーバーです。[ 37 ] [ 38 ]

一般的なオーディオインフラストラクチャ

JACKとPulseAudioが登場する以前は、これらのシステムのサウンドは多目的統合オーディオソリューションによって管理されていました。これらのソリューションはミキシングとサウンドストリーミングのプロセスを完全にはカバーしていませんが、JACKとPulseAudioは最終的なオーディオストリームをサウンドカードに送信するために現在も使用しています。

  • ALSAは、PulseAudioより先に開発されたdmixと呼ばれるソフトウェアミキサーを提供しています。これはほぼすべてのLinuxディストリビューションで利用可能で、よりシンプルなPCMオーディオミキシングソリューションです。PulseAudioのような高度な機能(タイマーベースのスケジューリングやネットワークオーディオなど)は提供していません。その一方で、ALSAは対応するサウンドカードやソフトウェアと組み合わせることで、低レイテンシを実現します。
  • OSSはLinuxや他のUnixオペレーティングシステムで使用されていたオリジナルのサウンドシステムでしたが、Linuxカーネル2.5以降は非推奨となりました。[ 39 ]独自の開発は4Front Technologiesによって継続され、2007年7月にOpenSolaris向けにはCDDL-1.0Linux向けにはGPL-2.0のみでOSSのソースをリリースしました。[ 40 ]最新の実装であるOpen Sound System v4では、ソフトウェアミキシング、リサンプリング、アプリケーションごとの音量変更が可能で、PulseAudioとは異なり、これらの機能はカーネル内に実装されています。OpenIndianaや他のillumosディストリビューションでのPulseAudioサポートは、カーネルOSS実装(「 Boomer」 )に依存しています。

参照

参考文献

  1. ^ "OldNews" . freedesktop.org . 2012年5月16日時点のオリジナルよりアーカイブ。2016年2月17日閲覧。
  2. ^ "PulseAudio 17.0 · PulseAudio / pulseaudio · GitLab" . GitLab . 2024年1月13日閲覧
  3. ^ 「PulseAudio」分析概要Open Hub2023年7月13日時点のオリジナルよりアーカイブ、 2017年8月6日閲覧。
  4. ^ a b「ライセンス」PulseAudio git無料デスクトップ2014年3月4日のオリジナルからアーカイブ、 2011年6月16日閲覧。
  5. ^ “SupportedAudioFormats” . www.freedesktop.org . 2021年10月1日時点のオリジナルよりアーカイブ2023年5月13日閲覧。
  6. ^ The Project Formerly Known as Polypaudio2007年1月7日時点のオリジナルよりアーカイブ、 2006年7月20日閲覧。
  7. ^ “Changes/DefaultPipeWire - Fedora Project Wiki” . fedoraproject.org . 2020年11月22日時点のオリジナルよりアーカイブ2023年2月13日閲覧。
  8. ^ Sneddon, Joey (2022年5月22日). 「Ubuntu 22.10、PipeWireをオーディオのデフォルトに」 . OMG! Ubuntu! . 2022年5月22日時点のオリジナルよりアーカイブ。 2023年2月13日閲覧
  9. ^ 「Debian 12、GNOMEデスクトップでデフォルトでPipeWireとWirePlumberに移行」 www.phoronix.com . 2022年10月1日時点のオリジナルよりアーカイブ2023年2月13日閲覧。
  10. ^ PulseAudio on Windows2023年3月1日時点のオリジナルよりアーカイブ。 2016年7月29日閲覧。
  11. ^ a b「About」PulseAudio、Free desktop、2013年3月25日時点のオリジナルよりアーカイブ、 2013年3月11日閲覧。
  12. ^ 「Debian -- パッケージ検索結果 -- libcanberra」 . packages.debian.org . 2014年7月14日時点のオリジナルよりアーカイブ。 2014年7月13日閲覧
  13. ^ 「Debian -- パッケージ検索結果 -- libasound」 . packages.debian.org . 2014年7月14日時点のオリジナルよりアーカイブ。 2014年7月13日閲覧
  14. ^ 「Debian -- パッケージ検索結果 -- libcanberra-pulse」 . packages.debian.org . 2009年11月4日時点のオリジナルよりアーカイブ。 2014年7月13日閲覧
  15. ^ Poettering, Lennart (2007年2月8日). 「FOMS/LCA Recap」 . 0pointer.de . 2007年6月6日時点のオリジナルよりアーカイブ2017年3月13日閲覧。
  16. ^ Poettering, Lennart、「インタビュー」、Fedora Project、Red Hat、2009年8月31日時点のオリジナルよりアーカイブ。 2009年7月3日閲覧。
  17. ^ Pulse Audio wiki、PulseAudio、2009年8月31日時点のオリジナルよりアーカイブ、 2009年7月19日閲覧。
  18. ^ “LPC: Linuxオーディオ:混乱だ [LWN.net]” . 2008年9月18日. 2009年9月1日時点のオリジナルよりアーカイブ2019年7月11日閲覧。
  19. ^ PulseAudio、Debian、2013年11月9日のオリジナル(wiki)からのアーカイブ、 2013年11月9日取得
  20. ^ 「オープンソースのアイデンティティ:PulseAudioの開発者Lennart Poettering」TechWorld、2009年10月8日、2011年4月6日時点のオリジナルよりアーカイブ、 2010年6月19日閲覧。
  21. ^ Poettering, Lennart (2004年9月25日). 「PortAudio ドライバの作成」 . audio.portaudio.devel . git.net. 2017年3月1日時点のオリジナルよりアーカイブ。 2017年2月28日閲覧
  22. ^ Poettering, Lennart. 「PulseAudio は、新規 Fedora インストールでデフォルトで有効になりました」 . Fedora Development ML . Red Hat . 2017年3月1日閲覧
  23. ^ 「Features: Glitch-free Audio」 . Fedora Project Wiki . 2017年3月1日時点のオリジナルよりアーカイブ。 2017年2月28日閲覧
  24. ^ Poettering, Lennart. 「Alsa Issues」 . PulseAudio - Trac . 2008年10月16日時点のオリジナルよりアーカイブ。 2017年2月28日閲覧
  25. ^ LPC: Linux audio: it's a mess、LWN、2008年9月18日、2009年9月1日時点のオリジナルよりアーカイブ。 2009年7月3日閲覧。
  26. ^ Lennart Poettering (2008年7月18日), PulseAudio FUD , 0pointer.de, 2009年9月2日時点のオリジナルよりアーカイブ, 2009年12月30日閲覧。
  27. ^ How-to: PulseAudio Fixes & System-Wide Equalizer Support、Ubuntu Forums、2008年5月10日、2010年3月1日時点のオリジナルよりアーカイブ2009年10月18日閲覧。
  28. ^ I'll Break Your Audio、Lennart Poettering Blog、2009年10月19日、2009年10月22日時点のオリジナルよりアーカイブ。 2009年12月26日閲覧。
  29. ^ Flash、YouTubeなどを実行しても音が出ない(pulseaudioの解決策)、Ubuntuフォーラム、2012年2月29日時点のオリジナルよりアーカイブ、 2009年10月18日閲覧。
  30. ^ PulseAudio、Ubuntu Wiki、2011年2月25日時点のオリジナルよりアーカイブ、 2009年10月18日閲覧。
  31. ^ 「PulseAudioの過剰楽観的なバッファリングによりアンダーラン(可聴なスタッタリング、ポップノイズ)が発生する」 Launchpad 2008年2月10日。 2013年11月9日閲覧
  32. ^ 「46466 - PulseAudioでは、ユーザーが変更不可能な最大音量を設定できる方法が必要」 Bugzilla 2021年10月6日閲覧
  33. ^ 「[解決済み] pulseaudioを無効にする - 3ページ目」。Linuxの質問2021年10月6日時点のオリジナルよりアーカイブ。 2021年10月6日閲覧
  34. ^ 「Bug #410948 '音量が大きすぎます' : バグ : pulseaudio パッケージ」Ubuntu . 2009年8月9日. 2021年10月6日時点のオリジナルよりアーカイブ。 2021年10月6日閲覧
  35. ^ 「#837637 - オーディオ設定が頻繁に100%の音量にリセットされる」 Debianバグ報告ログ2021年10月6日時点のオリジナルよりアーカイブ。 2021年10月6日閲覧
  36. ^ 「ロード可能なモジュール」を参照。Modules、Freedesktop.org、 https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index9h2、2019年8月28日取得
  37. ^ “PipeWire” . pipewire.org . 2020年12月25日時点のオリジナルよりアーカイブ2019年6月28日閲覧。
  38. ^ “On the Road to Fedora Workstation 31 — Christian FK Schaller” . 2019年6月24日. 2023年9月30日時点のオリジナルよりアーカイブ。 2019年6月28日閲覧
  39. ^ LinuxサウンドシステムとAPI入門、Linux.com、2004年8月9日、2014年10月19日時点のオリジナルよりアーカイブ2013年3月23日閲覧、OSSはLinuxだけでなく、BSD OSやその他のUnixでも利用可能です。このシステムはあまり強力ではなく、2.5カーネルでALSAに正式に置き換えられたため、これが唯一の利点かもしれません…
  40. ^ 4Front Technologiesがオープンサウンドシステムのソースコードを公開、Linux PR、2007年6月14日、2007年10月8日時点のオリジナルよりアーカイブ、 2012年1月8日閲覧。