Velocity-notenumber script?
-
@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) { }