「Open Sound System」の版間の差分
細 (→Skype: typo修正) |
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
171行目: | 171行目: | ||
OSS をサポートしている他のミキサー: |
OSS をサポートしている他のミキサー: |
||
* {{App|Gnome Volume Control|[[GNOME]] 向け。|http://library.gnome.org/users/gnome-volume-control/stable/|{{Grp|gnome}}}} |
* {{App|Gnome Volume Control|[[GNOME]] 向け。|http://library.gnome.org/users/gnome-volume-control/stable/|{{Grp|gnome}}}} |
||
− | * {{App|Kmix|[[KDE]] 向け。|https://www.kde.org/applications/multimedia/kmix/|{{Pkg|kdemultimedia-kmix}}{{Broken package link| |
+ | * {{App|Kmix|[[KDE]] 向け。|https://www.kde.org/applications/multimedia/kmix/|{{Pkg|kdemultimedia-kmix}}{{Broken package link|パッケージが存在しません}}}} |
* {{App|VolWheel|インストール後、必要に応じて[[自動起動#グラフィカル|自動起動]]するよう設定してください。また、OSS サポートを有効にするために、システムトレイのアイコンを右クリックし、''Preferences'' を選択して以下のように変更してください: |
* {{App|VolWheel|インストール後、必要に応じて[[自動起動#グラフィカル|自動起動]]するよう設定してください。また、OSS サポートを有効にするために、システムトレイのアイコンを右クリックし、''Preferences'' を選択して以下のように変更してください: |
||
:* ''Driver'': {{ic|OSS}}。 |
:* ''Driver'': {{ic|OSS}}。 |
2019年9月25日 (水) 23:54時点における版
Open Sound System (OSS) は Unix ライクな POSIX 互換のシステム向けのもうひとつのサウンドアーキテクチャです。OSS バージョン 3 は Linux のデフォルトのサウンドシステムでしたが、OSS バージョン 4 がプロプライエタリソフトウェアになったことで2002年に Advanced Linux Sound Architecture (ALSA) に取って代わられました。2007年には 4Front Technologies がソースコードを公開し GPL ライセンスでリリースしたことで OSSv4 はまたフリーソフトウェアになっています。
目次
ALSA との比較
Advanced Linux Sound Architecture を使用するのと比較したメリットとデメリット。
OSS の利点 (ユーザー)
- アプリケーションごとにボリュームをコントロールできます。
- 古いカードによってはサポートが優れている場合があります。
OSS の利点 (開発者)
- ユーザースペースでドライバーをサポートしています。
- クロスプラットフォーム (OSS は BSD や Solaris でも動作します)。
- クリーンで使いやすい API。
OSS に対する ALSA の優位点
- USB オーディオデバイスのサポートが優れています。
- Bluetooth オーディオデバイスをサポートしています。
- Si3055 などのダイアルアップ式のソフトウェアモデム、AC'97 や HD Audio をサポートしています。
- MIDI デバイスのサポートが優れています。
- サスペンドをサポートしています。
- ジャック検出のサポートが優れています。
- 現代的なハードドライブをより良くサポートしています。
インストール
AUR から利用できる ossAUR をインストールしてください。他にも AUR には OSS の実験バージョンである oss-gitAUR パッケージもあります。
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 向け。
- https://www.kde.org/applications/multimedia/kmix/ || kdemultimedia-kmix[リンク切れ: パッケージが存在しません]
- 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-pluginsAUR パッケージをインストールしてみてください。
それから gstreamer-properties
(gstreamer-propertiesAUR パッケージに含まれています) を使って 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-gitAUR[リンク切れ: アーカイブ: aur-mirror] をインストールします。これによって偽の 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。
ヒントとテクニック
OSS でマルチメディアキーを使う
AUR にある ossvolAUR[リンク切れ: アーカイブ: aur-mirror] スクリプトを使うことでミュート・アンミュートやボリュームの上げ下げを簡単にできます。スクリプトに関する詳細は OSS wiki の この記事 を見て下さい。
インストールしたら、ミュートを切り替えるには次を入力します:
$ ossvol -t
また、利用できるコマンドを表示するには:
$ ossvol -h
マルチメディアキーで ossvol
を使いたい場合、特別なキーボードキーを見てキーを正しく設定してください。キーを設定したら、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
- Blu-ray や少数の高音質ダウンロード音声のサンプルレート。外付けの音声受信機のサポートはハイエンドオーディオに限られます。マザーボードによってはこのサンプルレートをサポートしていません。サポートしているマザーボードチップセットには 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
のボックスのチェックを全て外して下さい。