[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: XML anatomy

From: Richard Shann
Subject: Re: XML anatomy
Date: Thu, 09 Jan 2020 09:19:39 +0000

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

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?" ...


reply via email to

[Prev in Thread] Current Thread [Next in Thread]