Skip to content
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

MPE Release Velocity #811

Closed
baconpaul opened this issue Apr 4, 2019 · 9 comments · Fixed by #1267
Closed

MPE Release Velocity #811

baconpaul opened this issue Apr 4, 2019 · 9 comments · Fixed by #1267

Comments

@baconpaul
Copy link
Collaborator

From KVR:

baconpaul wrote: ↑Sun Mar 31, 2019 7:33 pm

Ah_Dziz wrote: ↑Sun Mar 31, 2019 7:18 pm
Also, does the MPE implementation include release velocity?
Reading the code, the velocity sent with note off goes through to the synth and gets sent to the voice in the release cycle. I'm honestly not sure how you'd use this in surge easily but haven't played with it or even thought to! Would love to know what you find. The VST2 and AU are better with MPE than the VST3 at this point.
If the release velocity could be added to the mod matrix, it’s incredibly useful. Mostly for modifying effects to change how long a delay keeps going or adding a longer release with a slight pitch drop if you pull your finger off very fast, but having no release at all if you lift your fingers gently.

@baconpaul baconpaul added the mpe label Apr 4, 2019
@baconpaul baconpaul added this to the 1.6.n milestone Apr 4, 2019
@baconpaul
Copy link
Collaborator Author

Again from KVR

Thanks baconpaul!
It’s slightly tricky to implement sometimes since many controllers send a note-on with a velocity of zero in place of a note-off with a velocity of it’s own. Others do send a proper note off, but just use an arbitrary fixed value for the velocity.

This has caused me troubles in the past when doing Kontakt scripting and stuff.

Thanks for even checking it out. It seems to be left out pretty often in the implementation of MPE.

@mkruselj
Copy link
Collaborator

mkruselj commented Apr 5, 2019

Release velocity can be useful even outside of MPE mode. I vote yes, please implement that if easily achievable :)

@Kwurqx
Copy link

Kwurqx commented May 8, 2019

Maybe RENAME Issue #811 to a more general:

Note-Off (Release) Velocity

I have (and had) several synths that offer(ed) Release Velocity (active or passive):

  • Kawai K5
  • Kurzweil K2000
  • General Music S2R (the S2/S3 Keyboard has both Note-off Velocity and Polyphonic aftertouch!)

I find it very usefull. Especially to modulate String/Pad type Release times. Generally you can use Note-On Velocity to modulate the Attack (and/or Decay). But few synth engines offer Note-off Velocity to control the Release (e.g. AMP, FILTER, PITCH).

And since it's the PASSIVE bit (the synth engine) and the Note-off Velocity modulation is optional (like all modulation), there's no need to worry to much about (in)compatibility of all sorts of MIDI controllers.

@baconpaul
Copy link
Collaborator Author

Yeah I need to figure out where to put this. I was thinking of having one of the controller spots mappable to note off but they are not per note. Veclocity is treated a little specially in a few spots also. This one is a touch tricky

@mkruselj
Copy link
Collaborator

Maybe a suggestion:

Could be a good idea to merge Poly AT and Channel AT into a single modulator source called Aftertouch (Surge should be smart enough to recognize which one it received and act upon it). Then you could scoot Keytrack one slot to the right, and on its place put Rel Velocity.

The only possible problem that I can see here is current patches that have different modulation assignments for PAT vs CAT, or they have been assigned to a single target, but with different mod amounts...

@baconpaul
Copy link
Collaborator Author

I’ll look. I think poly AT is voice level and channel AT is scene level though (which makes sense) which means they have not just different mappings but different mapabilities.

@baconpaul baconpaul modified the milestones: 1.6.n, Currently Unscheduled, Surge++ alpha 1 Oct 4, 2019
@baconpaul baconpaul modified the milestones: Surge++ alpha 1, 1.6.4 Nov 2, 2019
@baconpaul
Copy link
Collaborator Author

So here's a release velocity question I could use an answer too

Imagine that you can map release velocity so that you can adjust pitch based on how you release. Easy enough.

Now you are playing with the sustain pedal down. You release. Does the release velocity apply when you let go of the key (which is when the velocity is delivered) or when you let go of the pedal? Either is doable but curious which we want.

@baconpaul
Copy link
Collaborator Author

I'm going with apply release velocity modulation at the later of release or pedal up with the release velocity observed at release. Seems the most natural. I actually have it plumbed through the DSP engine already! Now for the UI hack hack hack work...

baconpaul added a commit to baconpaul/surge that referenced this issue Nov 2, 2019
OK so I got a linnstrument, alright? Release velocity is super useful
and I should have done this forever ago. Basically plumb it through as
a modulation source in the DSP engine; hook it up properly in the VST3;
and modify the GUI so the Velocity modulator is an either-or modulator.
This results in the ability to modulate with release velocity just
as you can with anything else, albeit in a bit of a clumsy fashion.

Closes surge-synthesizer#811
baconpaul added a commit that referenced this issue Nov 2, 2019
OK so I got a linnstrument, alright? Release velocity is super useful
and I should have done this forever ago. Basically plumb it through as
a modulation source in the DSP engine; hook it up properly in the VST3;
and modify the GUI so the Velocity modulator is an either-or modulator.
This results in the ability to modulate with release velocity just
as you can with anything else, albeit in a bit of a clumsy fashion.

Closes #811
@baconpaul
Copy link
Collaborator Author

https://youtu.be/-_FUjQL0up0 shows how I implemented this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants