Ubuntu Weekly Recipe

第225回 サウンドシステムの新機能「Jack Detect」

この記事を読むのに必要な時間:およそ 2 分

今回は,Ubuntu 12.04においてサウンドサブシステムに新しく追加されたJack Detect注1という機能,そしてそれを実現するために尽力したCanonical社のエンジニア,David Henningssonの行った仕事を取り上げます。

注1
Jackという名前からJack Audio Connection Kit(JACK)を連想しますが,全くの別物です。

Jack Detectとは?

Skypeなどでインターネット通話をする際,またはRhythmboxなどの音楽プレイヤーで音楽を聞く際,あるいはブラウザ越しにYoutubeやニコニコ動画を視聴する際に,マイクやイヤホンを使ったことがあるでしょう。この時,コンピューター本体に挿入する端子を「プラグ」⁠それを受けるコンピューター本体側の端子を「ジャック」と呼びますが,Windows 7でプラグの挿入,あるいは取り外しを行ってジャックの状態を変えると,アプリケーションによっては自動でその挙動が変わります。これと同じことを実現するのが,Jack Detectです。

Jack Detectを実現するには,対応する実装がサウンドカード,サウンドドライバー,そしてソフトウェア(サウンドサーバー)の3つに必要です。詳しく見ていきましょう。

Jack Detectとサウンドカード

まず,サウンドカードがプラグの挿抜によるジャックの状態変化を検出して信号を発生する必要があります。大抵のマザーボードやラップトップに搭載されているIntel HDA規格のサウンドカードは,標準でこの機能を持っています。

Jack Detectとサウンドドライバー

サウンドカードが発生したジャックの状態変化信号を,サウンドドライバーが適切に処理する必要があります。Ubuntuでは,Linux標準のサウンドドライバーであるALSAがこの役割を果たし,ジャックの状態変化信号に応じたイベントを発生します。

この機能自体は,実はALSAのバージョン1.0.18から実装されています注2)⁠しかし,ユーザーランドから見るとALSAのコア機能の処理が不十分で必要な情報が得られず,これまで使われてきませんでした。Linuxカーネル3.3に取り込まれた最新のALSAはこの部分を整備したため,ついに実現可能となりました。現在,Intel HDA規格のサウンドカード及びAsus社のXonar DSシリーズのサウンドカード向けドライバーがこの機能を持っています。

ここでひとつ問題があります。Ubuntu 12.04に採用されているカーネルはLinuxカーネル3.2であり,このカーネルに含まれるALSAではJack Detectの先進的機能が利用できません。そこでDavid Henningssonがバックポート注3を行い,Ubuntu 12.04のカーネルで利用できるようにしました。

注2
Linuxカーネルのバージョン2.6.28に含まれています。Linuxカーネルの,マウスやキーボードからの入力を管理するInputサブシステムを利用しています。
注3
新しいバージョンに追加された機能やバグの修正を,以前のバージョンにも適用する作業のことです。

Jack DetectとPulseAudio

サウンドドライバーが発生したイベントを受けて動作を変更するよう,PulseAudioの開発が進められました。この開発を上流で行ったのもDavid Henningssonです注4)⁠Jack DetectはPulseAudioのバージョン1.99.1以降がサポートしています。

しかしこのバージョンがリリースされたのは2012年3月であり,Ubuntu 12.04にはパッケージングが間に合いませんでした。そこでDavid Henningssonがバックポートを行い,Ubuntu 12.04のPulseAudioバージョン1.1で利用可能としました。

注4
PulseAudioは2011年6月から2012年3月の6ヶ月間に,そのバージョンを0.9.23から2.0まで上げています。過去のリリースサイクルと比較するとナンバリングの更新の速さが顕著ですが,David Henningssonがその一助となっています。PulseAudio 2.0のリリースノート

新しくなった「サウンドの設定」

これらによってUbuntu 12.04にはJack Detectの機能が追加されました。一般のユーザーは,改良された「サウンドの設定」を操作することでこの機能を体感できます。⁠サウンドの設定」を起動するには,デスクトップ右上のスピーカーアイコンを左クリックして表示されるメニューから選択します。

図1 サウンドの設定

図1 サウンドの設定

Jack Detectを体感するには,マイクのプラグをマザーボードのジャックに差し込んでみるのが簡単です。⁠サウンドの設定」「入力」タブを開いてから,お手持ちのマイクのプラグをマイク用ジャックに挿入します。そうすると大抵の場合,入力のためのサウンドカードが新しく追加されます。

図2 挿入前

図2 挿入前

図3 挿入後。音声入力のためのサウンドカードが追加されている

図3 挿入後。音声入力のためのサウンドカードが追加されている

おそらくこれだけでは,マイク入力を日常的に使わないユーザーにとってはあまり嬉しくないでしょう。そこでここからは,Linuxのサウンドシステムでよく見られる2つのトラブルがJack Detectによってどう解決されるのかを見ていきます。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。

コメント

コメントの記入