feat: Add ShowMovement Tag

This commit adds the `SHOWMOVEMENT` [tag](https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html#show-work-movement-4). Historically, this tag originates from iTunes' MP4, but has since become widely used. It is created by Picard's Classical music [plugins](https://picard-docs.musicbrainz.org/en/variables/variables_classical.html) (such as "Classical Extras" or "Work & Movement").

The reasoning behind this tag is to display Work & Movement titles without redundant information and in a more uniform way. Moreover, it additionally serves as an implicit marker denoting classical music tracks (genre tags aren't sufficient).

If the client so chooses to support this tag, they can display `Work` and `Movement` instead of the track title allowing for cleaner display. Other clients can continue to display the `%title%` as before without any fuss.
This commit is contained in:
Miguel A. Arroyo 2024-07-21 14:46:36 -07:00
parent 8e42467bd2
commit e3809bd4f0
5 changed files with 7 additions and 1 deletions

2
NEWS
View File

@ -48,7 +48,7 @@ ver 0.24 (not yet released)
- add option "mixramp_analyzer" to scan MixRamp tags on-the-fly - add option "mixramp_analyzer" to scan MixRamp tags on-the-fly
- "one-shot" consume mode - "one-shot" consume mode
* tags * tags
- new tags "TitleSort", "Mood" - new tags "TitleSort", "Mood", "ShowMovement"
* output * output
- add option "always_off" - add option "always_off"
- alsa: require alsa-lib 1.1 or later - alsa: require alsa-lib 1.1 or later

View File

@ -344,6 +344,7 @@ The following tags are supported by :program:`MPD`:
* **ensemble**: the ensemble performing this song, e.g. "Wiener Philharmoniker". * **ensemble**: the ensemble performing this song, e.g. "Wiener Philharmoniker".
* **movement**: name of the movement, e.g. "Andante con moto". * **movement**: name of the movement, e.g. "Andante con moto".
* **movementnumber**: movement number, e.g. "2" or "II". * **movementnumber**: movement number, e.g. "2" or "II".
* **showmovement**: If this tag is set to "1" players supporting this tag will display the `work`, `movement`, and `movementnumber`` instead of the track title.
* **location**: location of the recording, e.g. "Royal Albert Hall". * **location**: location of the recording, e.g. "Royal Albert Hall".
* **grouping**: "used if the sound belongs to a larger category of * **grouping**: "used if the sound belongs to a larger category of
sounds/music" (`from the IDv2.4.0 TIT1 description sounds/music" (`from the IDv2.4.0 TIT1 description

View File

@ -184,6 +184,9 @@ static constexpr struct {
{ TAG_MOOD, MPD_TAG_MOOD }, { TAG_MOOD, MPD_TAG_MOOD },
{ TAG_MUSICBRAINZ_RELEASEGROUPID, { TAG_MUSICBRAINZ_RELEASEGROUPID,
MPD_TAG_MUSICBRAINZ_RELEASEGROUPID }, MPD_TAG_MUSICBRAINZ_RELEASEGROUPID },
#endif
#if LIBMPDCLIENT_CHECK_VERSION(2,23,0)
{ TAG_SHOWMOVEMENT, MPD_TAG_SHOWMOVEMENT },
#endif #endif
{ TAG_NUM_OF_ITEM_TYPES, MPD_TAG_COUNT } { TAG_NUM_OF_ITEM_TYPES, MPD_TAG_COUNT }
}; };

View File

@ -28,6 +28,7 @@ static constexpr struct tag_table tag_item_names_init[] = {
{"Work", TAG_WORK}, {"Work", TAG_WORK},
{"Movement", TAG_MOVEMENT}, {"Movement", TAG_MOVEMENT},
{"MovementNumber", TAG_MOVEMENTNUMBER}, {"MovementNumber", TAG_MOVEMENTNUMBER},
{"ShowMovement", TAG_SHOWMOVEMENT},
{"Ensemble", TAG_ENSEMBLE}, {"Ensemble", TAG_ENSEMBLE},
{"Location", TAG_LOCATION}, {"Location", TAG_LOCATION},
{"Grouping", TAG_GROUPING}, {"Grouping", TAG_GROUPING},

View File

@ -30,6 +30,7 @@ enum TagType : uint8_t {
TAG_WORK, TAG_WORK,
TAG_MOVEMENT, TAG_MOVEMENT,
TAG_MOVEMENTNUMBER, TAG_MOVEMENTNUMBER,
TAG_SHOWMOVEMENT,
TAG_ENSEMBLE, TAG_ENSEMBLE,
TAG_LOCATION, TAG_LOCATION,
TAG_GROUPING, TAG_GROUPING,