Velocity-notenumber script?
-
Need some help doing midi velocity curve to affect all of the modules, and also changing by notenumber. In other words need lower notes to be more responsive to velo that higher ones. It's possible?
-
@hisefilo Why not use a note number modulator?
-
@d-healey cause I want to change responsiveness, not volume. I m working on a rhodes, and real rhodes lower notes are extremely responsive. Meaning it gets the max timbre and volume with less force. On other words I need lower notes to read a 20 velocity and to act as a 127
-
Use a Ahdsr and modulate the attack level with both a key and a velocity modulator.
Or use a script that amplifies the velocities for lower notes.
-
@christoph-hart yes, that last one is it I guess. I think will need to use the note number value times "x" for the new velocity.
-
@hisefilo You could use a table control to get the "x" if you want to be able to shape it.
-
@d-healey have to learn how to do that! But will be perfect
-
@hisefilo See my woodwind library (specifically the controller handler script) for some hints.
-
@d-healey :) thanks David!
-
Or just use this buddy...
/** TableVelocity Booster * * This script is boosting the velocities according to the table value * of the given note number and the gain slider. * * Usage: 1. Set the table to create a boost curve for the note range. * 2. Set the gain slider to control the amount of boost * * It will "fill up" the velocity to the max amount. Example: * * Table value is at 50% for a given note, gain is at 100%. * If you press a key with velocity 40, it will add 50% of the difference * to 127 (~43). If the gain is at 80%, it would add 40% and so on. */ Content.setHeight(150); const var table = Content.addTable("table", 0, 0); table.set("width", 512); table.set("height", 150); const var gain = Content.addKnob("Gain", 600, 0); gain.set("mode", "NormalizedPercentage"); function onNoteOn() { local tableValue = table.getTableValue(Message.getNoteNumber()); local veloDifference = 127 - Message.getVelocity(); local delta = parseInt(tableValue * veloDifference * gain.getValue()); local newVelocity = Message.getVelocity() + delta; Console.print("In: " + Message.getVelocity() + "Out: " + newVelocity); } function onNoteOff() { } function onController() { } function onTimer() { } function onControl(number, value) { }
-
@christoph-hart yeah!!! Thanks, scripting is not my field. Maybe in future Hise should add this kind of hardcoded scripts (for newbies like me:)
-
Nah this is a prime example for custom MIDI processing. A generic module would not make sense.
-
@christoph-hart I can see the script doing the job on console output but seems not to affect the modules,
Velo Gain: In: 32Out: 127
Velo Gain: In: 44Out: 127
Velo Gain: In: 40Out: 127 -
@hisefilo Did you place it at the top of the tree?
-
@d-healey Yep!
HiseSnippet 1329.3oc4XstaZbDEdVvqcA2DkH4V0etB0JgyEKvI1ooQU9BX6hRvlZHt4eQi2c.FkcmY6ryZGZUdM56PeC5SQUeDxiPdCZOyLKrK1DLXkjVoh7OXNy4x24Lma3VBtKIJhKPVE5LHjfr9b61CXx905ioLTi5HqaZ2DGIIBGCocGDhihHdHKq7GnHXUXAj9y61ZWrOl4RRIgPmvotjmQCnxTps19oTe+8wdjNzfLb+vsa3xY0397X.O4sqfBwtuB2ibHVwVNaj0h64QkbQaIVRhPVKrK2aP697yYF9OgFQO0mnNTE0FTjg79beOEhUeGUqO02q0P+NBgrrakFExahBqX2j5QGQOMZbK8ENoRjMdXkaZvq50DdVYf2BF3ca61tBZnL8FE1V19DhO24fK9LY3Ek62yYWiyjDlbsHh7GHzd8kkqtQkUeRQHtGIcNCKbjX.gNeuyPNwddcTjJWReSo64TA9CDQeTonxkNm5I6C2rQ00G+h9Za.2bQqzCv33F4oL9okKovNv9lURLhhOipB3dJiW5PtH.6S+EhWKhvEDFxOJs5S5FybkTNygyNjKIGwJuZwesXAetK123Smf8iUNlAd8HxNinVtIDDA8nnpj9v3fSIhxqB.HQCmAA15ztcIBBjfCZo55Ox49NYjSE5coxAkSExi3Kw.ugXQDoASVNCNtyEU4czwDslzPJiwYjyGpcPaSzlN20XMPlhEfnZDG7wPAELZoFruyoDvv6SvRGEKMbjwPf0eyEioc6ZBpEeSwLWodCEbeeU.6x2ppvESQrxLcr9dPVA30C4CRzGuRZ4YqRx0jOkgQNqAiJOJjjzgXX5wPJUQibtrLk5TYopclIvVJooWJiRx2gh5bIhBdpTWReijRZcVIhB5XIac9BRGYftTV6.ZvCKwHqMrevlqM9myNZs05F+X0Websjyq08tYNaLu1l4M17lI1rsO0iHzFcQac6iDap6L+1e7O9ysPOuQckog9IINA3XgDgjpddrpSNC5yaZNUvtNI5URdn1KCB4LkKas3U4muV4ip4.CF9EceEPgKhxYlPX5mnn7aCGvjwBKcUdk1BuHWFKDP877Is3QTUZY5nn2tUTb2tzWqdI+Fjp2Cx5KsmTuGXb1kZOCCI3dw9X43SNTXH4Bkwx1htgJjBfXP1woyw3jJSbbR0IkCNiv811snR29SFu4l.dUI0ejwaxv4aXuGz1zUlB1Er2+EW2IwWOnbSCTV1tMkQzaLoAxWnO67S3yHNGPXDgJnNkcl9qYcmovYdmoibkf06HvrnPdzXJtMIf1AJVhxR74Qj8Eje9X0ibV503pwVS3p2s09fONQYZikwBc1xNA7Xlbrri7i+jXOaszGunIC+S+sxZg+EVp6CeU3G0lFywNn4ZcoenvsfT8fPexdL0lL.ESWi5jt3Xe4HpYAbSNiG1myntYSLNlHEzd8HhrtwD8scjR3GDjRYksOl3SvYSx+5seFjbhEM0sre+gk7yVXY1VGehOceksAtNpBVm+S02eICrKZObaOMfWYzQmQtyUCVn8gYTdlWzFviuPpDJkVchK8Th+3uKWdlw09c4Cxbs7++bt1w7XIk0qIFJDU6HA+9m1v7DWBfDFi3q5VaoVAK4bkgqO0lv7zG9a3SxkUUmsRtr5vK+jXi.rqf+RWyVtpZ0OSSA7al9+fPA6lpyNUGteqJ1.q.ReoqqJXeeH5LYIVetk3AysDObtkXi4VhMmaIdzbKw2NEITyY2IVxCLkd.gV6o+cEVV6wTsQzY4n+QJy2+O
-
Fail. I forgot Message.setVelocity(newVelocity);
-
@christoph-hart Yesss! it's working now! thank you!!!!!
/** TableVelocity Booster * * This script is boosting the velocities according to the table value * of the given note number and the gain slider. * * Usage: 1. Set the table to create a boost curve for the note range. * 2. Set the gain slider to control the amount of boost * * It will "fill up" the velocity to the max amount. Example: * * Table value is at 50% for a given note, gain is at 100%. * If you press a key with velocity 40, it will add 50% of the difference * to 127 (~43). If the gain is at 80%, it would add 40% and so on. */ Content.setHeight(150); const var table = Content.addTable("table", 0, 0); table.set("width", 512); table.set("height", 150); const var gain = Content.addKnob("Gain", 600, 0); gain.set("mode", "NormalizedPercentage"); function onNoteOn() { local tableValue = table.getTableValue(Message.getNoteNumber()); local veloDifference = 127 - Message.getVelocity(); local delta = parseInt(tableValue * veloDifference * gain.getValue()); local newVelocity = Message.getVelocity() + delta; Console.print("In: " + Message.getVelocity() + "Out: " + newVelocity); Message.setVelocity(newVelocity); } function onNoteOff() { } function onController() { } function onTimer() { } function onControl(number, value) { }