Ubuntu Weekly Recipe

第144回 UbuntuでOpen Sound Systemを使う

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

LinuxのサウンドサブシステムはALSAが有名ですが,ひと昔前まではOpen Sound Systemも使われていました。Ubuntu日本語フォーラムでもいくつか投稿があったため,今回は,UbuntuでOpen Sound Systemを使う方法を解説していきます。

Open Sound Systemとは

Open Sound SystemはUNIXベースのプラットフォームで使うことができるサウンドサブシステムで,現在はフィンランドの4 Front Technologiesが開発をしています。Open Sound Systemは一時期,ライセンスを制限したプロプライエタリなコードとしてリリースされていたため注1)⁠これを嫌ったLinuxコミュニティはALSAの開発を進めました。そのため、現在のLinuxではALSAが主流となっています。いずれもハードウェアを直接制御するドライバ(カーネルモジュール)を含むため,⁠2種類の異なるドライバが存在する」と考えると良いでしょう。

Open Sound Systemの最新はバージョン4です。4 Front Technologies社のウェブサイトで,2009年10月25日付けの対応デバイスの一覧表を確認できます。ALSAも対応しているサウンドデバイスがほとんどですが,プロプライエタリ時代の名残りか,Open Sound Systemでしか使うことのできないデバイスもあります。また注意点として,Open Sound Systemのバージョン4はMIDI機能注2をまだ実装していないため,MIDI機能を使いたい場合はバージョン3を使う必要があります。

なお,Open Sound Systemの略称はOpen Source Softwareと同じ「OSS」なので,本稿では混同を防ぐために,少々長いですがOpen Sound Systemと記述していきます。

注1
現在はGPLバージョン2でリリースされています。
注2
MIDIとは,どの音を,どういうタイミングで,どれぐらいの音量で出すのかという演奏情報とその規格です。この情報をやりとりすることで,遠隔地にある電子楽器を演奏させたり,複数の電子楽器で演奏を同期させたり,楽器のパラメータをコントロールしたりすることができます。

UbuntuとOpen Sound System

Lucidまでのリリースでは,カーネルイメージにOpen Sound Systemのバージョン3が含まれています。デフォルトではALSAが利用されるよう,Open Sound Systemに関連するモジュールはブラックリスト(読み込まないカーネルモジュールのリスト)に列挙されており,あくまで「含まれているだけ」の状態で,一切読み込まれないように設定されています。

ALSAのカーネルモジュールを無効にしてOpen Sound Systemのカーネルモジュールを有効にするには,端末で以下を実行し,デフォルトのサウンドシステムとしてOSSを選択します。

sudo dpkg-reconfigure linux-sound-base

図1 dpkg-reconfigureによるlinux-sound-baseの設定変更画面

図1 dpkg-reconfigureによるlinux-sound-baseの設定変更画面

これにより,カーネルモジュールのブラックリストからOpen Sound Systemが除外されます。その代わりにALSAが登録され注3)⁠オペレーティングシステムのブート時にロードされなくなります。

Lucid以降のリリースでは,パッケージ「oss4-dkms」「oss4-base」でOpen Sound Systemのバージョン4をインストールすることができます。DKMSは,ドライバのソースパッケージから,自動的にドライバのバイナリ(カーネルモジュール)をインストールするための仕組みです。このパッケージをインストールすると,DKMSによってカーネルモジュールが自動で作成されるほか,ALSAやOpen Sound Systemのバージョン3をブラックリストに登録する設定が行われます注4)⁠そのため,dpkg-reconfigureを実行する必要はありません。

図2 Synapticでのoss4関係パッケージの一覧

図2 Synapticでのoss4関係パッケージの一覧

しかしLucidのパッケージ「oss4-dkms」には,既知のバグがあり,そのままではインストールに失敗します。幸いなことにこのバグ報告にはパッチが登録されており,インストール可能なパッケージを作ることができます。

dpkg-reconfigureやパッケージ「oss4-dkms」をインストールするなどして設定を完了したら,システムを再起動します。そうすると,Open Sound Systemが使えるようになります。Open Sound Systemのサンプル音声を出力する場合はコマンド「osstest」を,トラブルシュートにはコマンド「ossinfo」を実行して情報を取得してください。

注3
/etc/modprobe.d/blacklist-alsa.confが作成され,/lib/linux-sound-base/noALSA.modprobe.confに対してリンクが張られます。ALSAをサブシステムに選択した場合は,/etc/modprobe.d/blacklist-oss.confが作成され,/lib/linux-sound-base/noOSS.modprobe.confに対してリンクが張られます。
注4
/etc/modprobe.d/oss4-base.conf,/etc/modprobe.d/oss4-base_noALSA.conf,/etc/modprobe.d/oss4-base_noOSS3.conf,によります。

PulseAudioの出力をOpen Sound System経由にする

Ubuntuのデフォルトの状態では,PulseAudioの音声入出力はALSAのカーネルモジュールを経由し,サウンドカードやUSBオーディオデバイスなどのサウンドデバイスに送られます注5)⁠Open Sound Systemを利用する場合,ALSAの代わりにOpen Sound Systemを利用するようにPulseAudioの状態を変更する必要があります。

PulseAudioは「モジュール」と呼ばれる単位で機能を拡張でき,Open Sound System用のモジュールが準備されています。端末で以下を実行して,モジュールを追加してください注6)⁠

/usr/bin/pactl load-module module-oss

筆者が試した環境(サウンドデバイスにALi Corporation M5451を使用)でこのまま実行すると,サウンドが間延びしたり,おかしなノイズまじりとなってしまって使いものになりませんでした。そこで,PulseAudioのWikiのLoadable Modulesでmodules-ossを参照しながら試行錯誤した結果,以下に落ち着きました。オプション「format」で16ビットビックエンディアンを指定し,オプション「rate」でサンプリング周波数を48,000kHzに指定しています。

/usr/bin/pactl load-module module-oss format=s16be rate=48000

なお,PulseAudioにモジュールをロードすることで,GNOMEのサウンドアプレットにサウンドデバイスが表示されるようになります。

図3 サウンドの設定の入力タブ。今回使ったサウンドデバイス(ALi Corporation M5451)が表示されている

図3 サウンドの設定の入力タブ。今回使ったサウンドデバイス(ALi Corporation M5451)が表示されている

図4 サウンドの設定の出力タブ

図4 サウンドの設定の出力タブ

Open Sound Systemモジュールを無事ロードできたら,⁠ログイン時に自動起動するアプリ」に登録します。メニューのシステム,設定,自動起動するアプリと進み,⁠自動起動するアプリの設定」ウィンドウ (gnome-session-properties) を開いてください。⁠追加」ボタンをクリックして自動起動するプログラムの追加をします。テキストボックス「コマンド」に先のコマンドを入力して,項目に追加します。

図5 自動起動するアプリの設定ウィンドウ

図5 自動起動するアプリの設定ウィンドウ

ログアウト/ログインしてみて,ログインの音声が鳴ったら設定は完了です。

注5
PulseAudioのモジュール「module-alsa-card」によります。
注6
なお,module-ossをロードするとログに「Warning, deprecated: Please use module-alsa-card instead of module-oss!」が出力されるため,ちょっとした背徳感が得られます。

著者プロフィール

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

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

コメント

コメントの記入