Changing NoteNumber Modulator parameters via script
-
I'm looking for the ability to change the panorama of individual notes. The best solution I've found so far is to add a NoteNumber Modulator to the StereoFX in the Sampler. And it works the way I want it.
But the problem is that I need to change the panorama of the selected note in the UI. I can't find any way to change the modulator parameters through a script, maybe there is some workaround?A similar question was on another thread: https://forum.hise.audio/topic/2212/accessing-notenumber-modulator-parameters-in-ui
But unfortunately David's solution doesn't work for me, because in this case the release of the previous note will be pan along with the next note.I am very sorry for my English, it is not my native language.
I hope for your help. -
What about using an "Array Modulator" instead, would it work?
HiseSnippet 1481.3oc6Y0sbZaDEVBrRCj5zjLY5zK03oWfGRYPFCXlNcB1.NF6fE1xwNo2jYQr.KVrqhzxeISdnxc8wnOB8pdcdCZOqD+HRXvTpSSblhmggyY2yte64muiV4pNLSrqKyQRNxYCswRxeqhwPJuUgVHBUpbQI46pTA4xwNp9p1anMx0EWWRVN7SDJjirlj2m2+38PVHpIdpJIoyYDS7SIcH7oZql+Hhk09n53yHcBL6syW1jQKvrXcA7DVIojMx7RTS7wHwzBoHIeqR0IbliAGwwtRxqsGq9PiVr9T+4eNwkTyBKDzjLfExW89Lq5BDK9sTgVDq5UGetckjjUpN0KD12K7PkJj5jI5m5Mtm2.pSsHn+PNzhfm1JBO4.vaMe3ceECSGhMe5HBrcGkxTHP0.AgffvxetRgdmrRAFLCJOQGzk38c.gIVDKcxjORc6jI27mWOJDFb4p8PNpUQzJr5p+hpWVQhlXNH10BAmxXa3O3FBKD+QnVDJVsQWpImvnpLp+NaXQpiczD6sCyJlIqiMiBn3QvNX0Eu45Qey5Qi3uXIbw7c4bGRstbbrLIGOGXKdqXOFe..fTX75DaiY1mM1TrHi1sBHKqZPVTr4CFenG.wGy3XcZrMi9lnQh91npe3PMZL2wFsbVXm4NrHO2YQFFi1sSMry3S63IBA7Yynt0xkQY56kBLQFsLkv0swijmlyoMmbNoQtYQ12HDBSk6k6cWkfNRIBrHe2Lpzj7NDipq+iS9s+7wROqbQDGMd4fUF1MarCmHNTxEw8.VB+T6HJEwtWxY1dycTDVR9aV5MePP5mgAE5SpyaMQQdb9VXRyVAHlJmmiGvEE4hXs5wdwD0LPU4GWBBDAiKDBxNHnDGM.DfmoLTTpQcI7gAoL+GPYjbtTFyM7sjv89JUIbyVyGuglCdg.3mZ7Nh.dckRMZfM4SA6ZJ6+7Uksc0fxc8gxcTL.ZMO9OOf78dxpWf5gUeBlhcDNUsEzX72W1Fi1KciQcSNr8m4fnt1L2YVXCbGxYPUiaPkOyEn6wu5TQTNn9BLjybG58Ode3PNWaLP7tNdoK61g0kxmI8H7J0fd1pl.wv4zNbsOCcqu9K892yTDd4f6U7.EQFiQCRGaKbIZOrEvL6gwG.TwMPcs3i0NaRdEFkY2hQIlAy.NECMua1D6DD6y8.As4gFyS07v7mhsvnfYy+X9mBYgHGvOgWQeg1x6KVT75GT7gqpnxT8qCF9veEwvuhOO8smboGuz+mL8RO9JTEZVD2tjTQrEZFG3Ey7XFRuH+Gw9+h7kgJJGdUlEx4Cc+gutRsWaoyQDGoOU4zZKcNxLAFkw.dWGGzvIndDujmR0IZ0tZD6+zgUgJXuGDMz6BojVaqDvmFwEemq.7UJ8OuxIRbXscNHq2u50771l5G+5VN6j8jluZqgf7kdyOmyAnNoKbxQCr0Sk9j945cjoQFCSiVt5GMPa6bs4k6mwHsUwt501glHd1S2pXVxEos5oeQa2BwedaWirDZoW7JcXQ1OdQ2CPYKv5kruX8OHdujjVYGBK5.8tutRYg8suR4BWne3.e6qdXMyrB7zWu04sK4ueB7zWG9pfOdD12SL+DwO3WOQKi37v0M1pcpbmsU6mmQfWG8CJw44ZbVpzoMfiFSfeRNgQoGB6rkNX4w4.ejYJC3n1v2e1CFR6Kg340prz0VSuks4gn+u0z5ru7618.EOt2aN.9dJUQ+Gy7dksDu0BXdush+ao4pw4dDaQyMw8HuQP8dySV+vZUh2FXIS8+9iaNTumx5xIzlUPvsjF.Olywc6X.2p2DCjBTJ1BVbE4Phal6KmTH6esdZcOg+B9LZPMgr7nA0FO3WM6QGjoC6kl9u+QAM0s8z.9Vp2+PfHJUDxpSdgiJJISjTpCbk+WZZJtOwOAjyy2lsVAaRsB1r8JXS5UvlLqfMYWAa1Yg1HdaK61ky532MCTTsjGourbIJBpP7ZXH82rzKniE
-
@Evan-Splash if it's a sampler you can access the pan for each sample with a script
-
@ulrik But not for each note - one note can trigger multiple samples and some samples can be used by multiple notes.
-
@d-healey but you can set the pan for each sample, so if you have a structure and add all samples connected to C4 you would be able to set the pan for those samples, or is it not scriptable?
-
@ulrik I mean if you use an individual sample for each note
-
@ulrik Unfortunately Array Modulator doesn't work for me either. When you change a note, the previous one immediately takes on the value of the new played one.
But anyway, thanks for the advice! -
@ulrik Accessing the sample's pan value is what I need if there is no way to change the pan of a single note. Perhaps you can tell me how I can access the panorama of a sample through a script?
Sorry if this is a stupid question, I'm just new to HISE and before that I wrote scripts only for KONTAKT. -
It's not possible but it should be, I'll add a feature request.
-
Actually if you look in this thread Christoph offers a solution - https://forum.hise.audio/topic/2315/change-specific-samples-pan/9?_=1624631954795
-
@d-healey Thank You, I will definitely try this!
-
@Evan-Splash with this script you're able to set pan per sample, if you have the sample mapped on several notes, all will be affected
HiseSnippet 1335.3oc4X80aSbDD+t3bHrKFUP7PeoRqh5CNRTvFBPqppvDmDjUIfUt.s7Ri1b2b1q3tcOs2dI3h3qR+LzOB4iDeCZmcu67s1XBoQMTTadxyL6Lyuclc9ykQRQ.jkIjNtM2eZJ33dEO+ob0jASnLtyvsP9dJHSkR4NaNMklkAgNttMdrVrayUcL+8tGtIMlxCfZVNNuPvBfmvRXpZti5+Sr33cngv9rDqSuQ+gAB9.QrHGgRCutNozfWQGCOkpO1JdNtWZ6PlRH8UTDONtqtoHbp+Dww7hy+BVF6vXPSzywGMTA6cDwgZDq45LXBKNbT0UNyww0aTc.nQQ.3Fd6xBYy3WGH9Ri.RsF1wC2UNM30yFdcO6vy0BdqV.uq44GHYopZIZr8EdC4JPFQwTfMrJNqyJ+9JdCD3I3pakPeEriDIloQm60s6MIazs65+P6Vsac6aSHJzWgjLZRZLHIYFqPjPDHALK2tElrxTjinRhewY5Q9Qh4gysFCpRdcVqR3Z0VdXDYpHmbLkqHJAAOMQMAH36q1sz1C+g1TkJZrlHmqCKofTMsyLIin7aRrfrODCAEFq.2y4mfIT9XfLR6lYlHynhw9YcVKkFmbvg.O7.a75i.jCGav0Qz3bPaMiSLJOKJ0tEiGy3.IJmGnXBNQvQuoi5RQbm.QRpfiw+aVXk0a25Msa0zBJKbOwLx2WcVDLu0.npbHFUFTYvNqgtYs00VnzYCnwwGhkOcrQf1HVP6oBE7Ldm0a8lVMa81VjEEEEsTYkFSmbWlXcQs7zTrCOO4PPVcwpNH95d9xGuOb4ic0cPQ7v5fB9PNS8rTf+gJpbJCh5xqRTgGUYJttZYwkeLKDjNLrFxyCigNF3NqcU+mehyyGtEUQqLBZuxLGSCe2sfivleEUrM81BxdkRjZNaYVCaz9Qb4qs6kN0l3XVnZRMies+DfMdhUW1g8SDgPkgRr6T+xSRnVV9k8yTPpO62.6l4Y4QQrWqCfOA0NLLFFIxX5LoMLbd+lSXKRQXdLUMeeS8vhRAZaX2fR2Dhi1dps+uPZldVg607FwTASVNdWYI3EeCbQi2xQSs81NJBa5TC1U814Wt3mCYCkut.JW2yWIAJ91ZbYOLCdZ4U0Q6ehsEROyaKLRBwBZ37OjOo+l3CYPNO2+nuwUOJAa2NmuJQ9dPJPU6ZJfpDd496s2ikh7zE05cOz7XYeI1tECE1BdFGv3tx9NNPJxxhvqiwVY1hFkKGqiU0b1CNBjYyy6o4IXtmygXcORWWj0yy.ctlErKUIYy0zv3kt6SM4abEJCcuEnuyBz2cA5MVf9dKPe+EnePMcQ.cWZZ8ZjIzz2qW+kOa85Q6fcyfXqStIa7LeTvo9cb25nsAQVqJ9yzifHgLwxRKY2qK8Y8pge5Z913rA2Ox1qMqvnOSmv1leDVvhbzX753.xHZdrph67MO1UvEoSDbVv7kG3y8wiAoM1W5E5QJEVcVy4F82CWcilYUe+M8eBt5FUNeU+eqXQuydr3zxWekWAbI5Ndj+aLzrw+6GZdZgtqVNxjfdWp9LOOeEOSSdhdl7+VPcOQtBm0VMuyCGJhe5jL.rGMthdbaAcWMsFP9321YH9S7uRg8plipE1qRnSPkov6V4uMq661.35oIlcAiwIzw1Ooq1aFm88IAkIz.o3ffhOhQi0Ka3fnja92lzzaWMMoW02u3408Vc0qzyNHHPWH7sXDd45bmygN28bnyFmCct24Pm6eNz4AmCc9tSUG8ZBOJWIRJZRhLFscwCK2sm8vpgyego9dS+
-
@Christoph-Hart is this a good/bad way to change the sample properties?
I know you shouldn't use it in the NoteOn callback but else, is it ok? -
@Evan-Splash I use this setup for controlling pan values
It's 15 panknbs and 15 notes
To find the samples to change I use theSampler1.getSoundProperty(3, i);
to get the "Root" of the sample and then it's simple to iterate over all samples selected
In this instrument there is 4 round robin groups
// Pan -------------------------------------- // Selects all samples Sampler1.selectSounds(""); // get number of samples selected var NUMSelected = Sampler1.createListFromScriptSelection().length; // lookup array (note numbers) var indexList = ["48", "50", "52", "53", "55", "57", "59", "60", "62", "64", "65", "67", "69", "71", "72"]; inline function onPanKnbsControl(component, value) { local index = PanKnbs.indexOf(component); { if (value) { for (i = 0; i < NUMSelected; i++) { // property 3 = sample "Root" local root = Sampler1.getSoundProperty(3, i); if (root == indexList[index]) { Sampler1.setSoundProperty(i, 9, value); } } } } } for (p in PanKnbs) { p.setControlCallback(onPanKnbsControl); }
-
@ulrik This is what I need! Thank you so much!
-
@Evan-Splash and instead of using "magic" numbers for the attributes
// Pan -------------------------------------- inline function onPanKnbsControl(component, value) { // Selects all samples Sampler1.selectSounds(""); // get number of samples selected var NUMSelected = Sampler1.getNumSelectedSounds(); // lookup array (note numbers) var indexList = ["48", "50", "52", "53", "55", "57", "59", "60", "62", "64", "65", "67", "69", "71", "72"]; for (i = 0; i < NUMSelected; i++) { local index = PanKnbs.indexOf(component); local root = Sampler1.getSoundProperty(Sampler1.Root, i); if (root == indexList[index]) { Sampler1.setSoundProperty(i, Sampler1.Pan, PanKnbs[index].getValue()); } } } for (p in PanKnbs) { p.setControlCallback(onPanKnbsControl); }
-
@ulrik Thank you so much, I will try it tomorrow!
-
@ulrik This works great, this is what I was looking for! Thanks again for the help
-
@Evan-Splash I'm glad it worked for your case!