flacファイルのlyricsデータ
2021/09/12
歌詞が取得できなくなった
  • 音楽鑑賞する際プレイヤーには何種類かあり、音楽を聴く場所や用途によって使い分けています。
    • ラズパイ+Volumio: スピーカーより小音量のBGMとして聴く。静音プレイヤーであることが大事。
    • iPod nano: ランニング中に使用。汗だくの状態でイヤホン装着(*1)...音質は気にしない。
    • スマホ+HF Plyer: 移動時や出掛け先。ちょっと良いイヤホンで聴く。音量は普通。
    • PC+foobar2000: 自宅で聴き込む時。ヘッドホン使用。入り込んで体が揺れ動くレベル。

  • 普段聴く音楽は圧倒的に洋楽系です。Alternativeジャンルを好む傾向にあります。ですが、特に私は英語が得意なわけでもない(*2)ので、歌詞が聞き取れないことは多々あります

  • 普段思わず頭の中で鳴るようなお気に入り度の高い曲は、暗記はしないにせよ聴いたときに英語として歌詞がすんなり入ってくるレベルにはしたいため、自宅で聴き込む時は歌詞を見ています

  • 先に書いたように聴き込み時は foobar2000 を使用していますが、曲毎の歌詞を取得/表示するために Lyric Show Panel 3 コンポーネントを入れています。

  • しかし、ある時期から取得率が非常に悪い...全く取れない。歌詞取得コンポーネントとしては使えない状態となりました。"Found nothing"って勘弁して。

    Figure 1: ColdplayのViva la Vidaすら取れない...

  • 対処法についてネットを探しましたが何と見つからない。存在したであろう対処法も削除されており、どうやら大人の事情で駄目なのでは。Googleで歌詞検索した表示結果は直接選択&コピーできないですよね。それと同じような理由と思います。

仕方無いので歌詞を埋め込む
  • mp3 や flac といった音楽データは楽曲自身のデータ以外にタイトル等関連情報を書き込める領域を持ちます。先程書いたように Lyric Show Panel 3 がネットから歌詞を引けないでのあれば、データに歌詞を埋めてしまおうと考えました。

  • 歌詞がネットから引けないのは foobar2000 のコンポーネントの問題なので、再生ソフトを例えば MusicBee 等に変更するのも手の一つですが、それは違う機会で試そうと思います。そもそも音楽ライブラリを flac で構成しているので、使える再生ソフトは限られます...。

  • 話を戻して、歌詞を埋め込む領域、その名前(タグ)ですが一般的(mp3)には下記のようです。大文字/小文字の区別無し。
    • UNSYNCEDLYRICS : テキストとしての歌詞データ
    • LYRICS : 再生時間との同期関係も記述された歌詞データ...カラオケ的表示

  • しかしflacデータと言うか、foobar2000の場合、微妙にタグ名が異なっています。
    • UNSYNCED LYRICS : ← UNSYNCED と LYRICS の間にスペースが入っている

  • flacデータとしては後者がデファクトスタンダードになっている可能性高く、ちょっと面倒だなと感じました。同期歌詞データの LYRICS は同じですが、自分で編集する場合同期データは作成しませんし。

  • 編集の方法は簡単で foobar2000 ならば各曲の Properties から + add new で UNSYNCED LYRICS を追加後、edit で歌詞情報をペーストすれば良いです。

  • しかし Mp3tag 等のソフトで歌詞データを追加した場合、mp3をベースにしているせいか、タグ名が UNSYNCEDLYRICS となり foobar2000 読み込み失敗(*3)します。なので 先と同様に Properties からタグ名を UNSYNCED LYRICS に変更します。非常に面倒。この地雷を踏んだ方も多いようです。


    Figure 2: foobar2000 は UNSYNCEDLYRICS を(デフォルトでは)読まない

  • ところが面白いことに、UNSYNCED LYRICSタグデータを持つ flac の場合、それを foobar2000 で ipod転送又は mp3 へコンバートすると、UNSYNCED LYRICS のタグ名が UNSYNCEDLYRICS に変更されます。つまりベースライブラリが flac なら、管理タグ名は UNSYNCED LYRICS でOKということになります。いや〜ややこしい。


    Figure 3: foorbar2000 はmp3変換時にtag名をUNSYNCEDLYRICSに変える

歌詞の取得は LyricsMaster で
  • 歌詞データタグの扱い方は整理できたので、次はデータ取得そのものですが、これは外部プログラム LyricsMaster を使います。この LyricsMaster はコマンドラインからツールを動作させるJScriptファイルを持っているので、その引数に楽曲の情報を渡せばGUIでの情報入力無しで検索を行わせることができます。

  • foobar2000 から外部コマンドを起動するには Run services コンポーネントを使用します。Run services を使って、曲名とタイトル情報を LyricsMaster の起動スクリプトに渡し、歌詞検索させるわけです。

    Figure 4: foobar2000 と LyricsMaster の連携

  • LyricsMaster と foobar2000 連携の具体的な設定方法については、すでにWeb上で大量に情報があるので、ここでは説明しません。ですが Lyrics Show Panel 3 の設定は探しにくかったので書いておこうと思います。

Lyrics Show Panel 3 でTag内又はローカル歌詞ファイル表示
  • ではLyrics Show Panel 3の設定について。最初に機能しなくなったインターネットサーチの設定(OnlineDB: *)を Search Order: から削除します。右横にある [>>] ボタンを押せばSearch Order: から項目を削除(移動)することができます。


    Figure 5: インタネットサーチの項目をSerach Order: から外す

  • 次はSearch order: 内の優先順位を変更し、Tag Searchを一番高優先度に設定します。UNSYNCED LYRICSタグに歌詞データが埋め込まれていれば、それを最優先で見ることになります。次がLocal File Searchで、これが LyricsMaster にサーチさせたデータです。ちなみにAssociations searchは、Lyrics Show Panel 3 のサーチ機能が有効だった頃にサーチされたLyricsデータリストの参照です。


    Figure 6: Serach Order: 内の優先順位設定

  • Tag Search の Properties で参照するTag名を変更できますが、これは UNSYNCED LYRICS のままで敢えて変更しません。Local File search の Properties については、Search Paths の設定を、LyricsMaster の歌詞データ保存フォルダと同じ場所に設定します。また Lyrics Master側で歌詞データをアーティスト別フォルダに保存するケースでは、Serch sub-directories にチェックを入れ、下位のサブフォルダも検索させるようにします。


    Figure 7: Local File searchの設定

やっぱり Run services だけは設定を書いておきます
  • 先程は "LyricsMaster と foobar2000 連携の具体的な設定方法については、すでにWeb上で大量に情報があるので、ここでは説明しません" と書きましたが、Run services は書いておくことにします

  • Run servicesの設定(Path:)の記述例は下記となります。
    "C:\Tools\Lyrics Master\ExtSupport.js" multi "%title%" "%artist%"
       (1)                                          (2)       (3)
    • LyricsMaster をインストール/置いたディレクトリ名。ExtSupport.js の拡張子jsは、wscript.exeで実行するJscript(*4)として標準的に拡張子登録されているので、Path: 記述に wscript.exe 自身を含ませる必要はない。
    • %title% は foobar2000 の曲タイトルを表す変数(バッチファイル表現)。曲名にはスペース含まれることが多いため、ダブルクォーテーション(") で囲むことが必須
    • %artist% も %title% と同様に、ダブルクォーテーション(") で囲むことが必須

  • これで LyricsMaster と連携しつつ foobar2000 で歌詞取得する環境ができたわけですが...面倒です。デジタル系の話は、音楽の世界ではマイノリティなんだと思わされます。

  • さすがに、そろそろアプリケーションの世代交代かなと感じ始めました。今度別アプリケーションでデジタル音楽環境を作ってみたいと思います。
Notes
  • イヤホンにとって非常によろしくない環境。消耗品扱いのため安いイヤホン使用。
  • じゃあ何で洋楽聴くの? と言いたくなりますよね。音楽の嗜好は10代前半の影響が大きく、我々が10代の頃の邦楽...当時の「歌謡曲」ですが...まぁ私は何となく物足りなかったのです。
  • foobar2000として参照するタグ名を設定/変更できるのですが、flacのデファクトスタンダード変更を避けています。
  • JavaScriptですが、WSHとして実行するならVBScriptの方が好きです。VBA書く機会の方が多いので。
Copyright(C) 2021 Altmo
本HPについて