システム設定
グラフィック・ドライバ
Ubuntu ではプロプラエタリ・パッケージとして,NVIDIA ION用のグラフィック・ドライバを提供しているが,もちろんUbuntu Projectのサポート対象外となる.インストールしてみたが,インストール時にエラーメッセージが表示される.NVIDIAのサイトから直接パッケー ジをダウンロードし,インストールしてみたがエラーメッセージが表示される症状は同じである.本機はオーディオ専用PCであることから, プロプラエタリのグラフィック・ドライバの利用はあきらめ,Ubuntu標準のグラフィック・ドライバを利用した.デスクトップ操作で問 題となることはなにもない.
USB DAC
端末エミュレータ・ウィンドウを開き,ファイル「
/proc/asound/modules
」の内容を確認する.私の環境 では以下のような表示となった.
0 snd_hda_intel
1 snd_usb_audio
この例では,DACがCard1として認識されている.サウンドのカード番号を指定できるアプリケーションを利用する場合はこれで問題な いのだが,例えばブラウザでサウンドを再生する場合はカード番号の指定はできない.デフォルトのカード番号,すなわちCard0が利用さ れる.
このため,DACがデフォルトのカード番号,すなわちCard0になるように修正しておく.
システム管理者権限でファイル「
/etc/modprobe.d/alsa-base.conf
」をテキストエディタ(例 えば,端末エミュレータ・ウィンドウ内で利用するvimコマンドあるいはLeafPadなど)で開き,
options snd-usb-audio index=-2
の行で「
-2
」を「
0
」に修正し,保存する.
システム再起動後,DACが最初に認識される.ファイル「「
/proc/asound/modules
」の内容を確認する と,
0 snd_usb_audio
1 snd_hda_intel
と表示され,DACがデフォルトのサウンドとなっている.(「
Ubuntu PCをオーディオ装置として使う
」などを参照させていただきました.)
モジュール名
上記設定ではシステム起動時にDACの認識に失敗することがある.この場合には再起動すると認識されるが,不愉快な症状である. 「
ぐ りむさんの技術メモ
」を参照させていただいたところ,「モジュール名が違っている」との記述があり,確かに 「alsa-base.conf」ファイルでは「
snd-usb-audio
」だが,メモリにロードされているモ ジュール名は「
and_usb_auido
」である.
「-」(ハイフン)か「_」(アンダーライン)かの違いだが,「
名前
」としては違ったものになってしまう. 「alsa-base.conf」ファイルの記述を「snd_usb_audio」に修正した.
システムの起動 回数が少ないの で,これで問題が解決したかの確認はできていないが,現時点では「認識に失敗する」という症状はなくなった.ただし,なぜモ ジュール名「snd-usb-audio」でもCard0として認識されることが多いのかは不明である.
モジュール名の変更後も「
認識に失敗する
」ことがわかった.システムの再起動をすれば認識される.モジュー ル名の修正だけでは問題は解決しない.原因究明をすすめたいが,「まれに」しか発生しないので,2015年2月末段階では何ら解 決の糸口は見つかっていない(lsusbコマンドでUSB接続機器一覧を表示すると,Creative社のDACは表示され る).
ALSA
ALSAとは,
Advanced Linux Sound Architectureの略で,Linux用サウンド・ドライバのことである.ALSAのデフォルトでは,サンプリング周波数48kHz,量子化ビット 数16bitsとなる.例えば,メディアプレイヤー「mplayer」で
サ ンプリング周波数192kHz,量子化ビット数32bitsのハイレゾ音源(ファイル形式はFLAC)を再生すると,以下のよう なメッセージ(一部)が表示される.
Selected audio codec: FLAC (Free Lossless Audio Codec) [libavcodec]
AUDIO: 192000 Hz, 2 ch, s32le, 0.0 kbit/0.00% (ratio: 0->1536000)
AO: [alsa] 48000Hz 2ch s32le (4 bytes per sample)
サンプリング周波数は48kHzにダウングレードされて再生されている.DACはサンプリング周波数96kHz対応なのだか ら,48kHzではなく96kHzで再生してほしい.また,量子化ビット数はDACが対応していない32bitsで再生している ことになっている.再生音自体に問題はないのだが,釈然としない.
ALSAのデフォルトではなく,DACの最大サンプリング周波数で再生させるためには,ALSAの設定が必要である.ファイル「
~/.asoundrc
」 あるいは「
/etc/asound.conf
」に記述する.前者のファイルに設定すると当該ユーザで設定が有効と なり,後者のファイルに設定するとシステム全体で設定が有効となる.ここでは,システム管理者権限なしで設定が可能な前者のファ イルを利用することにした.
ファイル「
~/.asoundrc
」の記述内容を以下に示す.
pcm.!default {
type hw
card 0
format s24le
}
ctl.!default {
type hw
card 0
}
ここで,「
type hw
」はDACに直接出力,「
format s24le
」は量子化ビット数24bitsの指定である(s24leの「
le
」とは,「little endian」の略で下位バイトから順に並べる方式を示す).
前例と同様に,メディアプレイヤー 「mplayer」で
サンプリング周波数192kHz,量子化ビット数 32bitsのハイレゾ音源(ファイル形式はFLAC)を再生すると,以下のようなメッセージ(一部)が表示される.
Selected audio codec: FLAC (Free Lossless Audio Codec) [libavcodec]
AUDIO: 192000 Hz, 2 ch, s32le, 0.0 kbit/0.00% (ratio: 0->1536000)
[AO_ALSA] Format s32le is not supported by hardware, trying default.
AO: [alsa] 96000Hz 2ch s16le (2 bytes per sample)
量子化ビット数32bitsはDACがサポートしていないというメッセージが表示され,24bitsではなく16bitsにダウング レードされている.サンプリング周波数はDACの最大値96kHzとなっている.
なぜ設定した量子化ビット数にならないかは解明できていない.メディアプレイヤー「mplayer」にはコマンド行引数で量子化ビッ ト数を指定できるので,こちらを利用する(出力メッセージは一部のみ表示).
$ mplayer --format=s24le XXXXX.flac
MPlayer2 2.0-701-gd4c5b7f-2ubuntu2 (C) 2000-2012 MPlayer Team
Selected audio codec: FLAC (Free Lossless Audio Codec) [libavcodec]
AUDIO: 192000 Hz, 2 ch, s32le, 0.0 kbit/0.00% (ratio: 0->1536000)
AO: [alsa] 96000Hz 2ch s24le (3 bytes per sample)
これで,DACの最大サンプリング周波数96kHz,量子化ビット数24bitsで再生されている.