スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

iTunes(Win)で「無理やり」LAME を使うスクリプト

2010年03月15日(月)00時37分

※「文字だけの説明ではわかりにくい」という場合には、スクリーンショット付きの説明記事「iTunes(Win)で高音質な LAME の MP3 を使う一番簡単な方法」もご覧ください

【追記:2017/09/29】 「The track has been deleted.」エラー(コード:A0040202)の対策をしました。

【追記:2011/07/28】取り込み済みのトラックを対象にした「iTunes のトラックを LAME で MP3 化するスクリプト」を書きました。

iTunes と MP3

話は少しさかのぼり、手持ちの音楽 CD の「wav + cue + jpg」化が済み、「次は MP3 化作業」となったときに考えたことが「MP3 ファイルは iTunes で作るよりも LAME を使った方が音質が良いらしい」ということです。
「らしい」と伝聞形式なのは、「自分ではそれを聴き分けるほどの優秀な耳を持っていないから」ということであり、こう言うと「自分で区別できないんならどうだっていいじゃないか」なんてことは言われがちですが、はっきり言えば「自分で判別できないからこそ他人の評価が気になる」わけです。

iTunesLAME

で、「LAME の方が iTunes よりも良い」と言われているのであれば LAME を使いたい、と思うのが人情というものでありますが、その場合、(Windows では)一般的には Exact Audio Copy 等のアプリケーションを使って LAME で MP3 ファイルを作ってから iTunes にインポートする、という手順を踏むことになるようです。
そうなると、以前Gracenote の情報で「wav+ cue」ファイルを作るために iTunes の CD 情報を cdplayer.ini に出力するスクリプトを書いていたりと 、Exact Audio Copy で リッピングするための環境構築は済んでいますので、ある意味準備は整っているといえます。
しかし、iTunes で直接取り込めば、コンピレーションやアートワーク、作曲者、ものによっては曲ごとのリリース年度なども自動で取得・設定されたりするわけで、これも捨てがたい、と。
なにより、これまでの経験上、作業工程を増やすと、そのうち面倒になって中断してしまう可能性が高くなって危険です。

無理やり LAME

ということで、LAME でエンコードしつつ、iTunes で取り込んだかのような状態に近い結果を、なるべく楽して得てみたい、というのが今回のお題です。
といっても、iTunes を解析してエンコーダを LAME に差し替えてしまう、というようなスマートな方法ではなく(そんな技量はありませんから)、外部からスクリプトで iTunes を操作して、

  1. iTunes で CD を WAVE 形式で取り込む
  2. iTunes が WAVE トラックに付けたタグ情報を収集
  3. 1.の WAVE ファイルをコマンドラインで LAME を使って MP3 ファイルにエンコード
  4. 3.で生成した MP3 ファイルを iTunes のライブラリに追加
  5. 2.で取得した情報を追加した MP3 トラックに設定

という手順で無理やり実現しようというわけです。
当然ながら WAVE ファイルは不要になった時点で自動削除します。

楽曲統合

今回の(自分の)目的は、「これまで Apple ロスレスで取り込んでいた楽曲を MP3 で置き換えたい」というものでしたので、既に稼動中のライブラリ内で同一曲と思われるトラックを探し、それと差し替える処理(再生回数・コメント・歌詞等の情報やプレイリストの状態を引き継ぎ、旧トラックを削除する)もつけました。
といってもプレイリストに関しては「入れ替え(順番が維持される)」をする命令を見つからなかったので、旧トラックが所属したプレイリストの末尾に新しいトラックを追加しています。

要注意

上記の「楽曲統合」機能を使用した場合、同一曲と判定されて統合対象となった旧トラックはファイルごと削除されてしまいます。
危険性が高いため、この機能は標準では動作しないように設定されています(var IsReplace=false;)。
この機能を使用される(var IsReplace=true;)場合、誤判定があると取り返しがつきませんので、実行前にバックアップを取っておく等、十分に注意してください。
また、本運用に入る前に、「テストモード(var TestMode=true;)」で同一曲の判定が意図したとおりに動作しているかどうかの確認をしておくことをお勧めします。

スクリプト本体

推奨版(iGoinLM.js)
標準版(iGoinLM_Simple.js)
どちらもスクリプト自体は同じで、先頭部分で変更可能な設定項目のデフォルト値が違うだけです。
推奨版」は、コンピレーション判定を厳密にし、アートワークが存在しない場合はネットから画像を収集し、MP3Gain で音量を調整(アルバムゲイン)します。
標準版」は iTunes で取り込んだのとほぼ同じような結果になるようにしてあります(つまり MP3Gain やネットからの画像収集等を行いません)。
どちらも初期設定では、可変ビットレート(VBR)の目安 245kbps、つまり「-V 0 --noreplaygain」オプションで MP3 ファイルにエンコードされます。

スクリプトの準備

上記スクリプトファイル(のどちらか)を右クリックで「対象をファイルに保存」して保存します。
保存したスクリプトファイルを右クリックし「プロパティ」を見たときに、「セキュリティ:このファイルは他のコンピュータから取得したものです。このコンピュータを保護するため、このファイルへのアクセスはブロックされる可能性があります。」と書かれている場合は「ブロックの解除」をしてください(しなくても使えますが)。
スクリプト(ただのテキストファイルなのでメモ帳でも開けます)の冒頭部分に、挙動を変更するための変数を説明付きでまとめてありますので、環境や望む動作に合わせて書き換えてください。

LAMEMP3Gain の準備

LAME は公式にはソースコード状態でしか配布されておらず、使用できる状態のファイルのダウンロード先はいろいろあります。
信頼できそうな場所(例えば「http://www.rarewares.org/mp3.php」)からダウンロードして、その中の「lame.exe」をスクリプトファイルと同じフォルダに置いてください。
MP3Gain を使用する場合は、MP3Gain を「C:\Program Files\MP3Gain」にインストールしておくか、「mp3gain.exe」をスクリプトファイルと同じフォルダに置いてください。
詳しくは「DnspTools フォルダの作り方」をご覧ください。

iTunes の準備

  • 「編集 → 設定 → 一般」で「インターネットから CD のトラック名を自動的に取得する」をチェック
  • 「編集 → 設定 → 一般」で「CD をセットしたときの動作」を「CD を表示」に設定
  • 「編集 → 設定 → 一般 → インポート設定」で「WAV エンコーダ」の設定が「自動」であることを確認(「インポート方法」を「WAV エンコーダ」にしておく必要はありません)
  • (アートワークを自動取得する場合は)「編集 → 設定 → Store」で「持っていないアルバムアートワークを自動的にダウンロードする」をチェック
  • 「編集 → 設定 → 詳細」で「[iTunes Media]フォルダーを整理」をチェック
  • 「編集 → 設定 → 詳細」で「ライブラリへの追加時にファイルを[iTunes Media]フォルダーにコピーする」をチェック

使い方

  1. iTunes を起動して、CD を挿入し、CD の情報が取得されたことを確認
  2. 特定のトラックのみを取り込む場合は、対象トラックを選択(複数のトラックを選択する場合はCtrlを押しながらクリック)
  3. スクリプトを実行
  4. 推奨版」の場合は1曲目エンコード終了後に「画像セレクタ」が表示されるので、アートワークを選択
  5. 「全ての処理が終了しました。」ダイアログが出れば終了

アンインストール

レジストリに何か書き込んだり、システムフォルダに何かをコピーしたりということはしませんので、基本的にはスクリプトファイルを削除するだけです。
不具合等でスクリプトが正常に終了しなかった場合に、スクリプトフォルダにランダムな名前のフォルダや画像ファイルが残ることがありますので、これが存在する場合は一緒に削除してください。

不具合

数十枚~数百枚に一度ぐらいの割合で、取り込み中に処理が止まってしまうことがありました。
原因は調べていないのですが、運悪く発生してしまったときにはタスクマネージャで「wscript.exe」を強制終了して、再度取り込んでください。
基本的に自分が使う設定の組み合わせ以外はほとんど未テストなため、他にもいろいろあるかもしれません。

その他

iTunesやx-アプリ関連の自作ツール一覧

iTunesでLAME」や「ウォークマン高画質化」等、iTunesx-アプリ向けの自作ソフトやスクリプトをまとめたページ、「iTunesやx-アプリ関連の自作ツール一覧」を作りました。

関連記事

【同じタグを付けた記事の一覧】
自作ソフト DnspTools ポータブル 音楽管理 Gracenote LAME MP3Gain iGoinLM iTunes

スポンサーサイト

コメントの投稿

非公開コメント

No title

すばらしすぎる。

いらっしゃいませ

ありがとうございます。
励みになります。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

すばらしすぎる。

再びコメントさせていただきます。

BPM Analyzerを使いたくて(ジョギング用)、
そのためにはMP3にする必要がありました。
(AACでは分析できず)
itunesでもMP3に変換はできますが、LAMEを使って少しでも
よい音で聴きたかったのです。

そのために2段階もかけるのは嫌だったので、(cdexからitunesとか)
いろいろ探していたのですが、電脳さんのページに出会い、
とても助かっています。
同じようなwin使いの人いっぱいいると思うのですが、
是非教えてあげたいです。

本当にありがとうございました。
これからもがんばってくださいね。

iTunesとLAME

コメントありがとうございます。
iTunesとiPodの爆発的なヒットもあり、AACもかなり普及しているのではないかと思いますが、ユーティリティやツール類の豊富さから「やはりMP3」というシーンはありますね。

そしてMP3なら「やはりLAME」といきたいところなんですが、何故かWinにはこれといったものが見つからなくて作ってみました。
Macにはずいぶん前からiTunes-LAMEという定番プラグインがあるようですが、この違いは多分、MacではiTunesの出来が良すぎたがために、良くも悪くも「これしかない」という状況になってしまった(他の音楽系ツールが駆逐されてしまった)のに対して、Winではまだ十分に優秀なツール類が選択肢として残ったために、「○○したいなら△△を使えばいい」というところに落ち着けてしまうことが大きいのかなとも思ったりします。

そしてジョギングは、調子のいい日に調子に乗って走りすぎてしまって膝を痛めて中断してしまった、という過去が自分にはあったりします。
もういい加減完治してると思うので再開してみたいとも思っているのですが。
それでは。

素晴らしいです!!

初めまして。
電脳スピーチさんの音楽管理についての記事全般、とても参考になりました。
長年悩んでいたテーマで、特にLAMEで吐き出すスクリプトについては、個人的にはmacのiTunesLameより優れていると感じました。
素晴らしいものを提供して頂いて感謝です。

と同時に質問も少し書かせて頂いてもよろしいでしょうか。
お時間許せばでけっこうなのですが。

■「[iTunes Media]フォルダーにコピーする」を非チェックについて、
コピーする設定で使った場合、意図しない動作が起こる可能性はあるのでしょうか?
試したところ特に自分の環境では何も変なことにはならなかったようでした。

■MP3gainについて、電脳スピーチさんはどのくらいのdBで揃えてらっしゃいますか?
聴く音楽によって適正値も変わると思うのですが参考に伺えればと思いました。

■CD/DVDなどのディスクメディアはISOにしてHDで今後管理しようかなと考えているのですが、
記事中にあったWAV+CUEで保管するメリットはどういったものがありますでしょうか。

電脳スピーチさんの書かれていることに共感する部分が多かったので
参考に聞かせていただければありがたいです。

Re: 素晴らしいです!!

はじめまして、がくさん。
おほめに預かり光栄に思います。

早速ご質問の件なのですが、まず「[iTunes Media]フォルダーにコピーする」に関しては、
これは実際のところ、多分どちらでも大丈夫であろうと思います。
このスクリプトではLAMEのダメ文字対策のため、エンコード時にWAVEファイルを一度リネームしますが、
その場合iTunesの管轄外で楽曲ファイルを直接操作することになりますので、
万一それをiTunesが誤認して「iTunes Media」に再取り込するようなことがあると面倒だと思い、
保険のために「非チェックに」と書いていますが、多分iTunesはそういう挙動はしないと思います。

次のMP3gainの目標音量に関してですが、これは93.0にしています。
ただ、自分はもともと標準値や推奨値がある場合はそれに従うタイプですので、
かつては当然のように89.0でした。ですが、車で聴くためにFMトランスミッタを買ってきたところ、
これの出力が弱いのか、89.0では相当カーステのボリュームを上げねばならず、
他のソース(CDやラジオ)の音量に近づけるため、やむなく少し上げています。

3つ目の「WAV+CUE」については、
読み込み品質が高いとされるExact Audio Copyで簡単に作れること、
多くの仮想CDソフトで対応しているであろうこと、
万一、仮想CDソフトが使えないような環境下であっても、
WAVEとCUE(中身はただのテキスト)なら自力でどうとでもできるであろうこと、
などの理由で採用しています。
それと自分は基本的に「いざとなったらスクリプトでも組んでまとめて自動処理すればいい」
というスタンスですので、そういう観点から扱いやすいものを選ぶ習性があるのも理由の一つです。
実はISOも、比較的高い汎用性とファイルが一つで済む利便性から当初候補の一つだったのですが、
どうも音楽CDは規格上ISOにはできないようで、見送ることになりました。

と、こういう感じになります。
我が家の音楽管理状況に関しては、だいぶ落ち着いてきましたので、
しばらくはサイト的にもこれ関連のダイナミックな変化はないのではないかと思いますが、
また機会があればのぞいてみてください。
それでは。

No title

丁寧にご説明いただいてありがとうございました。
よく理解できました。

ISO化の件、漠然と考えていたのですが規格がCD-DAなんですね。
色々調べてみると、私のほうも「WAV+CUE」がよさそうに思えてきました。

個人的に今やりたいことのテーマに合致している記事が多いですので、またお邪魔させて頂くと思いますがどうぞお気になさらず。

ためになる情報本当にありがとうございました。
ブログこれからもがんばってください。
陰ながら応援しておりますm(__)m

error

早速インストールしてみたところ以下のエラーが出て起動できませんでした。

行:242
文字:1
エラー:"iTunes.Application"という名前のオートメーション クラスが見つかりませんでした。
コード:8002009
ソース:WScript.CreateObject

当方の環境はVista64bit iTunes32bitの10.0.0です。

Re: error

はじめまして、kouさん。
ご報告いただいたエラー内容からすると、
スクリプト自身がiTunesを見つけることができていないようです。
例えばiTunesがインストールされていない環境でこのスクリプトを実行した場合は
確実にこのエラーが出ることになります。

このスクリプトは開発も動作確認も32ビット版OSで行っているのですが、
時々64ビット版で使えなかったという報告がありますので、
もしかしたら64ビット版OSでは動作が異なるのかもしれないと思い、
これを機に「Win7(x64)&iTunes(x64)」の環境を構築し、
動作確認をしてみたのですが、特に問題が発生しませんでした。

ということで「64ビット版OSだから動作不可、というわけではない」
程度のことしかわからなかったわけですが(Win7とVistaの違い、ということもあるかもしれませんが)、
ただ、このスクリプトとは関係ありませんが、最新版のiTunes(10.1)で発生している
「CDからインポートできない」というバグ?も、ネットを見ていると
64ビット版OSでの報告が多いように見受けられますので、
64ビット版OS上でのiTunesは比較的、CDドライブや
他のインストールしてあるソフト・ドライバ等の影響を受けやすいのかもしれません。

そういうわけで、お役にたてずに申し訳ないのですが、
こちらの環境で不具合が再現できず、対策が取れないのが現状でございます。

appleロスレスから

はじめまして。ざっきーと申します。

実は私の今の目的が、電脳太助さんの目的とまったく同じでして、
「appleロスレスで取り込み済みのファイルをLameでMP3化したい」
というものです。しかも、「itunesでのタグ情報をそのまま引き継ぎたい」
というあつかましい条件付です。

いろいろ検索するうちにこちらの記事にたどり着いたのですが
こちらではCDから取り込む方法が紹介されているので
具体的に電脳太助さんがどのように取り込み済みのロスレスファイルから
Lameを使ってMP3化されたのかをご教授いただきたくコメントさせていただきました。

一応、必要なファイルはダウンロードさせていただいておりまして
itunes上でロスレスをWAV化しておりますが、
そこからどうしたものか???というところで困っております。

ぜひ何かヒントか方法をご教授いただけるものならお教えいただきますようお願いします。

Re: appleロスレスから

はじめまして、ざっきーさん。

早速ご質問の件についてなのですが、実は
http://denspe.blog84.fc2.com/blog-entry-101.html#comment83
でも少し書いているのですが、
このスクリプトを書いた当時、「ロスレス→(LAME)→MP3」すればいい、
という考えになぜか思い至らず、
自分は結局、このスクリプトで一から「CD→(LAME)→MP3」して
ライブラリを差し替えてしまいました。

ただ、その名残でこのスクリプトには「楽曲統合」という機能があり、
スクリプトをメモ帳などで開いてテキストファイルとして読むと、
冒頭からしばらく各種設定項目が説明書き付きで並んでいますので、
そのうちの「楽曲統合の設定」とある行から下の部分を
目的に合わせて調整することで、「CD→(LAME)→MP3」したあと
ライブラリ中の同名ファイルの歌詞や再生回数を引き継いだり、
さらに引き継いだあと元のファイルを削除したり、
といったことができるようにはなっています。
とはいえ、これは若干設定が複雑で分かりにくいうえ、やったところで
基本的に「CDから取り込みなおし」であることには変わりないのですが。

探してました

こういったものをずっと探していました!
最近パソコンを買い替えて新たに色々ツールを探していたらたどり着きました。
圧縮はLAME、情報と管理はiTunesという理想の形でした。
windowsを使う者にとってはこの点はiTunes-LAMEのあるMacユーザーの方が本当に羨ましかったので。

ただ少し問題が発生しております。
なぜかLAMEで圧縮すると曲の時間がCDのオリジナルのものより少し長くなってしまいます。(0.2~0.5秒ほど)
その一瞬の空白のため1曲目と2曲目がつながっている場合、一瞬ですがプチっと途切れてしまいます。
ドライブに問題があるのかと思ったのですが、
iTunesのみでエンコードした場合は全く途切れることなくオリジナルと同じ物を作成することができるのです。
色々ネットでも検索をかけて調べてみたのですが打開策が見つからず今困っています。
環境はWindows7、64bit、LAME3.98.4です。凄い初歩的な質問だったら申し訳ないです。

Re: 探してました

はじめまして、MxMxMさん。
早速本題に移らせていただきます。

まず、原理上MP3は末尾に短時間の無音が付くことがあり、これはギャップと呼ばれます。
LAMEはこのギャップの長さ情報をMP3ファイルに書き込んでおり、これはLAMEタグと呼ばれます。
そして、そのLAMEタグ付きMP3ファイルを、LAMEタグ対応プレーヤーで再生した場合、
末尾に存在するギャップをとばして、次の曲と切れ目なしに連続再生することができ、
これはギャップレス再生呼ばれます。

iTunesはLAMEタグ対応プレーヤーですので、
理論上はLAMEとの組み合わせでギャップレス再生が可能なはずです。
もし、これがうまくいっていないとなると、その点で予想できる原因としては、
何かエンコードオプションを変更しておられて、その変更されたオプションの中に
LAMEタグの付加を禁止するようなものが混ざっているのではないか?ということです。

それと、もう一つ考えられるのが、MP3Gainの設定をアルバムゲインから
トラックゲインに変更されておられて、そのため曲の変わり目で微妙に音量も変わり、
それが「途切れ」に聞こえるのではないか?ということです。

もし、LAMEのオプションもMP3Gainの設定も変更なんてしていない、
というようなことですと、ちょっと原因はわかりかねます。
特定のバージョンのiTunesやOSとの組み合わせでのみ出る症状だったり、
あるいは、そもそも上で述べたLAMEタグとiTunesに関する自分の認識が間違えであったり、
もしかしたら、LAMEタグもギャップレスもMP3Gainも全く関係ない別の理由かもしれません。
お役にたてず申し訳ないのですが…。

Re: Re: 探してました

返信ありがとうございます。
ギャップの件ですが、なんとか解決した感じです。
直接理由に結びついているのかわかりませんが、LAMEのコマンドラインに-q0を加えたところ、
そういった一瞬の途切れが表れなくなりました。
ただ、また色々エンコードしてみた所、別の問題が発生しました。
たまに5~7秒くらい長くなって作成されたファイルとか出てきます。(必ずしも毎回ではない)
その曲を再生して聞いてみると、途中で飛んでちょっと戻た所からまた始まる、といった感じの
ものになっていました。CDの読み込みによるエラーなどで発生するような印象です。
CD自体は傷もなく綺麗なものなのですがこういった問題は私だけなのでしょうか…?

わかりました!

なんどもエンコードを繰り返してその都度色々と確認をしてみたところ、
原因が判明しました!
どうやらアートワークが関係しているようです。
こちらで頂いたスクリプトのアートワークの自動検索機能の切った状態で
エンコードをおこなうと全く問題なく吸い出すことできるのですが、
その設定ONに、または後で手動でアートワークを登録したりすると
このバグらしきことが発生します。
何度も同じCDでやりましたが、毎回同じ曲がそのような状態になるのではなく、
運が良ければ完璧に吸い出せることもあります。
一体何なんでしょうかこれは…
原因はわかったものの、解決策はまだ見つけられずにいます…

Re: わかりました!

>>MxMxMさん
ギャップレスの問題は解決されたようで何よりです。
音飛びに関しては我が家のCD(400枚程度)でも2枚ほど、
見た目に傷はないのに取り込むと音飛びしているCDがありましたね。
ただ、後で手動で登録しても発生するとなると、スクリプトより
iTunes側のアートワークがらみのバグかなにかかもしれません。
とはいえ、ソフトウェア的なバグであれば同じ操作をすれば同じ結果が出そうなもので、
「たまにうまくいく」というのが良くわからないところですが。
最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
161位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
19位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。