-
Notifications
You must be signed in to change notification settings - Fork 343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Velocity to Evaluate MIDI Track Node #1811
Comments
Maybe we should return the index of the note instead for more flexibility. |
That might work better idk, maybe the lookups will be slow? Maybe something to keep in mind also is the new MIDI MPE standard. Typically, as you might know, pitch bend applies to the entire channel (that wobbly thing on the side of a keyboard piano). MPE has a separate note per channel, so you can get pitch bend, after touch, etc... for each note individually. Maybe knowing there's eventually going to be more dimensions to each midi note, it might be easier to return a "MIDI Note object" in "Evaluate MIDI Track" instead of a note value? |
Hey, it's been a while, but been pretty busy, finally getting settled to get started on these two features. What do you think about having an option to have velocity multiplied into the note value? The issue would be that if you only have velocity from the node, then what do you do with velocity output as the note persists? (Edit: My bad, I think this would work just fine (envelope multiplier * note value * velocity) == velocity * (envelope multiplier * note value)) Also might be more friendly to the overlapping envelopes part. You could have a really strong heavy note followed by a light note and the state from the heavy note could still dominate the note value. (Edit: imagine holding piano pedal, slamming a note, then slightly tapping the same note again) If it wasn't multiplied in, then you'd be forced to multiply in a small velocity value to the current note value accumulation. (Edit: the second piano note would force the first to stop ringing out) What do you think? |
@fabricatedmath Just to clarify:
If both of those are correct, then yes, I think adding an option to multiply the note values with the attack is reasonable. |
I did a bit more digging realizing its probably more complicated. Apple does a good writeup here: https://support.apple.com/guide/logicpro/use-sampler-envelopes-lgsifc8612a5/mac
So maybe this would be the way to go? Set a slider that modulates the sensitivity of amplitude after attack to the velocity So I think to number 1, yes, but we can do something like that to make it up to the user As for number 2. I looked into that also and at least when sound is output, it seems its common to just add the envelopes. from: https://theproaudiofiles.com/synthesis-101-envelope-parameters-uses/
Just adding the envelopes works with sound because of the logarithmic nature of Decibels. But here I don't think adding make sense (trying to keep it all between 0 and 1). Does max make sense to you with that piano example because the weak notes attack should still rise above the sustained hard hit note? If the release isnt aggressive enough for the hard hit note, a following weak note wouldn't show anything |
A velocity slider as described looks good to me. I am not sure if max would make sense in the case you mentioned indeed. But if you can find a way to make it in the 0-1 range through some kind of weighted sum, that would be better. |
I think max works the best, can I go ahead an implement the whole AHDSR envelope? attack, hold, decay, sustain, release? An overlapping window with a strong key strike from a piano would have a quick attack and a quick decay, so after release it would be interpolating from the sustain level instead of the full height, which would leave room for an overlapping attack. |
It would be great to have
The text was updated successfully, but these errors were encountered: