8000 Convert IPLS to TIPL and TMCL (#1274) by ufleisch · Pull Request #1276 · taglib/taglib · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Convert IPLS to TIPL and TMCL (#1274) #1276

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 21, 2025
Merged

Conversation

ufleisch
Copy link
Contributor

The involvement/involvee pairs which are supported for TIPL properties (ARRANGER, ENGINEER, PRODUCER, DJ-MIX, MIX) are left in the TIPL frame, other pairs are moved to a TMCL frame. This will result in a consistent behavior for both ID3v2.3 and ID3v2.4 tags produced by MusicBrainz Picard.

This will improve compatibility of the property map interface with files tagged by MusicBrainz Picard. Two problems are addressed:

  • The involvements supported by the property interface for TIPL frames (ARRANGER, ENGINEER, PRODUCER, DJ-MIX, MIX) are the keys which are used by MusicBrainz (arranger, engineer, producer, DJ-mix, mix), but different in case. Now the check is case insensitive, so that TIPL frames created by MusicBrainz will be accessible via the property interface.
  • The IPLS frames from ID3v2.3 tags were internally converted to a TIPL frame, which then contained also the musicians, which should go into a TMCL frame. Therefore, for files with ID3v2.3 tags, the musicians were missing (PERFORMER:instrument properties) and also the other involvements because TIPL frames are only used for the properties if they do not contain other involvements than those listed above.

With these changes, running examples/tagreader on the example file from #1274 will contain the missing properties:

-- TAG (basic) --
title   - "Sgt. Pepper's Lonely Hearts Club Band (2018 Mix)"
artist  - "The Beatles"
album   - "Sgt. Pepper's Lonely Hearts Club Band (Super Deluxe Edition)"
year    - "2018"
comment - ""
track   - "1"
genre   - "Art Rock; Baroque Pop; Music Hall; Psychedelic Rock; Rock; Rock Music; Symphonic Rock"
-- TAG (properties) --
ALBUM                       - "Sgt. Pepper's Lonely Hearts Club Band (Super Deluxe Edition)"
ALBUMARTIST                 - "The Beatles"
ALBUMARTISTSORT             - "Beatles, The"
ARTIST                      - "The Beatles"
ARTISTS                     - "The Beatles"
ARTISTSORT                  - "Beatles, The"
BARCODE                     - "602567971542"
BPM                         - "93"
DATE                        - "2018-09-21"
DISCNUMBER                  - "1/4"
GENRE                       - "Art Rock; Baroque Pop; Music Hall; Psychedelic Rock; Rock; Rock Music; Symphonic Rock"
ISRC                        - "GBUM71700956"
LABEL                       - "Universal Music Catalogue"
LANGUAGE                    - "eng"
MEDIA                       - "Digital Media"
MIXER                       - "Giles Martin"
MUSICBRAINZ_ALBUMARTISTID   - "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d"
MUSICBRAINZ_ALBUMID         - "e8862e8c-68c6-4265-b689-6c808280c3c0"
MUSICBRAINZ_ARTISTID        - "b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d"
MUSICBRAINZ_RELEASEGROUPID  - "9f7a4c28-8fa2-3113-929c-c47a9f7982c3"
MUSICBRAINZ_RELEASETRACKID  - "d01e77fb-b351-4db4-9c3f-218d7c17f65b"
MUSICBRAINZ_TRACKID         - "effc6a79-fc7c-4ac5-b8b9-8670ed59920e"
MUSICBRAINZ_WORKID          - "c6402058-011c-30d1-8189-6d8eedebfed2"
ORIGINALDATE                - "1967"
ORIGINALYEAR                - "1967"
PERFORMER:BACKGROUND VOCALS - "George Harrison"
PERFORMER:BACKGROUND VOCALS - "John Lennon"
PERFORMER:BACKGROUND VOCALS - "Paul McCartney"
PERFORMER:BASS              - "Paul McCartney"
PERFORMER:DRUMS (DRUM SET)  - "Ringo Starr"
PERFORMER:FRENCH HORN       - "James W. Buck"
PERFORMER:FRENCH HORN       - "John Burden"
PERFORMER:FRENCH HORN       - "Neill Sanders"
PERFORMER:FRENCH HORN       - "Tony Randall"
PERFORMER:GUITAR            - "George Harrison"
PERFORMER:GUITAR            - "John Lennon"
PERFORMER:GUITAR            - "Paul McCartney"
PERFORMER:LEAD VOCALS       - "Paul McCartney"
RELEASECOUNTRY              - "AF"
RELEASESTATUS               - "official"
RELEASETYPE                 - "album"
REPLAYGAIN_ALBUM_GAIN       - "-5.32 dB"
REPLAYGAIN_ALBUM_PEAK 
8000
      - "1.000000"
REPLAYGAIN_TRACK_GAIN       - "-9.26 dB"
REPLAYGAIN_TRACK_PEAK       - "1.000000"
SCRIPT                      - "Latn"
TITLE                       - "Sgt. Pepper's Lonely Hearts Club Band (2018 Mix)"
TRACKNUMBER                 - "1/13"
WORK                        - "Sgt. Pepper's Lonely Hearts Club Band"
WRITER                      - "John Lennon/Paul McCartney"
PICTURE:
  data        - (112693 bytes)
  description - ""
  mimeType    - "image/jpeg"
  pictureType - "Front Cover"
-- AUDIO --
bitrate     - 320
sample rate - 44100
channels    - 2
length      - 2:02

The file has an IPLS frame containing "guitar|George Harrison|guitar|John Lennon|guitar|Paul McCartney|bass|Paul McCartney|drums (drum set)|Ringo Starr|French horn|James W. Buck|French horn|John Burden|French horn|Neill Sanders|French horn|Tony Randall|mix|Giles Martin|background vocals|George Harrison|background vocals|John Lennon|background vocals|Paul McCartney|lead vocals|Paul McCartney", the "mix" involvement is the "MIXER" property, all other involvements are "PERFORMER:" properties.

ufleisch added 2 commits June 20, 2025 10:19
The involvement/involvee pairs which are supported for TIPL properties
(ARRANGER, ENGINEER, PRODUCER, DJ-MIX, MIX) are left in the TIPL
frame, other pairs are moved to a TMCL frame. This will result in a
consistent behavior for both ID3v2.3 and ID3v2.4 tags produced by
MusicBrainz Picard.
@ufleisch ufleisch merged commit 88d6b18 into taglib:master Jun 21, 2025
4 checks passed
@ufleisch ufleisch deleted the ipls-tipl-tmcl branch June 29, 2025 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0