2013年9月29日日曜日
Cubie Juke Box
とりあえず適当に色々触っていましたが...
この記事を見て「2倍の楽しさ秘めた、高音質ネットワーク機 CD-N500」、なんとなく目標が決まりました。
Cubie Juke Box
[機能]
1) CDのリッピング
cdparanoia を使用する。CDDBからデータを取得する部分をどう実現するか悩み中。
2) AAC or AC3 (DollyDigital?) へのエンコード
libav を使用する
3) SATA接続のHDD搭載
NTFSは、NTFS-3gを使っているので性能がイマイチです。
FATは4Gの制限があるから後々の事を考えるとダメ。
なので、Androidをちょっと改造して、ext4形式でHDDをマウントした。
4) S/PDIF でのパススルー出力
実験中。AC3で圧縮したデータをデコードせずに、そのままアンプに送りたいなぁ...
5) DLNA サーバー & クライアント
サーバーは minidlna を移植して実現できた。
クライアントは、FireAir Receiverというアプリが標準でインストールされていて動作するけど、ソースが公開されているものを探してます。
とりあえず現状で、Skiftaと言うアプリを使って、ソースとレンダラをCubieboard2にすると、スマホで再生操作ができた。
この話題は、また今度。
6) LCDにステータス表示
将来的には漢字が表示できるLCDが欲しいけど、そう言うのがまだ見つからない。
7) 再生・設定アプリ
一応操作できるように自前アプリを作る。Cubieboard2は、IRリモコンも使える。
操作するために、HDMIで画面を出すのもイマイチなので、Skiftaみたいにスマホからも操作できるようにしたい。
こんな感じです。
2013年9月27日金曜日
cubieboard2 + SPDIF + Passthrough
実はこれが一番の目的でした。
パススルー!!です。
折角SPDIFで外部のオーディオ機器と接続しているのですから、PCMに変換せず、そのままのDTS形式でデータを投げたいのです。
でも方法が分からず色々悩みましたが、やっとその答えが見えつつあります。
1.ドライバのソースをひたすら眺める。
A20 の SPDIF のドライバを以下のディレクトリに見つけました。
lichee/linux-3.3/sound/soc/sun7i/spdif/
この中のソースを眺めていると、気になるソースを発見!!
/*add the pcm and raw data select interface*/
switch(params_channels(params)) {
case 1:/*pcm mode*/
case 2:
fmt = 0;
break;
case 4:/*raw data mode*/
fmt = 1;
break;
default:
return -EINVAL;
}
う~ん。そんな物なのでしょうか?
チャンネル数が4ならRAWモード??
なんか微妙ですが、たぶんこれです。
2.再生する術を考える。
externalの下を眺めていると、使えそうなツールがありました。
その名も tinyalsa です。
そこで、先ほど得た知識を元に、tinyplay.c にパッチを...
チャンネル数を無理やり 4 に変えます。
// config.channels = channels;
config.channels = 4; // RAWモード
最後に、どっかのWEBサイトで拾ってきた DTS の WAV ファイルをこのツールで再生してみます。
# tinyplay test.wav -D 2
すると...わたくしの所有する SONY MDR-DS5100 (古っ!!)の DTS のインジケータが光輝きました。
なんとなく、音質が良くなった気がしますが、それ以上に、この方法で音楽を再生すると、Androidの操作音とMixされることが無くなるので、とても良い感じです。
操作音とMixされると、雑音っぽいのが混ざるのが気になったので...
とりあえず、パススルーっぽいものは動いています。
ですが、実用に至るまでには、もう少し調べることが残ってます。
何故ならDTSのデータの作り方が分かってません。
2013年9月21日土曜日
cubieboard2にI2C液晶をつける
トスリンクを買うときに、一緒にStrawberry LinuxのLCD液晶を買ってましたので、今日はそれを接続してみました。
接続方法は...
[LCD] 1 - [Cubieboard2] U14 44 (VCC 3.3V)
[LCD] 2 - [Cubieboard2] U15 6 (TWI1-SCK ※1)
[LCD] 3 - [Cubieboard2] U15 7 (TWI1-SDA ※1)
[LCD] 4 - [Cubieboard2] U14 42 (GND)
[LCD] 5 - [Cubieboard2] U14 44 (VCC 3.3V)
※1 I2Cの2つは3.3KΩの抵抗を使って、VCCにプルアップ接続してます。
毎度のことながら、これで正解かは、一切自信ありません。
動作確認...
テスト用に i2c-tools をビルドしてインストールします。
これも、いつもの事ながら、externalにコピーしてAndroid.mkを用意してビルドします。
特に、エラーもなくすんなりとビルドできました。
無事にLCDをcubieboard2から認識できているか確認します。
# i2cdetect -y 1
結果は...
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
第一関門突破です。
無事に認識しているようです!!
次にOkiraku Programmingさんのスクリプトを参考にして、以下のコマンドを入力しました。
# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x78 0x5e 0x6c i
# i2cset -y 1 0x3e 0 0x0c 0x01 0x06 i
# i2cset -y 1 0x3e 0x40 0x31 0x32 i
すると、LCDに "01" と表示されました!!
これで動作確認できたので、今度は自分でプログラムを組んでみたいと思います。
2013年9月19日木曜日
cubieboard2 で AAC変換
完全に迷走気味な気がしますが、CDからリッピングしたデータをそのまま保存するのはサイズが大きいので、AACでエンコードしたいと思います。
そこで、libav を cubieboard2 にインストールしました。
方法は、gibhubのリポジトリをダウンロードして、android42/externalの下に放り込んでビルドしました。
NDKとか設定するが日頃から面倒で、cubieboardみたいにSDKのソース一式がある場合って、externalの下にコピーすれば何とかなるもんです。
ただ、今回は、time.h がどうしてもシステムの方を参照してしまうので、インチキっぽいですが、av_time.h とかファイル名を変えてエラーを回避しちゃいました。
その時、adbのシェルで実行したコマンドは以下のような感じ
# avconv -i track01.cdda.wav -acodec aac -strict experimental -f mp4 track01.m4a
5分の曲を1ファイル変換するのに 約1分
完成したファイルのサイズは 50MB -> 7MB で 約1/7 です。
デュアルコアのうち、片方しか使ってないようなので、CDからのリッピングと並列で行えば、なんとか実用可能なレベルだと思います。
2013年9月18日水曜日
cubieboard2 + SPDIF
昨日の続きです。
トスリンクの端子が届いたので、早速、cubieboard2に接続してみました。
[部品]
1) 送信用光コネクタ基板「TX177_D」
2) Photolink送信用:PLT133/T9
デジットさんのページで紹介されていた部品です。
これを組み立て、以下のように cubieboard2 と接続します。
[TX177D] 1 - [Cubieboard2] U14 42 (GND)
[TX177D] 2 - [Cubieboard2] U14 44 (VCC 3.3V)
[TX177D] 3 - [Cubieboard2] U14 41 (SPDIF)
※U14は、SATA端子がある方のコネクタです。(参考)
これで、トスリンク端子の増設が完了しました。
Cubieboard2 の F/W の修正は、sys_config.fex の記述を1つ変更するだけです。
(変更前) spdif_used = 0
(変更後) spdif_used = 1
最後に、Android起動後、設定画面でサウンド出力先をSPDIFに変えればOKです。
【注意!!】
私はハードウェアの事が良く分かってません。
もしこれで、あなたのcubieboard2 が壊れても一切責任は取れません。
この回路に何か問題がありそうなら、是非教えて頂きたいです。m(_ _)m
cubieboard2でデジタルオーディオ
私の青春時代ってレコードはCDに、テープはMDに、ビデオはDVDにと、
アナログがどんどんデジタルに置き換わっていった時代で、
自分も何かそこに未来を感じていて、とても夢があふれていた時代でした。
まぁ、一通り置き換わった今、だから何って感じなのですが...
そんなこんなで、夜中にヘッドフォンで音楽を聴きながらコーディグを勤しんでますが、
突然盛大なノイズが乗ることがあります。
まぁ、USBで通信している時なんですけどね...
何せヘッドフォン端子がUSB端子の隣にあり、USBを使うたび、
ピ~ヒャラヒャラと... お前はどこのテープリーダーだって感じです。
結局、人が音を聞く時、最後はアナログで、その大切なところで、
ノイズが乗りまくるわけです。
安物のマザーボードには、私の青春の1ページだったトスリンク
(※最近、正式名称を覚えました。以前は、ずっと光端子...)
なんて付いてません。
もっと、音楽を聴きながら、快適にコーディングをしたい!!
最近流行りの、USB DAC的な事をしたい。
ただ、USB DACは個人的に、そんな馬鹿なってことが多いので、
ちょっと敬遠気味です...
そろそろ、前置きが長くなりましたが、
トスリンク端子が欲しいです。
それで、SONYのワイヤレスヘッドフォンと繋ぎたいです。
次のcubietrackには付いているらしいのですが、まだ売ってません
しょうがないので、cubieboard2にトスリンクを追加します。
とりあえず部材は注文しました。
でも、まだ届いてません。
とりあえず今日は、素材となるCDのデータを吸い出すために、
cubieboard2上にcdparanoiaを移植しました。
cubieboard2だと、USB接続のDVDのデバイスパスが以下のようになるみたいで、
この部分だけcdparanoiaの改造が必要でした。
DVDドライブのパス : /dev/block/sr0
改造したソース : scan_devices.c
static char *cdrom_devices[]={
"/dev/block/sr?", <--- 追加
"/dev/cdrom",
"/dev/cdroms/cdrom?",
"/dev/hd?",
:
無事、cubieboard2で、CDのデータをリッピングできました。
ただ、薄々気づいているんです。
当面の興味の対象がCubieboard2で、そのボード上でデバッグしてて、
音楽を再生している場合じゃないって事。
結局、一番近くにあるノイズだらけの端子に、ヘッドフォンを繋ぐ私がいる事実...
2013年9月4日水曜日
公式のSDK
CubieBoard2のSDKが公開されていないなんて間違いでした。
検索すれば普通に出てきますね。
Tutorials for CB2
なんで今まで気が付かなかったのだろう...
でも、IEでダウンロードすると何故かファイルの拡張子が tar になって展開できません。
FireFoxでダウンロードし直しです。
多分、また10時間位かかります。
検索すれば普通に出てきますね。
Tutorials for CB2
なんで今まで気が付かなかったのだろう...
でも、IEでダウンロードすると何故かファイルの拡張子が tar になって展開できません。
FireFoxでダウンロードし直しです。
多分、また10時間位かかります。
登録:
投稿 (Atom)