- From: Jeremy Sawruk <jeremy.sawruk@gmail.com>
- Date: Fri, 8 Sep 2017 13:36:21 -0400
- To: James Sutton <jsutton@dolphin-com.co.uk>
- Cc: Adrian Holovaty <adrian@holovaty.com>, public-music-notation-contrib@w3.org
- Message-ID: <CANRG7pT3=kw3Myyi0AAMH_TSZds12jegFpKeCiHag10wQ+yZDA@mail.gmail.com>
Wouldn't it be the responsibility of the software to update bars[B].parts[P]? That is, the client software should have code that handles object insertion, deletion, reordering, etc. An ID in XML is not meant to be used as a pointer. You should instead have a pointer to that ID, and that pointer should be updated if the DOM changes (even though the ID itself has the same value). It's a very subtle point, but I think it's an important one. On Fri, Sep 8, 2017 at 1:09 PM, James Sutton <jsutton@dolphin-com.co.uk> wrote: > Hi Adrian, > > To clarify the original point, the uid is just like a unique address for > each item in a score, so any document external to the MusicXML can > unambiguously refer to any item in the score, even when the score is > changed, until the item is deleted > > The problem with bars[B].parts[P]... as an address is that it is not > robust in the face of modifications to the XML. ie if you add a part or a > bar then indices B and P do not point to the same place, and you normally > cannot detect the failure! > However if you use global uids they remain valid until the target object > is deleted, and then you can detect when it has failed, as long as ids are > never reallocated. (An interesting problem is how to ensure that.) > > James Sutton > Dolphin Computing > http://www.dolphin-com.co.uk > http://www.seescore.co.uk <http://www.dolphin-com.co.uk> > http://www.playscore.co <http://www.dolphin-com.co.uk> > > > > > > On 8 Sep 2017, at 15:28, Adrian Holovaty <adrian@holovaty.com> wrote: > > On Fri, Sep 8, 2017 at 4:01 PM, James Sutton <jsutton@dolphin-com.co.uk> > wrote: > >> Here is a couple of cases: >> >> 1. If any program (eg OMR engine) needs to output non-MusicXML >> information (eg bounding-boxes of items) then it could be passed via >> another channel (XML, JSON, text, ..), cross-referencing by uid >> >> 2. a) If a conductor taps a note on her tablet, the note could be >> highlighted on all the players' tablets by passing a uid. The MusicXML >> might be generated by a completely independent program which outputs uids. >> >> b) the note might be changed, or a notation might be removed or corrected >> >> This does open a general way of referring to elements in a MusicXML file >> and for passing any information about elements which is not catered for in >> the MusicXML format. >> > > For these use cases, it would be nice to have a general "selector" API for > music notation in general — not just MusicXML, but any symbolic common > Western notation across any app. > > Joe has brought up this idea in the past, and I think it's a great one. > Imagine something like this, to select the second beat of the first voice > in the first bar of the first part: > > bars[0].parts[0].voices[0].beats[1] > > It seems inelegant to shoehorn such a thing into MusicXML via a change to > the way IDs work, but I admit I don't understand your original proposal, > despite having read it a few times. :-/ > > Adrian > > -- > Adrian Holovaty > Soundslice: https://www.soundslice.com/ > Personal: http://www.holovaty.com/ > > >
Received on Friday, 8 September 2017 17:36:45 UTC