Uploaded image for project: 'Picard'
  1. Picard
  2. PICARD-1050

Only use WORK field for multilevel works

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • 1.4.1
    • Tags & Metadata
    • None

      The way MusicBrainz defines a work is rather at odds with how users consider tend to use a work.

      Consider iTunes for example their work and movement fields are clearly considering a work to contain multiple movements and is aimed at 'classical' music.

      Users who are interested in a work field for the purposes of tagging use them for grouping movement in works. They are not interested in Pop songs that have a part of relationship to a work that is not part of a larger work.

      I would ask Picard developers to consider using the same field that Songkong does for MusicBrainz works rather than using the WORK field. I struggled to find good name but SongKong uses MUSICBRAINZ_WORK_COMPOSITION for the work that recording is directly linked to and MUSICBRAINZ_WORK for the top level work that you end up with after traversing PART_OF relationships from the MUSICBRAINZ_WORK_COMPOSITION to another Work, and so on. If a recording is linked to just one level of work then MUSICBRAINZ_WORK_COMPOSITION and MUSICBRAINZ_WORK have same value.

      Then only (if you want) to populate WORK if the MusicBrainz recording does link to a multilevel work, this links in with PICARD-1043 since there is little point adding support for Movement if you don't set work so that it corresponds with Movement.

          [PICARD-1050] Only use WORK field for multilevel works

          Robo Tardis added a comment - - edited

          Perhaps these are reasonable tags to establish as standards for the composition-work:

          • COMPOSITION
          • MUSICBRAINZ_COMPOSITION_WORKID

          That leaves WORK and MUSICBRAINZ_WORKID for use for multilevel works.

          In the meantime (until standardized composition-work tags are established), I'm using the following script with the workandmovement 1.1 plugin to preserve simple work info:

          $set(work,$if2($get(work),$get(_recording_work)))
          $set(musicbrainz_workid,$if2($get(musicbrainz_workid),$get(_recording_workid)))

          Robo Tardis added a comment - - edited Perhaps these are reasonable tags to establish as standards for the composition-work: COMPOSITION MUSICBRAINZ_COMPOSITION_WORKID That leaves WORK and MUSICBRAINZ_WORKID for use for multilevel works. In the meantime (until standardized composition-work tags are established), I'm using the following script with the workandmovement 1.1 plugin to preserve simple work info: $set(work,$if2($get(work),$get(_recording_work))) $set(musicbrainz_workid,$if2($get(musicbrainz_workid),$get(_recording_workid)))

          @Robo Tardis: This got discussed these days on IRC. https://github.com/metabrainz/picard-plugins/pull/337 will make the original values for work and work ID available as variables, so you can use scripting to make use of these as you wish. For details please see the comment on the pull request.

          Philipp Wolfer added a comment - @Robo Tardis: This got discussed these days on IRC. https://github.com/metabrainz/picard-plugins/pull/337 will make the original values for work and work ID available as variables, so you can use scripting to make use of these as you wish. For details please see the comment on the pull request.

          Robo Tardis added a comment -

          So I recently noticed that my "Work" tags are getting cleared by picard, and tracked it down to the Work & Movement plugin.  I had expected the plugin to add more work info, not delete work info that was already in my tags.

          If Work is only for multilevel works, then where does picard save MB Work (Recording Of) info? From the above it sounds like maybe it should be in some sort of "Composition" tag, but I don't see any tags with that info in picard if the "Work & Movement" plugin is enabled.

          Robo Tardis added a comment - So I recently noticed that my "Work" tags are getting cleared by picard, and tracked it down to the Work & Movement plugin.  I had expected the plugin to add more work info, not delete work info that was already in my tags. If Work is only for multilevel works, then where does picard save MB Work (Recording Of) info? From the above it sounds like maybe it should be in some sort of "Composition" tag, but I don't see any tags with that info in picard if the "Work & Movement" plugin is enabled.

          Philipp Wolfer added a comment - See https://github.com/metabrainz/picard-plugins/pull/184 for a proposed plugin

          Paul Taylor added a comment - - edited

          Paul Taylor added a comment - - edited ok, understood I will fix underlying lib - https://bitbucket.org/ijabz/jaudiotagger/issues/272/for-id3-rename-txxx-script-to-txxx-script

          F***, sorry. It is "SCRIPT", repeating "SCRIPT", all uppercase Sorry for adding to the confusion, I sneakily updated my previous post.

          Philipp Wolfer added a comment - F***, sorry. It is "SCRIPT", repeating "SCRIPT", all uppercase Sorry for adding to the confusion, I sneakily updated my previous post.

          Paul Taylor added a comment -

          Please confirm in Picard it is still using Script not SCRIPT ?

          Paul Taylor added a comment - Please confirm in Picard it is still using Script not SCRIPT ?

          Philipp Wolfer added a comment - - edited

          Yes, in my plan this includes clearing the work if it does not qualify as a multi-level work. Actually the plugin I mentioned for step 3 already does this, and my plan would be to tweak and extend this plugin until the results are satisfying enough to integrate it into Picard.

           

          Rgearding the casing issues: Yes, we always had it as "SCRIPT", I think this misunderstanding was caused by some documentation error (probably by me ). For works I think we have an issue here, and yes, I would like to change this if possible.

          Philipp Wolfer added a comment - - edited Yes, in my plan this includes clearing the work if it does not qualify as a multi-level work. Actually the plugin I mentioned for step 3 already does this, and my plan would be to tweak and extend this plugin until the results are satisfying enough to integrate it into Picard.   Rgearding the casing issues: Yes, we always had it as "SCRIPT", I think this misunderstanding was caused by some documentation error (probably by me ). For works I think we have an issue here, and yes, I would like to change this if possible.

          Paul Taylor added a comment - - edited

          Okay great so 3 is a good step, and I hope that 4 includes clear the work if it does not qualify as a multi-level work, that is amy main bugbear with the current way it works.

          (Also offtopic, but I  noticed for ID3 that you add Script field but do it as SCRIPT whereas I add as Script, not sure why I have this difference did you used to have it as Script or if you have only ever had it as SCRIPT, I will modify SongKong/Jaikzo to use SCRIPT because that is better. Related to this I feel it would be better if Picard moved form using Work to WORK for ID3)

          Paul Taylor added a comment - - edited Okay great so 3 is a good step, and I hope that 4 includes clear the work if it does not qualify as a multi-level work, that is amy main bugbear with the current way it works. (Also offtopic, but I  noticed for ID3 that you add Script field but do it as SCRIPT whereas I add as Script , not sure why I have this difference did you used to have it as Script or if you have only ever had it as SCRIPT, I will modify SongKong/Jaikzo to use SCRIPT because that is better. Related to this I feel it would be better if Picard moved form using Work to WORK for ID3)

          Philipp Wolfer added a comment - - edited

          yes, discussions can sometimes get a bit difficult around those topics.

           

          So my current approach to a solution:

          1. Extend Picard so one can actually use and save the tags work, movement, movementnumber, movementtotal to at least capture the iTunes / MusicBee use case (users might still need a more sophisticated structure, but they can use scripting for this and need a more flexible player). This part is mostly ready for next release.
          2. Document how to configure the Classical Extras plugin to use these tags, also hopefully set the default configuration for it accordingly
          3. Release a more simple plugin, which will fill work and movement from MB data and clear the work if it does not qualify as a multi-level work. I have a prototype ready for this. I see this as an easier solution for users who don't need the flexibility of Classical Extras, but also as a research tool to figure out what is possible and how we could integrate this into Picard.
          4. In a future release integrate populating movement and work functionality directly into Picard

          P.S.: I will update the mapping sheet in the next days with the new tags.

          Philipp Wolfer added a comment - - edited yes, discussions can sometimes get a bit difficult around those topics.   So my current approach to a solution: Extend Picard so one can actually use and save the tags work, movement, movementnumber, movementtotal to at least capture the iTunes / MusicBee use case (users might still need a more sophisticated structure, but they can use scripting for this and need a more flexible player). This part is mostly ready for next release. Document how to configure the Classical Extras plugin to use these tags, also hopefully set the default configuration for it accordingly Release a more simple plugin, which will fill work and movement from MB data and clear the work if it does not qualify as a multi-level work. I have a prototype ready for this. I see this as an easier solution for users who don't need the flexibility of Classical Extras, but also as a research tool to figure out what is possible and how we could integrate this into Picard. In a future release integrate populating movement and work functionality directly into Picard P.S.: I will update the mapping sheet in the next days with the new tags.

            sophist Sophist
            ijabz Paul Taylor
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:

                Version Package