Short note clips long note, again

• Jan 11, 2016 - 00:32

Take a look at mm. 33-34 of my current piece, https://musescore.com/user/1831606/scores/1608616 . In order to hear the suspension in the alto voice clash against the soprano in 34 as written, I had to silence the last note of the soprano in 33 and the suspended alto D in both measures and insert (and make invisible) a third voice to sound a half on the squelched soprano D, tied to an invisible D quarter on the first beat of 34, and spend a great deal of effort and time flipping stems, hiding notes, and hiding the rests the third voice introduced.

I remember that there is some reason why you (the developers) think that the earlier ending of two coincident notes should stop them both (as it does now), as is not done by any keyboard instrument I have ever encountered or played, harpsichords, pianos, pipe and electronic organs, synthesizers, etc. etc.

If you can tell me an easier way to make it play what I have written, please do. Otherwise, please give us all a way to opt out of the "short note clips long note" behavior per score. I should not have to silence all short notes (that's what the music realizer's job, not mine -- I should not have to "teach the Pope how to pray"), and in the case given, I couldn't even do that.

Isn't not playing what I, and other composers, have straightforwardly written a bug?


Comments

I'd like to propose a feature here: Each staff gets a new attribute, "voice coincidence policy", with two possibilities, OR and PLUS. It says what happens when two "voices" on a staff coincide (at different or same times, partially or wholly).

  • OR means "logical or", although think ORgan. Nested starts of a note are merely counted, and nested stops downcounted, and ignored until the one that reaches 0.
  • PLUS means "increment volume". Count maintained the same way as OR, but nested starts re-strike the note with an increased volume (volume delta), parameterized per staff, and nested stops restrike with decreased volume until 0 offs.

OR is typically for keyboard instruments, and PLUS for string instruments that can be played polyphonically; with the latter, one can notate real polyphonic solo-string music as conventionally notated. This mode could default from the instrument-type (from an XML dictionary), but must remain user-controllable to allow users to simulate organ manuals with oboes, recorders, etc.

HEY! OR can be reduced to PLUS with a volume-delta parameter of 0, so maybe that's all we need, that one new field.
I do think that this would cover all cases.

In reply to by [DELETED] 1831606

That's a very neat idea.

To implement the PLUS thing, though, I think you would basically need to output your notes on multiple channels (MIDI guitar pickups do it one channel per string, thus achieving what you desire *and* per-string bending), because if I am not sorely mistaken there is no way in the MIDI standard (which was in fact very obviously designed for keyboard instruments) to express "this NOTE OFF message should refer to the last or penultimate or n-ultimate NOTE ON message".

Unless there is some loophole in the standard I think a NOTE OFF kills *all* notes of a given pitch.

Or, you know, I might be talking nonsense :)

In reply to by tobiatesan

No. When a NOTE-ON is received, increment the NOTE-ON count for the note on the channel. If it was zero, really turn the note on. If it was not zero, increment the note-velocity by delta (or don't bother if delta is zero). When a NOTE-OFF is received, decrement the NOTE-ON count. if that is now zero, really turn the note off. Otherwise, decrement the note-velocity by delta. No multiple channels are necessary.

Then again, this whole idea might be worthless, because, in fact, the start-sound of the coincident note does not occur. Anyway, it's a thought.

In reply to by [DELETED] 1831606

*If* I am understanding correctly: I don't think you can increment the velocity for an already ringing note, except for some weird SYSEX.

You'll have to retrigger it.

Even then, you'd have a single note sounding, with increased velocity (barring, of course, clipping, 127 + 127 is still 127), *and* you would go through the attack again.

I see this being particularly problematic for patches/samples that have a slow attack, everything would go dead quiet for a bit before the note comes up again with increased volume: "...ooooo... oooOOOOOOOHH".

You could do that with polyponic aftertouch, but that'd be a whole new set of issues.

Do you still have an unanswered question? Please log in first to post your question.