Skip to content

How can I embed synced lyrics into a MP3 or AAC file which also shows as synced Lyrics in Apple Music.app ? #8

@porg

Description

@porg

You possibly have the knowhow, hence I dare to ask here

Concrete Question

  • What exact metadata format must synced lyrics comply to in MP3 and AAC (M4A) files so that Apple Music on macOS shows them indeed as synced lyrics?
    • ID3 in MP3?
    • XMP in M4A container with AAC audio codec?
    • What text character encoding? (I'd prefer UTF-8)
    • What timecode: Milliseconds or MPEG frames?

My failed experiments

With Kid3 I added this metadata to the ID3 metadata of a WAV file

  • Lyrics Nr.1, Language: "ger" (German), Title "Viennese German", as audible in the song, UTF8
  • Lyrics Nr.2, Language: "ger" (German), Title "High German" (the translation for those not familiar with the Viennese dialect), UTF8
  • Synchronized Lyrics, Language: "ger" (German), Title "Viennese German", milliseconds as time units, UTF8
    • During playback in Kid3 the editor/preview windows jumps to the corresponding timestamped lines, so the timing is correct.
    • I also managed to export those synced lyrics as a .LYR file, should that be needed.

Convert WAV to MP3 and AAC and preserve all metadata

  • The basic ffmpeg -i input.wav output.mp3 || output.m4a carries over most metadata (Artist, Title, Album) but not all:
    • .mp3 (MP3 file with metadata in ID3 which ideally is preserved from the WAV file as-is)
      • Lyrics "Viennese German" and "High German" are copied over, but the synced lyrics not.
    • .m4a (MP4 container with AAC audio + metadata as XMP)
      • No Lyrics copied at all.

Also manual postprocessing attempts with Kid3 failed

  • Copy tag from WAV and paste to MP3 or M4A file
  • Inspecting this mediainfo frontend "InvisorLite" on macOS shows me this:
    • M4A
      • Lyrics: Shows the Viennese German version, the High German version is dropped.
        • Those M4A/XMP allow only one lyric record possibly?
        • In the source I had two lyric tags, both using language code "ger", only differing in the titles
        • So overall: In ID3 this seems to work, but in M4A/XMP only one seems to "make it"
      • SYLT - Synchronized lyric/text: Viennese German, whether only the title makes it, or also the content, I tried to determine by also inspecting with a Hex editor
        • Certain unique text phrases which are identical in German and Viennese German, occured only once. So this is a strong proof that this file has no 2 static lyrics + 1 synced lyrics., but rather only 1 static lyric. Unless ofc the "atomization" of the lyrics makes even ASCII text hard to find.
    • MP3
      • Contains a Field Lyrics Which shows: "High German: all High German lines // Viennese German: all Viennese German lines".
        • Seems like a complete representation
      • Shows no Synced Lyrics at all

Thanks for any directions!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions