Support to view custom metadata in the library

My library uses standardized and custom metadata fields to store information about a track.
Example (data taken from discogs release #3259936):

  • Track Artist: Dave Armstrong
  • Track Title: Make Your Move
  • Track Subtitle: AC Radio Edit
  • Release Publisher: Unlimited Sounds
  • Initial Key: C
  • Publisher ID: SPV 055-16485
  • Discogs Release ID: 3259936
    … and a few more

Some of these fields are

  1. standardized in ID3v2 and supported by the Mixxx library: Track Artist (TPE1), Track Title (TIT2)
  2. standardized in ID3v2 and not supported by the Mixxx library: Track Subtitle (TIT3), Publisher (TPUB), Initial Key (TKEY)
  3. custom (PUBLISHER_ID, DISCOGS_RELEASE_ID)

The standardized fields are not exclusive to ID3v2, I used the tag mapping overview of the tagging tool MP3Tag as orientation for Vorbis tag field names.

My problem: I’m missing the subtitle and publisher field in the library view of Mixxx. These are really helpful to me when browsing the library and searching for the next track of my set.

  • I found in a forum thread from 07/2020 that there’s currently no support for browsing custom metadata fields in the library.
  • The related issue Custom tags / metadata support does not contain additional information.
  • I found a pull request for Custom Tags (#2656); if I understand it right, tag does not mean a metadata field here, but a new feature for the Mixxx library that sits on top of file metadata.

My questions:

  1. Are there any additional forum threads, issues or pull requests that relate to this topic?
  2. Is it planned that the mentioned pull request #2656 allows to view my fields Subtitle and Publisher in the library view?

- Christian

  • TKEY is already supported
  • both TPUB (“record label”) and TIT3 (“subtitle”) are supported with the EXTRA_METADATA build flag, but not yet used in Mixxx

@tapir How exactly can those fields be enabled for building with cmake?

Not available as a public build feature. Only enabled in #2282 on behalf of -DAOIDE.

You need to edit CMakeLists.txt otherwise:

target_compile_definitions(mixxx-lib PUBLIC __EXTRA_METADATA__)

But since Mixxx doesn’t store those additional properties they are only available after re-importing the file tags until the Track object goes out of scope.

1 Like

In my custom build I reimport file tags whenever loading a track object. The Mixxx database serves only as a fast cache for searching, sorting, and for performance data. The audio files with their tags are considered the book of records in this regard.

Thanks for your fast response. Sounds good to me, seems like a part of the job is already done.

Let’s focus on using the subtitle in the library. What steps would I have to take to achieve this? My current understanding:

  • The subtitle may be integrated into Mixx using the feature extra metadata.
  • The implementation of this feature is available in the backend but not part of the public build of Mixxx.
  • To activate the feature, Mixxx must be built either using the compiler directive EXTRA_METADATA or -DAOIDE=ON. The aoide binary is necessary in the latter case.
  • The subtitle is read into the track metadata object on re-import of file metadata. When I re-import the whole library, all subtitles are available in the application.
  • The subtitle is not persisted to the database, so the re-import must be done on every start of Mixxx.
  • The frontend does not support the feature yet. The application must be extended to actually use the subtitle in the GUI.
    • The database must be extended to contain another column for the subtitle. This will most likely not be implemented because aoide is planned as more flexible alternative (including e.g. multi-valued tags).
    • To view the subtitle, the library table in the frontend needs another column whose data is read from the database or aoide.
    • To search by the subtitle, the query engine must be adapted.

I’d appreciate if someone could revisit this and fix and/or complete this list.

1 Like