Script FX Panning
-
@d-healey You're lucky, I've made one 2 weeks ago ;)
https://forum.hise.audio/topic/1240/pan-modulation-is-not-working/21 -
Cool - but 12% CPU!
I was hoping to do it without scriptnode. Basically I have a script that controls the gain of up to 6 channels, really simply
gain >> channels[0]; gain >> channels[1]; gain >> channels[2]; gain >> channels[3]; gain >> channels[4]; gain >> channels[5];
I was hoping it would be just as simple to control the pan, but the core library doesn't contain a panner.
-
@d-healey Yep it's because this one has been made for fast panning, so I added an x4 oversample and a frame, but if you remove them everything's back to normal.
HiseSnippet 1897.3oc6ZsDaaTDFdV6Lo0tokVT4wIXUEGBRkH6zzVPHvtMNtJh5Dq3zz1SvjcmXOJ6NyxtiaqohaHD25Y3HOj3DvUNfTEhqHgDBwU3LbHG3N7O6r1dW6MIacIMkG6k340Ney+iu4a1IM8EVzf.gOxnv587nHiYvs5wkcVrCgwQKWCY7j35j.oYSB2rgv1rVqlnK2yiDDPsQFF4uhpeFElBE9rSkKSbHbK5vpPnMDLK5UYtL4vZaV8MXNN0I1z0Ytw58BUW1RvWT3H5BXJOtDxiXsMoMcEhpa4vHioWxlIE9sjDIM.YL0kE18Z0Qbatt+avBXa5PUEJiZAuHc00EN1JDqpEsXGlicy9q8.Dx.2bnkHu1RbZbClMaP8CsHmLrAygiHt8vH2dAuxwgWorCOiXvaJM7NEtkkOySNrEE1NFdYtj5uEAbAwgktuHiuCun.5.WNmKYaZcenvfAL6EJU5rlmuToW7UOdwiWbqtbKISvME7UDR5p7Yewh2sXghuaQyQaZqsRsM0T4Kbbn9o1rxy6uWCbVdW2Mo9m07VDmtzAcDLAIsw3c2FGODvRuxi0QAeYNStpGkuaVdTj4R4ChPEzUYnG3DQdfVNLapOhAF5B3lWZEyFqVCEB4n3525de6OUAcskqQjj9uH3cByiG0WxTKAiZzaAYIZWaAbMZv1RgWXec8DbEBLlNCS6cFjJ8VaVs2fB+BopW+U0x1gY4guCy52nLjg4CIWPPfpkowqAFUHAcr.NHrWX20gHSlKnH.hZ.bdIB5TQV7.lrWbBhCjDjrB2SgaxjVcRGu4RAuf65fFuQzMGGuzVaQsjCA6T3523vgaoXT3AL+JfjHZIMVkOGuDuMiSmyxmBPqVf2JT4sE9aO6YrC7NihOYP1smOEB3nqKZ5P5Ma.w0ygpB4Nq4lNBqsawdG53TBQAuWV0iYs5P3bpSvjvbLxlG4yFyQJNv0DckLd6FDoOCR5vqz0sErmkEcwHzA0YjSQfnKWRUVEO0hxsCK7mvSTikUkMhZrb+FGx8fhLmgtqneC+R4avXvBqpUXqXNpSrfkWulDYGUzthxCBmn9yYMHrZZ0HJi..OJTuJXcSTsQd0qs+twZ7CDRtgzQvdwQ+95La0zgMNKzCc7wZfeUwu2HH9d6JKcy9rMp2eN8LnWWgqfinf3QvAdNfbgcc0na9fZILDT4zf5nZPosg6iI9vvtpwYL.GZEKhcE1of4SGCyC5wAlsb.zxGyVNCVDXAB.UryiaP8oyEq4CECZ9gaQrNwuMUFQZ2eCaMsopDrYQd0Rp.9ZATkvPzF5s9Mx2r6lNLK0uPwh5g9OnDLrk42BdKZ9zFL9FwzMD9zfbmQp6jUup31T+QTTiPWyyarZOY0VRpmhTM9dvs1ldasUOdsZxgFJuzXn.kEH+Qen54qqLNjWHUHuP0Tf7G7iIfb+2YbHWDWZt4m+UdkRmORyace5a2kxs5MD3O2mswGuxy+GUPY2VuSJ.uTp.emJoYqK8.ZqmID2lqohxPigEjNconN1Jf0ddHWMYtxIvtvemqeaGFIJ80VXjKoPkTSehmCX7vkCrSkrmC.9fX9k6d5u3J+567d6ge4HX8jMdRPLFrowdTx1I8GGSycE1viMrVi6KfHO07pU62VQ92L4I.BOS+pdCzBRkZSwRbBHNJRp7d4wt48G2ioV+i6wt48SyiABg1GJfB3yO2ByO+7WDszc.EkAAJs7JaFZOVsGIb0V9ga4lKaAn279OZVtwSpRrAUxVhjGFoiwgRFYa2YzTI5VNbIR92J4wt4ONpVWY4GGEVljTeDo5Qphc65HY6N30MevB9QAXtDD0sGSAbDQc6TLqFOlHuL2HxKmAuFMnOyzXAWwUZlbbOgRVZVGZ7brbwxwJdnS2O0qa8Mee6u5oppcogT1imoOF0ODn8PQUT8dYWqMz28mFuzbmqT4RmKR2ZKWgP1gwa2esLEd9RIjYzeKq+O78+Ce+mR3aRII6dgcSrRhs2mVawB+nzYc28rui8fg9oduVwe9S9kJgebdNM7yIFD8s5iJFSHYhOeQB0jwOKJLzP+U3IVW1FxvTeZ4TDZ9204oS+Xo01e+5Te4u8L+96698UFScYbezjbAFw+P2mP2HD2.BCBukwv3nmNrr40I2hZdEJHYPYUKuGWx3Oj0KYzKyWx3pVRX5W2mvC7DAIdwsntr0EbZPh7m.pxOqO5dr5WTP7SsocpTGVjoNlVDYW+vz9K4J5xSjmZjOyew+GfK6bpGquryGcW8T9rA284NSJzGisXp6xXIHY1AxKht77ZzsHfB390lLttgfK75H3pMvF5zWiJ8YsaSSd1hzVPWRJIVaOrlSWcMJbBt3AvuP0qBAdD+F5CbLI1hxY2VrW9qmEqgqoJYz7eGWYX9+SdkgORt7qGEygKwxW7lV56LTEKezvZf0MO7e2jB3Fpxlk6ec9XPATIjKvH9lVVJy8KA1mzGy7SvXN2DLlElfwb9IXLWXBFyEmfw7x64XTaFcotRgqNUDpn4RgpRLLF945xi9K.uftopC
-
How do I turn it into just a panner though, without the osc?
-
@d-healey As simple as this:
HiseSnippet 1563.3oc6Y07aaTDEeV6LgZWJPQEDGWUwAWoPjc5WHgf3jX6JKhSrxll1dpcxtisG4cmYY2wI0shabumg+B3Dhqb.oHDWQhKbu7ePOxM3Mytq8tNNotVzzxG9zNu4qeu2626MuYb6.gMMLTDfLJr6PeJx3MwVC4xdaziv3nl0PFuKtAITZ1lvMaIbLqY0Fs9PeRXH0AYXj+VpwYTXAj92yVcchKgaSGKBg1Svroax7XxwRaW8yYttMHNzcYdoF80p1zVv2P3JF.XJOtLxmX2mzktEQMrbXjwh0cXRQfkjHogHiEVW3Lzpm3Pdz32iEx12kpZTAYAKTj3FBWGEhURQazi45zNQ2CQHCb6wVh7QVhKgawbXijO1h7N5NLGOiz1CibmF7pjFdkmc3YjBdKDAuKhsrCX9xw8nv14wM4RZPGB3BRCqnwhL9Y7FBX.b4xdj9zFAPiQSnzMJWdIyqWt7U9jKT7BE6LfaKYBtofukPR2lW5JEebwBE+xhlS1UmNSsO0VEHbcoASsakmO3zlXI9.u8oAKYd.wc.cz.ASPVaL9jswoo.1QZdpAJ3M4L419T9IY4QwlKkOHFUvPkZOvaE6ArbYNz.DCLzEvsWaKyVaWCogbLu9AO4m9sUQ2tYMhjjrPvZB6iOMPxTpfQM5APTRjqs.tFMruT3qGqmufqPfwhyv19vQgROX+pCG03ojp9IZUSGcTtdMLab2JPDV.DbAj.UOKh2ALpP.5wHb.sW3LvkHyFKnR.D2A37xP5TLKdHSNLcBhWJAHyJbuHtMSZ2a53M2TvK3tdYi23zMW.WuSGpsbLXW.23tuZxsTLld.6uBHYXKSKqx2hqy6x3zksCn.zpE5uEUdnHneoK6D5eYU9jQQ29ATfvQ2Uz1kLrTHwy2kpnbKYtuqvtuE6QzimRHl7ttZDkr6Q3bpa37j4XhCOxOaYNlhCbGw.Ii2sEQFvffN7VC7rfyrroaDiNPlQNUBjn1kUsU7IKJ2Q23OgewcVQ01HtyJIcNN2CJ1bpcWweCeo7MXLXgURENJGWChMndCaSj8TrcUJOfNQCV1dDsZQ0Lpf..OIT2DrtYDajWsrImFGgeHgjmNcDbVb722g4n1NrwRvHh3G6.9UU98VgoOaWYoamjsQs94xPu06VjNp0lBJ3dNrF5UPOGU6Ug9jM3bBzeNE5eCr2.WI6jAeT2ubA+j.LWJ.tHtqx5kAemGvW.c4tSwrZbVXVMxONA8tjftTYbJyjiKgUMtEjpNeTJpcngT4d5Sc2K0YuQUaNXeWlsBnnIl2aiucHcVm5XlqB.Isfntl7Cf0LxL2hwmXQt2QsHO7XK7lhCoASTU78N5199GSJjVPR8UIFUx9luV86GV0pO8vHulR5mY+i+R2u+8pF4R0EkercbRipJ9CkRMJb5pAr.SpFUeR0ooFHzTTCXrOW0.Wd4qVtR4qFWJqkmPH6AYYSzkEvq.IiyDd0834F9e56KF8svq2z2+3SqTCgJcz+Dopos4mbCnDrwp1hQ1.cU3yjlA0TmFsO9Re2s98G8USXfSF4DS8oqpuMBmpqeRSLF2Dnkp.inaEnilZm8lBZ+DLdsqPkGD2zABTTEPus+nJIS3luxYY3qu70VYkUtIp9CghPCC0pHDeilpJmjZ4uKcN2r4Lu2QmM5b5zQy0USSeEl2JpSHL.poQ+9Q5vh2W217NjCnl2hBU6ntLVkS44i90Y84i7m4mOZaaIr86FP3g9hvLKrE0isKb25vLoCBoMBnewNpr2okugfDL0td1pM.kbpywhHGDnOFXMOw.dFOmQ9Y9tbu.Oi0BuV+LVmcOpP9YCtOmaCWHAiVL0sTqCAytPbQ7yhVi1g.EumHMKutkfK76I3pydG6z2gB2VraWZlTxSUgVSJI18GK4RU2g5RIoIveX0MAhGInUzcklGaQkY2VbZ9qO.GAWSUvn4+NdLn7+m7wfNSdViyh8viXGHtuczqAo3xmSKAzat9ORn.tkpsYkjGpECEzUF4AYDuussxb+Qf8Y5yYk4XNWcNly0li4b84XN2XNlyMmi47wm5bTGFs1.ovKJTDDztttpDCi5bBvj0rdzeg2lXvZ
Notice that at mid position you get a beautiful 12dB... I've made a fix recently, I seeking in my archives...
-
Perfect, thanks! You should make a scriptnode tutorial.
-
@d-healey I should but I hardly have enough of time to work on my projects
-
@d-healey Ok I just made one MUCH simpler compared to what it was in my first attempt...
HiseSnippet 2110.3oc6Z0zaaibFdnTFGKkjtaV3EXORXzCJ.YEnjSh2EEEVI9i.iFYqZ4jcyoEiIGKQXRNDjihiSvBrG5w9GX6odrmJ50BzC6k9+nA8RA5k7On8clgTbHEshhxJuNYWkCwy2Ouy6y6y7NjrWDylFGyhPF0N7rPJx3539mEvGt4Pha.Z2sPFeLtuqenG0rGIvbq98PO3rPRbL0AYXT8ghdYT6JHD5616nWswCHdj.aZRUxeOg4ZSejquKOq1dc9ctdd6PbnG55q066zYWaVvlLO1H.QUwVnPh8IjAz8HhtUAiLVZaGWNKpOmvowHiq7.lyY8GxNMP0+m3F6djGUTnEpOLQpp2g44HPrnVzlCc8b5kZ4wHjAtW19PU09vJ3ttNtiqWe+PzfY1Hz2OLpLM30RGdVyN7Lzf2UTv6l391Qtg7rVDX6Z3cC3zniIfKPGVp9hp7OMvaxfdDva5SNgtSDTX7HZbOKqaadWKqa8atQcnawLOZSaOJIpgnFw+.mSL27YjHS0LtyW2172ZJILMGP4ae7wTadiUUMZBstZ5HcC7bCnlGOJvl6xBLYA8t+dc2eKAbhXdMrY9gr..X2FlduQzaci5u7F0MgeiWolwT9847H2iFwoMxpF3koCBVruUAdoMBPZyz4swpvBZBq3p2RLQIq6lDOui.JViB3QLSZXcOFmtePiaU+k0qU+aqaVroiOtz1RlLOZToMK39QSafMBF4eDMJ05R6HPBxyxvmOKSOHvVssn0QVvtAt78CoAmG2CkrWJXgInB5JWxA+UIbv9dtNzHjKP0pgS1kQRHmJM7e+8+mMPOd2sHbR5DAyIrNgzHtqvDL1h9LPmPQtqg2hFeBmEJ6ahCDLyYXYe9XwjNNcNKSYgzwgdLYjG+IZ3B98u1.MYvEDhybF4Q34i6EhcIM.tobAXhfnfXWt1J95MVHhAyJbuItmK2dX43sRI3EbLKZ7lHsdCrRnHCrWAuyW+iqNp0LpiVGmJjHAx0wYZWkofZ7WvaGL.TxZZGQAnsUb3dT9ornSZrpSb3p4zMBingjH5grddjyZDSDmhd.LnaadjGy9j9tufNYvenBhOPziF1CIAATu34QinvAkUmMMhRbfGvFwcCFzk.RuP3EduQ98gymsoalfNnNiJBoBUYKQYAepOMvQV3+A+RZrknrQRisRaLSkAkrcJcWI+M7WBeCFC6vhZYNh.3cH1f4cVOBenfsKD2.5DMpo8XZ0RhQzBA.NCpUwsQOB1aKToERLs5Yd.BO9RYGHqij+9qbcDKFFulkUB63.vqJzw6JHo31.YD1h6Qhf7UfiUiUauFUEStxjjfudBWSlXEb908Pmq0DG5AYNsXLghX0nxNQT5KnNJX7IX6Qwbleyw3Dkz9tN4f+c0rvJJKbYgEtLV5Klh0o7UWnNnIf5UUYN4ybjnYs7ncEMzl1k7.VQ9m.xp0IEvpHho.YiaC8XBhRB1NMhDFRIm7E+zvSJ26lAqu7xsCdYkV.wwo.SrN1G9+lPCKLO5jXL6tNFUyNc9PRDjsp77xr.RwIVokfAtavyfzkTmG00MnPlLHTWxyKVWmGwNkFU31WHziA2VwZe8F84zPwgRh5d4J+0G9pW7G1n+IzSU6Y58TrgdUrZwJrjuVlPUZdcHjlK3pXAYofO3Z.YIh1TzxEMMojceiJEqDD5DKnPwaI7.AYdrKQUm7Jv6GNNcBZRJlaGPfyWSxNbZNtm9Ck33Pk43d5OTliCNKUyw8m9dwu+dAG2+tO5ON3u8oc194PRIwwhzAEaWnoXsWUZs26s2bqb40b0isxSSO+VzHvWerhWq679hj25+hj2O4Rdq+dqjmRDn0Ouz7V+m8ZdyuNYsj79EO1vBYReckziroKVdu9SnX9UfD.Hy0JKM1oJlYc2onUcGo7R1icgKgsZZAUn4+DcnDIF4UxmKGvPIQ9xzgTYONEwjLwUcRtwn+HOt6ZmOvksuPA9jHrRNE8ASdk1DE8Akb2PixNVcQqomiXXTIozYPmUowb.MNUCSin0azQdt14Icoi4ivONlNKCSOPphVfT8yKPZI7m2xJerjUtXojNjObxRKbBCgS4ilpguay6ztc60SdLPRAb8.2INB.R+4sOpeIL.LqoF3mzkoCVqlqY0xZsjWgSeeFiOzMXPJhk9YzDbv0mQNnRa5WXfWZXfoq26gjv20TFxc15Rpmpq34JNa41+1ju9DumG4qcJfJe74RpQVwb2wW9Xhxk.X5Yxv.jNDAWBuqCDdHdAJkjWnVxfUJwx5LqICV9sVPcl8cghICd9175+3YyKfap8tXyuCjwISx6MlD2aj2YTpOH2KCHmmPgoEne30arXtw7T8CyyKCV+UIthpwqg+JxynxO.Aov0mJKeLKx27gTHcQw6Ds048Eqfd0M+Gy5WrR3L+EqruMGfvgQjf3PVLsk9LWns15ssEkOJHe2UUk1q+72+z1cDl2Nf4o0ukGWYa8JAVStICJma8559b8hp6x1mBViy9w1fwRJ3O6MxKlJSHnkN+Nq514n8Um42f6GLenNWbeJAUmM39FdG30RwnR6YaP5vChBkX7SfvN4GLQZs4Ci5xBXgCYAhztxHQGP4QtCFPy+jyJyftOmSrOIqlU5b.0iRh0Bs90cdDbiORTW08Zmm8hVy9dwz7WeFVAWSQru4GFeBHU+f+S.4cKBEjGuD3ouH91KtHVCehcD6arUexJhPukk0.1cf7K6rFtqnrYqzuaLwMTrP9f.92XaKXGeNr+T9XZOGiYs4XL2YNFycmiwbu4XLqOGi4Kl5XDmcd+Qbluh+CUzaaYJaFFZOkez+GBRJz..
-
Revisting this, still wondering if there is a way to do it without scriptnode. I need a lot of panners for a project and want it to be as light as possible. I was thinking it might be possible through a scripted gain mod.... ?
-
@d-healey The pan law needs better maths but the mechanic is here:
HiseSnippet 1620.3oc6Y0raaaDDlTxLMRItnMHAsGWHzCJnNNhzIsEIs0N9uDm3eDjb9AnvHXE4JoEhjKA2UNQIH25yPOWfduuB8UnOBsm6k7FzN6RJok1zJJJIMsAlvGzN6LC+lY1c32ttdLykv4rXCyR6OHhXXddqlCBEcWqKlFZr05Fler0NXtfDiRDs5fHLmS7LLMKdao.yRyYndd4xqh8wgtjwhLLd.i5R1lFPEikVek6Q882D6Q1mFno80VYKWV3ZLeVe.OEspYDgc6g6P1EKUqfkg4Y1viJXwMEXAgaXN2pLuAM6xdRXh9Ofxos7IxA1FMAGkHdSlumDwxearVWpuW8gwM2.bZ8wYghIYgKZsC0iNR93rwmnl.M1B87gYgIAOac3UKW3YmC7LzP2bInC.AyquOVjEYxxQ5DTV1J0VgBRHmJFnWtduB2O0pNU31Me7VHG7BEp203Ms3Ou0FsaSbEiA6bVa9nYsR+ZrPz734txVMcioQB38KAx4SGh17Q1Y.ThXiBgej0UuJZsXhDWHLpCDBn.YRlTF1bwEnCwwHeZKz2g1l1JFGSI7E8YXupUbYwjJW9lZ5IsdaaPUvfEcUNUUvHUqvCXLQWh2ik5PhOtcMlQ611YFeeSsckgLTSh.AhQISSC6fDPuHjfgbpUCEvKmD5KxIh53Xn+CzArZprlCsQ19ZAoAfSSB4iqeiIn+1N43emI3+bzuwInuLHwddpfrWHqU40Xx8TBoGtCg1oqn50A8lurVZr9s1UVzFpIX98.KqVQJuxBnZvefm0bDrdMhDKfkPaFyBtay81cjxOe9xH3oR.0yymTmAalgM4UtAp1h0VXzbRAWwVSB9ofDPP4Wbbr4bBXyAdc1WepQmyaGz0tenqzHTTLIBGS1mU2GOnJGGD4SZ.q.W.k7adcR7p9L2dWt7yU9ApLaEBuPUsIBLpE7YNDOh3xKWJcM1z6zalXSiWKalubozWkyL7pd8r4Ek0RUp9apYp51EGFR74Zokf99BZj+.DUfdBUzUaKJwKoW1gX+9DszTNN7GpcPlrRdpXevQSB4okyAYh47TYoCTgXYznfTRgITDy7qF1OnEIdgDLqElPyGtJzD33NPiH4KHYIF+IxOJlZ3kSjktVU93h4D0tzafPSnAkjHP5aE88nZnkQ1nqjNFV+B.FkyyD5fo6vuM0geotCmOWO1B5D26DlCR95QjyvHJ+VhuAQT98LeKDQu.J6FlVYIBb1oiH.KT1AXuHRJw0L6mzEOdI2XoiVfMTjsgaRWOsWbNLcZv5KfuRrCVDSeJPrZ29AMAp1tj0RWLCQiojsU53ZxwRhWMIgdpA+M7jNosbrY5j1GYRG43BoS5bjIWRNtX5jKMbRizF2RZdogGDHBEInONk0SSepGI1fBLdNikbafgpfoyQzXZs0IGau+VqiEXIQrTvL9KHfr0IGBmkIgVVIq0I7dBVjBsAQrPIzMO2qBuOcXJcvvevECjKONik7yYFY+djN3fifE0j9LEfe9E+0a+mO6GWNHywu9Md+1skEV3fRso9AbnLGsU.b9ICyKXceXelGoMF5vh38.C8og8Hd6yT5aL8AgSRP7S+GLHznOeoj5z4rdH9Ph5DsJ9yWRMtMKN.caBPGTdlD6S5Ls+7c+qeYZOSazTel18bE.D1OFGxiXbhsdvej4bzeqqSD8C0UennLZICuMgvSSuytxPgN5BqiCy3LXbFOsipGwngaDhg9XMIPz3sG2EBVYtS+3j066yIOj5I5p42+PSrit36fi8f5halC3UblNUU1y8NwdfmdV+T3Vb5f6q3PpkFhwlTIquMBOj3CcLUX7BPKR0N0gRytOaGVHKpKKjlYEPCBreuSGRlEV4FP2RH.VyikbwUZP7I.ahwh9hU1FNxGNFxSjYLWXO84hIUu9bqD3hjMGPeXbGME+.5NZdWrCE5e9+mJ8mYA8zcPpxM58e89HLUsxkoZg2HlpyHYAmIbA3+9G.jEd4xmRV3TxBu+IK3bJYgSIKbJYgSIK7NhrPgIQVn3wHK7u7UmYLoqNy7XWcV.1Ml8X2ja9R1p4rJIPFKT8eNuj0NxwnQ2WlkUsEqIumF5icck6FtBjYy2FmYvlklAat1LXy0mAa9pYvludFr4alnMRtB2pufEjryADTeC0cOZZlvcRsIx3evZrZQo
Is it what you need?
-
@ustk Thanks that seems perfect. I'm thinking I should be able to take the same code and write it as a gain modulator too? That way I could use it as a global mod.
-
@d-healey hmmm... not sure about the gain modulator since
channels
as argument in the processBlock doesn't work -
@ustk Channels is available in the processBlock though - https://github.com/davidhealey/HISE-Scripting-Framework/blob/master/script_fx/FX_MultiChannelGain.js
-
@d-healey is it from a gain mod? It didn't work when I tried in a gain mod… Will check tomorrow…
-
@ustk oh sorry I see it is a script fx like what I've done, so in a gain mod I don't know…
-
@ustk I'll try it and report back :)
-
Actually you're right, it is a script FX, I was thinking it was a scripted mod...
-
@d-healey yeah, it makes sense channels is not a part of a modulator processing since it has no audio but a mod signal
-
@ustk Yeah, I'll go with your scriptFX version then, should be fine. Thanks again!