Replies: 3 comments 3 replies
|
I don't think there's value in augmenting the documentation to handle hypothetical cases. It's like code, or human language: of course we can invent nonsensical phrases, but there's potentially an infinity of them. Creating rules to avoid hypothetical constructs will cause adverse effects: make the doc harder to read and reason about, detract attention from the real-world cases, and also run the risk of blocking potential uses that may be legitimate but that had not been considered when adding the rule. The cases that are more interesting and worthy of documentation / schema modification are musical constructs that exist in the real world but cannot be represented in MusicXML. You and others have brought forward many of such cases and they are highly useful to help advance the spec. Maybe we can consider hypothetical cases such as this one the equivalent of "unit tests" for the spec. As such, the best place to include them would be the semantic tests library that we're building. I would actually welcome your involvement in this initiative, seeing your interest in pathological cases. |
|
Well, I don't really agree with you – there are always apps that do the unthinkable. My example is <note> # a quarter on beat one, voice 1
<backup> # one beat
<harmony> # on beat one
<forward> # one beat
<note> # on beat two, voice 1
...I consider it bad that the specification is always 'behind', that is, people bend MusicXML in ways nobody is expecting, and we can only say "alas, it's too late to change that in the specification because apps are using it" in hindsight. On the other hand, unit tests would be a good thing to test conformity. However, such tests are not a replacement for proper documentation to avoid unwanted interpretation IMHO. |
|
@lemzwerg continuing the discussion here until we reach some actionable conclusion.
Can you show the source score and resulting MusicXML that Dorico emits? It might just be a bug on their side. If the need is legitimate and inexpressible in MusicXML, then this is a concern to be addressed here. If the source can be represented in MusicXML today, and the Dorico export is wrong, then it's on their side.
I'm not sure this scenario applies here. We started from a hypothetical case, and now you mention that Dorico produces what seems to be invalid MusicXML. There is nothing in the documentation that would be too late to revert.
In my mind, it's the opposite. Prescriptive documentation (and laws) can only go so far to avoid unwanted behaviour, because human language is malleable and open to loophoiles. Tests, on the other hand, provide an unambiguous pass/fail judgment - that's why they are favoured in software. My thinking is that providing a battery of tests that demonstrate invalid MusicXML constructs, and that can be constantly augmented with new cases, will be valuable (and more efficient than prescriptive documentation) to software makers as they are developing their MusicXML import / export. I hope that you can assist in this direction of building out validity tests, which I view as related to the wonderful MusicXML test suite in Lilypond that you've been maintaining. |
Uh oh!
There was an error while loading. Please reload this page.
While walking in the garden of abnormal MusicXML code, I found a (theoretical) example that follows the standard to the letter, but which is most certainly not what we want to see in reality. Please consider the following pseudo-XML code that constructs a two-note chord.
I thus suggest to improve the documention of
<chord>. For example, this sentencecould be extended to
Alternatively, the documentation for
<backup>and<forward>could mention that these elements are not allowed within a chord.All reactions