Application icon

Decompose Title into Classical Metadata

This statement is used to decompose titles into separate classical components. title is used loosely as the Title field is not directly used.

The source parsing is the same algorithm which is used when decomposing MusicBrainz works to import classical fields. The algorithm is not foolproof.

Input and output is maintained in a container array. Any directed path can be used as long as it resolves to be an array. Every element in the array must be an object which contains a String name of title. Array items which are not Objects or do not contain a non empty title member are ignored.

The action test state will be set to false if the directed path is not an array or does not exist. It will also be set to false if no array elements are valid. Otherwise it will be set to true.

On output the objects can contain the following members. Note that all items are strings except for isClassical. All items are optional.

isClassical
A boolean value which is set to true if classical metadata was extracted.

classicalCatalog
The extracted catalog metadata.

composition
Commonly stored as Work

movementCount
The synthesized movement count. Note that this only is accurate if the submitted titles encompass all tracks in a movement.

movementName
The name of the movement.

movementNumber
The movement number

opus
The opus.

partName
Commonly stored as Part. The Part is the movement number as a Roman numeral followed by period-space and the movement name.

Example input container:

[
  {
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 1. Allegro"
  },
  {
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 2. Adagio"
  },
  {
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 3. Allegro Assai"
  },
  {
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 1. Allegro"
  },
  {
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 2. Larghetto"
  },
  {
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 3. Allegretto"
  },
  {
    "title" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)"
  },
  {
    "title" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)"
  }
]

Example output container:

[
  {
    "classicalCatalog" : "K. 488",
    "composition" : "Piano Concerto No. 23 in a Major, K. 488",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Allegro",
    "movementNumber" : "1",
    "partName" : "I. Allegro",
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 1. Allegro"
  },
  {
    "classicalCatalog" : "K. 488",
    "composition" : "Piano Concerto No. 23 in a Major, K. 488",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Adagio",
    "movementNumber" : "2",
    "partName" : "II. Adagio",
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 2. Adagio"
  },
  {
    "classicalCatalog" : "K. 488",
    "composition" : "Piano Concerto No. 23 in a Major, K. 488",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Allegro Assai",
    "movementNumber" : "3",
    "partName" : "III. Allegro Assai",
    "title" : "Piano Concerto No. 23 in a Major, K. 488: 3. Allegro Assai"
  },
  {
    "classicalCatalog" : "K. 491",
    "composition" : "Piano Concerto No. 24 in C Minor, K. 491",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Allegro",
    "movementNumber" : "1",
    "partName" : "I. Allegro",
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 1. Allegro"
  },
  {
    "classicalCatalog" : "K. 491",
    "composition" : "Piano Concerto No. 24 in C Minor, K. 491",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Larghetto",
    "movementNumber" : "2",
    "partName" : "II. Larghetto",
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 2. Larghetto"
  },
  {
    "classicalCatalog" : "K. 491",
    "composition" : "Piano Concerto No. 24 in C Minor, K. 491",
    "isClassical" : true,
    "movementCount" : "3",
    "movementName" : "Allegretto",
    "movementNumber" : "3",
    "partName" : "III. Allegretto",
    "title" : "Piano Concerto No. 24 in C Minor, K. 491: 3. Allegretto"
  },
  {
    "classicalCatalog" : "D. 899/3",
    "composition" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)",
    "isClassical" : true,
    "movementCount" : "1",
    "movementNumber" : "1",
    "opus" : "90",
    "title" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)"
  },
  {
    "classicalCatalog" : "D. 899/4",
    "composition" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)",
    "isClassical" : true,
    "movementCount" : "1",
    "movementNumber" : "1",
    "opus" : "90",
    "title" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)"
  }
]

The Extract Work and Part from Title action on the resources web page is a good example of how to use this statement.



Containers

Directed Paths