Ossia

• Jul 22, 2010 - 03:13
Type
Functional
Severity
S5 - Suggestion
Status
closed
Project

This feature would do exactly what it says - it would allow the composer to insert measure clips around the staff that signify and optional or alternate way to play a measure.

I don't know how to explain it, but the only real world application that comes to my mind when I think of this is "ASLAP" by John Cage. A picture of what I am talking about can be found at this link: http://artsaha.org/wp-content/uploads/2007/08/aslsp5.JPG

This has come up as an option that I, as a percussion composer, would find very useful for putting rough drafts into the computer. This obviously had implications in melodic composing as well.


Comments

That's interesting, and brings to mind the ability to repeat a section of bars and insert a 2nd way of playing some of =them.
Regards,

Yes, I read that discussion. I would like to see real ossia support added.

In addition to the significant problems mentioned by HosAdeeb, hiding empty staves is not the right solution in some situations. In the conductor's score for an orchestral or band piece, the systems should be consistent from page to page; staves should not disappear because the instrument happens not to play for a few measures. This leaves one with hiding individual measures in the ossia staff (or staves). In a work of symphonic length, this is a lot of measures to hide. It would be less onerous if measure properties could be applied to a group of selected measures, but that is not currently supported. If that were added, I could live without "real" ossia support.

Is there a way to reduce the size of the staff for the ossia? If there is a way, either I've never found it, or I've forgotten it.

linsley wrote: "In the conductor's score for an orchestral or band piece, the systems should be consistent from page to page; staves should not disappear because the instrument happens not to play for a few measures."

Actually that is typical for a published conductor's score for orchestra or band. This is the purpose for the "hide empty staff" feature in MuseScore.

I agree that empty staves are commonly hidden in published study scores, and the option to do that should certainly exist. Actual conducting scores vary, but in my somewhat limited experience, they most often include all the staves.

Although I am not a conductor myself, I have volunteered with a local pops orchestra, in which I cue video camera operators to upcoming solos and other musically and visually interesting passages. I followed a copy of the same score the conductor was using. The scores I've seen varied from manuscript chicken-scratches that left even the conductor wondering what the @^%#^ was going on, to piano reductions that might or might not have a hint of which instruments were playing particular phrases, to full scores, manuscript or printed. The majority (as far as I can recall, the vast majority) of the full scores included the staves for all the instruments, even when they were empty on a particular page.

Back to the subject of ossia support, I've been thinking about what I would consider "full support" of ossia. It seems like a likely candidate for a plug-in, if the necessary functions are exposed in the API.

This is how I would add an ossia for a particular passage. (Assume the user has selected one or more measures in one staff for which he/she wishes to create an ossia.)

  1. Create a new staff immediately above the selected one. (If a suitable staff [having the characteristics described in the next few steps] already exists, because the user previously created another ossia for the selected staff, skip to step 4.)
  2. Set the staff property to small.
  3. Duplicate the instrument, key signature, transposition, etc. of the selected staff.
  4. Set all empty measures to invisible. (On initial creation, of course, this will be all of them.) I see doing this is a loop, from measure 1 to the end of the score, if measure[n] is empty, set it invisible. This would also be useful for one of the issues below.
  5. Set the measures corresponding to those selected in the original staff to visible.

Working with ossia once created:

Playback -- Ideally, there should be an easy way to switch between the ossia and the "main" version for playback. I have, at present, no suggestions on how to implement this. I don't know enough about what facilities are available for muting notes.

Multiple alternatives for the same passage -- what I have described above is agnostic as to whether the selected measures are in a normal or ossia staff. Selecting measures in the ossia staff and clicking "Add Ossia" should result in the addition of an ossia staff above the existing ossia staff.

Inserting and appending measures -- Are the added measures visible or invisible in the ossia staff? Ideally, they would be invisible unless inserted in the middle of an ossia passage. I haven't yet experimented to determine whether measures inserted between invisible measures are created visible or invisible, but if they are created visible the "Create Ossia" operation described above would hide them. It is a bit non-intuitive, but selecting a measure with an existing ossia and performing the "Create Ossia" would hide the empty measures in the ossia staff. (That is why I suggested skipping to step 4 instead of 5 if there is an existing ossia staff.)

There are probably other issues, but those are the ones I've thought of so far. I would consider implementing this (and fixing the barline problems with invisible measures that HosAdeeb described) "supporting" ossia, even if it is done via a plug-in.

After looking at the API docs, it doesn't look like this can be done in a plug-in. The API doesn't expose the necessary properties.

  1. Adding a staff looks like it may be possible, but only by appending it to the bottom of the score, and as far as I can tell it would be created with the default properties for the instrument. (E.g., you couldn't create an ossia staff for just the RH of a piano grand staff; you would get full grand staff, but that might not be so bad. That might even be what you want, if the ossia happened to involve both hands.) There appears to be no way to position the staff above the selected staff.
  2. Staff properties are not available to the plug-in. In fact, there is no "staff" object; it is a "Part" object, and the only properties are the name of the instrument, the MIDI channel and program, and the number of staves in the Part. Furthermore, all of these unchangeable by the plug-in. Specifically, the staff cannot be set to "small."
  3. Setting the staff's instrument is possible when the part is created. Assuming the main staff's transposition matches the default for its instrument (is possible for it not to?), then it will also be correct in the new staff. Finding the key signature appears to be possible only for the initial key of the piece; it does not appear to be possible to find subsequent key changes.
  4. The only measure properties that are available are the measure's location on the printed page (position and bounding box), which page it's on, and whether there is a line break following it. None of the things you can set in the measure properties dialog are available to a plug-in. Of particular relevance here is that measures cannot be set invisible.
  5. If setting the measure visibility were possible, it appears that finding the measures to set visible would be possible, though unnecessarily complicated.

    There is an object called a "Cursor" (not to be confused with the screen cursor) that points to a particular measure in a particular staff. (Here the API uses the staff number to define the cursor position, even there is no staff object in the API. There doesn't seem to be anything you can do directly with a staff, except position a cursor in it.) To find the selected measure(s) for which to create the ossia, one would have to start at the first staff and call goToSelectionStart(). If the Cursor is positioned at the end of the staff, there was no selection in that staff, so go to the next one. Repeat until you find a staff in which the Cursor is positioned somewhere other than the end of the staff (or you run out of staves, if there was no valid selection, and gripe at the user that he/she needs to select something before invoking the plug-in).

    There is no measure number property; to get to a particular measure one must start at measure one and call nextMeasure() the desired number of times. The only way I can see to find out what measure the Cursor is in (for example, when you finally find the staff the selection is in) is to get the Measure object that it is located in, keep a copy of/pointer to it (I'm not sure how Javascript handles objects vs. pointer to objects), then set the Cursor to measure 1 and call nextMeasure() until the current Measure object is the same as the starting one.

    Finding whether a measure is empty is similarly awkward. For the sake of (relative) simplicity, I'll assume here that the cursor is already positioned at the start of the measure. It requires two levels of nested loops to determine whether the measure is empty (plus, presumably, an outer loop the iterate over the measures in the staff) or, perhaps simpler, a separate Cursor for each voice in the staff.

    Check whether the Cursor is pointing to a Chord or a Rest. If the Cursor is positioned at a Chord, the measure is not empty. Break out of the loops, do whatever you need to do for a non-empty measure (in our case, leave it visible), and go on to the next measure. If the Cursor is positioned at a Rest, advance to the Cursor to the next Chord/Rest. Check whether the Cursor is still within the same measure. Repeat until either a Chord is found or the Cursor is in the next measure (or at the end of the staff, if you happen to be in the last measure). Repeat all of this for each voice. If no Chord was found in any voice, then take the appropriate action for an empty measure (set it invisible).

I'd better stop there, or this will change from an ossia support feature request into an API redesign request. :-)

So, to sum it all up, ossia support cannot be implemented in a plug-in with the current version of the API. If it is to be supported at all (other than by the user manually setting many measures to invisible), either it must be implemented in the core, or significant enhancements to the plug-in API are needed.

Well, I'm sorry, but I think that the addition of an extra staff and using 'hide empty staves' is like trying to kill flies with a bazooka.

1) you've got all the problems related to the estra staffs and hiding them:
1a) unexpected instrument names appearing.
1b) barlines do strange things.
1c) brackets don't work well.
1d) when the distribution of the systems in different pages changes, everything gets messed up.

2) you've got to hide all the individual bars in that line (in case the passage is short, eg. 2 bars)

3) the clef is not placed as in common practice (before the initial barline, see picture)

4) the ossia must be at least 1 bar long, you can't use only half bar

5) you must do many changes in general and the result is not very satisfactory.

I think there should be an easier and more flexible way of doing this.

Look at some examples. Notice that those are not ossias, those passages are 'madatory'. the estra staff is put in order to simplify the notation and make it easier to read and understand. However, the result is the same.

test

Thank you very much!!!

Attachment Size
TemporalAdditionalStaffs.JPG 83.76 KB

I am a teacher of notation on a conservatory (musical high school) for students of composing. My chef would like me to teach Sibelius and Finale, but he permits me to teach Musescore, if students are able write all, what teacher of composing needs. Today they asked me about writing ossia. I'm afraid that I need ensure them, that ossia will work better soon (in months).

George Vysata

"Adding a staff looks like it may be possible, but only by appending it to the bottom of the score, and as far as I can tell it would be created with the default properties for the instrument. (E.g., you couldn't create an ossia staff for just the RH of a piano grand staff; you would get full grand staff, but that might not be so bad. That might even be what you want, if the ossia happened to involve both hands.) There appears to be no way to position the staff above the selected staff. "

sometime in some "solo parts" (eg solo instruments and piano) ossia are written at the bottom of the page (but often only one per page as a maximum) with both asterix (on the mesure with an ossia, and the ossia itself).
Other time it is just aboove the mesure needed

if only one of the possibilitie exist that would be already great ;)

sometimes, ossia also permits to "explain" rythmically exactly how the composor wants an ornament to be done......

Sorry, but I may not agree. What I shall to tell to colleague teacher of composing, when he asked me to teach such note type system, that is able to let composers make ossia without complicated technical work?

JV

BTW:
Sibelius is adding extra small size stave for each ossia (automatically) in score. If you use it twice for one main stave (different measures), there will be two extra ossia staves. Once I tried to show all hidden staves and I have seen them all. I think, that should be possible use only one extra stave (is is not more then one ossie for each measure) - the similar way like is adding verses of lyrics.

A thought provoking comment. What if you could consider an ossia as composers hack created during the paper era. Given that the consumption of digital scores has now started, how would a hack like ossia translate to this new digital era.

It does not depend on me. Possibility to teach musescore on conservatory I have graciously allowed. Colleagues and the director want me to teach sibelius.

But What if you could consider ossias as one of ways to offer more versions for executing the composition. It could be motivated not only possibility to play easier version for players, but also offer versions that executors could collect their original version - each execution of composition could be an original not only due to enunciation but also due to selection of versions. This mentality in music is definitely not obsolete. I know - there are also other ways how to make execution original and how can composer define them (text perscription, aleatorics, etc.)

Fwiw, it's not perfect - if you wish the ossia measure to be narrower than the original, for instance, that won't happen with my implementation. And one could quibble whether the handling of initial clefs or barlines is exactly what one wants. But then, one can always use a graphic via the image capture mode when wants something specific that can't be done using the new cutaway method.

Will be interesting to see, I guess, to what extent it really solves the ossia problem for people. I see the ossia support as kind of a side benefit of the cutaway feature.