On Wed, 2020-01-08 at 21:56 -0500, Bric wrote: > In the denemo XML I am seeing the <rhythms>...</rhythms> section (no > pun intended) which contains three <rhythm... > ... </rhythm> > nodes. I can't figure out what this represents.
Its the internal name for what is presented to the user as "Snippets" - originally music snippets were intended only to hold short rhythmic sequences to be used for entering music (and this is still the main purpose, having set up a snippet pitches sequentially played in on a MIDI keyboard are entered in with durations taken sequentially from the current snippet). The <rhythms>...</rhythms> holds any snippets defined for the current score. > (Is there any documentation elaborating on the XML structure?) :] Not as far as I know. If you are exploring the structure of Denemo's file format with the idea that it might be useful in connection with creating MusicXML from Denemo then I think that wouldn't be profitable - it's just a coincidence that they are both using the XML markup, the whole purpose is quite different. Only the very basic music information (pitches, durations, a little bit of staff/voice structure etc) is explicitly present in Denemo, a large part of the final score appearance is created by LilyPond from chunks of LilyPond syntax stored inside Denemo (as part of the Denemo Directive structures). So you would search in vain for anything like <composer>...</composer> in a Denemo score. Instead you would be looking for some LilyPond syntax of the form "composer = /markup ..." stored inside a suitable Denemo Directive. I'm not too surprised that you have found that the lily2musicxml idea is not well developed - there are two basic problems: 1) MusicXML is not fundamentally sound: it was developed (AFAIK) by a commercial score editor company with a hazy notion of what they might be trying to represent (music? music notation?) and ended up as a rat's nest of fields whose meaning is really only defined by the MusicXML output of that program. It is accompanied by an automated documentation system which gives the impression that the whole thing has been designed. It is the only show in town, however, as MIDI is nearly useless - quicker to re-enter music than use MIDI. 2) LilyPond syntax is not intended to describe the meaning of a musical score. It only does so incidentally - "cis" means a C sharp, but the "composer = ..." is not LilyPond syntax for the composer of the score, its just telling the LilyPond typesetter to place some markup somewhere on the page - it does that via a standard LilyPond include file which is not part of the LilyPond language, but written *in* the LilyPond language. So, to write a lily2musicxml program you would have to settle on some commonly used LilyPond syntax and try and output some XML syntax that would get read in by Sibelius, Finale et al to give a starting point for editing into a musical score. A soul-destroying task as you have no control over what those programs will make of someone else's musicXML syntax. The real question I guess though is "what is it that you are trying to do?" ... Richard
