Hi Tim,
Thanks for so quick implementation!
I can't make tests with hardware instruments because simply don't have
any. But I tested with all my songs with soft synths and can say, that
everything works fine!
31.12.2015 04:37, Tim E. Real пишет:
> Hi. Just pushed some more master stuff regarding note-offs
> and zero-velocity note ons and so on.
> Hope it's the right thing (TM) !
>
> We kept Andrew's patch and moved forward.
>
> MusE's instrument definition files (.idf) now have this attribute:
>
> NoteOffMode
>
> like this:
>
> <MidiInstrument name="Instrument-1" NoteOffMode="1">
>
>
> NoteOffMode has three possible values:
>
> 0:
> The instrument recognizes note-off messages.
> MusE will never transmit a zero-velocity note-on message to it,
> they will be converted to zero-velocity note-offs.
> The instrument might also recognize zero-velocity note-ons as
> note-offs, so you can also use option 2 below, to save midi interface
> bandwidth but discarding note-off velocity.
>
> 1:
> The instrument does not recognize note-off messages,
> nor does it recognize zero-velocity note-ons as note-offs.
> MusE will transmit neither to the instrument. Note-ons only.
>
> 2:
> The instrument does not recognize note-off messages,
> but does recognize zero-velocity note-ons as note-offs,
> saving bandwidth but discarding note-off velocity.
> MusE will not transmit note-off messages to the instrument,
> but will convert them to zero-velocity note-ons.
> The instrument might also recognize note-off messages,
> so you can use option 0 above, to utilize note-off velocity
> but increasing midi interface bandwidth.
>
> If unspecified, the default is 0.
>
>
> That was the output side. To the input side now:
>
> In all our midi drivers or sources of midi input (that's just
> Jack and ALSA currently, but there is work on accepting
> midi sent /from/ synths, in midi.cpp), MusE automatically
> converts /all/ incoming zero-velocity note-on midi messages
> to zero-velocity note-off messages, internally.
>
> Thus MusE is a midi application that recognizes both
> note-off messages /and/ zero-velocity note-on messages.
>
> No part of MusE should ever set an instance of class Event's
> 'velo' (on velocity) to zero.
> It is an error. Unlike real decoded midi messages,
> our class Event already holds /both/ on and off velocity,
> so zero on velocity is an error.
> Error messages have been placed throughout, all the way
> up to the drivers, so let us know if you see one, because
> I'm certain there'll be a few more fixes to spot.
>
> I had to change quite a few places. I left these 'markers'
> for you to view: // REMOVE Tim. Noteoff.
> Have a quick look at what was involved before I remove them,
> so you understand how to deal with these notes, especially
> in the context of these fixes and new setting. If you spot
> something questionable let me know.
>
> Examples:
> * You cannot set a pianoroll or drum note's on velocity to zero.
> * The controller graph velocity bars will not go to zero.
> * Clicking the piano or drum list will not sound a zero-velocity note.
>
> I must mention this: A note whose resultant velocity is zero
> /after/ applying such things as track velocity and compression,
> or drum list note volume, will /not/ be sent to the driver for sounding.
>
> In Audio::collectEvents() for example:
> velo += track->velocity;
> velo = (velo * track->compression) / 100;
>
> the note is now /discarded/ if the resulting velocity is zero.
>
>
> So, class MidiInstrument has a new enum:
> enum NoteOffMode { NoteOffAll=0, NoteOffNone, NoteOffConvertToZVNoteOn };
>
> and new member _noteOffMode. With setNoteOffMode(), virtual noteOffMode().
>
> Note that synths (SynthI and family) are a MidiInstrument but cannot
> be edited by the user. So they are free to override the getter
> and return what they want. For now I've set them all to return
> option 0 (use note offs) via SynthI::noteOffMode().
> I've fixed all the Synths to properly react to the setting, so they're
> ready for it if you want to change it.
>
>
> Lastly, there is one more step:
>
> See all those built-in instrument .idf files in MusE?
> We want to update them with the correct new setting.
>
> That requires examining the Midi Implementation Chart
> of each one.
>
> I may put out a general call for help from instrument owners
> on LAU because it takes time to research them all,
> and I hit a puzzle on the very first one:
> Access Virus: It's a synthesizer but Chart says /no/ note-offs,
> but does not clarify if zero-velocity note-ons are used, most
> makers clarify that, so do I assume that being a synth, it does?
> I mean, some drum synths /don't/ use them at all.
>
> I looked at dozens of charts on google, and ones I own.
> I arrived at these fixes and rules.
>
> Lemme know if any trouble.
> Tim.
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Lmuse-developer mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/lmuse-developer
--
Regards,
Andrew
------------------------------------------------------------------------------
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer