ClariS 2ndアルバム SECOND STORY



 

いつの間にか2ndアルバム発売することになっていたんですね~知ったのは発売日3日前でした。( ̄~ ̄;)
とりあえず、いつもどおりDVD付きの方を JoshinWeb で予約~
クーポン利用で2652円+133ポイントでした。

内容はいつも通りのCrarisって感じですね。Clarisの曲ってエレキギターを使わないか使っていても目立たない曲なんですよね。担当の作曲家は何人かいるようですが今回もそんな感じです。
DVDの方はMusicVideoが幾つか収録されています。






Raspberry Pi I2S 出力 24bit 48kHz 再生

公式フォーラムではこのドライバをちょこっと修正で192kHzでも再生出来た~って書き込みがありますね。

じゃ~試してみよう!...と、思っても192kHzなデータは持ってません。
そんなわけで24bit 48kHzを試してみました。
PCM1716を使えるようにしたのもこれを試したかったからなのよね~(´―`)

ちなみに何もドライバを修正せずに48kHzの音楽を鳴らしてみるとハングアップしてしまいます。
電源をOFFにするしかない状態です。( ̄~ ̄;)

修正前にちょっと準備します。
クロスコンパイル環境でコンパイルしてもいいのですが、何度も「コンパイル > RPiに転送」は面倒くさいので RPi 上でドライバだけコンパイル出来るようにします。
https://github.com/koalo/linux
からソースコードの linux-rpi-3.8.y-asocdev.zip をダウンロードし、/usr/src に展開します。
ディレクトリ名は 3.8.10+ とでもしておきます。
既にクロスコンパイル環境で作成したカーネル 3.8.10+ で起動しているものとします。
cd /usr/src/3.8.10+
zcat /proc/config.gz > .config
make oldconfig
make modules_prepare
クロスコンパイル環境から Module.symvers を RPi の /usr/src/3.8.10+ へコピー
これでドライバのコンパイル準備完了です。

まずは /usr/src/3.8.10+/sound/soc/bcm2708/bcm2708-i2s.c 420行目辺りを修正します。
今回はIISフォーマット入力可能なDACを使用するため、以前紹介した標準フォーマット出力の修正は行いません。
//      if (bcm2708_clk_freq[clk_src] % target_frequency == 0
//                      && bit_master && frame_master) {
//              divi = bcm2708_clk_freq[clk_src]/target_frequency;
//              divf = 0;
//      } else {
                uint64_t dividend;

                /*
                 * Overwrite half frame length, because the
                 * above trick is not needed.
                 * This is fixed, because a bit clock of 64*fs
                 * seems to be what most codecs want.
                 * Is it necessary to have this dynamic?
                 */
                half_frame = 32;
                target_frequency = sampling_rate*half_frame*2;

                clk_src = BCM2708_CLK_SRC_PLLD;
                mash = BCM2708_CLK_MASH_1;

                dividend = bcm2708_clk_freq[clk_src];
                dividend *= 1024;
                do_div(dividend, target_frequency);
                divi = dividend / 1024;
                divf = dividend % 1024;
  if (sampling_rate == 48000) {
     divi = 162;
     divf = 3000;
  }
//      }
どうやら48kHzの場合、if文のほうに流れて後の処理でハングアップするようです。
ので、コメントアウトしちゃいます。
でもって、diviとdivfで出力周波数を設定するようです。else内の計算だと48.1kHzになっちゃうので48kHzデータの場合は自前で値を代入しちゃってます。上記の数値でだいたい48.008kHzになります。
で、コンパイル!
cd /usr/src/3.8.10+/sound/soc/bcm2708
make -C /usr/src/3.8.10+ M=/usr/src/3.8.10+/sound/soc/bcm2708 modules
次に /usr/src/3.8.10+/sound/soc/codecs/tda1541a.c 24行目を修正します。
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
32bitのデータを受け付けるようにします。
この修正をしない場合は mplayer かドライバが16bitに変換するようです。
あと24bitを表す定数は存在するけど意味ないっぽいです。
mplayerだと24bitの音楽ファイルでも32bitとして扱っているみたいです。この辺はよくわかりません~(;´д`)
で、コンパイル!
cd /usr/src/3.8.10+/sound/soc/codecs
make -C /usr/src/3.8.10+ M=/usr/src/3.8.10+/sound/soc/codecs modules
でもって、ドライバを登録します。
cd /usr/src/3.8.10+/sound/soc/bcm2708
sudo insmod snd-soc-bcm2708-i2s.ko
sudo insmod snd-soc-rpi-tda1541a.ko
sudo insmod ../codecs/snd-soc-tda1541a.ko
あとはmplayerなどで再生すればOK!ヽ( ´ー`)ノ
もちろん、DAC側でIISを入力出来るようにしておく必要があります。PCM1716だとIIS、IW0ピンをHにします。


上がデータ、下がLRクロックです。24bitで出力されているようですね。


さて、16bit 44.1kHz と 24bit 48kHzの違いですが...あんまり変わらない...( ̄~ ̄;)
市販のAVアンプだと結構変わった印象があったので、ちょっと期待していたのですが残念ですなぁ。

MPDで使用する場合は /etc/mpd.conf を以下のように修正しておきましょう。
audio_output {
        type            "alsa"
        name            "ALSA I2S Device"
        device          "hw:1,0"        # optional
#        format          "44100:16:2"    # optional
}
formatはコメントアウトしておかないと常に 44.1kHz 16bit で出力されるようです。


あと、ついでなのでOPアンプを NJM2114DD から OPA2604 に変えました。
OPアンプの交換は変化がわかりやすいですね~
NJM2114DDは平べったい音で眠気を誘う音でしたが、OPA2604はメリハリがあり、聴いてて楽しい音です。
ここでフト思ったのですが、眠気を誘うアンプって以外と需要あったりしないのだろうか?
そんな時はNJM2114DDのような音をお試しあれ~(´―`)




RaspberryPiでMPD

RaspberryPi I2S出力 + PCM1716 + mplayer だとリスト再生時の最初と最後と曲間のポップノイズがかな~りひどいです。
ということで、ギャップレス再生に対応しているらしいMPDを試してみることにしました。

ネットの情報を元にインストール('~')
インストールは簡単ですね。
sudo apt-get install mpd mpc
でもって /etc/mpd.conf を編集~
#bind_to_address                "localhost"
mixer_type "disabled"

audio_output {
        type            "alsa"
        name            "ALSA I2S Device"
        device          "hw:1,0"        # optional
        format          "44100:16:2"    # optional
}
緑色は編集、赤色は追加です。

ここで念のためRPiを再起動

音楽ファイルはコピー面倒なので、WindowsマシンのiTunesフォルダをマウントして /var/lib/mpd/music/ にシンボリックリンクを作成しました。
mpc update
とすれば音楽ファイルリストを更新してくれます。

これで再生準備完了~
ただ、このMPDはサーバープログラムなので、再生指示は別のクライアントアプリから行う必要があります。
とりあえずWindows用のアプリ Cantata を使ってみました。



出力先はI2Sの方にして、さっそく再生!

普通に再生されて、曲間のポップノイズもでなくなりました。
ただ、プレイリストの最初と最後はポップノイズでちゃいますね~(´~`)
どうにかならないものか...(>_<)



RaspberryPiにPCM1716をつないでみた

以前 RaspberryPi の I2S 出力に PCM1716 を繋ごうとしたけど、システムクロック出力がなくて繋げませんでした。

しかし、世の中には便利なICがあるんですね。ネットを徘徊していると ICS570 という周波数をn倍してくれるICがあるそうです。
これを使えば PCM1716 も繋げそうですね。
ただリアル店舗では売られてないのかな?
でも、RSコンポーネンツなどで注文できます。今回は3.3V用のICS570Bを注文しました。

届いたのがこちら。



小さめのICなのでピッチ変換基板に乗せています。

PCM1716を繋ぐには一例として44.1kHzの256倍のクロック信号が必要です。
RPiのI2S出力は片チャンネル32ビットなので、ビットクロックが既に64倍になっています。
ってことはこれを4倍すれば256倍になることになります。

実際にICS570を動かしてオシロで信号を見てみると...



ほぼ4倍されてますね~(´~`)
黄色の線がRPiのビットクロック。青色の線がICS570の出力。

さっそくPCM1716を繋いでみました。
、またまたノイズに悩まされることに...



結論をいいますと、矢印で示した白い線を追加すればノイズが消えてくれました。
GNDってコの字型でも繋がってればOKと思っていたのですが、だめなんですかね。
白い線を足すことでGNDが口の字に繋がることになります。
こんなことでノイズが出たり消えたりするなんて、素人には難しすぎるわ~(>_<)

RPiから直接PCM1716に繋ぐとノイズがでてたので、間に74HC04を挟んでいます。
 

ちょこっとギュウギュウ詰めにしてみました。

音に関しては...とりあえず鳴っています。
前にCS8416と繋いだ時はLPFとかなしでもクリアに聞こえていた気がしたのですが、今回はLPFないとノイズだらけ...
こういうもんなんですかね~( ̄~ ̄;)



Perfume WORLD TOUR 1st ライブDVD

Perfume初のワールドツアーDVD~発売日に届いてはいたけど、ホームシアターの環境を片付けていたので視聴するのがずいぶん後になってしまいました。

会場は大きくなく日本のライブDVDだとGAMEみたいな感じだったかな。
曲目はほぼコンピレーション・アルバム「Love THE World」の内容です。

Spending all my timeとOPENINGあたりがDVDでは初収録になるかと思います。
OPENINGはグローバルサイトの初期に使われていた曲ですね。ダンスもモーションデータが公開されていたアレです。今までは3DCGでしかダンスを見れなかったけど、このライブDVDなら本人達のダンスが見られます。

映像は会場が狭い分、3人一緒に映っている映像が多めになっています。
が、残念なことにその時は3人の周辺にモヤモヤしたノイズが目立っちゃいますね。DVDだとこれが限界なのか...

そろそろBlu-rayも出してほしいと思っていたら出るんですね!
「JPN」までのライブBDが8月に同時発売されます。ヽ( ´ー`)ノ
でも、古いのは画質が心配だな...DVDよりよくなっていることを祈るしかない~(>_<)/





RaspberryPi I2S mplayerディレクトリ再生

以前のhttp://abc002.blogspot.jp/2013/05/raspberry-pi-alsa-i2s.html
で紹介したI2S経由の再生を楽しんでいるのですが、
たまに音飛びするのが気になるようになってきた~(;´д`)

オーバークロックのせいかな~と思ってオフにすると、音飛びがさらにひどくなったぁ~(>_<)
ってことはCPUパワー使わないと思っていたけど結構使うのかな?
なら単純にデコード間に合ってない時があるのかも...ってことで
オーバークロックをオンにして、mplayerのオプションに -cache 1500 を付けてみました。
今のところ音飛びしてないですが、しばらく様子見ですね~。

あと、SDカードにいちいち音楽ファイルをコピーするのが面倒くさくなってきました。( ̄~ ̄;)
ってことでWindows共有フォルダをマウントしてしまいましょう。
sudo mount -t cifs -o username=XXXXX //192.168.XXX.XXX/itunes /mnt
という感じでマウントできます。

しかし、今度はいちいちプレイリストを作るのがめんどくさくなってきました...(;´д`)
mplayerでディレクトリ再生ってどうやってやるんでしょうね~
さっそくGoogle先生にきいてみると。
mplayer -quiet -ao alsa:device=hw=1.0 -cache 1500 -playlist <(find $PWD -type f)
とすればいいとのこと。
しかし、これはBシェル系でないと動かないっぽい。
私は普段Cシェルを使っています。こんな時はシェルスクリプトにすればいいですね。
適当なファイル名を付けて以下のような内容だけでOK。
#!/bin/bash
mplayer -quiet -ao alsa:device=hw=1.0 -cache 1500 -playlist <(find "$PWD" -type f)
たぶん、スペースのあるディレクトリでもいけるかと思います。
再生したいファイルのあるディレクトリに移動してシェルスクリプト起動するだけで
ディレクトリ内のファイルを連続再生してくれます。




Raspberry Pi で NFC

Raspberry Pi でNFCをやってみようと思い、ebayでモジュールを購入するも不良品か、使い方が悪いのか、うまく動かず。

そこでSONYの RC-S360 を購入~

(GPIOに刺さっているケーブルは今回関係ありません。)
(今はRC-S360手に入りにくい!? 同じように使えるかわからないけど、楽天Edyリーダーが中身はRC-S360という書き込みがレヴューにありますねぇ)

ちなみにやることはRaspberryPi特有な手順ではなく、Linuxなら同じようにできるようです。
まずは準備~(´∀`)
sudo apt-get install libusb-dev
sudo apt-get install libpcsclite-dev
wget http://libnfc.googlecode.com/files/libnfc-1.7.0-rc7.tar.gz
tar zxvf filename
cd libnfc-1.7.0-rc7
./configure --with-drivers=pn53x_usb
make
sudo make install
sudo ldconfig
makeは6分ほどで完了します。
今回はUSBのリーダーを使うので configure の引数でUSBのドライバだけ有効にしています。

さっそくサンプル実行するもエラー!( ̄~ ̄;)

最近のカーネルでは標準の?ドライバがロードされてしまうみたい。
lsmodすると確かにロードされている。
/etc/modprobe.d/raspi-blacklist.conf に以下の2行を追加してロードされないようにします。
blacklist pn533
blacklist nfc
でもって再起動

プログラムを動かして以下のようなエラーが出る場合はsudoを付けるといいです。
error   libnfc.driver.pn53x_usb Unable to set USB configuration (Operation not permitted)
nfc_test: ERROR: Unable to open NFC device.
が!
ここからが長かった...(;´д`)
NFCってタグがあって、リーダーがあってプログラムがあればすんなり動くものだと思っていたらそんなことなかった...

まずは libnfc がサポートしているリーダーを使わなければなりません。
これはあらかじめ調べて RC-S360 を購入したので問題なし。

はまったのはタグの方で、いろんな種類があって種類ごとにプログラム側で読み方を変えなくてはならないのです。
最初は MIFARE Standard (Classic) というタグ(カード)で試してたんだけど認証がうまくいかず、がんばっても無理でした。(;´д⊂)
で、Androidで手持ちのタグの情報をみていると1つだけ種類が違うのに気付きました。写真の左2つが MIFARE Standard (Classic) で一番右のが MIFARE UltraLight といタグになります。
このタグは アキバ大好き!祭り で購入した物です。
MIFARE UltraLight は認証処理が必要なく、単純に読み書きする処理だけでいいのです。



今までの苦労はなんだったんだ~ヽ( ̄皿 ̄)ノ  ってくらい MIFARE UltraLight のタグだとあっさり情報の読み取りに成功しました。
しかし、問題がもう一つあります。
このタグは1枚しか持ってないので何枚か購入しようと思ったのですが、どこにも売ってない感じです。通販で1カ所あったくらいかな。
で、Google先生に聞いてみると、今はUltraLightの容量を少し増やした NTAG203 が主流のようです。記録可能容量は144バイト。



これなら八重洲のNFCショップや秋葉原のショップ、Amazonなどで購入可能です。



ということで、このタグにAndroidタブレットでNDEFのPlainTextを書き込んで読み込んでみました。


4バイトずつ読み込み先アドレスを変えつつ36回読み込むと144バイト読めます。
それを文字列として結合し、最後の行で表示しています。
「Raspberry Pi Test2」と表示されているので、うまく読み込めてますね。
前後に変なデータが付いてますがこれはおそらくNDEFのヘッダーなどと思われます。

サンプルプログラムは折りたたんでおきます。