Document metadata #450
Replies: 4 comments 3 replies
-
|
Thanks for bringing this up. We don't have anything concrete planned yet, so we'd welcome any proposals — go for it! Just to quickly dive into the weeds, I could see this structure living within the top-level https://w3c.github.io/musicxml/musicxml-reference/elements/credit/ |
Beta Was this translation helpful? Give feedback.
-
|
My thought is to have a single metadata object which contains various fields (title, credit/creators list, copyright, etc.) and have multiple places where the object can be placed so that it can function as a movement title when placed at a movement/"flow" break or attribute different lyric authorship to different songs in a collection by the same composer. For compositions like a Baroque edition with realized basso-continuo, the composer and copyright attribution can differ not just from section to section but even staff to staff within a part (for those of us making databases of only out-of-copyright music, filtering out completions, realizations, etc. that have their own copyright is critical). I strongly suggest we also look at the prior art of our friends and colleagues in the MEI project, because Metadata (informed by music librarians) is a place where that project particularly shines. https://music-encoding.org/guidelines/v4/content/metadata.html The Humdrum/Kern specification also thought deeply about metadata (https://www.humdrum.org/reference-records/index.html) though we would certainly NOT want to use their 3-letter codes. I think that if possible it's best to adopt an existing open standard for metadata such as Dublin Core in JSON (DCMI) or JSON-LD so that there are one-to-one mapping possibilities with other databases/library catalogs etc. This gives the possibility of using existing parsers etc. saving time in implementing metadata conversion. |
Beta Was this translation helpful? Give feedback.
-
|
Here's my proposal for how to add metadata to MNX. Let me know if I can clarify any points or expand on anything: Overview
In order to separate the concern of metadata from the actual written music, I propose to create a new root level "metadata" object. This not only separates metadata from music, but also makes an easily scannable root object that parsers can quickly reference without scanning through the rest of the file. Within root.metadata are two fields, "records" and "assignments". "records" hold the actual metadata, and "assignments" determines both where this metadata applies to and what language the metadata is written in for multi-language support. RecordsThere are 4 types of records: work, expression, publication, and performance, each with their own scope limitations to provide a comprehensive metadata system.
All of these records are defined as a key-value pair in AssignmentsThe
As mentioned before, only expression and performance records apply to both "location" and "parts". The "parts" field is just omitted or ignored for "work" records, and both the "location" and "parts" fields are omitted or ignored for "publication" records. ScoresThis now embeds metadata into the MNX file, but there's one more step: displaying metadata in a score. Usually a score will have a title, list the composers, and include the copyright at the very least. To do this, I propose adding another field, "metaFields", to the Score object. This tells the engraver which metadata fields are to be displayed in that score, which are then linked back to the assignments and records to figure out which of those fields are being used, where they are, and what their values are. The simplest example here to add a title to an MNX score would be this: One thing to note about this spec is that every field across all record types has a unique name, so any record field can be referenced inline in the metaFields array to be included without worrying about ambiguity. Some things to figure out still:
Possible pitfalls:
Record fieldsHere's a list of all the fields I think are a good starting point for each type of record, but I don't think this has full coverage for every possible situation so it probably needs to be expanded/changed. Work Record Fields
Expression Record Fields
Publication Record Fields
Performance Record Fields
|
Beta Was this translation helpful? Give feedback.
-
|
I once again suggest that we look at existing open standards such as JSON-LD (whose community has been quite welcoming to me) rather than creating yet another metadata standard. catalogNumber -- what happens if there are multiple catalogues? or (w/ Mozart) different numbers for different editions of the same catalogue. Languages -- two-letter-code is enough for some things, but richer codes exist for, instance, en-us and en-uk use different spellcheckers. These are corner cases that have already been thought about by others. I do think that the contribution to score metadata we need to make is here, as Oliver suggests, is determining what parts of the document metadata applies to (as w/ the basso continuo example above) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Is there a plan to support complex document metadata in MNX? I know there was issue #267 that addressed why title was omitted from the spec, but I think that MNX would benefit from a higher level "document" field that contains any document metadata that doesn't have to do with the music itself, such as "title", "composer", "arranger", "lyricist", "opus", and many more potential fields. It seems logical to separate these from the rest of the music implementation and I think differentiating between the "document" and the "score" or even "global" would be a good way to do it.
Happy to do a more in-depth spec on metadata but wanted to get a better idea of what is going on with development currently first.
Beta Was this translation helpful? Give feedback.
All reactions