christophhart / HISE

The open source framework for sample based instruments
http://hise.audio
Other
947 stars 112 forks source link

[Bug] Synth.playNoteFromUI(channel, note, velocity) velocity is always 127 #501

Open aaronventure opened 2 months ago

aaronventure commented 2 months ago

08fadc8e76ed10895a13363aae6f04a307832401

Sonoma 14.4.1

HiseSnippet 1103.3oc4WssaaTDFdV6rQccgJJpUvkih3BGQTjsoTPfP0M9Pwh5Xq3zzdW0jcm0dTlclU6NanVn7Nxi.OB7.fD7O6gtylXYbr.BHrTh7+oY9l+ydZjzkFGKiPVNmtLjhr9.6YKEpE8VPXBzn9HqGXOlDqnQ3LVGsLjDGS8PVV0eglgkyNnzO+5yNhvIBWZIKD5LIyk9RV.SUxcZ2efw4CIdzSYAFZ+jtibkhdRtLAvSc6VnPh6Ej4ziIZ0pYir1cfGSIiloHJZLnyQRukyVH+QQl9mwhYmyoZh1nYvAkwF0aAi6Ms3sFiPV1SKe40yd4OxdLyi8d9kdfOJU.tzBSefUs0Ao12BHYY.ocxfzCsm4FwBUkRz3491iDP.wm.tZSnjoKp1uYY2SBZHTGFPtfNLBHduEMeZqVGfg+s+21nA3tiU3PNYI96vE1P77NJQojhl6okr2AXvfT0YBNSPw9IBWESJvRgVAscQRdSWYPnT.mvA3KI7D59M9oFNLebybJGfzIM45PsYGKUZnE7pQMSAj9O3RbtpgCkGSwl5K.cm36apdlpWAnp.2yopdEPHG56eXrlYJ95Q37yg7olUPs9YY7dzfZhnYJzAMhkb5ggQL8AdFkKcYpkeCdO7miGCgCHyTeoEBZtObXW0.e8iy2O67tlrb.voQqTrtzHZcF1TjDbNMxzYqUDxcplPt6lkP5l4EMTTJFIXpIgzb5gRtmNQS+8al9hxCCv2d0n9DEQmQmyCzKjFoXZ3X0mdIzRHK+1wtOM9BkLLU27XGTbpRk9f7r+rrQDCt6cs0wNz6.crzsLVV7kXxkzQhoQTHfqqEP2rXBJikdIbhpZsstIVt.v+VofRWzHhgPqYStaQAeq0VvuoP7g1SYJ2EqFi0VAFAO+eGXLuM4GZOv2m5pJA3N1Cey11Sbyu9Gmc82290PnNssP5k+3TZeYT.9ETAMR66ZuloT+7lNkJbimRMwUAP3zHhHNTFSaadxWSVGSY8opDQU0yXUQK8yaH77Lz6dcKX1wj4ThnxgAzUNowr2UR9KOaff.AgYT303MI1EdrZemYp9zDnQ7qYdpEsMMrjcGS1eOIxChKtURDqWMSXmMqYT0ZRC8WwXycuClj+WSg8cXumJKa3TfwYrfPNcf3RXhFvQiwOF5P6SR3pBtUqsFKExvERAqRT+DpJhMeNsRxzJePOWofQxkbdT2SnbJI1nd6y59RXoCRD3mnaou31u30JiWepcFbw5FB3+6Nyn9+alYr9pOne3+tihehMzWtCNMThuahkmHSTLw7wDnhVu00wIAyfAetT.kBArntdArZ50+xnaUrP1LpvKk32gO4BaqosxE1tP3+H2Q.wMR9V2rUm0E82KkC7tEo+3RG3W4Bz31nz0oMclAvHi255V8ntggc1VC+hs0vmrsF9kaqgOcaM7q1VC+5+bC0SzedhRFjUa.q4LcP5u+vxJaCmzxDze.fl6RdD
aaronventure commented 2 months ago

This one is sort-of breaking, as it prevents utilising any sort of UI-based note launching that relies on velocity, i.e. pads, custom keyboards etc.

There is no way to catch this note in particular (to change the velocity of the Message) because it does not return an ID and does not come up as true for isArtificial, otherwise any of these would've been useful for a simple workaround.

Using other methods only creates a message in a downstream MIDI processor, and would require hierarchical refactoring, sending from that callback back to the UI, including calling changed, triggering a broadcaster or whatever, to communicate back to the UI for any sort of UI reaction to that note event. Do I really wanna call UI redraws from a realtime thread?