w3c / musicxml

MusicXML specification
512 stars 57 forks source link

'tacet al fine' multi-measure rests #557

Open lemzwerg opened 5 days ago

lemzwerg commented 5 days ago

Gould writes the following in her book Behind Bars: “When a player has finished playing for the remainder of a piece, this is indicated tacet al fine. For orientation in rehearsal, place the instruction after a subsequent rehearsal mark:”

image

As far as I can see, this is not supported yet in MusicXML. To do that I suggest that the <multiple-rest> element gets a new attribute text, say, which replaces the normally displayed number of bars (but see also issue #537 regarding attributes that control the appearance of multi-measure elements).

Such a feature would benefit from the fact that <multiple-rest> is a transformator function (as are all children of <measure-style>): it converts – at least theoretically, if you follow the documentation verbatim – the specified number of measures to a single multi-measure object, ignoring any time signature changes.

mscuthbert commented 4 days ago

This is a very good idea. But I wonder if Tacet al Fine is also a semantic idea that should also be encoded, to indicate to an editor that if the number of measures changes in the future the assumption is that they are tacet.

I want to double check the spec to make sure there's not another way to specify text to go with multimeasure rests and to think through the possibility of displaying a number and also alternative text.

lemzwerg commented 4 days ago

I wonder if Tacet al Fine is also a semantic idea

Yes, I think so, but adjusting the number of measures is something that an editor has to do, no? Would this have any consequences in the MusicXML encoding?

I want to double check the spec to make sure there's not another way to specify text to go with multimeasure rests [...]

An alternative would be to add a show-number attribute to suppress the display of the number of measures, then arbitrary text could be attached 'somehow'. However, this 'somehow' is not trivial, I think, since it has to be attached to <measure-style>, which appears strange to me.

lemzwerg commented 4 days ago

I wonder if Tacet al Fine is also a semantic idea

Ah, now I got it :slightly_smiling_face:

What about allowing value 0 for <multiple-rest> to indicate exactly that? This would also have the benefit that a program could supply a default 'tacet al fine' string if text is not given.

mdgood commented 4 days ago

A value of 0 doesn't seem like a good idea. It could confuse the heck out of existing apps. New attributes or elements added to support this would just be ignored, so they wouldn't cause problems. I think we need the actual number of tacet measures in the element content, but figure out a good way to specify text instead of a number.

mdgood commented 4 days ago

My initial suggestion would be to add an optional <multiple-rest-display> element that uses child <display-text> elements, similar to <part-name-display>, <notehead-text> and similar elements.

lemzwerg commented 4 days ago

I think we need the actual number of tacet measures in the element content,

Yeah, your concerns regarding my suggestion for value zero are valid. To address Myke's 'semantic' argument I could imagine to have an attribute to-end; if set to yes, the actual value of <multiple-rest> would be ignored (but editors should make the value correct while exporting a MusicXML file for backward compatibility), and measures could be inserted just fine, and the 'tacet al fine' rest stays intact.

My initial suggestion would be to add an optional <multiple-rest-display> [...]

Sounds good.