On January 9, 2020 at 4:19 AM Richard Shann < [email protected]> wrote:
On Wed, 2020-01-08 at 21:56 -0500, Bric wrote:In the denemo XML I am seeing the <rhythms>...</rhythms> section (nopun 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 rhythmicsequences to be used for entering music (and this is still the mainpurpose, having set up a snippet pitches sequentially played in on aMIDI keyboard are entered in with durations taken sequentially from thecurrent snippet). The <rhythms>...</rhythms> holds any snippets definedfor the current score.
Sorry - i don't fully understand, but get the gist.
(Is there any documentation elaborating on the XML structure?) :]Not as far as I know. If you are exploring the structure of Denemo'sfile format with the idea that it might be useful in connection withcreating MusicXML from Denemo then I think that wouldn't be profitable- it's just a coincidence that they are both using the XML markup, thewhole purpose is quite different. Only the very basic music information(pitches, durations, a little bit of staff/voice structure etc) isexplicitly present in Denemo, a large part of the final scoreappearance is created by LilyPond from chunks of LilyPond syntax storedinside Denemo (as part of the Denemo Directive structures). So youwould search in vain for anything like <composer>...</composer> in aDenemo score. Instead you would be looking for some LilyPond syntax ofthe form "composer = /markup ..." stored inside a suitable DenemoDirective.
I'm not too surprised that you have found that the lily2musicxml ideais not well developed - there are two basic problems:
1) MusicXML is not fundamentally sound: it was developed (AFAIK) by acommercial score editor company with a hazy notion of what they mightbe trying to represent (music? music notation?) and ended up as a rat'snest of fields whose meaning is really only defined by the MusicXMLoutput of that program. It is accompanied by an automated documentationsystem which gives the impression that the whole thing has beendesigned. It is the only show in town, however, as MIDI is nearlyuseless - quicker to re-enter music than use MIDI.
2) LilyPond syntax is not intended to describe the meaning of a musicalscore. 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 somewhereon the page - it does that via a standard LilyPond include file whichis not part of the LilyPond language, but written *in* the LilyPondlanguage. So, to write a lily2musicxml program you would have to settleon some commonly used LilyPond syntax and try and output some XMLsyntax that would get read in by Sibelius, Finale et al to give astarting point for editing into a musical score. A soul-destroying taskas you have no control over what those programs will make of someoneelse's musicXML syntax.
Well, it is conceivable to me that someone codes an exporter at some point, which interprets both the xml elements /and/ the lilypond snippets sprinkled all throughout denemo xml, to generate a more homogeneous format.. Such as MusicXML, for instance, consisting *only* of markup. But that, of course, looks like a monumental task at this point.
The real question I guess though is "what is it that you are trying todo?" ...
I'm trying to export/import out of curiosity and exploration mostly, but there are some practical reasons that compel me. For example, i've been making do without swing playback in denemo (for many years), and just realized that MuseScore offers swing playback.
I really really really (that's not repeated enough) hate MuseScore's input methods. After using denemo's super-intelligent, configurable input design, one's jaw can only drop in bewilderment over the heinous imposition of rests in Musescore, to compensate for incomplete duration in a measure, clunky, clumsy, near-impossible note duration editing, and other UI defects.
And yet, I can listen to what I generate (or import!) into MuseScore, in swing rhythm.
But beyond that, i'm also exploring this out of curiosity ... there is a plethora of editors out there, with a variety of playback options.
(For input and final rendering/typesetting i haven't seen anything more powerful than the denemo+lilypond combo)
Richard
