この前の記事でPK90のWAV再生の問題を書きました。
もともとこの問題はLinuxの現在のALSAドライバーの不具合に起因するようですが、これを解決するためにPK90では新機能を追加すると言うことです。簡単に言うと2つの動作モードを設定画面(初期Webページ)から切り替えることができるようになるようです。実際まだ出来てないようですが、これを仮にモード1、モード2と呼びます。違いはALSAの出力インターフェースで、モード1ではhwインターフェース経由でDACに出力して、モード2ではplughwインターフェースで出力するということのようです。
ちょっとわかりにくいので、もう少し詳しく解説します。
まずALSAというのはLinuxの音声システムのひとつです。LinuxはMacやWindowsのCoreAudioのように単一ではなく、OSSとかALSAのように異なる音声システムを持つことができます。ここでいうのはALSA(Advanced Linux Sound Architecture)についてです。
ALSAではDACなどのデバイス(ALSAでいうcard)に対してデータを送るときにいくつかのインターフェース(転送モードみたいなもの)を指定します。たとえばhwとplughwです。hwを使用した場合はDACにたいしてデータの改変なく(つまりダイレクトに)データを送出します。その代わりDACで扱えるデータのタイプをプログラム(再生ソフト)側で気にする必要があります。plughwを指定したときはALSAシステム側でなんらかの処理の後にデバイスに送出されます。たとえばデバイスが扱えないデータタイプを変換してくれますのでプログラムから見るともっと手軽です。
*ALSA programming basics
これらのインターフェースの使用例に関してはこちらにMPDに関して興味深い記事があります。
http://www.computeraudiophile.com/content/New-mpd-feature-cleaner-signal
ここで書かれているのはVer1.6のMPDから32bit小数点を介さずに直接24bit整数(S24_3LE形式)でドライバーに渡す機能が付いたと言うことが書かれています。ここでいうS24_3LEはWavelengthのProtonとかで使われているDACネイティブ形式と言うやつです。つまり小数点変換を介さずにDACネイティブ形式の整数(インテジャー)でオーディオデータをDACに送ることができます。
うちのブログを見ていてくれる方にはなんとなくピンとくるかもしれませんが、これはMacのプレーヤーソフトで言うところの「インテジャーモード」に似ていますね。Linuxにも似たような概念があってMPDではそれを使用できるというわけです。そこでこれを仮にわかりやすく「ALSAのインテジャーモード」と呼びます。
(この辺はBeyond Bit-Perfectをご覧ください)
この「ALSAのインテジャーモード」を使用するさいにはダイレクトに送るわけですから上に書いたようにhwインターフェースを使用する必要があります。問題はWAVを再生したときにここでエラーがおこると言うことです。
解決策としては上のCAスレッドにあるようにplughwを介してデータをいったん整数から小数点形式に変換するとエラーを回避することができます。つまりplughwインターフェースを介することによってWAVも問題なく再生できますが、先に書いたhwでの「ALSAインテジャーモード」のダイレクトアクセスのメリットは消失してしまいます。
どっちかを選べと言われると困るところもあるのでAuralitiでは先に書いた設定画面のWeb上から切り替え可能にするということです。
つまり機能的に書くと次のようになります。
モード1(hw) : FLACしか再生できないが、「ALSAインテジャーモード」で出力可能
モード2(plughw) : WAVもAIFFもFLACも再生できるが、余分な小数点変換が入る
PK90ではモジュールの差し替えかまたはネットでの書き換えでアップデートすることができます。(ネットでの書き換えはポートを開ける必要があります)
この辺今作業中ということでまたなにかわかったらレポートします。
Music TO GO!
2011年09月02日
この記事へのトラックバック