LRC Maker(Uranos8685) 配布ページ

テクノロジー
この記事は約8分で読めます。

はじめに

 Plex Media Serverには、lrcファイルを認識し、Apple Musicのように再生位置にリンクした歌詞表示をしてくれる機能があります。

 lrcファイルとは基本的に「[mm:ss.xx(=1/100秒)]歌詞テキスト」を記録したものです。

 Plex Media ServerではUTF-8形式のlrcファイルを認識できるのですが、既存のソフトで使いやすいものがなかったので作成しました。思ったよりも出来がよかったので、公開しようと思います。

 私のお気に入りポイントは、クリップボードから歌詞の取り込みができること、既存のlrcを取り込み一部の歌詞のタイムスタンプのみ変更すること、取り込んだ歌詞データをタイムスタンプを付与しながら編集できること、シークバーで再生位置を自由に変えられることです。なかなか既存のlrc作成ツールにはない機能(私が見つけられていないだけかもしれませんが)で、lrcファイルの作成が捗ります。

LRC Maker(Uranos8685) スクリーンショット

実行イメージ(macOS版 v1.0.2.1)

おまけ情報

 LRC Makerを作っている間に、PlexのiPhone用ミュージックアプリ「Plexamp」のlrc表示に関する小ネタを発見しました。それは、lrcファイルの改行コードによって行間の表示のされ方が異なります。

 以下の画像は改行コードのみを変えたlrcファイルが適用された音声ファイルを再生している画面です。左がCRLF(Windows標準)で右がLF(Unix系標準)です。CRLFの場合、行間が1行分空いています。公式ドキュメントとかの記載を探しましたが、私が見た限りではこの点に関する記述は見つけられませんでした。いつかこの仕様が変わってしまうかもしれませんが、LRC Maker(Uranos8685)では、設定から改行コードを選択できるようにしておきました。ちなみに、Web版のPlex及びmacOS用のPlexampで再生した場合、改行コードによる行間の違いはありませんでした。何故…?

改行コードがCRLF
改行コードがLF

 余談ですが、宵待草の作詞者である竹久夢二の記念館である「竹久夢二伊香保記念館」はおすすめですヨ。学芸員の方の解説をゆったり聞きながら展示物を見たり、歴史あるオルゴールの音はぜひ1度聴いてみてほしいです。伊香保・草津旅行のついでに寄ってみてはいかがですか。私は伊香保に行くたびに寄っています。あ、竹久夢二伊香保記念館の回し者ではないですヨ。

主要な機能(という名のこだわりポイント)について

主な機能
  • 音声ファイルを読み込み、音声ファイルを聞きながら歌詞にタイムスタンプを[mm:ss.xx]フォーマットで付与。
  • VLCのdllを利用しているため、VLCで再生できる音楽ファイルの読み込みが可能(動作にはvlcが必須)。
  • 再生速度は0.50x〜5.00xの範囲で任意に指定可能
  • 読み込んだ音声ファイルの波形表示に対応(間奏部分を見極めるのに便利)。
  • 歌詞は、既存のlrc・txt形式のファイルからの読み込みに加え、クリップボードにコピーされているテキストを歌詞データとして取り込み可能
  • 読み込んだ歌詞に対し、画面上で歌詞行の追加・削除・歌詞の内容の変更に対応。
  • 歌詞を編集した際に、誤って削除した歌詞行を元に戻す、Undo機能(自分がおっちょこちょいで消してしまうため実装)
  • 読み込んだ歌詞ファイルにタイムスタンプが付与されている場合、一部(あるいは全部)の歌詞行のタイムスタンプの打ち直しが可能(新規でタイムスタンプを付与するのと同様に、音声再生中にEnterキーを押すだけで既存のタイムスタンプを置換)。
  • タイムスタンプが付与された歌詞の行をダブルクリックすることで、再生位置をそのタイムスタンプの位置に移動
  • タイトル、アーティスト、オフセットなどのメタデータ書き込みに対応(ti, ar, al, by, offset)。
  • タイムスタンプを付与したlrcファイルは音声ファイルと同じディレクトリに、「音声ファイル名.lrc」で保存(文字コードはUTF-8)。
  • 書き出すlrcファイルの改行コードをCRLFとLFから選択可能
  • 音声ファイルを開いている場合、歌詞ファイルを開く際に音声ファイルと同じフォルダを自動で表示。(音声ファイルと異なるディレクトリに保存された歌詞ファイルも選択することも可能)。
  • 保存ボタンを押すことで、開いている音声ファイルと同じディレクトリに「音声ファイル名.lrc」の形でワンクリックで保存可能(ユーザのLRCのファイル名設定等の操作を省略。基本的にLRCファイルは音声ファイルと同じディレクトリに同名.lrcで保存・使用されることが大半のため)。

当ソフトウェアを利用する際の注意事項

 LRC Maker(Uranos8685)(以下、当ソフトウェアといいます)はフリーソフトです。個人・法人に限らず、利用者は自由に当ソフトウェアを利用することができます。ただし、当プログラムの著作権は作者であるUranos8685に帰属します。

 当ソフトウェアを利用したことによる、データの破損、消失、著作権法などの各種法規違反などによる、いかなる損害も作者であるUranos8685は一切の責任を負いません。利用者の自己責任のもとで使用してください。大事なデータは必ずバックアップを取った上で作業しましょう。

 当ソフトウェアの再配布、転載は禁止します。

 当ソフトウェアの不具合を発見した場合や要望等がありましたら、当ページにコメントしてください。本業の関係もあり全てに対応はできませんが、有用そうな機能の追加や可能な限りの不具合修正は対応したいと思います。

 当プログラムを利用して作成したlrcファイルを配布することを禁止することとし、私的利用の範囲内で、当プログラムを利用してください(歌詞にも著作権はあります。これを著作権者に無断で配布することは著作権法に違反します。)。ただし、当プログラムを利用してlrcファイルを作成・配布する者がlrcファイルに記録された歌詞の著作権を有している場合、著作権団体から配布の許可を受けている場合、すでに著作権が切れている歌詞を配布する場合など、著作権法等の各種法規に違反しない場合はこの限りではありません。

 公序良俗の範囲内で、音楽ライフを楽しみましょう。

 以上の事項に同意できる方のみ、以下のリンクからダウンロードをして利用してください。

ダウンロードリンク

プログラムの動作にVLCが必須ですので、VLCをインストールした上で当プログラムを使用してください。

※Windows版での動作にはVLCをインストールした際に展開されるlibvlc.dllが「”C:/Program Files/VideoLAN/VLC”」フォルダに存在する必要があります。

○macOS(動作確認環境:Mac Studio M4 Max、macOS Tahoe26.0)

○Windows(動作確認環境:Windows11Pro 64bit-25H2)※v1.0.2よりParallels上のArm版Windows11では動作するようにはなりましたが、スナドラCPUの実機を所有しておらず詳細な検証ができないため動作を保証できません。

更新履歴

・2025年9月29日
 配布ページ作成、公開

・2025年10月4日
 mac版v1.0公開

・2025年11月8日
 Windows版v1.0公開

・2025年11月10日
 Windows版v1.0.1公開
 修正箇所
  ○読み込んだ音声ファイル名を改行して、すべて表示するように変更→うまく動いていないようなので改めて実装し直し(;_;)
  ○歌詞ファイルを読み込んだ際に、歌詞の1行目を選択した状態になるように変更

・2026年1月29日
 Windows版及びmac版v1.0.2公開
 修正箇所
  ○プログラム内の余計なコードを削除
  ○タイムスタンプ付与時に歌詞の先頭の空白を強制削除していた仕様を廃止
  ○ボタンレイアウトを変更
 機能追加
  ○lrcファイル保存時に、任意の場所・名前で出力できるオプション「保存時に場所を選択する」を設定に追加(このオプションを使ってlrcを出力した際は当該ディレクトリを記憶し、次回保存時も同じディレクトリを表示)
  ○歌詞の先頭または末尾の空白を除去するオプションを設定に追加

・2026年1月30日
 mac版v1.0.2.1公開
 修正箇所
  ○オーディオファイルのパスに含まれる特定の文字(「赫」など)が、macOSのファイルシステム上の正規化形式(NFD/互換漢字)と、Pythonが期待する形式(NFC)とで一致していないことによる音声ファイルの読み取りに失敗するケースがあったため、パスが見つからない場合に類似するパスをディレクトリ内から検索して補正する機能をプログラム内部に実装。

・2026年1月31日
 Windows版及びmac版v1.1公開
 修正箇所
  ○vlcでは再生時間を50ms毎にしか返さないため、PCのシステムクロックを使用して厳密にタイムスタンプを付与するように変更
  ○読み込んだ音楽ファイル名が長い場合に、自動スクロールして全文を読めるように変更
 機能追加
  ○作成した歌詞データをタイムスタンプなしのtxtファイルとして出力する機能を追加
  ○作成した歌詞データをタイムスタンプ付きでクリップボードにコピーする機能を追加
  ○歌詞データのスペースについて、全角スペースが含まれる場合には全て半角スペースに一括変換し、半角スペースしかない場合は全角スペースに一括変換する機能をその他機能ボタン内に追加

FAQ

Q:アプリのファイルサイズが大きいが?
A:Pythonでアプリの作成をしており、使用しているライブラリが容量を喰っているようです。ごめんなさい。

Q:起動に時間がかかる
A:Pythonの環境がまずバックグラウンドで起動した後、アプリ本体が立ち上がるためウィンドウが立ち上がるのに時間がかかるのは仕様です( -_-) _旦~~

今後追加予定の機能(自分が欲しい機能)

○タイムスタンプ付与時に歌詞の前のスペースを強制削除しているため、スペース削除の実行有無をオプションで選択可能に変更→v1.0.2で実装
○歌詞ファイルを強制的に音声ファイルと同ディレクトリへ「音声ファイル名.lrc」で出力しているところ、オプションから任意のディレクトリ・ファイル名で出力するよう指定できるように変更→v1.0.2で実装
○スペースを全角→半角(または半角→全角)へ一括変換する機能→v1.1で実装
○読み込んだ(作成した)LRCをタイムスタンプなしの純粋な歌詞txtファイルを出力する機能→v1.1で実装
○読み込んだ音声ファイル名を改行して、すべて表示するように変更→v1.1で実装
〇作成した歌詞データをクリップボードへコピーする機能→v1.1で実装

個人開発ですのでマイペースに実装していきます。

コメント

  1. masa より:

    本当に使いやすく、これを求めていたというものに出会えてとてもうれしいです。開発してくださいりありがとうございました。
    差し出がましいお願いにはなってしまうのですが、ウォークマン上の音声ファイルをそのまま流してタイムスタンプをつけること自体はできるのですが、保存するとデータが同じディレクトに入らず、虚構に消えてしまっています。保存した場所を見る限るlocal tempに保存されているらしく探すのが大変困難です。
    パソコン上に音声ファイルが保存されている場合には問題なく保存され、同じディレクトリにはいる大変便利な仕様なのですが、少なくとも私の使用しているA300のウォークマンの上のファイルをそのまま開き、タイムスタンプを押して保存するとlocal temp行きになってしまいlrcファイルを保存することができません。
    外部の端末上にも同じディレクトリに入れるというのは難しいかもしれませんが、可能であればコピーができるようにはなりませんでしょうか。私のわかりえる範囲ではこのソフトでは保存することでしかタイムスタンプを押した状態でのlrcファイルを入手することができず、前述したとおりこれでは厳しいのが現状です。
    なので、タイムスタンプを押した状態の歌詞データをコピーできるようにしていただけると、こちら側で新たにメモからlrcファイルを作成ることができ、大変確かります。
    お忙しいところ自分勝手なお願いになってしまい大変申し訳ないのですが是非検討のほどよろしくお願いします。

    • Uranos8685 より:

      コメント、感想ありがとうございます。
      ウォークマンを所有していないため検証はできませんが、承知しました。
      任意の場所に保存できるオプションを追加しようと思います。
      ただ本業が忙しく、少しお待ちいただくことになるとは思いますが、その間はデスクトップ等で作業していただければ幸いです。
      よろしくお願いいたします。

      また、お名前は後のコメントのものに上書きさせていただきました。

      • masa より:

        ご丁寧にご返信いただき、誠にありがとうございます。
        どうぞご無理なさらず、いつまでもお待ちしております。
        このような素晴らしいものを今の時代に開発してくださったこと、心より感謝申し上げます。
        読み返してみますと、私の文章に多くの誤字があり、大変読みづらいものとなっておりました。ご迷惑おかけし、大変申し訳ありません。名前も上書きしていただきありがとうございます。
        重ね重ねになりますが、開発、またご丁寧に返信していただき、ありがとうございました。

        • Uranos8685 より:

          一時的な対応策として、Windows版 v1.0.2にて任意の場所にlrcを出力できる機能を追加しました。
          ただ、ウォークマン上のフォルダを指定してしまうといただいた症状と内部処理の仕組みからlocaltempに飛んでいってしまうことが想定されます。

          また、タイムスタンプ付与済の歌詞データをクリップボードにコピーできる機能の追加行いたいと考えてはおりますので、こちらについては少しお待ちください。

          • masa より:

            さまざまなアップデートありがとうございました。本当に使いやすく今後も愛用させていただきたいと思います。
            また、今回のアップデート後、ウォークマン上の音楽ファイルが直接開けなくなってしまったのでいっそのこととSDを直接とりだし、パソコンに接続してみたところlrcファイル書き出しで同じディレクトに入りまして、ウォークマンに再度挿入してみますと正常に歌詞として機能しました。。A300など、アンドロイドを積んだウォークマンを使いだしてから日が浅く、以前使用していたA50に比べるとウォークマンに入れたファイルをウォークマンを通して編集するのが困難に感じます(読みにくい文章で申し訳ありません)。以前報告しましたトラブルも原因はウォークマンのほうだったのかもしれません。
            本末転倒のようで本当に申し訳ないのですがクリップボードへのコピー等わずかな期間でこれだけの便利機能を追加していただき感謝しています。本当にありがとうございました。

          • Uranos8685 より:

            今回検証している中で一部の文字を含む場合にファイルが開けなくなることがあったため、ファイルパスの指定を厳密に行うように変更しました。よってWindowsのエクスプローラー上で指定してもLocalTempに飛ばされてしまうものはプログラム内部でパスが不一致となり除外されたものと思われます。
            ファイルパスの指定を元に戻すと一部の文字を含むファイルを読めないままとなってしまうため、しばらくはこのままになるかと思います。前の仕様ではWalkman上の音楽ファイルは読めていたようですので、デバイス側、プログラム言語側、アプリの実装方法の3点が絡んでいそうで、なかなか手強いです。使用しているプログラム言語において、ポータブルデバイスの読み書きで同じような事例がないか時間がある時に調べてみます。

            元々私がNAS上に保存した大量の音楽に対してlrcファイルを作る作業の効率化のために作ったものということもあり、さまざまな環境へ対応できていないため、しばらくは直接SDカードをマウントしていただくなどでご対応願います。
            今回ご報告いただいた内容の検討と並行して自分が使いたい機能を一気に実装してしまったので、しばらくは更新がないと思いますが何かお気づきの点がございましたらコメントいただけますと開発の参考にさせていただきます。