MPD on Cubox(2)


前回「音楽サーバとしてcuboxを利用する方法の解説はどこにもありませんので」と書きましたが、ありました^^;;;。ただ、Cuboxについてくるカーネル(2.6.32)をそのまま使い、ディストリビューションをDebian(Squeeze)にして、MPDはapt-getでインストールするという方法(MPDのヴァージョンは0.15.?)なので、残念ながら Voyage MPD に代わるシステムとしては使えません。という次第で続けます。

まず、Ubuntu-Coreシステムの作り方です。

なお、以下の解説は、

を参考にしています。また、前回の記事のリンク先や掲示板でのやりとりなども参考になる筈です。
一番目のリンク先はCuboxのフォーラムのjeinorさんの記事ですが、丁寧に解説されていて、そのままで問題なくインストール出来ます。素晴らしい投稿をされたjeinorさんに感謝です。
ここでは多少アレンジして紹介します。

Ubuntu-Coreシステム

Ubuntu-Coreというのは組み込みシステム用にLinuxの最小機能で構成されたUbuntuの派生ディストリビューションです。Ubuntu-Coreの詳細な内容についてはUbuntuご本家のwikiのページを参照して下さい。

このディストリビューションの特徴は機能を必要最小限に抑えながら、必要なパッケージのインストールが簡単に出来ることです。上記リンク先の一部を引用すると

Be aware that Ubuntu Core is not a super small run-in-memory embedded distribution; it is the smallest implementation of Ubuntu that enables one to install other packages. Some readers may find it useful to learn that the rootfs size of this distribution is more than 20MB. One may use apt-get to install any set of packages. However, Ubuntu Core is designed for a device that requires a full operating system; Ubuntu Core can be configured and customized to fit the requirements of his or her device.

従って、今回のようにmpdに関連する機能だけインストールするというような場合に簡単に対応できます。


事前準備

開発用のUbuntuのシステムが必要です。僕はVmwarePlayerの Ubuntu 12.04 を使いました。
VmwarePlayerを使ったLinuxシステムのインストールについてはこの記事とその続きを参照して下さい。
以下は事前準備として開発側で行う作業です。

microSDカードの準備

jeinorさんの記事では、オリジナルのカードを使ってddで行う方法が解説されていますが(多分ブートパーティションを分離させるため)、気が遠くなるほど時間がかかるので(4GBで2時間)、ここでは fdisk を使う方法をとります。ブートパーティションを分けた方がトラブル時にデータのリカバリできる可能性は高いので、どちらをとるかはご自由に。

パーティションの作成

microSDカードをリーダーにセット。

デバイス名を確認
fdisk -l
パーティションを削除
sudo fdisk /dev/sdb  -> d -> (パーティション番号) -> 全てのパーティションを削除するまでdを繰り返す -> w
パーティションを作成
sudo fdisk /dev/sdb -> n -> p -> 1-> 改行(開始sector) -> 改行(終了sector) -> w
ブータブルに変更
sudo fdisk /dev/sdb -> a -> 1
結果を確認
sudo fdisk -l

・・・
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1   *        2048     7675903     3836928   83  Linux
と表示されればok。

フォーマット

/dev/sdb1の部分は環境依存です。

sudo mkfs.ext3 /dev/sdb1
sudo tune2fs -c 0 /dev/sdb1

/dev/sdb1を/media/rootfsにマウントしておきます。

sudo mkdir /media/rootfs
sudo mount /dev/sdb1 /media/rootfs


必要となるパッケージをインストール

gcc-arm-linux-gnueabihfというのはarm用のクロスコンパイラ。uboot-mkimageというのはarm用のブートイメージを作成するためのツールです。screenは使うならいれて下さい。

sudo apt-get install gcc-arm-linux-gnueabihf uboot-mkimage screen

microSDカードに Ubuntu-Core rootfs を展開

Ubuntu-Core 12.04.1をgetし、microSDカードに展開。

wget http://cdimage.ubuntu.com/ubuntu-core/releases/12.04/release/ubuntu-core-12.04.1-core-armhf.tar.gz
cd /media/rootfs
sudo tar -xzf ~build/ubuntu-core-12.04.1-core-armhf.tar.gz
ls

最後のlsはUbuntu-Coreが展開されていることを確認するためです。

作業用ディレクトリの準備

以下の解説はホームディレクトリ直下に build という作業ディレクトリを作成し、そこに必要なソース、バイナリをダウンロードし、build/uboot というディレクトリでブート用のスクリプトを作成作業をするという方法をとります。違うディレクトリ構成にしたい場合は適宜読み替えて下さい。

cd /home
mkdir build && cd build
mkdir uboot

ブートスクリプトを作成し、microSDカードに設定

armアーキテクチュアのパソコンのブートの方法はintelマシンと大きくことなります。biosがなくて、ubootというブート方法を使っています。ubootについては以前に解説していますので、そちらを参照して下さい。あとCuboxのブートスクリプトについてはこちらのページの解説が分かりやすいです。

ubootディレクトリに移る
cd uboot

ブートスクリプトのソースを編集
emacs boot.in
以下の通り書き込み
echo ======== Setting bootargs ========
setenv bootargs 'console=ttyS0,115200n8 vmalloc=384M root=/dev/mmcblk0p1 rootdelay=2 --no-log --verbose'
echo ======== Loading kernel ========
ext2load mmc 0:1 0x00200000 /boot/uImage
echo ======== Booting kernel ========
bootm

ubootのコマンドラインオプションの変更については、jeinorさんの記事に

As the framebuffer isn't supported we have to modify the kernel command line a bit. We also have to add the --no-log option due to a bug in Ubuntu Core 12.04 beta 2 (should be fixed in the final release). I also added the --verbose option to see what's going on. The rootdelay=2 tells the kernel to wait 2 seconds before trying to mount the rootfs. This is needed to give the SDHC driver time to find the rootfs partition.

とありますので、そのまま頂戴しました。
次にブートスクリプトを生成、直接boot.scrを編集したくなるが、うまくいかないので、mkimageを通す必要があります。

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script for SD' -d boot.in boot.scr

microSDカードにブートスクリプトをゴピーする。

sudo cp boot.scr /media/rootfs/boot/
sudo chmod 775 /media/rootfs/boot/boot.scr
buildディレクトリに戻る
cd ..


最新のカーネルとrt化パッチを get

現時点ではrt化パッチは3.4.10なので、これに対応するカーネルといっしょにダウンロードします。

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.10.tar.bz2
wget http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/older/patch-3.4.10-rt18.patch.bz2

カーネルのソースコードを展開

tar -xjf ./linux-3.4.10.tar.bz2
cd linux-3.4.10


jeinorさんのの記事ではこの後 SDHC driver の記述に関する drivers/mmc/host/sdhci-dove.c の修正の記述がありますが、3.4.4 以降では修正済のようですので、パス。

Alfさんの作成したconfigをダウンロードし、カーネルのソースに含める

Alf’s config については、こちらを参照。

wget http://www.kanonbra.com/opensource/cubox/working_331_kernel_config.txt
mv working_331_kernel_config.txt arch/arm/configs/alf_defconfig

rtパッチをかける

bzcat ../patch-3.4.10-rt18.patch.bz2 | patch -p1

カーネルコンパイルの準備

export ARCH=arm
export CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-
make mrproper
make alf_defconfig

上の2行はクロス開発のための環境変数の設定です。
3行目はカーネルソースに含めた alf_defconfigから .configをカレントに作成します。

configの編集

以下を組み込みモジュールとして指定します。

make menuconfig
後はGUIで操作できます
Device Drivers -> Sound card support(ALSA) -> USB sound devices -> USB Audio/MIDI driver
File systems -> DOS/FAT/NT Filesystems -> MSDOS fs support と VFAT (Windows-95) fs support と NTFS file system support とその下の NTFS write support
File systems ->  CIFS support (advanced network filesystem, SMBFS successor)
-*- Native language support  ---> NLS UTF-8
最後に Exit 保存(yes)

この時、要注意なのは各機能の選択で

[*] built-in  [ ] excluded  <M> module 

とモードが変わるので、必ず先頭の built-in を指定すること。ここで間違えると嵌まります。詳しくはこのあたりを参照。
参考までにmenuconfigを呼び出した時の画面は以下の通りです。



カーネルをコンパイル

make uImage KALLSYMS_EXTRA_PASS=1

「何故、KALLSYSM_EXTRA_PASSが必要なのかは指定しないでmakeしてみれば分かる」とリンク先にあります。
これで arch/arm/boot/uImage にカーネル(uImage)が作成されます。

microSDカードにカーネルを入れる

作成したカーネルをmicroSDカードにコピーし、パーミッションを設定します。

sudo cp arch/arm/boot/uImage /media/rootfs/boot/
sudo chmod 755 /media/rootfs/boot/uImage


設定ファイルの編集

ここまでで、microSDカードのインストールは終了しました。次に、rootでログインするためのいくつかの設定ファイルの変更を行います。

rootユーザのパスワードなしでのログインを可能にするための編集

/etc/shadowを編集します。

sudo emacs /media/rootfs/etc/shadow

以下の行が先頭にありますので、

root:*:・・・・

「*」を削除します。

root::・・・・

シリアルコンソールでログインするための編集

次にシリアルコンソールでログインするために、/etc/init/serial-auto-detect-console.confと呼び出される /bin/serial-console を新規ファイルとして作成します。

sudo emacs /media/rootfs/etc/init/serial-auto-detect-console.conf

以下の内容を書き込みます。

# serial-auto-detect-console - starts getty on serial console
#
# This service starts a getty on the serial port given in the 'console' kernel argument.
#

start on runlevel [23]
stop on runlevel [!23]

respawn

exec /bin/sh /bin/serial-console

jeinorさんの記事では/etc/init/serial-auto-detect-console.confのオーナとパーミッションが同じディレクトリの他の conf と同じかどうかチェックしろとありますが、rootで作業している分には同じになります。
次に最後の行で呼び出される、/bin/serial-console の編集。

sudo emacs /media/rootfs/bin/serial-console

以下の内容を書き込みます。

for arg in $(cat /proc/cmdline)
do
    case $arg in
        console=*)
            tty=${arg#console=}
            tty=${tty#/dev/}

            case $tty in
                tty[a-zA-Z]* )
                    PORT=${tty%%,*}

                    # check for service which do something on this port
                    if [ -f /etc/init/$PORT.conf ];then continue;fi

                    tmp=${tty##$PORT,}
                    SPEED=${tmp%%n*}
                    BITS=${tmp##${SPEED}n}

                    # 8bit serial is default
                    [ -z $BITS ] && BITS=8
                    [ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 "

                    [ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600'

                    GETTY_ARGS="$GETTY_ARGS $SPEED $PORT"
                    exec /sbin/getty $GETTY_ARGS
            esac
    esac
done

次に /bin/serial-console のパーミッションを設定します。

sudo chmod a+x /media/rootfs/bin/serial-console


これでパスワードなしで root でログインできるようになりました。jeinorさんの記事はここまでなのですが、このままでは、立ち上げても、ネットワーク接続もエディターを立ち上げることもできない状態ですので(Ubuntu-Coreにはifconfigもviも入っていません)、「起動出来たはいいが、何も出来ない」という途方に暮れる状態となります。
以下の通り必要最小限のネットワーク設定を行っておきましょう。

ネットワークの設定

設定の仕方は Voyage MPD といっしょです。ただし /etc/resolv.conf は自動設定されないので、自力で設定する必要があります。
まず、/etc/network/interfaces の編集。

sudo emacs /media/rootfs/etc/network/interfaces

以下を追加します。

auto eth0
iface eth0 inet dhcp

固定アドレスにしたければ、ここを変えて下さい。
次に、/etc/resolv.conf の編集。どういう訳かリードオンリーになっていますので、パーミッションを変更してから、行います。

sudo chmod 644 /media/rootfs/etc/resolv.conf
sudo emacs /media/rootfs/etc/resolv.conf

ネームサーバを設定を行います。

nameserver お使いのネームサーバのipアドレス
nameserver 127.0.0.1
search localdomain


最後にファイルシステムの同期をとって完了です。

sudo sync
sudo umount /media/rootfs


microSDカードをクロス側から抜いてCuboxに差します。
以降はCubox側での操作です。えらく長くなったので、次回に。

(PC_Audio)   2012/10/07

コメントする

MPD on Cubox(1)


以前、Raspberry PiをMPDサーバ用のハードとしていいのじゃないかと紹介したことがありますが、ハードの設計の問題で使いづらいようですね。yungさんのサイトにレポートがあります(試されたわけではないようですが)。

という次第で Cubox。
cdケースの上にSheevaPlugと並べてみました。両方を並べて置くことができます。右の真っ黒けのやつがcuboxで、下に置いてあるのが比較のためのカードです。



CuboxはイスラエルのSolidRun社製の超小型、省電力のarmパソコンです。特徴はとにかく小さいこと。CDケースの上にSheevaPlugと並べて置いてみましたが、ご覧の通り半分以下の大きさです(SheevaPlugは電源付きなので、電源アダプターを含めると2/3位ですかね)。実物をもっていないので比較は出来ないのですが、Raspberry Pi(クレジットカード大)よりも小さいと思います。
省電力もなかなかのもので、ワットチェッカーで計った消費電力はピーク8W、通常時4W弱でした。これはSheevaPlug(それぞれ20w、10W)の半分以下です。

ハードスペックの詳細はこのページにあります。CPU ARMv7 800MHz、メモリは1GB。外部インタフェースはUSBx2、eSATA、LAN、光S/PDIF、シリアル用microUSB。音楽サーバ用には必要十分です。あと、ディスプレイとしてHDMI接続(with CEC support)が可能ですが、これはオーディオ的にはマイナスなので、接続しない方が良さそうです。

CPUがarm系ですので、Voyage MPD は動作しません。音楽サーバとして使うにはLinux系列の適当なディストリビューションを自力でインストールする必要があります。「Debian系列のLinuxがうまく動くかなぁ」と思っていたら、掲示板にyanさんより「Ubuntu-Core がインストールできたよ」というご報告があったので、早速注文しました。
8月初めに注文して、届いたのが9月前半。一月ちょっと待たされました。このあたりは在庫状態次第のようですね。

さて、鳴らしてみての感想ですが、素晴らしいです。現用のatom機と比較すると、はるかに良いです。とても鮮度の高い音がします。SheevaPlugとも比較して、電源容量、小ささなどが効いているのか、こちらの方が鮮明な音がします。電源は添付のスイッチングタイプの電源アダプタを使って状態での比較ですので、ここを強化すれば、もっとよくなるのかもしれません。Linuxのインストールにはちょっと苦労しましたが(上記yanさんのコメントツリーを参照して下さい)、これはお勧めですね。

cuboxにインストールできるLinuxのディストリビューションはいろいろあるようです(基本的にarm対応しているディストリビューションならOK。またandroidも対応されているようです)。僕は Voyage MPD で使い慣れているので、Debian系列のUbuntu-CoreとDebianを試してみました。
どちらのインストールもクロス開発用のLinux(Ubuntu)マシンが必要です。Ubuntu-Coreはカーネルを自由に選べますので、rt化も可能です。Debianは用意された最新(現時点で3.5.0)の専用カーネルを使います。どちらもカーネル更新後、MPDサーバ専用機にするには自力でカスタマイズする必要があります。
Ubuntu-CoreとDebianの比較ですが、似たようなものです。必要なソフト(emacsを含みます、これは140MB位。さすがにバカでかいです)をインストールした後の大きさはUbuntu-Coreが650MB、Debianは900MB位ですので、組み込みシステム専用のUbumtu-Coreの方が多少コンパクトなようです。同じような構成の Voyage MPD は1.5GB位ですので、これと比較するとどちらも大分コンパクトです。二つの音の違いですが、例えば Voyage MPD と VortexBox を 同じatomで動かしたような差を感じるようなことはありません。僕の耳にはほとんど同じですね。むしろ、MPDのヴァージョンを0.18gitと0.17.1stableにした差の方が大きいです。

cubox関連の情報はcuboxをキーワードにしてググれば山ほど出てきます。その中で僕が主に参考にしたのはご本家のWikiCuBox に Debian Wheezy をインストールというページです。日本語で書かれていて丁寧に解説されていて、arm系のLinuxに詳しくない方に分かりやすいなと思ったのはこのページです。
僕のサイトでも、ここ(玄柴)ここ(SheevaPlug)に記事がありますので、類似の機種ですから、ご参考になるかと思います。

いずれにしても、音楽サーバとしてcuboxを利用する方法の解説はどこにもありませんので(CuboxのボードにMPDを動かしたよという報告 「Music server using Cubox」はあります)、何回かに分けてcuboxを使った音楽サーバの作り方について解説していきたいと思います。

(PC_Audio)   2012/09/30

コメントする

MPD の DSD対応(3)


掲示板に情報はありますが、最新の情報をまとめておきます。

技術情報の在り処は
DSD-Guide.com Technical Documents & Resources
です。
ここのDoP_openStandard_1v1.pdfというレポートは DSD Audio over PCM Frames(DoP) と呼ばれる方式を解説しています。このDoP方式はパソコンでDSDネイティブ再生を行うために今年の4月に規格化されたもので、MPD のMPDのDSDネイティブ再生に使われている方式です。規格の内容についてはリンク先を参照して下さい。

MPDのDSD対応については、今年の2月にMPD の DSD対応MPD の DSD対応(2)という記事を書いていますが、上記した規格化前のものです。従って、情報は古くなっています。

DoP方式に対応したMPDには二種類あり、一つは開発版の公式のもの。もう一つは開発版のメンテナーとなった Jurgen Kramerさんが自分のサイトに独自に公開されているものです。
開発版の公式なものは 0.17.1 stableと 0.18 gitが対応しています。
現時点でVortexBoxは2.1の最新版でMPDはこの 0.17.1stableになっていますので、これでDSDネイティブ再生が出来ます。VoyageMPDの方は次の0.90でMPDが0.17.1にレベルアップされると思います。

さて、ここからが話がややこしくなるのですが、Jurgenさんがサイトに公開されているソースは二つあります。一つは7月のサイトの更新で公開されたもの(MPD git from 02may12 with song duration and tags for DSD)。もう一つは2月に公開されたもので、7月のサイトの更新でアーカイブとして残されているもの(mpd 0.17 sources with my DSD-over-USB/PCM code added)です。それぞれソースはJurgenさんがサイトの括弧内に示したリンク先からダウンロード出来ます。また新しいソースをFedora 15/16向けにコンパイルしたバイナリもダウンロード出来るようになっています。rpmファイルなので、これはVortexBoxにインストールできるのではないかと思います(未確認ですが)。

Jurgen版の古いアーカイブ版方は時間表示、タグ機能、シーク機能に対応していて使いやすいと思います。公式版は現時点では時間表示のみの対応です(Jurgenさんの新しいソース/バイナリも同じ)。

従って、タグ表示及びシーク機能を使おうとするとこの古いアーカイブ版を使う必要があるのですが、注意点が一つあります。 なにかというと、古いアーカイブ版はDoP規格に対応していないことです(DSD-over-USBという一つ前の規格しかない時に開発されたためです)。 対応策としてyanさんがDoP規格でも動くパッチを用意されているので、それをかければ、DSD再生できるようになります。yanさんのパッチについてはこのページ内の「yanさんのパッチ」という記事に解説してあります。
あと、Jurgenさんの古いアーカイブ版と公式版(Jurgenさんの新しい版も同じ)では、mpd.confの設定の仕方が違います。掲示板にyanさんがまとめられた書き込みがここここにあります。一応こちらにも書いておくと
まず、Jurgenさんの古いアーカイブを使う場合

DSDネイティブ再生

realtime_option {
	memlock		"		yes"
	stack_reserve		"2048"
	heap_reserve		"10240"

	main_priority		"OTHER:0"
	player_priority		"FIFO:48"
	decoder_priority	"OTHER:0"
	update_priority		"OTHER:0"
}

audio_output {
	type			"alsa"
	name			"My ALSA Device"
	device			"hw:0,0" # optional
	priority		"FIFO:49" # optional
	dsd_usb			"yes"
}
decoder {
	plugin			"dsdiff"
	enabled			"no"
}

decoder {
	plugin			"dsdiff_native"
	enabled			"yes"
	dsdsampleformat	"24"
	tagsupport		"id3pref"
}

DSD-PCM変換再生
(realtime_optionとaudio_outputは上に同じ)

decoder {
	plugin "dsdiff"
	enabled "yes"
}

decoder {
	plugin "dsdiff_native"
	enabled "yes"
	dsdsampleformat "24"
	tagsupport "id3pref"
}

次に公式版またはJurgenさんの新しいソース/バイナリを使う場合

DSDネイティブ再生

realtime_option {
	memlock			"yes"
	stack_reserve		"2048"
	heap_reserve		"10240"

	main_priority		"OTHER:0"
	player_priority		"FIFO:48"
	decoder_priority	"OTHER:0"
	update_priority		"OTHER:0"
}

audio_output {
	type			"alsa"
	name			"My ALSA Device"
	device			"hw:0,0" # optional
	priority		"FIFO:49" # optional
	dsd_usb			"yes"
}

decoder {
	plugin "dsdiff"
	enabled "yes"
}

decoder {
	plugin "dsdiff_native"
	enabled "yes"
	dsdsampleformat "24"
	tagsupport "id3pref"
}

DSD-PCM変換再生
(realtime_optionは上に同じ)

audio_output {
	type "alsa"
	name "My ALSA Device"
	device "hw:0,0"			# optional
	priority "FIFO:49"		# optional
	use_mmap "yes"
#	dsd_usb "no"
}

decoder {
	plugin "dsdiff"
	enabled "yes"
}

decoder {
	plugin "dsdiff_native"
	enabled "yes"
	dsdsampleformat "24"
	tagsupport "id3pref"
}

となります。dsd_usbの設定がまったく逆になっていますので、ご注意下さい。

ただ、両方同じ開発者ですし、公式版もJurgen版を追っかけていて、何れ公式版に一本化されると思いますので、シーク機能とタグ表示機能にこだわらないのであれば公式版を使うのが手かと思います。

なお、mpdの0.18gitはビルドするのにgcc4.5以上が必要です詳しくは直前の記事を参照して下さい。


さて、ここからは蛇足というか、yanさんに質問です。
buffer.c.diffを適用したシーク機能ですが、Jurgenさんの新しいソース(公式版を含む)ではdiffファイルだけうまく動いてくれません(フォーワード、バックワード処理でカーソルは移動するが、再生しようとすると動かす前の地点に戻ってしまいます)。古いソースではちゃんと処理されるので、Jurgenさんの公式版対応の問題だと思いますが、理由が分かりますか。
flac、wavなどはどちらのソースでも問題なく再生できます。

9.29 追記
Jurgenさんの新しいソース(公式版を含む)はシーク機能に対応していないようですね。従って、シーク、タグに対応させたければ古いソースからビルドする必要があるようです。あと、これは僕の環境での確認ですが、新しいソースはps3でrippingしたソースのDSD-PCM変換再生に対応出来ていないようです。という意味では古いアーカイブはまだ重要ですね。

p.s. Jurgenさんの更新がしばらく止まっていますね。0.18gitの模様見ということなのですかね。

(PC_Audio)   2012/09/22

コメントする

最新版の MPD gitをコンパイルし、Voyage MPD にインストールする(2)


掲示板でかずひこさんにもう少し簡単な方法を教えて頂きましたので、ご紹介します。かずひこさんにはあらためてお礼申し上げます。
Voyage MPD は Debianベースのディストリビューションですが、安定版の squeezeというバージョンを使っています。そのため gccは4.4となります。これをテスト版の wheezyを使い、gccだけ4.5以上にしてしまうという方法です。

/etc/apt/sources.list に wheezyを追加

emacs /etc/apt/sources.list
以下の行を追加
deb http://ftp.jp.debian.org/debian/ wheezy main contrib non-free

wheezy から指定されたパッケージと関連するライブラリのみアップデートされるよう設定

emacs /etc/apt/preferences
以下の内容で編集(ファイルを作成)
Package: *
Pin: release n=squeeze
Pin-Priority: 900

Package: *
Pin: release n=wheezy
Pin-Priority: 200

apt-pinningについてはこちらのページを、また、Pin-Priority の意味についてはこちらのページman 5 apt_preferences を参照して下さい。

gcc を4.7にアップグレード

apt-get install --target-release testing install gcc-4.7 g++-4.7 libstdc++6


Voyage MPD 0.85なら以上でOKです。
0.80でMPD 0.18gitを動かす場合は libavformat53がないと怒られますので

apt-get install --target-release testing install libavformat53

としてこれもwheeryからインストールすればOKです。
これだけで済みます。時間も数分で済みますのでお勧めです。

あと 4.4 と 4.7 のどちらのgccを使うかはconfigureで指定するのが、スマートです。
具体的には

emacs my-config
以下の通り編集(新規作成)
#!/bin/sh
./configure \
--disable-bzip2 \
--disable-iso9660 \
--disable-zzip \
--enable-id3 \
--disable-sqlite \
--enable-ffmpeg \
--enable-alsa \
--disable-wave-encoder \
--enable-pipe-output \
--enable-httpd-output \
--disable-recorder-output \
--enable-sndfile \
--enable-oss \
--enable-shout \
--disable-pulse \
--disable-ao \
--disable-mad \
--disable-inotify \
--disable-ipv6 \
--enable-curl \
--disable-mms \
--disable-wavpack \
--disable-lame-encoder \
--disable-twolame-encoder \
--enable-vorbis \
--enable-lsr \
--enable-rtopt \
--with-zeroconf=auto \
CC=gcc-4.7 CXX=g++-4.7 \
CFLAGS="-O2 -mtune=`uname -m`"
my-configスクリプトを実行
sh my-config

my-config の終わり近くの行に「CC=gcc-4.7 CXX=g++-4.7」というのがありますが、これで4.7を指定しているわけです。0.17以前のmpdをビルドするときはこの行を削除する。個々のライブライの有効無効は環境に合わせて設定して下さい。

これで MPD 0.18git版ビルドの敷居が大分低くなりましたね。

(PC_Audio)   2012/09/15

コメントする

Shuttle XS35V3 で Voyage MPD を動かす


Shuttle XS35V3 というのは今年の春位に登場した Atom D2700 を使ったベアボーンです。
Atom 搭載のパソコンなら Voyage MPD が動くのは当然と思われるかもしれませんが、この機械、Lanチップ(JMicron JMC250)に特殊なもの使っているため、Voyage のインストールは出来ますが、LAN接続出来ません。
面白い(?)のはこのパソコンに VortexBox(2.1) は問題なくインストール出来て、LAN接続も出来ること。LinuxとしてはこのLanチップはサポートされていて使えるのだけど、Voyage は未対応ということになります。
であればJMC250対応のドライバを入れれば、LANを使うことが出来るわけですが、初期状態でネットワークに接続できないというのは手足のないダルマさん状態ですので、結構手こずりました。
このLANチップは Netbook型のノートパソコンで使われているようなので、同じ症状で困っていらっしゃる方もいると思います。
という次第で、以下、日記風にレポートします。

8月n日
この夏の猛暑のためか、パソコン部屋で現用のAtom機(Shuttle X27)が逝っちゃいました。poweroffしたらモニタ画面表示が異常となりそのままハング。あわてて電源断し、再起動したが、どうやっても立ち上がらず。
5年位前の機種で、いまさら修理もできそうもないので、早速 amazon で注文。同じShuttleのXS35V3という最新機種に入れ換えることにしました。
XS35V3 の仕様はリンク先をご覧頂くとして、5年間あまり進歩がないようですね。サイクル数がちょっと上がって、電源消費量はちょっと減って、グラフィックチップの性能が多少上がった位ですかね。ファンレスになったというのが最大のメリットかな。
変わっているのはメモリーがノートパソコン用の S.O.DIMM であること。NetBook用のマザーを流用しているということなのですかね。驚いたのはその価格。4GBytesで1.7K円でした。5年前の数分の一の価格ですね。本体と合わせて17.5K円。これで最新モデルに様変わりさせることが出来るのだから、安くなったものです。

8月n+1日
注文した次の日に届く。本体はご覧の通りで穴だらけ。夏向き。涼しげです(^^;;;。



組み立ては簡単。メモリを差し込んで、半導体ディスクを繫ぐだけ。サルでも出来るというレベル。半導体ディスクは壊れたX27で使っていたものを流用。

旧機種のX27は写真に写っているPlexterのPlemium2を使ってCDリッピングをメインで使っていたので、とりあえず、VortexBox 2.1 をインストール。光ディスクはUSB接続のPlemium2、大記憶は半導体ディスクという構成ですが、インストール完了。問題なく動きました。ここまでは快調。「やっぱりベアボーンは楽だなぁ」という感想。 早速、cdripしてみるがスムーズに完了。ご機嫌。使いっぱなしにしていても、温度は大して上がらないのには感心しました。
世の中、オリンピックだらけですねぇ。

8月n+2日
トラブルはここから。
VortexBoxのMPDはLMS(Logitech Media Server)以外からコントロールするのは感心しないので、手持ちのUSBハードディスクに Voyage MPD をインストールし、VortexBoxとVoyage MPDをデュアルブートできるようにしようと考えた。この方法だとbiosのブートOSを選択する機能で選べるので、VortexBoxのデュアルブート不可という制限を回避出来ます。
インストール用のCDをセット。ログイン画面が出たのでSSHで接続しようとしたが、反応がない。「あれれ」と思ったが、とりあえず、接続されているコンソール(写真に写っているものです)からログイン。インストールしました(Windows上のCopy&Pasteが効かないので面倒ですね)。
さて、インストールが終わって最初の起動。依然、SSH接続できない。さすがに、ここまでくると「奇怪しいなぁ」と気が付きました。

root@voyage:~# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:80 errors:0 dropped:0 overruns:0 frame:0
          TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:7249 (7.0 KiB)  TX bytes:7249 (7.0 KiB)

とやってみる。 あれ、eth0が認識されていない。
dhcpが巧くいっていないのかなと考え、固定アドレスにしてみる。しかし、SSHが使えないと、いちいち全データをキーインしないといけない。使えるエディタはviだけ。viの使い方なんて忘れているから、「もうやってられないなぁ」という感想。なんとか入力。

root@voyage:~# ifdown -a
root@voyage:~# ifup -a

状況は変らず。
「VortexBoxでは問題ないのに、何でVoyageはネットワークに繋がらないの」と不思議に思う。
とりあえず、

root@voyage:~# lspci | grep -i "net"
02:00.5 Ethernet controller: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet Controller (rev 03)

「何だハードはちゃんと認識されているじゃん。ドライバが組み込まれていないのだけなのね」と分かる。
早速、JMicron、JMC250 あたりをキーにググる。トラブル情報は山ほどありましたね。「ちゃんと調べてから注文しないと駄目だなぁ」と痛感。
ググった情報で、ドライバをビルドしてみたが、Voyage環境ではエラーになる。Ubuntuでは巧くいくのに不思議だなぁ。カーネルヘッダーの違いに起因するようだけど、解決できない。今日はここで諦める。
テレビはオリンピックばかり。アナウンスが煩いので、オーディオ装置でDSD変換したサヴァールを聴きながら、テレビの音は消して、映像だけ見ています(^^;;;。

8月n+3日
Makefileをいじって対応という手もありそうだが、面倒なので、カーネルビルドで対応することにする。
調べたら

Device Drivers  ---> 
[*] Network device support  ---> 
[*]   Ethernet driver support  --->  
<*>   JMicron(R) PCI-Express Gigabit Ethernet support  

と変更すれば良いらしい。
VMwarePlayer環境で kernel 3.4.4 のイメージをビルド。LAN環境が使えないので、USBメモリを使い、イメージをUSBディスクにもってくる。共用ファイルが使えないと面倒だねぇ。
何とか、カーネルを入れ換える。

root@voyage:~# dpkg -i linux-image-3.4.4-for-jmicron_voyage.3.4.4_i386.deb

ところが、grubが古いものだから、これが巧くいかないのですよね(^^;;;。最後のブートメニューの更新でエラーになってしまいます。
ネットワークに繫がないことには何も出来ないのだと分かる。「この矛盾、どうすればいいんだ」と大いに悩む。
キュリオシティの火星へのランディングが巧くいったようですね。オリンピックよりこちらの方が大ニュースだと思いますが、7時のNHKニュース終わり間際にちょっとだけ紹介というのは奇怪しいなぁ。

8月n+4日
一晩考えて、LAN接続できるWindowsマシンにインストールしたVoyageディスクを繋ぎ、起動すれば、何とかなるかなと気が付く。やってみました。
Windows用のメインマシンをVoyage MPDディスクで起動。当たり前ですが、LAN接続はOK。

root@voyage:~# apt-get update
root@voyage:~# apt-get upgrade
root@voyage:~# apt-get install grub

grub2.0にアップグレードされブートメニューも更新されたようです。
USBディスクをXS35V3に繋ぎ直す。
起動して

root@voyage:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 80:ee:73:36:f7:d0
          inet addr:192.168.0.5  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::82ee:73ff:fe36:f7d0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:774 errors:0 dropped:0 overruns:0 frame:0
          TX packets:531 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:77779 (75.9 KiB)  TX bytes:72677 (70.9 KiB)
          Interrupt:17

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:83 errors:0 dropped:0 overruns:0 frame:0
          TX packets:83 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:7405 (7.2 KiB)  TX bytes:7405 (7.2 KiB)

大成功。まあ、もう少しスマートな方法がありそうですが、とりあえずトラブルは解消しました。

あとググった情報でもっと簡単なのは、USB変換型のLANアダプターを使うことです。要注意なのはこの場合、Linux(Debian)で稼働実績のあるモデルを選ぶこと。ドライバをインストールしないといけないようだと、元の木阿弥。同じはめになりますので。
確実なのは Voyage MPD のコンフィグを調べ、ドライバのサポートを確認した方がいいです。

(PC_Audio)   2012/09/09

コメントする

最新版の MPD gitをコンパイルし、Voyage MPD にインストールする

8月以降の MPD git 0.18版をビルドするには gccを 4.5以上にレベルアップする必要があります。gccというのは MPDソースをコンパイルする時に使われるツールで、詳しくはこちらを参照して下さい。
MPDのコンパイルに gcc 4.5以上が必要となった理由は、0.18版のMPDはdatabase部分の拡張が行われためですので、今後のMPDのメンテナンスは gcc 4.5 の環境が前提になると思います。
問題は Voyage MPD の gcc が 4.4であること。対策としては以下の二つがあります。

  • gccが4.5以上のディストリビューションを使いコンパイルする
  • Voyage MPD 環境のgccを4.5以上にヴァージョンアップする

以下この二つの方法について解説します。

gccが4.5以上の Linuxディストリビューションを使いコンパイルする

具体的には Ubuntuの最近の版のgccは4.6以上ですので、これを使うのが簡単です。僕は VmwarePlayerにインストールした Ubuntu 11.10を使いました。VmwarePlayerについては過去の記事で紹介していますので、そちらを参照して下さい。
ビルドの仕方はMPD 0.17以前と同じです。やり方はこのページにあります。
注意する必要があるのはビルドしたプログラムはlibstdc++のヴァージョンが6.0.14以降でないと動かないこと。残念ながらapt-getでは libstdc++のヴァージョンアップ出来ないので、自力で更新する必要があります。
正しいやり方はgccを 4.5以上にすることになります。
それじゃ、次に紹介する方法と変らないことになりますので、ここでは UbuntuのライブラリをVoyage MPDに持ってくるという極道な方法を紹介します。Ubuntu、Voyage MPD共に/musicという名前のマウントポイントでnasの共用ディレクトリをマウントしているものとします。

# Ubuntu側で、MPDのmake後に、mpdとlibstdc++.so.6.0.16を共用ディレクトリにコピー
cp /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16 /music
cp ./src/mpd /music
# Voyage MPD側でmpdとlibstdc++.so.6.0.16を登録
pkill mpd
cp /music/mpd /usr/local/bin/
cp /music/libstdc++.so.6.0.16 /usr/lib/
rm -f /usr/lib/libstdc++.so.6
ln -s /usr/lib/libstdc++.so.6.0.16 /usr/lib/libstdc++.so.6
# 登録の確認
objdump -p /usr/lib/libstdc++.so.6

乱暴な方法ですが、これで動きます。
mpdのインストールと設定方法はリンク先を参照して下さい。

Voyage MPD 環境のgccを4.5以上にヴァージョンアップする

ググれば情報はいっぱいありますが、Voyage MPD環境では多少アレンジする必要があります。
主に参考にしたサイトは以下の二つです。作者にお礼申し上げます。

以下、僕の行った方法を紹介しますが、かなり大変な作業です。上記したUbuntuを使う方法の方が楽です。

事前準備

mpdのビルドと同じです。不要なものはあるかと思いますが、どうせ mpdのビルドには必要なので、全部インストールしましょう。

apt-get install aptitude wget
apt-get install git binutils gcc make subversion autoconf automake autotools-dev libtool pkg-config
apt-get install build-essential libncurses5-dev libncursesw5-dev libglib2.0-dev
# Voyage MPD の Kernel Headerは在り処が以前と異なります。
# 以下は Voyage MPD 0.80の場合
# 0.85版は登録されていないようですね(自力でビルドする必要があります)。
wget http://www.voyage.hk/dists/0.8/linux/linux-headers-3.0.0-voyage_10.0-1_i386.deb
dpkg -i linux-headers-3.0.0-voyage_10.0-1_i386.deb

09/15追記
mpdのビルドではlinux-headersの登録は不要です。最後の二行は行う必要はありません。

なお、gcc 4.6のビルドには最低でも512MBのメモリが必要なようです(何故か、この情報はググっても日本語では出てきませんね)。従って、alix機でビルドすることはできません。また、VmwarePlayer環境で「その他のLinux機」を選択するとディフォルトは256MBですので、初期設定時に拡張する必要があります。

必要なライブラリのインストール

以下の科学技術演算ライブラリをインストールしておく必要があります。

  • GMP 5.0.2 任意精度算術演算ライブラリ
  • MPFR 3.1.1 任意精度の浮動小数点数演算ライブラリ
  • MPC 0.9 複素数演算ライブラリ

何れもインストールにはビルドが必要なので、ソースをダウンロード、展開します。

wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.2.tar.bz2
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.1.tar.bz2
wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
wget ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.bz2
tar xf gmp-5.0.2.tar.bz2
tar xf mpfr-3.1.1.tar.bz2
tar xf mpc-0.9.tar.gz
tar xf gcc-4.6.2.tar.bz2
apt-get install paco

最後のpacoというのは個別にインストールしたライブラリを管理するツールです。
MPRFはGMPに、MPCはMPFRに依存しますので、以下の順番でインストールする必要があります。

# gmpをインストール
cd gmp-5.0.2
./configure --enable-cxx
make
make check
paco -D make install
cd ..
# gmpをインストールした場所に LD PATHを通す。
# ldconfigだけでは駄目で環境変数を設定する必要があるみたいです。
export LD_LIBRARY_PATH=/usr/local/lib/
ldconfig
# mpfrをインストール
cd mpfr-3.1.1
./configure --with-gmp=/usr/local
make
make check
paco -D make install
cd ..
# mpcをインストール
cd mpc-0.9
./configure --with-gmp=/usr/local --with-mpfr=/usr/local
make
make check
paco -D make install
cd ..

ここまでで、atom機だと1時間位かかります。しかしこの後がもっと大変(^^;;;。
gcc 4.7以上の場合はさらにPPL(凸多面体演算)とcloog-pplのインストールが必要なようですが、4.6をインストールするので、パス。

gccのビルド

これはatom機だと6時間位かかります。このビルド処理についてはyanさんの丁寧な解説がここにあります。要するにコンパイラの精度を確保するためにmakeを三回走らせているということです。

cd gcc-4.6.2
./configure --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --prefix=/root/gcc462 --disable-nls
make
paco -D make install
cd ..

これで gcc 4.6 のビルドは完了です。ただ、これだけではシステムの設定がgcc 4.4を使うままになっていますので、4.6は使われません。

alternativeの設定

alternativeというのは異なるヴァージョンのソフトを使い分けるためのツールです。Debian系列のディストリビューションにはディフォルトでインストールされているようです。

以下はgccの make install を /root/gcc462 で行ったという前提です。

update-alternatives --install /usr/bin/gcc gcc /root/gcc462/bin/gcc 46
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44
update-alternatives --install /usr/bin/g++ g++ /root/gcc462/bin/g++ 46
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 44
update-alternatives --install /usr/bin/cpp cpp /root/gcc462/bin/cpp 46
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.4 44
update-alternatives --install /usr/bin/c++ c++ /root/gcc462/bin/c++ 46
update-alternatives --install /usr/lib/libstdc++.so.6 libstdc++.so.6 /root/gcc462/lib/libstdc++.so.6.0.16 46

最後の46、44という数字は優先度の指定です。従って、これでgcc 4.6が使われるようになります。変更したい場合は

update-alternatives --config gcc
update-alternatives --config g++
update-alternatives --config cpp

で変更できます。mpd 0.17以下のコンパイルであれば、gccの変更だけで対応できます。gcc を 4.6に戻す時は

export LD_LIBRARY_PATH=/usr/local/lib/
ldconfig

をもう一度やらないと駄目みたいですね。

もうちょっとスマートな方法は無いのかと捜しましたが、見つけられません。ご存じの方、教えて下さい。

(PC_Audio)   2012/09/01

コメントする

最新版のMPD_git 0.17に対応した rtopt patch(3)追補


直前の記事を書き込んだ後に VortexBoxのアップデートを行って気が付いたのですが、

[vortexbox.localdomain ~]# mpd --version
mpd (MPD: Music Player Daemon) 0.17.1

Copyright (C) 2003-2007 Warren Dukes 
Copyright (C) 2008-2012 Max Kellermann 
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Decoders plugins:
 [mad] mp3 mp2
 [mpg123] mp3
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
 [dsdiff] dff
 [dsf] dsf
 ・・・・

MPDの安定版が 0.16.8 から 0.17.1 にアップしているのですね。動かしてみましたが、7月末のgit版をstableに昇格させたようです。VortexBoxの最新のMPDはこのstable版になっています。stable版のソースはここにあります。
この 0.17.1 stable版に対するrtoptパッチは2月に公開された mpd-0.17git-20120226rtopt.diff.gz になります(ビルドして確認しました)。また、gcc 4.4でないとコンパイル出来ません。
また、git版の版数も 0.18になったようです。

root@voyage:~# /usr/local/bin/mpd --version
mpd (MPD: Music Player Daemon) 0.18~git

Copyright (C) 2003-2007 Warren Dukes 
Copyright (C) 2008-2012 Max Kellermann 
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Decoders plugins:
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
 [audiofile] wav au aiff aif
 [dsdiff] dff
 [dsf] dsf
 ・・・・

こちらは gcc 4.5以上でないとコンパイル出来ません。

という次第で、ますます話はややこしくなりますが、ご注意ください。

(PC_Audio)   2012/08/26

コメントする

最新版のMPD_git 0.17に対応した rtopt patch(3)


最新版(2012年8月)のMPD_git 0.17に対応した rtopt patchを英文の Voyage MPD 紹介のページで公開しておきました。いつもながら、yanさん、対応ありがとうございます。
リンク先の「mpd-0.17git-20120819rtopt.diff.gz」というパッチです。2012年8月以降のgit版に対応したものです。
MPD のgit版ですが、8月にdatabase部分の拡張の為にc++を使うようになり、同じページにある「mpd-0.17git-20120226rtopt.diff.gz」では対応できなくなりました。

使い方については過去の記事を参照して下さい。

なお、2012年8月以降の最新git版をビルドするには gcc 4.5 以上が必要です。Voyage MPD 0.85(0.80も同じ)の gcc は 4.4なので、gccをビルドしないと駄目です(apt-getでは4.5にすることはできません)。Ubuntuを使うという手もありますが(こちらは4.6がディフォルトになっています。11.10で確認)、この場合も c++ のライブラリが必要となるため、自力で libstdc++.so.6 を 6.0.13 から 6.0.14以上にアップグレードする必要があります(パッケージ管理(apt-get)では出来ません)。
どちらも、多少面倒な作業で、ある程度のLinux知識が必要なので、旧パッチ(mpd-0.17git-20120226rtopt.diff.gz)も当分の間残しておきます。
Jurgenさんが公開しているDoP対応のMPDソース(mpd-git-02mei12-splitting-decoders-cleanup-noseeking.tar.gz)は古いgitをベースにしていますので旧パッチで対応されています。

以上、ややこしいですが、ご自分の環境にあわせて選択して下さい。


p.s. この gcc 4.6 でビルドしたMPDはかなり音の雰囲気が変わります。解像度が増し、より透明感が強調されると思います(特にDSDネイティブ再生)。やってみたいという方にはお勧めです。

(PC_Audio)   2012/08/25

コメントする

箏曲『六段』とグレゴリオ聖歌『クレド』


日本に西欧音楽が入ってきたのは明治時代からと思われていますが、違います。戦国時代から豊臣秀吉の時代に、欧米の宣教師がキリスト教の布教に訪れ、いっしょに当時のヨーロッバ音楽を持ってきました。ヨーロッパ音楽はルネサンス末期からバロック初期の時代です。
当然、当時のキリシタン達は信仰の表現とこれらの西欧音楽を歌い、演奏したと考えられます。有名な例としては天正遣欧少年使節が、帰国後、豊臣秀吉の御前で洋楽を演奏したという記述が残っています。

箏曲『六段』はこの時代に誕生したもので、16世紀スペインの「ディファレンシアス(変奏曲)」の影響があるという指摘は以前からされていました。このCDはもうちょっと踏み込んで、箏曲『六段』の成立にはグレゴリオ聖歌の『クレド』の影響が決定的に大きかったということを演奏を通して実証しようというものです。

仕掛け人は皆川達夫さん。中世ルネサンス音楽学者ですが、NHK-FMの音楽番組の解説などでご存じの方も多いでしょう。皆川さんが監修したCD/DVDで「洋楽渡来考」というタイトルが5年位前に発売されていて、これもなかなか興味深かったのですが、今回の「六段 - クレド」はもっと面白いです。
綺麗に構成された推理小説を読む楽しさがあります。日本音楽のブラックボックスだった部分が見事に解明され音で聴けるということになります。

CDの内容は以下の通り。

01 - 少年使節歓迎ミサ曲『グローリア』.flac
02 - 秀吉御前における少年使節の演奏曲「千々の悲しみ」.flac
03 - マリア典礼書中の『連祷』(聖マリアの連祷).flac
04 - グレゴリオ聖歌『クレド』第三番.flac
05 - グレゴリオ聖歌『クレド』第四番.flac
06 - グレゴリオ聖歌『クレド』第一番.flac
07 - グレゴリオ聖歌『クレド』第一番(拍節リズム演奏).flac
08 - グレゴリオ聖歌『クレド』第三番と『六段』(初段・二段との合奏).flac
09 - グレゴリオ聖歌『クレド』第四番と『六段』(初段・二段との合奏).flac
10 - グレゴリオ聖歌『クレド』第一番と『六段』全曲合奏.flac
11 - 箏曲『六段』.flac

最初の三曲は日本のキリシタン期に演奏されたであろう曲の再現なので、「六段 - クレド」の謎解きとは関係ありません。
4曲目から10曲目までが謎解きの演奏。六種類あるクレドの1、3、4番をとりあげ最初に単独で朗誦。次に箏曲『六段』と合奏させてみせる。「なるほど、ぴったり合うなぁ」と感心しました。

しかし、『六段』を丁寧に聴いたのは中学校の音楽の授業以来かな(^^;;;。

p.s. 前回書いたQMPを使ったタグ情報の取得ですが、こういうCDでもちゃんと取り込めます(CDの内容の情報はQMPの出力を利用しています)。なかなかのものですね。

(music)   2012/08/18

コメントする

Quintessential Media Player


最近、VortexBox というLinuxの音楽用ディストリビューションを使っています。
音が良くて、機能が豊富で、操作が簡単。CDをセットしただけで自動的にリッピングし、flacに変換して、nasサーバに格納してくれるとか、インタネットラジオの選局できる数は凄いとか、操作は全部ブラウザで出来るとか、素晴らしい。

ただ問題点が一つあって、CDリッピング時のタグ情報を取得するデータベースがfreedbだけなことです。 僕の音楽趣味はかなり偏っていて、民族音楽、中世ルネサンス音楽、現代音楽などがメインです(本来こちらが普通で、世間が奇怪しいのだと思っています^^;;;)。困るのは僕の趣味に合わせて世の中が対応していないことです。具体的には購入したCDの半分以上はリッピングしても、タグ情報を自動認識してくれない。困ったものです。

という次第でいろいろ調べたら、強力な助っ人を見つけました。
Quintessential Media Player というソフトです(名前が長いので、以降 QMP と表記します)。
何が凄いかというと、ここにタグ情報を取得できなかったフォルダの音楽ファイルをドラッグ&ドロップすれば、自動的に Gracenote と MusicID を使ったタグ情報の検索をしてくれます。

Gracenote というのはオーディオCDのデータベースを運営する会社で、ここに情報があります。商用サービスですが、一部のアプリケーション(Player、Quintessential Media Playerなど)で使うことができます。特徴はデータベースの精度が非常に高いこと。僕の趣味の民族音楽、中世ルネサンス音楽、現代音楽などの特殊なCDでもかなりの確率(95%位)でデータがあります。
MusicID というのは Gracenote社が開発した技術で曲の特徴を(指紋みたいに)64バイトの情報にして保存し、サウンドデータそのものと照合、その曲名を判別するというものです。詳しい情報はここにあります。

QMP については以下の情報がとても参考になります。作者に感謝です。

ここでは上記リンク先の情報を元に僕のやり方をご紹介します。

インストールと日本語化

上記ページの通りやればいいです。
最新版は v5.0 build121 です。日本語化は QMP121JA_full.zip を使えばいいです。
それぞれのダウンロード先は以下の通り。

要注意なのは flac を使う場合、プラグインをインストールする必要があるのですが、QMPBASS.dll と QMPFLAC.dll という二つのプラグインがあるのですが、後者を使わないとタグ編集は出来ません。
それぞれのプラグインのありかは
QMPBASS.dll が http://www.quinnware.com/list_plugins.php?type=input
QMPFLAC.dll がhttp://www.quinnware.com/list_plugins.php?params=&page=2&type=input
にあります(それぞれ本家のプラグインのダウンロードページです)。
両方インストールしたら場合は、プラグイン設定の画面で QMPBASS.dll を無効にする必要があります。



画面左上の

Menu > 環境設定 

で中央に表示されている設定画面が表示されますので、

プラグイン > 入力 

をクリック。 画面のように QMPBASS.dll のチェックを外します。

MusicIDでタグ情報の取得

MusicIDを使って、タグ情報の取得するにはQMP側の設定が必要です。上記リンクの先に情報がありますので、そちらを参照して下さい。



画面はnasのCDリッピング用フォルダから「Unknown_Artist_-_Unknown_Album」というフォルダをQMPにドラッグ&ドロップしミュージックデータを取り込んでいるところです。
取り込みが完了すると



こういう具合に表示されました。このCDは発売遅延していて、ようやくgetしたものです。VortexBoxのデータベースにはデータがないので、タグ情報はUnknownか空欄となっています。タイトル名、ファイル名も「track0n」とつけらています。
画面の右側の方に「MusicIDステータス」という項目があります。これがMusicIDを使ったタグ情報の取得状況を現します。現在は処理中となります。
しばらく待つと



こんな具合に画面が変わります。クセナキスとベートーヴェンの曲をカップリングして、演奏者もブール(指揮者)とツェートマイアー(Vn)とかなりマイナーなのですが、見事に認識してくれました。さすがですね。



次に画面左ペインのフォルダ名を右クリック。メニューから「ファイルタグへ情報を書く」を選択。
これでタグ情報が保存されます。
ダグ情報を編集したい場合はその上の「タグとファイル名を編集」を選択。下の画面のように右ペインから右クリックでトラックを指定して操作することも可能です。



さて、上の画面でファイル名のフィールドを先頭に持ってきて表示させましたが、リッピングした時にタグ情報が取得できていないので、このようになります。
このファイル名の変更も「タグとファイル名を編集」で出来ます。上の画面のように、変更するファイルを選んで、右クリック。「タグとファイル名を編集」を選択しすると、



こんな画面が表示されますので、画面右ペインのファイルタブを選択します。上のような画面が表示されます。
ここで適用テンプレートを選択し、右ペイン下の「ファイル名の変更」を実行すれば、一括してファイル名を変更できます。テンプレートの指定でフォルダ名も変更設定しておけば、フォルダ名もいっしょに変更できます。
元の名前のファイルを残したい場合は「転送先のフォルダ」の指定で出来ます。



こんな感じです。
テンプレートは「エディタ」ボタンをクリックすれば、編集できます。



画面左のボタン操作でお好みのテンプレートを作成することができます。作曲家名が指定出来ないのは残念ですね。



以上、QMPのタグ情報処理に絞って解説しましたが、もちろんこのプログラムはプレーヤ機能がメインですので、Windows で動く普通の音楽プレーヤとして使うことができます。

(PC_Audio)   2012/08/11

コメントする

AutoItによるWindows操作の自動化


この項、本当は「sacd ripping(3)」というタイトルにしたかったのですけど、改正著作権法という悪法が国会を通ったらしいので、上記の通りとしました。
解除済のisoファイルをドラッグ&ドロップ(複数ファイルをまとめて実行することも可能)で自動的にdff変換するAutoItのスクリプトの紹介です。
といってもたったの4行。

If $CmdLine[0] = 0 Then Exit
For $i = 1  to $CmdLine[0] Step 1
  RunWait(@ComSpec & " /c " & EnvGet("sacdextract") & ' -c -p -i"' & $CmdLine[$i] & '"', EnvGet("dffout"))
Next

sacdextractの在り処とdff変換するファイルの展開フォルダーは環境変数で指定する方法をとっているので、

sacdextract=c:\MySoft\scarletbook\sacd_extract_0.3.6_WIN32\sacd_extract.exe
dffout=i:\sacdback

という具合に環境変数を設定しておく必要があります。
Windows7での環境変数の設定は

コントロールパネル > システム > システムの詳細設定 > 環境変数

です。
「こんなのバッチファイルで簡単に出来るじゃないか」と思われるかもしれませんが、そういう貴方はマイクロソフトを甘く(?)みています。実は僕も、最初、バッチファイルで出来ると思ってやってみました。
環境変数を使っていないので、ちょっと長くなりますが、

@echo off
set a=c:\MySoft\scarletbook\sacd_extract_0.3.6_WIN32\sacd_extract.exe
i:
cd \sacdback
:start
if "%1"=="" goto end
%a% -c -p -i"%1"
shift /1
goto start
:end

こんな感じです。これで普通のファイルだと問題なく動きます。
ところが解除済のisoファイルはSony(?)の音楽DBのタグ情報からファイル名を取得するものだから、ファイル名に空白、ピリオドなどが途中に入るのでよすね。具体的には

Glenn Gould - Bach Goldberg Variations 1955 Performance - Zenph Re-Perfor.iso
The Deutsche Kammerphilharmonie Bremen Paavo Järvi, cond - Beethoven symphonies no.3 eroica & no.8.iso

こういうファイルは上記バッチファイルでは、途中の空白、ピリオドなどが祟り(?)をして、エラーになってしまいます。AutoItのスクリプトならOKです。

どういうことなのですかね。自分のところの OS で空白、ピリオドのあるファイルを認めておいて、バッチ処理をさせてくれないとは。さすがマイクロソフトだなぁ(^^;;;。
あと、多分これもOS関連だと思いますが、もう一つ文字コード関連の問題点があって、ファイル名に欧文文字が使われいるとエラーになります。例えば上記のヤルヴィのベートーヴェンだと 「Järvi」の「ä」が祟ってエラーになりますので、「Jarvi」とリネームしてやる必要がある。ところが変換されたフォルダーは「Järvi」という名前で作成されるのですよね。これもかなり変です。
どうもマイクロソフトは謎だらけですね。


ところで、AutoItってVB風の構文だから、ハッカー皆様には愛されないようですが、こういう時には便利ですよ。
詳しい情報は

などにあります。
上記スクリプトを実行するにはAutoItをインストールする必要があります。
インストールするのが面倒だという方々のために、実行形式にコンパイルしたものを
auto_extract.zip
にリンクしておきますので、ダウンロードしてお使い下さい。
ただ、ウィルスソフトによってはAutoItを敵視するものがあるようです(Avastなど)ので、ご注意ください。僕は警告を無視して実行しています。

sacdextract と scarletbook の使い方についてはasoyaji さんのサイトに詳しい情報があります。

(PC_Audio)   2012/08/03

コメントする

aitlabo社のDAC


このサイトの掲示板で Voyage MPD を使ったDSDネイティブ再生のやりとりを2月ごろから行っていますが、aitlaboさんのDACを使って、ようやく再生環境を構築しました。今、「再生環境を構築しました」と書きましたが、実は、制作はPhoeniciaさんにお願いしました(Phoeniciaさんのブログはこちらです)。aitlaboさんのDACの情報もyanさんややまさんに教えてもらったわけで、もつべきものはネットワーク仲間ですね(^^)。



写真は居間のメインのオーディオシステムです(スピーカは Elac330CE + ElacSW)。音楽データは全てnasに置いてありますので、随分シンプルになりますね。一番大きいのが、今回導入したaitlaboさんのDACで、プリアンプ(DACの上JOB Pre)とメインアンプ二台(下 JOB 150×2)を合わせて同じ位の大きさとなります(プリアンプの隣にあるのは安定化電源)。ご覧のように、オーディオラックじゃなくて、居間のテーブルの上半分と中段を使い楽にセッティング出来ます。
DACの操作ですが、中央のLCDで状態をモニタ出来るようになっています。LCDの左のスイッチが電源のON/OFF、右のスイッチは、下に押して設定可能な機能を選択し、上に押して機能の内容を選択するという操作方法になります。
選択できる機能は入力選択(同軸、光、I2S)、ジッター抑圧モード(AFPC、APC、HOLD、THRU)、LPF設定(fast、slow)、Mclk設定(MN、ATなど)、BW設定(7段階)、JTred(ES9018のジッター除去動作のON/OFF)があります。いろいろいじってみましたが、そんなに大きな差は無いので、電源on時のディフォルト設定で使っています。



蓋をあけるとこんな感じです。
aitlabo DACはスペックをaitlaboさんとメールでやりとりして決めるのですが、構成はフルスペック+αです(+αはDSDネイティブ再生のためのUDA追加など、またケースの穴あけ加工もお願いしました)。

それで肝心の音ですが、素晴らしいと思いました。
このページの悪魔のDACというのはこのDACのことです。このDACの音の性格を極めて的確に表現されていると思います。僕もほぼ同じような感想です。

  • 音場が左右前後だけでなく上下に広がること
  • DSD録音はまさに楽器がそこにあるという音がすること
  • PCM録音でも高解像度クリアだけど、DSD並の自然な音質で楽しめること
  • 1950~60年代の古い録音がとても良い音で聴けること

などが特長ですかね。
以下ご本人の了解を頂きましたので、ケーシングをお願いした Phoeniciaさんのコメントを引用します。
第一報です。

今組み上がりました。
取り敢えずVoyage MPD~内蔵DoP版UDA~ES9018の経路でテストしています。
PCMは44.1kHzから192kHzまでLowestで問題なくロックしています。
DSDの再生も問題ありません。

出てくる音は、静かですね。
ジッタを低減させたDACに共通する感触です。
最低域から最高域までストレス無く滲みなく澄み渡って伸びています。

この辺りES9018のキャラクタか、I/V以降のアナログ段のキャラクタなのかは
判りませんが気持ちがいいですね。

続いて第二報です。

今感動しています。

素晴らしいDACですね。
最初にあった硬さがどんどん取れてきて滑らかになって来ました。

DSDも良いんですが、PCMもこれまた良いですね。

技術の勝利バンザイと言ったところです。

第三報です。

さて、同軸入力をチェックしました。

Voyage MPD ~ 旧UDA ~ 同軸(S/PDIF)入力でDAC
Voyage MPD ~ 内蔵DoP版UDAからの同軸出力 ~ 同軸(S/PDIF)入力でDAC

44.1kHzから192kHzまでLowestで問題なくロックします。

音は私の主観では
  USB ~ 内蔵DoP版UDAからのI2S >> 同軸入力
と感じました。

ES9018は巷の評価通り、S/PDIF入力よりI2S入力の方が音は良いですね。

僕も同感です。UDA経由I2S入力の音とDDC(RUDD14)の出力をS/PDIF入力を比べてみましたが空間表現がまるで変わると思いました。
あと光接続について

光入力は96kHz迄みたいですね。

192kHzまで出力されることを確認済みの光出力を接続したところ
96kHzまでは正常。
それを超えるとNO SIGと表示され、バンド幅をHighestにしても変わらずです。

S/PDIF入力はDAC基板内にアイソレートトランスを備えていますので、
光を使わなくても同軸だけで十分だと思います。

ただ、光の音は同軸よりいいです。居間のテレビに光出力があるので、音楽番組などはこれで聴くことにしました。
最後に Phoeniciaさんの技術面でのまとめです。

今回配線のために改めてHPに公開されている回路図を見ました。
更に現物基板も併せての感想を言うと。

部品に頼らず回路設計で性能を出す、工業製品として非常にオーソドックスな手法
を用いられています。
抵抗の種類で音が変わるとか、このコンデンサは音がいいという評価が高い
とか言う数値化出来ないものに頼らず、入力から出力まで如何にノイズを
絶ちジッタを低減させるかという主題で最善と思われる回路を採用されています。

その結果、ここぞという場所にはES9018のような高価で高性能な部品を使い、他は
大量生産され品質が均一であることが担保されている部品を使われています。

恐らくオーディオ業界に頭の先からつま先までどっぷり浸かってしまった人間には出来ない設計です。

このDAC唯一の欠点は音の鳴り始めに5秒位の時間が必要なことです。
この件での Phoeniciaさんのコメントです。

Aitlaboさんの5秒程度途切れるのはリレーが入っているためではなく、内部の
ディジタルPLLが同期するのに要する時間ですね。

単純にリレーでON、OFFするだけなら0.1秒もあれば十分です。

AitlaboさんはこのPLLのお陰でジッターから開放されているわけで、使ってみた
感想から言うと立ち上がりが切れることに対する不満は全く感じませんでした。
それを補って余りある至福の音です。

なるほど、そういうことでしたか。
5秒の無音のdffファイルを作成。最初にこれを再生するようすれば、曲の立ち上げが途切れることは回避できます。

という次第で居間のメインシステムは交代。ルビジウム付きのHD-7A192はパソコン部屋に移動することと相成りました。

(PC_Audio)   2012/07/25

コメントする

yanさんのパッチ


yanさんのmpd関連のパッチ、このサイトのあっちこっちに分散して置かれているので(掲示板の「volpatch,diffについて」スレッドを参照)、まとめて紹介し、ここからダウンロードできるようにしておきます。

以下、リンク先のパッチはテキストをgz圧縮してして保存してあります。

gzip mpd-0.17git-20120226rtopt.diff

展開の仕方は

gzip -d mpd-0.17git-20120226rtopt.diff

です。

RTopt関連

MPDを構成するスレッドのスケジュール方法、優先順位の自由な設定と MPDの仮想空間を実メモリへの割り当てを可能にするためのパッチです。
内容の詳細については「MPDのチューニング・パッチ(1)」以降の記事を参照してください。
0.16版用と0.17git版用があります。0.17git版は最新のgit版専用です。0.16用は0.16.6まではOKなのを確認しています。
なお、今のところプロセスの優先順位が動作するmpdはdebian系列のみです(Redhat系ではエラーにはなりませんが、優先度の指定は無視されます)。

buffer.c.diff

目的はmpdのシーク機能の強化です。クラシックの長い曲を途中から聴くのに重宝します。
RTopt関連といっしょに公開され、バンドルしてアーカイブしてあるので、間違えやすいのですが、RTopt機能と独立したパッチです。RToptパッチとは関係なくかけることができます。
また、次に述べるJurgenさんのDSDネイティブ再生可能なヴァージョンと併用することで、dff、dsfファイルのシークも可能となります。

dCSV10.diff

Jurgenさんが今年2月に公開されたDSDネイティブ再生のためのmpdソースコードに対し、DoP対応機能を追加するパッチです。
今、Jurgenさんのページを覗いたら、7月14日に大幅に更新されていて、git版のmpdにsupport for song duration 機能が追加されていること、次の版で tag support 機能が追加予定のことなどが書かれていますので、このパッチの賞味期限はあとわずかかもしれません。
現時点で、debian系列のlinuxでデュレーション機能とタグ機能有りのDoP対応のmpdを作成するためには、このパッチしかないので、公開しておきます。対応するソースはリンク先のページの一番下にダウンロードリンク(mpd 0.17 sources with my DSD-over-USB/PCM code added)があります。
VortexBoxをお使いの方は上記リンク先からビルド済のrpmをダウンロードした方が速いかもしれません。
mpdのDSD再生に関してはMPDのDSD対応MPDのDSD対応(2)をご参照ください。


mpdのビルド方法については、このサイトと掲示板に山ほど情報がありますので、検索をかけて調べてください。

(PC_Audio)   2012/07/21

コメントする

Chord QuteHD


近所のオーディオショップに試聴の予約をいれておいてのですが、一月後にようやく届きました。オーディオショップの話だと「評論家先生方に大人気でなかなかまわってこなかった」とのことでした。



DSDネイティブ再生にはお勧めだと思います。

写真は Voyage MPD から DDC(RUDD14)を介して QuteHD を経由しプリアンプ(JOB Pre)で再生している時のものです。 どれも軽量級なのだけど、良い音がします。
写真で分かるように、DDCとQuteHDは光で繋いでいます。QuteHDの同軸はBNCで、ケーブルを持っていないのでパス。光で繋ぎました。
この接続でVoyage MPDのMPDをgit版に入れ換えたもので、問題なくDSDネイティブ再生できます。
DSDネイティブ再生の音は素晴らしい音だと思いました。
ソースは手持ちのSACDをリッピンクしたものを使いました。グールドのゴールドベルグなどつぶやき声が本当にリアルに聞こえます。DSD方式のメリットだなぁと思いました。臨場感もリアルですね。そこにピアノがあるという音がします。

残念ながら、asioのドライバがないので、Windows環境ではDSDネイティブ再生できませんでした。Linuxでネイティブ再生できて、Windowsは駄目というのも不思議な世界ですね。

Linux、USB接続では、alsaがデバイスを認識しません。従って、上記のようにDDCを間に入れる接続方式をとる必要があります。
176KHzのDSDとPCMはちゃんと自動的に区別され、再生できます。
192KHzのPCMも試しましたが、安定して再生できました。
光で再生したPCMの音はまあまあなので、お勧めだと思います。
WindowsのPCM再生もドライバをインストールする必要がありますが、問題はありませんでした(foobar 2000を使用)。

ただ、オーディオショップには申し訳ないのですが、時既に遅しだったのですよね(^^;;;。「時既に遅し」の意味はそのうち書きます。

(PC_Audio)   2012/07/16

コメントする

VortexBox の使い方(4) - mpd.confの編集


前回のコヒーブレイクの続きです。
/etc/mpd.conf が残されているので、騙される(^^;;;のですが、前回紹介したスクリプトをご覧になれば分かるように VortexBoxの mpdの設定ファイルは /etc/vortexbox-player/mpd0.conf となります。
内容は

# Created by Configure VortexBox Player on June 18, 2012, 9:20 pm
# If you edit this file it will be over written the next time you make
# changes in the Configure VortexBox Player GUI.
#
music_directory  "/storage/music/flac"
playlist_directory  "/var/lib/mpd/playlists"
db_file  "/var/lib/mpd/database"
log_file  "/var/log/mpd.log"
pid_file  "/var/lib/mpd/pid"
state_file  "/var/lib/mpd/state"
sticker_file  "/var/lib/mpd/sticker.sql"
auto_update "yes"
port  "6600"
zeroconf_enabled  "yes"
zeroconf_name  "VortexBox Player"

audio_output {
        type            "alsa"
        name            "VortexBox Player-1"
        device          "hw:1,0"
        dsd_usb     "no"
}

となります。シンプルなものですね。
要注意なのは、コメントにあるように、このファイルを修正しても次にVortexBox Playerの登録変更をすると、変更内容が消えてしまうこと。このファイルを作成しているスクリプトを修正する必要があります。
という次第で長いコーヒブレイクは終わりで、本題に戻ります。

さて、ここから先の内容は VortexBoxの設定スクリプトを操作することになります。VortexBox は全ての操作は webから行うという設計思想で作られていますので、かなりリスキーです。下手をするとVortexBoxの動きが奇怪しくなり、音が出なくなり、結局、システムを再インストールするはめとなります(経験有り^^;;;)。バックアップをしかっりとっておくか、VmwarePlayerなどの実験用環境を用意するかして行って下さい。

emacs をインストール

VortexBoxはディフォルトでnanoというコンソールエディターが入っていますが、使いづらいので、emacsをインストールしましょう。
やり方は

yum install emacs

です。
尚、v1.10では atrpms が使えませんので、

yum --disablerepo=atrpms install emacs

とする必要があります。

mpd.confの編集

/opt/vortexbox/mpd_config.php という php のスクリプトを修正する必要があります。
phpとは、松下幸之助の出版社ではなく(普通はこちらですが^^;;;)、インタネット用のスクリプリト言語です。ここの情報があります。
僕はこのスクリプト言語を使ったことはありませんが、文法を知らなくても修正は出来ます。
例えば、上に引用した mpd0.conf は

        dsd_usb     "no"

となっていますが、これはディフォルトの yes を no に修正し、僕の環境に合わせています(要するに、「DSDネイティブ再生する環境はないので、pcm変換して再生してね」ということです)。
やり方は

emacs /opt/vortexbox/mpd_config.php
//                      $configcontent.='       dsd_usb     "yes"'."\n";
                        $configcontent.='       dsd_usb     "no"'."\n";

“yes”となっている行をコメントアウトし、“no”という行に変えるだけです。emacsのcopy&paste機能を使えば簡単に出来ると思います。
/opt/vortexbox/mpd_config.php は処理の前半(というか大半)にmpd.confのデータを生成する処理があり、その前半が共通のデータ処理、後半が mpd_auto_update 指定されている時のデータを生成する処理です。dsd_usbは後半のmpd_auto_update 指定されている時の処理にあります。
この仕組みがわかれば、mpd.confを使ったチューニング行を挿入することもできます。
例えば、buffer_before_playを90%にしたければ

emacs /opt/vortexbox/mpd_config.php
                        $configcontent.='       buffer_before_play     "90%"'."\n";

という行を適当な場所に挿入すればいいです。

$configcontent.=''."\n";

の間に挿入したい行を埋め込めばいいわけです。

(PC_Audio)   2012/07/14

コメントする

VortexBox の使い方(3) - VortexBox Player & MPD



Vortex をブラウザでコントロールするための top画面です。LANに接続された Vortex が立ち上げられていれば、http://vortexbox/で呼び出すことができます。画面左に操作をするためのアイコンが並んでいます。

VortexBox Player の登録

VortexBox はインストールしただけのディフォルトの状態ではミュージックサーバに関連する機能(Auto CD Ripper、DLNA Server、Samba Server、Logitech Media Server)のみ有効です。プレーヤ機能(VortexBox Player)は自分で登録する必要があります。
やり方は簡単でブラウザからhttp://vortexbox/vortexbox-player.phpにアクセス(あるいは画面左の下から二番目のスピーカのアイコンをクリック)すると、



このような画面が表示されますので、「Submit」というボタンを押すだけで登録できます。
それぞれの項目がどういう意味かというのは「i」ボタンを上にマウスを持っていけば、ヘルプが表示されます。例えば Soft vol. の「i」だと

Check this box if you want to be able to control the volume of this player from your VortexBox. Leave this disabled if you have volume control on the amp your are connected to. Uncheck this for bit perfect sound to a USB or s/pdif DAC.


という具合に表示されます。
「なるほど alsa(mpd) の指定をここから出来るようにしているわけね」と分かります。
従って、Defaultの部分は「hw:n,n」と変更すれば、接続されているどのハードでも指定できます。


ここでまた雑談。
実はVortexBox の使い方(1)の VortexBox の紹介で
『VortexBox とは何かというと、Linux上で動く種々の既存のサーバ/アプリケーションをそのまま利用して、MVCモデルのWebベースのアプリケーションで操作可能なようにした、Fedoraのディストリビューションです。』
このように書いたのですが、普通(?)の人には「何じゃ、この日本語は」となるから、最初の記事のように変えました。
それで「既存のサーバ/アプリケーション」とは

CDリッパー
RipIT /etc/ripit/config
カバーアートの取得
getcoverart
音楽サーバ
LogitechMediaServer
dlnaサービス
minidlna.service /etc/minidlna.conf
バックアップサービス
rsync
WindowsNAS
samba
プレーヤ
mpd & vortexplayer /opt/vortexbox/mpd_config.php(mpd.confの元データ)

です。上記の内容は /opt/vortexbox/doaction.sh などで確認できます。この他、VortexBox が Linuxのどんな機能を使っているかは doaction.sh を見れば分かります。
Webベースアプリケーションの仕組みは html のソースと /var/www/html/ を覗けば大体分かります。
それぞれのページのhtmlから対応するphpスクリプトが呼び出され、phpから実際の処理をコントロールするシェルスクリプト(/opt/vortexbox/にあります)が呼び出されるという形になっています。
ということなので、お勧めはしませんが(^^;;;、これらのコードをいじれば、自分好みの MyVortexBox にすることができます。

また、『「i」ボタンを上にマウスを持っていけば、ヘルプが表示されます』と書きましたが、どういう仕組みになっていると /var/www/html/help/ にヘルプファイル(htm)が用意されていて、これがマウスをかざすと呼び出されるという仕組みになっています。このヘルプ、英語なのが玉にきずですが、とてもよく書かれています。

最新版にアップグレード

前回、僕の環境ではv2.0はインストールできないと書きましたが、VMwarePlayerではあっさりインストールできました。メモリが1GB以上で大記憶がハードディスクというシンプルな構成であれば問題ないようですね。
v2.0のISOイメージでインストールした場合、mpdは0.17gitですが、

[dsdiff] dff

となり、DSDネイティブ再生のできない版となっています。v2.0のISOイメージそのままではカーネルやmpdのバージョンは多少古くなるようで、DSDネーティブ再生するためには、最新版にアップグレードする必要があります。

やり方は簡単でブラウザからhttp://vortexbox/upgrade.phpにアクセスするか、top画面左の一番下のアップデートアイコンをクリックすると、



このような画面が表示されますので、画面上の左の「Start Upgrade」というボタンを押すだけでアップグレードできます。

ただし、これだけだと、mpd はアップグレードされませんので、VortexBoxにログインして、以下のコマンドを実行する必要があります。
これは 1.10 -> 2.0 の場合もやる必要があると思います。

yum clean all; yum update
setup-vb-player

操作はWindowsからssh(Putty)でおこなうのが楽だと思います。接続は、前々回の記事に書きましたが、ホスト名(vortexbox.local)で行えます。詳しくは前回の記事とそのリンク先を参照して下さい。
それぞれの操作は結構時間がかかります。のんびりコーヒーブレイクを挟みながらやりましょう。

アップデートが完了すると

[vortexbox.localdomain ~]# /usr/bin/mpc version
mpd version: 0.17.0
[vortexbox.localdomain ~]# /usr/bin/mpd -V
mpd (MPD: Music Player Daemon) 0.17~git
・・・・
[dsdiff] dff dsf
・・・・

という具合にMPDはDSDネイティブ再生可能な版に入れ替わります。この時のdffファイルの再生モードはDSDネイティブが設定されています。従って、DSDネイティブ再生可能な機器をもっていない場合は音は鳴りませんので、ご注意ください。変更方法は次回に書きます。

という次第で、コーヒーブレイク(また雑談)。
mpd と vortexbox-playerの起動は /opt/vortexbox/mpd_config.php と /opt/vortexbox/vbplayer というシェルスクリプトで行われます。
/opt/vortexbox/mpd_config.php はブラウザから vortexbox-player の登録された時に mpd.conf を作成するためのスクリプトです。
/opt/vortexbox/vbplayer の内容は

PORT=$(($1+6600))
export MPD_PORT=$PORT
/usr/bin/mpd /etc/vortexbox-player/mpd$1.conf
/usr/bin/vortexbox-player -m $2 localhost

となり、mpd と vortexbox-player本体を起動しているだけです($1は0、$2はMACアドレス)。
これらのスクリプトはシステム立ち上げ時には

/etc/init.d/vortexbox-player -> /opt/vortexbox/vbplayer

で、ブラウザからは

/var/www/html/vortexbox-player.php -> /opt/vortexbox/doaction.sh -> /opt/vortexbox/mpd_config.php -> 
/etc/init.d/vortexbox-player -> /opt/vortexbox/vbplayer

で、呼び出されています。
mpd.conf を作成する mpd_config.phpを独立させることで、起動時の処理とブラウザからの登録の後半が同じにできるわけです。
こういう具合に、処理の中核を担う「Model」は /usr/bin/ に、表示・出力を司る「View」は/var/www/html/に、入力を受け取ってその内容に応じてViewとModelを制御する「Controller」は /opt/vortexbox/ と /etc/init.d/ に置くことで、MVCモデルを実現しているわけですね。分かりやすいです。

長くなったので、以降は次回に。

p.s. 七夕ですね。

(PC_Audio)   2012/07/07

コメントする

top page     previous page     next page

mail