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?

    Skärmavbild 2021-06-24 kl. 20.00.29.png



  • @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+
    

    project



  • @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 the

    Sampler1.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! 😊


Log in to reply
 

10
Online

1.3k
Users

4.2k
Topics

38.3k
Posts