Open Sound System (日本語)
Open Sound System (OSS) は Unix ライクな POSIX 互換のシステム向けのもうひとつのサウンドアーキテクチャです。OSS バージョン 3 は Linux のデフォルトのサウンドシステムでしたが、OSS バージョン 4 がプロプライエタリソフトウェアになったことで2002年に Advanced Linux Sound Architecture (ALSA) に取って代わられました。2007年には 4Front Technologies がソースコードを公開し GPL ライセンスでリリースしたことで OSSv4 はまたフリーソフトウェアになっています。
Contents
ALSA との比較
Advanced Linux Sound Architecture を使用するのと比較したメリットとデメリット。
OSS の利点 (ユーザー)
- アプリケーションごとにボリュームをコントロールできます。
- 古いカードによってはサポートが優れている場合があります。
OSS の利点 (開発者)
- ユーザースペースでドライバーをサポートしています。
- クロスプラットフォーム (OSS は BSD や Solaris でも動作します)。
- クリーンで使いやすい API。
OSS に対する ALSA の優位点
- USB オーディオデバイスのサポートが優れています。
- Bluetooth オーディオデバイスをサポートしています。
- Si3055 などのダイアルアップ式のソフトウェアモデム、AC'97 や HD Audio をサポートしています。
- MIDI デバイスのサポートが優れています。
- サスペンドをサポートしています。
- ジャック検出のサポートが優れています。
- 現代的なハードドライブをより良くサポートしています。
インストール
AUR から利用できる oss をインストールしてください。他にも AUR には OSS の実験バージョンである oss-git パッケージもあります。
OSS をインストールすると、OSS インストールスクリプトが走り (一時期に ALSA モジュールが無効になります) OSS カーネルモジュールがインストールされます。ブートスクリプトではデフォルトで ALSA が有効になっているので、OSS と衝突しないように無効にする必要があります。モジュールをブラックリストに入れることが無効にすることが可能です:
/etc/modprobe.d/alsa_blacklist.conf
install soundcore /bin/false
モジュールをブラックリストに入れた後、oss デーモンを有効にすればブート時に起動するように出来ます。
ユーザーが audio グループに入ってない場合は、グループに追加して変更を適用するために再ログインしてください:
# gpasswd -a $USER audio
OSS があなたのカードを起動時に検出しない場合は、以下を実行してください:
# ossdetect -v # soundoff && soundon
テストする
次を実行して OSS をテストしてください:
$ osstest
このテストでは音楽が聞こえるはずです。音がしない場合、ボリュームを調節したり #トラブルシューティング セクションを参照してください。
複数のアプリケーションから同時に音声が聞こえるようにするには、OSS のソフトウェアミキサーである vmix が必要です。
次を実行して vmix が有効になっているか確認してください:
$ ossmix -a | grep -i vmix
vmix0-enable ON|OFF (currently ON) のような行が表示されるはずです。もし vmix で始まる行が全く表示されない場合は、おそらくサウンドデバイスに vmix が結び付けられていません。vmix を使うには、次のコマンドを実行してください:
$ vmixctl attach device
device はあなたのサウンドデバイスに置き換えてください (例: /dev/oss/oss_envy240/pcm0)。
これからもこのコマンドを手動で実行する必要をなくすために、ここ で提案されているように、/usr/lib/oss/soundon.user にコマンドを追加することができます。
"Device or resource busy" エラーが起こる場合、vmix_no_autoattach=1 を /usr/lib/oss/conf/osscore.conf に追加して再起動してください。
次のコマンドを使って検出されているデバイスを確認してください:
$ ossinfo
Device Objects や Audio Devices の下にあなたの使っているデバイスが表示されるはずです。使用したいデバイスがセクションの一番上にない場合、/usr/lib/oss/etc/installed_drivers を編集してデバイスのドライバーを一番上に記述してください。おそらく次を実行する必要があります:
$ soundoff && soundon
これで動作しない場合、あなたの使っているデバイスを除く全てのドライバーをコメントアウトしてください。
ボリュームコントロールミキサー
様々なデバイスのボリュームをコントロールするには、ミキサーのレベルを設定する必要があります。2つのミキサーが存在します:
- ossmix: コマンドラインのミキサー、BSD のオーディオミキサー
mixerctlに似ています。 - ossxmix: GTK+ ベースのグラフィカルミキサー。
基本的な ossxmix のコントロールは以下のようになります:
/ High Definition Audio ALC262 \ --------------------------------> 1 /________________________________\________________________________ | \ | [x] vmix0-enable [vmix0-rate: 48.000kHz] vmix0-channels |--> 2 | [ Stereo [v] ] | | | | __codec1______________________________________________________ | | | _jack______________________________________________________ ||--> 3 | | | _int-speaker_________________ _green_________________ ||| | | | | | | | ||| | | | | _mode_____ | | | | _mode_____ | | | ||| | | | | [ mix [v] ] o o [x] [ ]mute | | [ mix [v] ] o o [x] | ||| | | | | | | | | | | | ||| | | | |_____________________________| |_______________________| ||| | | |___________________________________________________________||| | |______________________________________________________________|| | ___vmix0______________________________________________________ | | | __mocp___ O O _firefox_ O O __pcm7___ O O | |--> 4 | | | | O O | | x x | | O O | | | | | | | | x O | | | | x x | | | | O O | | | | | o o [x] | x x | o o [x] | x x | o o [x] | O O | | | | | | | | x x | | | | x x | | | | O O | | | | |_________| x x |_________| x x |_________| O O | | | |_____________________________________________________________| | |_________________________________________________________________|
- サウンドカードごとに一つのタブ
- 上のところに
vmix(virtual mixer) の特別設定。サンプリングレートやミキサーの優先度など。 - サウンドカードのジャック設定 (入力と出力)。全てのミキサーコントロールはここに表示されます。
- アプリケーションの
vmixミキサーコントロールとサウンドメーター。アプリケーションがサウンドを再生していないときはpcm08, pcm09...のように表示され、アプリケーションが再生しているときはアプリケーションの名前が表示されます。
色の定義
high definition (HD) audio の場合、ossxmix は既定のジャックの色を使ってジャックの設定を色付けします:
| 色 | タイプ | 接続子 |
|---|---|---|
| green | フロントチャンネル (ステレオ出力) | 3.5mm TRS |
| black | リアチャンネル (ステレオ出力) | 3.5mm TRS |
| grey | サイドチャンネル (ステレオ出力) | 3.5mm TRS |
| gold | センターとサブウーファー (デュアル出力) | 3.5mm TRS |
| blue | ラインレベル (ステレオ入力) | 3.5mm TRS |
| pink | マイクロフォン (モノ入力) | 3.5mm TS |
ミキサーのレベルを保存する
ミキサーのレベルはコンピュータのシャットダウン時に保存されます。いますぐミキサーのレベルを保存したい場合、root で次を実行してください:
# savemixer
-f スイッチを使うことで savemixer によってミキサーレベルをファイルに保存することができ、-L スイッチで読み込むことができます。
他のミキサー
OSS をサポートしている他のミキサー:
- Gnome Volume Control — GNOME 向け。
- Kmix — KDE 向け。
- VolWheel — インストール後、必要に応じて自動起動するよう設定してください。また、OSS サポートを有効にするために、システムトレイのアイコンを右クリックし、Preferences を選択して以下のように変更してください:
- Driver:
OSS。 - Default Channel:
vmix0-outvol(使用するチャンネルはossmixでわかります)。 - Default Mixer:
ossxmix。 - MiniMixer タブでは、
vmix0-outvolなどを任意で追加してください。
- Driver:
OSS を使うようにアプリケーションを設定する
GStreamer を使用するアプリケーション
オーディオに Gstreamer を利用しているアプリケーションで問題が発生する場合、pulseaudio を削除して、oss4sink と oss4src が必要としている gstreamer0.10-good-plugins パッケージをインストールしてみてください。
それから gstreamer-properties (gstreamer-properties パッケージに含まれています) を使って GStreamer 設定のサウンド出力をデフォルトの ALSA から OSS に変更してください。gstreamer-properties を起動して、以下のフィールドを修正する必要があります:
- Default Output セクション: OSS がプラグインとして選択できない場合、Plugin を
Customに、Pipeline をoss4sinkに変更してください。 - Default Input セクション: OSS が選択できない場合、Plugin を
Customに、Pipeline をoss4srcに変更してください。
アプリケーションによっては、(gstreamer-properties によって変更が加えられる) audiosink ではなく musicaudiosink を使っているために、gstreamer-properties による設定を読み込みません。
この問題の回避方法として、gstreamer-properties で audiosink の値を設定してから gconf-editor を使って /system/gstreamer/0.10/default/audiosink の値を musicaudiosink (同じ場所にあります) にコピーできます。
Phonon で GStreamer バックエンドを使っている場合は環境変数を設定する必要があります:
export PHONON_GST_AUDIOSINK=oss4sink
上の行を ~/.bashrc に追記することでログイン時にロードされるようになります。
OpenAL を使用するアプリケーション
OpenAL はデフォルトでは ALSA を使います。これを変更するために、/etc/openal/alsound.conf で OSS の利用を定義してください:
/etc/openal/alsound.conf
drivers=oss
Audacity
Audacity を起動しても、デバイスが開けないとエラーが出たり何も再生できない場合、vmix によって Audacity がサウンドデバイスへの独占的なアクセスをすることが出来なくなっている可能性があります。これを修正するには、Audacity を起動する前に、次を実行してください:
$ ossmix vmix0-enable OFF
Audacity を終了した後は次のコマンドで vmix を戻せます:
$ ossmix vmix0-enable ON
Gajim
デフォルトでは Gajim は aplay -q を使ってサウンドを再生します。OSS を使うために Edit > Preferences > Advanced から ossplay -qq に変更することができます。Advanced Configuration Editor を開いて soundplayer 変数を変更してください。
MOC
OSS v4.1 で MOC を使うには (~/.moc にある) 設定ファイルの OSSMixerDevice を /dev/ossmix に変更する必要があります。インターフェイスの問題については mocp で w を押して OSSMixerChannel を (ソフトウェアミキサー) に変更してみてください。
MPD
MPD の設定は /etc/mpd.conf もしくは ~/.mpdconf で行います。これらのファイルを両方ともチェックして、以下のようなところを探して下さい:
/etc/mpd.conf
...
audio_output {
type "alsa"
name "Some Device Name"
}
...
上記のように ALSA の設定がアンコメントされている (行頭が # になってない) 場合、全てコメントアウトするか削除して、以下を追記してください:
/etc/mpd.conf
...
audio_output {
type "oss"
name "My OSS Device"
}
...
ほとんどのユーザーはこれ以上の設定は必要ありません。ただし、(MPD を再起動した後に正しく動作しないなどの) 問題が発生する場合や、(自動設定ではなく、ユーザーが設定した) 特定の設定ファイルを使いたい場合は、以下の手順で OSS のオーディオ出力を細かく設定できます
- まず、次を実行してください:
$ ossinfo | grep /dev/dsp
-
/dev/dsp -> /dev/oss/<SOME_CARD_IDENTIFIER>/pcm0のような文字列が書かれた行を探して下さい。<SOME_CARD_IDENTIFIER>がどうなっているかメモを取って、MPD 設定ファイルの OSSaudio_outputに以下の行を追加してください:
/etc/mpd.conf
...
audio_output {
type "oss"
name "My OSS Device"
device "/dev/oss/<SOME_CARD_IDENTIFIER>/pcm0"
mixer_device "/dev/oss/<SOME_CARD_IDENTIFIER>/mix0"
}
...
参照: Music Player Daemon (日本語)#グローバル設定。
MPlayer
GUI (SMplayer, GNOME MPlayer など) を使っている場合、設定ダイアログからデフォルト出力として OSS を選択できます。コマンドラインから MPlayer を使っている場合、音声出力を指定してください:
$ mplayer -ao oss /some/file/to/play.mkv
何度も入力するのが面倒ならば設定ファイル (~/.mplayer/config) に ao=oss を追加してください。
参照: MPlayer (日本語)#設定。
Skype
最近のバージョン (バージョン 4.3 移行) では OSS サポートが失くなったため、skype パッケージには ALSA のサポートしか含まれていません。コミュニティの努力によって、(PulseAudio を使わずに) OSS で Skype を使えるようにする方法があります:
AUR から skype_oss_wrapper-git をインストールします。これによって偽の libpulse.so ライブラリを利用して Skype のために PulseAudio の挙動を偽装します。インストールした後は次のコマンドを使って Skype を起動する必要があります: skype_oss。もしくはパッケージによって作成されるアプリケーションショートカットを起動してください: "Skype (OSSv4)"。ラッパーとしては十分に機能しますが、48KHz の入力と出力でしか動作しません。何かおかしな挙動が発生したり欠けている機能を見つけたら、バグレポートとパッチを送ると良いでしょう。
もしくは module-oss と pulseaudio を使うことも可能です:
/etc/pulse/default.pa を編集して load-module module-udev-detect で始まる行をコメントアウトし、load-module module-oss device="/dev/dsp" sink_name=output source_name=input mmap==0 を追記してください。
VLC media player
オーディオ設定から OSS をデフォルト出力に選択することが出来ます。
Wine
Wine で OSS を設定するには、次を実行して:
$ winecfg
Audio タブから OSS Driver を選択してください。
参照: Wine (日本語)#サウンド。
他のアプリケーション
- ここに記載されていないアプリケーションで音が鳴らない場合は、Configuring Applications for OSSv4 のページを見て下さい。
-
pacman -Ss -- -ossや AUR で OSS 対応のパッケージを検索できます。
参照: ossapps。
Tips and tricks
OSS でマルチメディアキーを使う
AUR にある ossvol スクリプトを使うことでミュート・アンミュートやボリュームの上げ下げを簡単にできます。スクリプトに関する詳細は OSS wiki の この記事 を見て下さい。
インストールしたら、ミュートを切り替えるには次を入力します:
$ ossvol -t
また、利用できるコマンドを表示するには:
$ ossvol -h
マルチメディアキーで ossvol を使いたい場合、Extra keyboard keys を見てキーを正しく設定してください。キーを設定したら、Xbindkeys などを使ってキーと ossvol スクリプトを結びつけることができます。以下を ~/.xbindkeysrc ファイルに追加してください:
~/.xbindkeysrc
# Toggle mute
"ossvol -t"
m:0x0 + c:121
XF86AudioMute
# Lower volume
"ossvol -d 2"
m:0x0 + c:122
XF86AudioLowerVolume
# Raise volume
"ossvol -i 2"
m:0x0 + c:123
XF86AudioRaiseVolume
使いたいショートカットに自由に変更することができます。
サンプルレートを変更する
まず、サンプルレート出力の変更は明瞭なものではありません。サンプルレートは root でしか変更ができず、変更する時はプログラムによって vmix が使われていない状態である必要があります。先に進む前に、受信機やアンプを通していて、コンピュータのスピーカーではなく高級スピーカーを使っているか確認してください。コンピュータのスピーカーしか使っていない場合、違いがほとんど生まれないので、サンプルレートの変更をする必要はありません。
デフォルトのサンプルレートは 48000hz です。これを変更する必要がある場合は複数考えられます。全てはあなたの使用状況によります。一番良く使うメディアに合わせてサンプルレートを設定すると良いでしょう。ハードウェアに合わせてメディアのサンプリングレートを変更する必要がある場合、保証はできませんが基本的に音質が落ちます。ダウンサンプリングでこれは顕著です (96000hz → 48000hz)。この問題についてよく知りたいのならば、Stereophile に記事があり、Apple の CoreAudio API メーリングリストで 議論 がされています。
サンプルレートの例:
- 44100hz
- 標準のレッドブック音楽 CD のサンプルレート。
- 88000hz
- SACD 高音質音声ディスク・ダウンロード音声のサンプルレート。マザーボードがこのサンプルレートをサポートしているのは稀です。
- 96000hz
- ほとんどの高音質ダウンロード音声のサンプルレート。あなたの使っているマザーボードが AC'97 マザーボードの場合、おそらくこれが一番高いビットレートになります。
- 192000hz
- BluRay や少数の高音質ダウンロード音声のサンプルレート。外付けの音声受信機のサポートはハイエンドオーディオに限られます。マザーボードによってはこのサンプルレートをサポートしていません。サポートしているマザーボードチップセットには HD Audio が含まれます。
現在設定されているサンプルレートを確認するには、次を実行してください:
ossmix | grep rate
普通は vmix0-rate <decimal value> (currently 48000) (Read-only) と表示されます。
vmix0-rate (または vmix1-rate など) が出力されない場合、おそらく vmix が無効になっています。この場合、OSS はデバイスを使用するプログラムによって要求されたレートを使用します。そのためこのセクションは適用されません。例外として Envy24 (と Envy24HT) カードは特別な設定 envy24.rate を使って似た機能を実現します (oss_envy24 の man ページを見て下さい)。
サンプルレートを変更するには:
- 最初に、あなたの使っているカードが新しいレートを使えるか確認してください。
ossinfo -v2を実行して使用したいレートが Native sample rates 出力の中にあるか見て下さい。 - root で、
/usr/lib/oss/scripts/killprocs.shを実行してください。サウンドチャンネルを開いているプログラムが終了されるので注意してください。 -
vmixを使用するプログラムが全て終了したら、root で次を実行してください:vmixctl rate /dev/dsp 96000。rate はあなたの使用したいレートに置き換えてください (必要ならばossmix envy24.rate 96000も)。 -
ossmix | grep rateを実行して変更が問題なく行われたかvmix0-rate <decimal value> (currently 96000) (Read-only)をチェックしてください。 - 変更を永続的にするには以下を
soundon.userファイルに追加してください:
/usr/lib/oss/soundon.user
#!/bin/sh vmixctl rate /dev/dsp 96000 # ossmix envy24.rate 96000 # uncomment if you have an Envy24(HT) card exit 0
そして実行可能属性をつけてください:
# chmod +x /usr/lib/oss/soundon.user
シンプルなシステムトレイアプレット
軽量な OSS システムトレイアプレットが必要な場合は これ を見て下さい。
インストールするには:
- スクリプト を好きな名前でダウンロードしてください (例:
ossvolctl) - 実行可能にしてください:
$ chmod +x ossvolctl
-
/usr/binにコピーしてください:
# cp ossvolctl /usr/bin/ossvolctl
または:
# install -Dm755 ossvolctl /usr/bin/ossvolctl
起動時にシステムトレイの中に ossxmix を実行する
KDE
ローカルアプリケーションランチャーディレクトリ (~/.local/share/applications/) の中に ossxmix.desktop という名前のアプリケーションランチャーファイルを作成してください:
~/.local/share/applications/ossxmix.desktop
[Desktop Entry] Name=Open Sound System Mixer GenericName=Audio Mixer Exec=ossxmix -b Icon=audio-card Categories=Application;GTK;AudioVideo;Player; Terminal=false Type=Application Encoding=UTF-8
自動実行するには、System Settings > System Administration > Startup and Shutdown > Autostart のリストに加えて下さい。
Gnome
root でファイル /usr/local/bin/ossxmix_bg を作成してください:
/usr/local/bin/ossxmix_bg
#!/bin/sh exec /usr/bin/ossxmix -b
それから System > Preferences > Start Up Applications を開き:
- Add をクリックして、Name フィールドに
OSSMIX、Command フィールドに/usr/local/bin/ossxmix_bgと入力して Add Button をクリックしてください。 - 再ログインすれば変更が適用されます。
プログラムからの音声出力を録音する
サスペンドとハイバネーション
OSS はサスペンドに自動的な対応をしないため、サスペンドやハイバネートをする前に手動で停止して、その後再起動する必要があります。
OSS には OSS を有効化・無効化する soundon と soundoff がありますが、これらはサウンドを使うプロセスが全て終了してからでしか OSS を停止することができません。
以下の簡単なスクリプトでサスペンドをする前に OSS を自動的にアンロードしてその後リロードすることができます。
/usr/lib/systemd/system-sleep/50osssound.sh
#!/bin/sh
suspend_osssound()
{
/usr/lib/oss/scripts/killprocs.sh
/usr/bin/soundoff
}
resume_osssound()
{
/usr/bin/soundon
}
case $1 in
pre)
suspend_osssound
;;
post)
resume_osssound
;;
*) exit $NA
;;
esac
スクリプトの中身を (root で) /usr/lib/systemd/system-sleep/50osssound.sh に保存して実行可能属性を付けて下さい:
# chmod a+x /usr/lib/systemd/system-sleep/50osssound.sh
他にもサスペンドに s2ram を使う方法もあります。サスペンドスクリプトを /usr/bin/suspend に作成して実行可能属性を付けて下さい。
#!/bin/sh ## Checking if you are a root or not if ! [ -w / ]; then echo >&2 "This script must be run as root" exit 1 fi s2ram -f sleep 2 systemctl restart oss.service 2>/tmp/oss.txt || echo "OSS restart failed, check /tmp/oss.txt for information"
このスクリプトなら、全てのアプリがちゃんと動くはずです。
デフォルトの音声出力を変更する
osstest を実行した時に、一番目のチャンネルの最初のテストは通るのに、ステレオや右チャンネルで、音声が歪んだりシュッと音が鳴る場合、間違った出力に設定がされています。
*** Scanning sound adapter #-1 *** /dev/oss/oss_hdaudio0/pcm0 (audio engine 0): HD Audio play front - Performing audio playback test... <left> OK <right> OK <stereo> OK <measured srate 47991.00 Hz (-0.02%)>
左の音声が良くて、右やステレオが歪んだ音になっています。
正しい出力が得られるまでテストを続けて下さい:
/dev/oss/oss_hdaudio0/spdout0 (audio engine 5): HD Audio play spdif-out - Performing audio playback test... <left> OK <right> OK <stereo> OK <measured srate 47991.00 Hz (-0.02%)>
左・右・ステレオ全てでテストが通ったら、次のステップに進んで下さい。
デフォルトの出力を変更するコマンドは この OSS wiki の記事 を見て下さい。動作するやつに変更してください、例えば:
# ln -sf /dev/oss/oss_hdaudio0/spdout0 /dev/dsp_multich
サラウンド音声 (4.0-7.1) の場合 dsp_multich を選んで下さい。2チャンネルしかない場合は dsp で問題ありません。利用可能な全てのデバイスについては こちら を見て下さい。
Creative Sound Blaster X-Fi Surround 5.1 SB1090 USB
これは 4front-tech フォーラム からの情報です。
ossusb_audio.c の write_control_value(...) 関数で true が返されないために外付けカードが動作しないというのは驚きです。
これを修正するには、今のところ OSS のリコンパイルが必要になります。
- Arch のリポジトリから最新の OSS を取得:
https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/oss
- 展開する
- 展開したフォルダに
cd -
makepkg --nobuildを実行 -
src/kernel/drv/oss_usb/にcdしてossusb_audio.cを編集:return 1;を追加- 以下のようにします:
ossusb_audio.c
static int
write_control_value (ossusb_devc * devc, udi_endpoint_handle_t * endpoint,
int ctl, int l, unsigned int v)
{
return 1;
...
-
src/kernel/setupにcdしてsrcconf_linux.incを編集、-Werrorを探して削除する。そうしないと OSS がコンパイルされません。 -
makepkg --noextractを実行
そして pacman -U でパッケージをインストールします。OSS を既にインストールしている場合は削除しておいてください。
ALSA のエミュレーション
alsa-lib に音声出力システムとして OSS を使うように指示することが可能です。これは一種の ALSA エミュレーションとして働きます。
ただし、この方法は音声出力に遅延を増やすことになり、またエミュレーションは完全でないので全てのアプリケーションで動作するというわけではありません。例えば、ALSA を使ってデバイスを検出するようなプログラムではエミュレーションは動きません。
多くのアプリケーションは OSS を直接サポートしているので、この方法は最終手段としてのみ使って下さい。
将来的には、libsalsa や cuckoo など ALSA を完全にエミュレートする方法が使えるようになるかもしれません。
手順
- 公式リポジトリにある alsa-plugins パッケージをインストールしてください。
-
/etc/asound.confを以下のように編集してください。
pcm.oss {
type oss
device /dev/dsp
}
pcm.!default {
type oss
device /dev/dsp
}
ctl.oss {
type oss
device /dev/mixer
}
ctl.!default {
type oss
device /dev/mixer
}
特定のドライバーにあわせた設定
何かが動作しない場合、OSS 設定の中にドライバー固有のものがあったり、あなたのドライバーにあってなかったりする可能性があります。
これを解決するには:
- どのドライバーが使われているのか確認します
$ lspci -vnn | grep -i -A 15 audio
00:1e.2 Multimedia audio controller [0401]: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller [8086:266e] (rev 03) Subsystem: Hewlett-Packard Company NX6110/NC6120 [103c:099c] Flags: bus master, medium devsel, latency 0, IRQ 21 I/O ports at 2100 [size=256] I/O ports at 2200 [size=64] Memory at d0581000 (32-bit, non-prefetchable) [size=512] Memory at d0582000 (32-bit, non-prefetchable) [size=256] Capabilities: <access denied> Kernel driver in use: *oss_ich* Kernel modules: snd-intel8x0
- デバイスの設定ファイルを探して下さい:
# cd /usr/lib/oss/conf/
- デフォルトの設定を変更してみて下さい。設定は少なく、見ればすぐわかります。
例えば、oss_ich.conf に次の設定をすることで jack-sense がオンになります (ヘッドフォンの接続の認識やスピーカーのミュートに関係しています):
ich_jacksense = 1
jack-sense の他の設定は hdaudio.conf にあり hdaudio_jacksense 変数を変える必要があります。
- 変更を適用するために oss デーモンを再起動します。
トラブルシューティング
HD Audio デバイスのトラブルシューティング
問題の所在
HD Audio サウンドデバイスを使う場合、大抵はサウンドを使えるようにする前にミキサーの設定を調整する必要があります。
HD Audio デバイスはソフトウェアでいつでも調整できる小さな回路 (ウィジェットと呼ばれます) がいくつも入れられるという点でとても強力です。これらのコントロールはミキサーに表示され、これを使うことで、例えば、イヤフォンジャックをサウンドの出力端子ではなくサウンドの入力端子にすることができます。
ただし、弊害も存在します。主として HD Audio の仕様の柔軟性があまりにありすぎるというのと、メーカーが基本的に公式ドライバーが動くのにだけしか注意を払っていないのが原因です。
HD Audio デバイスを使用する際には、乱雑なミキサーコントロールに手を焼き、デフォルトでは全く動作しないため、動作するようになるまで、あらゆるミキサーコントロールの組み合わせを試す羽目になります。
解決方法
ossxmix を開いて中部分のミキサーコントロールを全て変更してみてください、ボリュームコントロールミキサーセクションで説明されているように、サウンドカード固有のコントロールが含まれています。
ossxmix でミキサー設定を変更する間は、後ろでずっと録音・再生するプログラムを起動しておくと良いでしょう (例: 録音には ossrecord - | ossplay - で再生には osstest -lV)。
- 全てのボリュームコントロールのスライダーを上げる。
- それぞれのオプションボックスで、選択するオプションを変更して、全ての組み合わせを試して下さい。
- ノイズが聞こえる場合、ノイズの元がわかるまで、ボリュームコントロールを低くしたりミュートにしてみてください。
-
/usr/lib/oss/conf/oss_hdaudio.confを編集して、hdaudio_noskip=0をアンコメントして 0-7 の値に変更することでossxmixにさらに jack のオプションが表示されます。
Totem で MMS の音にノイズが乗る
Totem で再生中に音が割れたり異常なノイズが聞こえる場合は、FFmpeg など他のバックエンドを使ってみて下さい。MMS ストリームを再生すると GStreamer がポップアップする問題は修正できませんが、良い音質で聞こえるようになります。MPlayer で再生するのは簡単です:
# mplayer mmsh://yourstreamurl
マイクロフォンが出力チャンネルで再生される
デフォルトで、OSS はマイクロフォンからの入力をスピーカーで再生するようになっています。これを無効にするには ossxmix の Misc セクションから input-mix-mute のボックスのチェックを全て外して下さい。