voyageMPD で aplayex
HOME > 気まぐれコンテンツ > voyageMPDでaplayex
voyageMPD は、PCなどをネットワークプレーヤーにするLinuxディストリビューションです。
aplayex は、ナカタ様が公開されている aplay(alsa付属のCUIベース再生ソフト)の機能拡張版です。
いまさら説明するまでもないほどのvoyageMPDです。スキルのある方は熱心に改良に取り組んでいらっしゃいますが、CD-R限定でしか使わない万年Linux初級者にたいしたことはできません (^^ヾ 使っているBaby-ATマザボをケースに入れたり、大出力も可能なリニア電源も出来たことで、少しづつ、実験的PCオーディオが常設に変わっていくようです。今回もその一環です。
人それぞれですが、筆者の場合、MPDは使いません。Music Player Deamon を通さず、直接再生するのを好みます。また、ネットワークファイルではなくローカルファイルを再生するのを好みます(なら、voyageMPDである必要もないわけですが・・ ^^;;)。Linuxにはサウンドサーバーなるものもあるようですが、スキルもないし、直接再生するほうが良かろうと、ここのところ、再生には簡単に aplay を使っています。
ところが、普通に
aplay ほにゃらら.wav
とやっちゃうと、bit exact が確保できず、確保するためには
aplay ほにゃらら.wav -D hw:0,0
などと、サウンドデバイスを指定(*1)する必要があるそうです。
詳しくは先述のナカタ様の ALSAでbit perfect再生するには にも記載されています(ちょうど今はリンク切れになっているようです)。
ところが、これにも問題があり、ナカタ様によれば、再生するファイルの形式とサウンドデバイスが合わないと再生できない、とのこと。
これでは不便なので、aplay の機能を拡張した aplayex を作成されたとのこと、です。X-windowから操作するフロントエンド Xaplay なども併せて作成されています。
(*1) デバイス指定 hw:0,0 はサウンドデバイスや数により変わります。詳しくは、aplay -l で確認。PCに1つしかないなら、大抵 hw:0,0 ですが・・
aplayexをセットアップ
といっても、展開してできた aplayex を /usr/bin などにコピーするだけです (^^ヾ (*2)
dpkg -x aplayex_1.4.0_i386.deb [展開するディレクトリ]
cp [展開したディレクトリ]/usr/bin/aplayex /usr/bin/
展開したディレクトリには、他にもファイルがありますが、CUIで使う場合は aplayex 単体だけでいいようです。ナカタ様からいただいたお返事もご覧下さい。
(*2)
voyageはdebian系ですし、debパッケージのインストールなので、普通に [ dpkg -i aplayex_1.4.0_i386.deb ] とやりたいところです。
でも、依存関係のエラーが出ました。
voyageMPD 0.9 rc1 で試したところ、
バージョン1.2.0の場合、続けて [apt-get -f install] とやれば、インストールできました。
バージョン1.4.0の場合、続けて [apt-get -f install] とやっても、インストールできず、道半ばなインストールの残骸も削除されてしまいました(笑)。
確認
各種フォーマットのWAVを再生して、様子をみました。
各種フォーマットファイルはefuさん作のWaveGene1.40で作成した、1000kHz -6db のサイン波を用いました。
ただし、動作確認程度で、bit exact の測定まではしていません。
これには、普段voyageMPDを使っている古いPCではなくCore2Duo使いのPCで、voyageMPDは0.9 rc1 、aplayexのバージョンは1.4.0を使いました。
kHz | 44.1 | 48 | 96 | 192 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bit | 16 | 24 | 32 | 16 | 24 | 32 | 16 | 24 | 32 | 16 | 24 | 32 | |
RATOC RAL-24192UT1 (S32_LE) | aplay | o | o | o | o | o | o | o | o | o | o | o | o |
aplay* | x | x | o | x | x | o | x | x | o | x | x | o | |
aplayex* | o | o | o | o | o | o | o | o | o | o | o | o | |
EDIROL UA-1EX (S24_3LE) | aplay | o | o | o | o | o | o | o | o | o | o | o | o |
aplay* | x | o | x | x | o | x | x | o | x | x | ? | x | |
aplayex* | o | o | o | o | o | o | o | o | o | xxx | xxx | xxx | |
RME DIGI96/8 PST (S16_LE、S32_LE) | aplay | o | o | o | o | o | o | o | o | o | o | o | o |
aplay* | o | x | o | o | x | o | o | x | o | ? | x | ? | |
aplayex* | o | o | o | o | o | o | o | o | o | xxx | xxx | xxx | |
M-AUDIO Audiophile 2496 (S32_LE) | aplay | o | o | o | o | o | o | o | o | o | o | o | o |
aplay* | x | x | xx | x | x | xx | x | x | xx | x | x | xx | |
aplayex* | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx | |
玄人志向 CMI8738-6CHLP (U8、S16_LE) | aplay | o | o | o | o | o | o | o | o | o | o | o | o |
aplay* | o | x | x | o | x | x | o | x | x | ? | x | x | |
aplayex* | o | o | o | o | o | o | o | o | o | xxx | xxx | xxx |
aplay がデバイス指定なし、
aplay*とaplayex*がデバイス指定あり、の再生です。
判定とエラーメッセージは以下です。
oと?は音が出ています。xとxxとxxxは音が出ず、エラー表示してお終いです。
o - 音が出ました
? - rate is not accurate(&音程が低くなります)
x - Sample format non available
xx - Channels count non available
xxx - Assertion `err >= 0' failed.Aborted by signal Aborted…
UA-1EXは裏のディップスイッチでサンプリングレートを切り替えて使用しています。ただし、192kHz指定はないので96kHzにしています。
Audiophile 2496 で デバイス指定すると音が出ず、よくわかりません。
感想
- aplayex は、かなり有用だと思います。使い始めたいと思います。
- デバイス指定しないaplayでの再生は、かなりいい加減?です。どんなフォーマットでも、とりあえず再生できるようにしてしまいます(ま、これはこれでおおらかで便利かも知れません 笑)。
- ナカタ様も指摘されていますが、aplayex*で音が出ていても、要注意なのもあります。例えば、CMI8738のハードは16bitまで対応なのに24bitや32bitファイルの再生ができていたりします。他のデバイスでも32bitファイルの再生はどうなんでしょう。
お返事 (2012/12/21)
当のナカタ様からお返事をいただきました。かいつまんで書きますと
- aplayexが動作する条件
配布しているパッケージ内で必要なものは aplayex だけです。他にALSAのライブラリやlibcと呼ばれる外部ライブラリも必要ですが、コマンドの起動に成功するなら大丈夫でしょう。VoyageMPDにはこれらのライブラリがインストールされていると思われます。 - 配布している aplayex では、Pentium75は多分動作しない
Pentium以降のCPUは、命令が一部拡張されています。配布しているaplayexは、最新のUbuntuで普通にコンパイルしたので、686向けの命令が出力されています。昔のPCでは、実行速度が間に合うかどうか自信がなく、確認環境もありません。Linuxに詳しい人に頼んで586向けに再コンパイルすれば動作するかもしれません。 - 同梱の alsaplay のほうがお勧めかも
aplayexは既存のコマンドを無理やり改造したので、プログラムの流れがつぎはぎになっています。aplayexよりも綺麗なソースコードで、なおかつ各種フォーマット(FLAC、ALACその他)も再生できるようにした alsaplay が、パッケージ内に同梱されていますのでお試し下さい。
/usr/bin/alsaplay,/usr/local/TakumiComputer/lib/libsubffmpeg.soの二つをコピーすると動作するはずです。
余談ですが・・
ONKYOのSE-80PCIも試してみましたが、使えませんでした。具体的には、[ aplay -l ] に現れませんでした。
voyageのconfigでは、モジュール組み込み指定になっているようです。
例えば、config-3.0.0-voyage_10.0-1 の2773から2790行は以下のようです。
CONFIG_SND_HDSP=m
CONFIG_SND_HDSPM=m
CONFIG_SND_ICE1712=m
CONFIG_SND_ICE1724=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_KORG1212=m
# CONFIG_SND_LOLA is not set
# CONFIG_SND_LX6464ES is not set
CONFIG_SND_MAESTRO3=m
CONFIG_SND_MAESTRO3_INPUT=y
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
CONFIG_SND_RME9652=m
SE-80PCIのチップはMAESTOR3iと印刷されています。「CONFIG_SND_MAESTRO3=m」と、モジュール指定になってます(iの有無が気にはなりますが・・)。
[ lspci ]では表示します。ハードは認識されているようです。
[ lsmod ]では、snd_maestro3 と表示しますので、モジュールは組み込まれているようです。
スキルが足りない筆者はこのくらいにしておきます。ただ・・、この後に続くONKYOのサウンドカードは、今回不可思議な結果になったAudiophile 2496と同じEnvy24使いですし、voyageはONKYOには鬼門かもしれませんね。