2014年12月23日火曜日

 RaspberryPi+VolumioでCDリッピング なスクリプトができました。

 色々やってみたんです。
 cddaなオーディオディスクって直接マウントできないんです。
 google先生に聞いてもRaspberryPiにオーディオCDマウントしてファイル参照する手順出てこないんです。

cdda-srcインストールしようとしたけど、ソースが古すぎて、Volumioのカーネルに合わなくてコンパイルできない。

 gvfsでマウントできるか試したけど、X11なGUI環境無いと走らない。

 mplayerなら直接再生できるけど、VolumioのI2S直出しは16Bitだと左詰めな32fsBitCLKで鳴らない。尤も、これだとVolumioのMPDの意味が無い。

 I2Sドライバいじって64fsBitCLKに修正と思ったけど、ソースのダウンロードがよくわからん。

 今のVolumioでできる事は、リッピングしたWAVの再生がメインならば、リッピング環境起こせばいいやって事で、RaspberryPiで簡単CDリッピングなスクリプトになりました。

 /mnt/SDにwavファイルを置きます。
 /mnt/USBに置くよりずっとずっとイイです。SDカードの空き領域を活用しましょう。

 必須なプログラムは、python cdparanoia cdrdao ejectの4つ。あと、Webに繋がる事。
 pythonは、既に公開してるインストール済みのイメージ使ってもらえばOK。
 cdparanoiaとcdrdaoとejectインストールすれば使えるようになります。

 apt-get -y install cdparanoia cdrdao eject<enter>
  でインストール完了です。
 エラーが出るようなら
 apt-get update<enter>
  してからもう一回試してください。今のLinuxって簡単でいいです。

 cdrdaoで、フリーなCDDBのデータベースからディスク情報ダウンロードして、
 cdparanoiaでtrack01.cdda.wav ~ trackXX.cdda.wavをリッピングして、
 /mnt/SDにディスクタイトルのフォルダ造って、
 Voumio用のプレイリスト生成しつつ、
 曲名.wavにリネームしながら/mnt/SD/ディスクタイトルフォルダに移動します。

 CDDBデータベースにディスク情報無かった場合のチェックはしてません。
 WEBに繋がってないと、プレイリストもフォルダも造らないし、移動もリネームもしません。
 実行したフォルダにtrack01.cdda.wav ~ trackXX.cdda.wavが残ります。

 お試しいただくにあたっては、

0.USB接続な外部電源CDドライブを繋いでVolumio起動。DVDでもブルレイでも何でも可。
  USB電源なドライブなら外部電源付きHUB挟む事。
  dmesg|grep usb<enter> 
   で、認識されてるか確認できます。

1.スクリプト本体は/mnt/USBの下に置いてください。
 作業領域がCD容量である700MB必用なので、/home/Voumioに置くと容量不足で全曲リッピングできません。700MB以上の空き容量のUSBメモリを刺してください。

2. SDカードの空き領域を/mnt/SDにマウントしてください。 やり方はgoogle先生に聞きましょう。

3.SSHでログイン。
 cd /mnt/USB<enter>
 chmod +x CD2SD.py<enter>
 ./CD2SD.py<enter>
 で、CD読み込んで、終わるとejectします。

4.VolumioでLibralyUpdateすると、BrowseにPlaylistが表示されます。ADDすれば再生できます。

 ダウンロードはここから CD2SD.py CD2USB.py Volumio1.51PI_CD2USB_FSLED.zip

SDカードの空き領域をマウントするのがめんどくさいと思ったら、CD2USB.pyを使ってください。
/mnt/USBにフォルダ造って、その下に落とします。中身の違いはSDとUSBだけです。

でもねぇ、曲はSDに置いた方がいいです。手間惜しまないで試してみてください。
 
 Linux領域広げて、空きをSDにマウントしたCD2SD.pyインストール済みイメージは、16GBなSDカードじゃないと入りません
 こっちはGPIOにスイッチ付けて、ポチっとGNDに落とせば起動する仕様。後程アップします。
 今置いてあるイメージは、2GBSDカードに入りますがCD2SD入ってませんので誤解無きように。

12月23日19:00以下追記
2GBカードに、CD2USB.py組み込んだイメージファイル用意しました。
全領域Linuxにしました。CD1枚分は余裕で取り込めます。転送先はUSBメモリです。
4GB、8GB、16GBなカードに書込みしたなら、空き領域を/mnt/SDにマウントしましょう。

解凍してSDカードに書き込んで、USBCDROM繋いで起動して、オーディオディスク入れてください。
GPIOの7番ピンにGNDタッチなスイッチ付けてください。
長押しすると(5秒ぐらい)スクリプトが起動して、WAVファイルがUSBメモリに生成されます。これがデフォルト。

SDに生成する仕様が希望なら、空き領域を/mnt/SDにマウントして、mpc_FSLED.pyの120行目前後のCD2USB.pyをCD2SD.pyに書きかえて、リブートしてください。

CDDBにデータが無いオーディオディスクのエラーハンドリングが組まれていません。
参照データが無いと、ルートにtrack01.cdda.wav~traackXX.cdda.wavが残ってしまいます。
プレイリストも造られません。

 参照データが間違っていても、正しく機能しません。playlistを手動編集してやり直し。
 たとえば2枚組CDで、タイトルがCD1がdisk1、CD2がdisk2なのに両方disk1なんて間違いが、まれに存在します。只で使えるデータベースはこの程度かって気もしますが、正しいデータが殆どです

 誰でも使える完璧な環境構築は難しいですね。CDDBが正しければ、とりあえずはボタン一発でリッピングできます。お試しください。
 私が使った感想は、プレイリスト自動生成が気分いいです。フォルダからマウスでクリックして曲選んでをせずとも、ワンクリックでアルバム再生できます。

12月24日19:00以下追記
 フリーCDDBって、使えそうで使えませんね。
 日本人アーティストのディスクのタイトル、曲名が、全角文字は?で返ってくるのは仕方ないのですが、登録された曲名の最初のAがAだったりするの。他は半角なのに。
 もうね、誰が登録したの?確認しろよ!って感じ。

 CD2SD.pyスクリプト内のcdrdaoコマンドはコメントアウト。
 で、手動でcdrdao discid>playlist実行して、手動でplaylistファイル修正して、手動で./CD2SD.pyが正しい使い方って事になります。手動で造るplaylist内の曲名は、全角OKです。
 ボタン一発CD->SDは無理筋でした。

 リッピングはWindows機の方が便利にできますかね。でもUSBメモリへのコピーはまだいいとして、Volumio内のSD領域にコピーは、ネットワーク経由じゃないとできないからCD2SD.pyのレゾンデトールは保たれるかと。
 えふ様みたいにNASに吸い上げがスマートでいいのかなぁ。


バグ報告大歓迎です。コメント欄にお願いします。 

2014年12月15日月曜日

 archi3939様より投稿画像頂きましたので掲載します。完成写真拝見してからと思ったけど、ぎや様からそれとなくリクエスト有ったので。



 そっち側抜きましたか。この発想はありませんでした。
 まだ、仮組状態だそうです。部品が全てそろったら組み上げるとの事。

メールの文書 ここから
先ほどメールを送りましたが、ヤバイ部分は終わりました。後は明日部品が届き次第です。今し方秋月から明日納品の連絡が来ました^_^しかし、此れからRSに発注なので、まだまだ先かな?
タンデムのマスターのコネクターはメスなのでほぼ無傷で外すのは不可能だと思います。piは高々5000円弱ですので壊しても、何とかなりますが、マスター基板を駄目にしたら泣いちゃいます(^^;;しかも、オスピンは外すのは簡単です。半導体計測屋様がブログに書いている通りピンを壊すつもりで徹底的に加熱すればいいですので。
ここまで

 マスタ基板壊したら泣いちゃうけどRaspberryPiなら¥5000弱。尤もですね。


 この組み方だとJCJP5の上部に空間が開くので、私がやったようにピン曲げてジャンパワイヤ接続ってしなくてもジャンパワイヤ刺さります。ポテンショメータも半田面につけなくていいです。
 私が組んだのよりいいですねぇ。ユニバーサルエリアも見えるし。

 皆様、どうぞ工夫して組み上げてください。


 今、「CDリッピングしてWAVEにして、USBメモリに移して再生」が、めんどくさく感じてきたのでUSB-CDROM直結で鳴らせないか検討中。
 ALSAでアップサンプリングするか、 I2Sドライバ書きかえるか、ってやってます。
VolumioのI2Sって16Bitだと左詰めの変な信号になっちゃうから、正しく再生できないんです。
 SSHターミナルから再生、STOPはめんどくさいから逓倍基板のユニバーサルエリアにスイッチ付けるつもりです。

2014年12月6日土曜日

 逓倍基板の作り方について

 逓倍基板完成図 modelB用
  

 26ピンソケット、8ピンソケットは、仮組して支柱で固定してから半田付けしましょう。
 20ピンピンヘッダも、タンデム基板と仮組してから半田付け固定してください。
 変な応力掛かると劣化します。

 5V電源強化端子は、半田面に付けることもできます(2012なC4が付かなくなりますが)。
 部品名称はTB111-2-2で、秋月電子で1個¥20-

 逓倍基板部品面
 

 一番最初に添付のエミフィル付けてください。結構な熱容量必要とします。
 次にNB3N2302。次いでC10の0.01uF、C11の0.1uFの順序で。
 C5~9の取付順序は問いません。RaspberryPiの3.3V電源強化用です。
 C5=22uF PMLCAP
  C6=10uF PMLCAP
  C7=0.01uF ポリフィル ECHU1C103JX5
  C8=0.1uF ポリフィル ECPU1C104MA5
  C9=1uF ポリフィル ECPU1C105MA5
 C10=0.01uF ポリフィル ECHU1C103JX5
 C11=0.1uF ポリフィル ECPU1C104MA5

 RaspberyPi繋ぐので、R1のBitCLK側に22~47オーム付けます。
 R1=1608~2012 22~47オーム

 逓倍基板半田面

 C1,C2,C3,C4の順に実装してください。小さいからとC2を先に付けると、C1付きません
 RaspberryPiの5V電源強化用です。
 C1=22uF PMLCAP
  C2=10uF PMLCAP
  C3=1uF ポリフィル ECPU1C105MA5
  C4=0.1uF ポリフィル ECPU1C104MA5

 RaspberryPiでBitCLKを4倍か8倍かでMCLK造るので、R4、R5に100kオーム付けます。
 DSD_H/PCM_Lな信号は出てないので、R7に100kオーム付けて、L固定にします。
 R6は不要。ModelBではR3は使いません。ModelB+、A+、Pi2BならR3に22~47オーム。

 R1=22~47オーム Amaneroは不要 全てのRaspberryPiで必用
 R2=22~47オーム Amaneroで使用 全てのRaspberryPiで不要
 R3=22~47オーム Amaneroは不要 B+、A+、Pi2Bで必用
 R4=100K
 R5=100K Amaneroは不要 全てのRaspberryPiで必用
 R6=100K Amaneroで使用 全てのRaspberryPiで不要
 R7=100K Amaneroは不要 全てのRaspberryPiで必用

 全ての抵抗が付く事はありません。使用形態に合わせて、排他的に選んでください。


 全ての表面実装部品を付けてから、仮組して支柱で固定して、ピンヘッダ、ピンソケット付けてください。
 SV4とSV5で、タンデム基板マスタと信号の送受信します。
 SV5はFS1側だけマスタと繋がります。FS0側は、R5かR6でロジックレベル固定。


 modelB全体図

 反対側の真横から

 下からRaspberryPi modelB マスタ基板 スレーブ右 スレーブ左。
 一番上のピンヘッダは、以前はマスタ基板が上だったから。今は未使用。
 ポテンショメータは半田面に実装。


マスタの部品面

 右下のJCJP5の一部はジャンパワイヤで繋ぎます。スレーブ基板に干渉しないように折り曲げてます。
 JCJP1は、7-8,9-10,11-12,13-14,15-16,21-22にプラグ。写真は7-8の分1個不足してました。
 MSTJP1は、11-12,13-14,15-16にプラグ。
 JCJP5は、3-4,8-10にプラグ。2-5,1-7にワイヤ接続。これで22/49MHz対応になります。
 JCJP2は、ポテンショメータの調整次第ですが、MCLK反転/非反転どちらでもOKです。

 MSTJP1は、本来はマスタ基板上のNB3N2302を1倍、2倍指定するジャンパですが、逓倍基板使う場合は常時2倍で動かします。
 マスタ基板上では不要となるので、逓倍基板上のNB3N2302の倍率設定に転用します。

マスタの半田面
逓倍基板に立てたストレートピンヘッダSV4がJCCN1の20Pinコネクタと、SV5がMSTJP1の22番に繋がります。2本刺さらないので誤解無きようご注意ください。

 既に部品面にピンヘッダ実装済みでしたら、外して付け直しとなります。ピンヘッダを破壊してもいいやな気分で外してください。というか、溶けてバラバラになる位加熱しないと外れません。
 加熱が不十分な状態で応力掛かるとスルーホールは簡単にちぎれます。
 「一本、一本半田を吸取って外す」やり方は、無駄に応力掛けて基板壊します。お奨めしません。
 これは外した部品を再利用して、基板を破棄する場合の外し方です。今回は逆。

 大量の半田を盛って、保熱させるのがコツです。充分に加熱して、充分に半田盛って、樹脂フレームが柔らかくなったところで一本ずつ、或はまとめて抜く方法で取り外してみてください。
 重要なのは「応力掛けない」って事です。半田が溶ければ自然に落ちますから。
 ピンヘッダが外れたら、スルーホールに残った半田を吸い出して完了です。

 通称レスキュー半田という、低温融点な半田があります。
 サンハヤトSMD-B05使うと、長時間溶けたままになって、抜き取りが楽に出来ます。でも、取れてからの掃除が大変な諸刃の剣。面実装部品取り外しキットって奴です。
 

 逓倍基板仮組図 modelB+、modelA+、Pi2B用

推奨されるDATAとLRCLK接続位置はこちらです。ModelBではJ5が繋がるSV2に、2列ライトアングルピンヘッダ付けて、ワイヤで繋いでください。
 半田面側で処理ならコンパクトに出来ます。配線空間はあるので、RaspberryPiに干渉しません。
 SV4を付けてから、SV2付ける事になります。
 R3に22~47オームつけて、BitCLKを繋いでください。R4~7は前述のModelBと同様。


部品面側で、DATA,LRCLKワイヤ繋ぐ場合の例1.


 横に出るのでまとまり良くないです。

部品面側で、DATA,LRCLKワイヤ繋ぐ場合の例2.

 Amanero接続用SV3に繋ぐ例です。1よりはまとまりがいいです。
 私はこの繋ぎ方を採用しました。


 逓倍基板仮組図 Amanero用
 

 Amaneroとマスタ基板の間に挟まるだけなので、マスタ基板のピン立て具合の変更は不要です。
 部品面 MCLKを1倍か2倍するので、R2MCLK側に22~47オーム付けます。
 半田面 R4とR6に100kオーム付けます。R1,R3,R5,R7は不要。

 R2=22~47オーム
  R4=100Kオーム
  R6=100Kオーム

 C1~4は5V用なので、Amanero使用時は不要。5V電源ネジ端子も当然不要となります。
 C5~9は3.3V用です。無くてもいいですが、付けておけば、アイソレータチップの3.3V電源の安定化に寄与します。


 JP1、JP2、JP3は、アップサンプリング基板等を使う場合にご使用ください。
 JP1は3穴ともGND。信号とGNDのペア撚り線とか、シールド線GNDに使用。
 JP2はMCLKとGND。
 JP3の||表示部でパタンカットします。
 JP3の右列から「他の基板」へ、「他の基板」から左列へ。

 ピンヘッダは、両面どちらに付けても構いません。
 ストレートでも、ライトアングルでも、仮組しながら色々考えて繋いでください。

 3Dパズル組み立てるつもりで取り組むのが正しいアプローチでしょうか。
 基本手順は、面実装部品半田付け。仮組。ピンヘッダ、ピンソケット半田付け。で進めてください。

12月7日更新 ここから
 大事な事書くの忘れてました。
 タンデム基板は「プリフラックス仕上げ」というヤツで、基板全面にフラックスが塗布してあります。ベタGNDプレーンのスルーホールを半田で埋めようとすると、上手い事半田が載ってくれて便利です。金メッキ仕上げと違って「磁性体なニッケル」が含まれないので音質的にも有利です。
 ですが、開封して悪環境に置いとくと、パッドやスルーホールが黒色化します。要は酸化被膜です。回避する為には早めに半田付けして組立ましょう。
 うっかり黒色化させちゃったとしても、半田の乗りが悪くなるだけなので、液体フラックス塗って半田付けすれば、還元されてフラックスのカスとして析出します。イソプロピルアルコールとかの洗浄剤で落とせば綺麗になります。

 今回の逓倍基板は「無鉛半田レベラー」にしました。オプション料金¥5000-追加!
 有鉛半田より、無鉛半田の方がオーディオには向いてるって話があるので無鉛にしました。デジタル回路基板だからあまり関係ないとも思いますけど、まぁ気持ちの問題って事で。
 こちらは「放置すると酸化して黒色化」って事起きないので、タンデム基板程気を使わなくて大丈夫です。無鉛半田お持ちな方は、「鉛と混ざっちゃう」事無く組み上げられます。
12月7日更新 ここまで


 逓倍基板のご注文は、まだ受け付けてます。NB3N2302チップ付きは納期かかります。

 FN1242Aタンデム基板ユーザじゃなくても、「Amanero接続仕様なDACにRaspberyPi繋ごう」って用途にもお使いいただけます。
 その場合は、NB3N2302のFS0,1にGPIO端子繋いでPythonスクリプトを少し手直ししてください。

 ご質問等、コメント欄にどうぞ。

2014年12月2日火曜日

 お待たせしました。
 NB3N2302逓倍基板の出荷開始しました。11月11日までのご注文分です。

 トラブル無ければ11月末出荷と言ってたのですが、トラブリました。残念。申し訳ないです。

 バラ納入で注文したのに、先週スティック詰めで来ちゃったんです。これをバラに詰め直すのはやってられないんで送り返してバラ梱包に詰め直してもらいました。で、今日、納入されましたので、梱包作業開始できた次第です。

 組み立てて動作確認もできました。
 Volumio1.51で、BでもB+でも何も設定等変えずに共通のMicroSDで動かせました。
 超ぶっ飛びサウンドで鳴ります。
 TypeB用で組んでみましたので、後ほど写真UPします。B+でも問題無く接続できます。

 Volumio1.51のスクリプト書込み済みUPしましたので
 ここからダウンロードしてください。 1.4はB専用 1.41はB+専用 1.51はB,B+共用です。

 ZIP解凍して、書込みソフトでSDカードに焼くだけです。B、B+、どちらも設定変えずに動かせます。LibraryUPDATEだけ実施すれば、USBメモリが見えるようになるはずです。

 これから注文を考えてる方。
 チップ付きは仕込み分完売で、NB3N2302欠品となりましたので納期要します。 基板だけのご注文でしたら納期掛かりません。
 基板自体の在庫は、あと100枚程あります。

12月4日更新 ここから
 11月26日までにご注文の方まで出荷しました。ポストに入りきらないので局窓口持ち込みです。
 例外なのは追加部品もついでにご注文の分で、こちらは明日出荷致します。
 11月29日以降の分は、土曜日にポスト投函の見込みです。

 着荷したので振込頂きました方。ありがとうございます。
 振込人名義を「私の名前」で振り込まれた方が、前回いらっしゃいました。納期タイミングと金額の違いで、どなたなのか判別できましたが、今回は同じ金額の方が多いです。
 振込人名義は「ご自身のお名前」でお振込みください。注文書に「フリガナ(重要)」としているのは、口座にはカタカナで記載されるからです。お間違えの無いようにお願いいたします。
12月4日更新 ここまで

12月5日更新 ここから
 12月3日までにご注文頂いた方まで、全数出荷完了しました。
 組み上げた写真撮ったのですが、マクロ機能無いヤツだったので、ピントが合いませんでした。
 明日、他のデジカメで撮り直します。

 ハードウェア資料は、ここからダウンロードしてください。
 12月5日更新 ここまで


ご質問等、コメント欄にどうぞ。