Key Limit waveform generator based on Sample maps
-
Re: Key limit waveform generator
I'd like to limit the key range of my Waveform generator based on the currently loaded sample map in my sampler module.
I've used David's video on key colouring based on sample maps and this works fine
https://youtu.be/H1OCC-EDl14?si=9XpCB-L5L0mpLjBLIts seems like it wouldn't be too hard to then extend this to limit the range of the waveform generator but I'm struggling...
My understanding is that you have to use a midi Script Processor underneath the Waveform generator. I've used this before to set the key range as a constant. See referenced topic.
In this example I've got as far as finding the low and high key based on the sample map and printing these values to the console.
HiseSnippet 2184.3oc6Z0sSijbEtafFM3c1rY2rQaTjVoJnbgIChsay+gkLlerAz.CHalYxFonIk6trcoocUs5pLLNSlaxSTdD1KxCPdDxk4x8MXxopta2UaLrrDlIjMXI.Wm5bN0WcpSc9oaNIl6SDBdrkcoSGDQrrenSyALY2c5hoLqC10x9KcNkHjnWfOizlG2CsGggdBY.pAl0gXs8fHrPPBrrsmbOkH1yLkk9y283swgXlOImjk0y4TexgzdTYN0Sp9DZXXcb.4TZOCtWp5A9b1N7Pde.dS53ZEg8eEtC4oXEaS3XsOVz0x923zJnhaf2J9q44UY4kWys0ZK5udqEaiWbIBt05tq4gWe41tKYYOcs.pjG2ThkDgk8TayCFzrK+bVxB7bpf1JjnF3Y0DV4Dx04gApsnhp0NcogAmjY2DVV1NmjaEmLwJ94NGQCnComaM+o5IP4RXZ.smnH7lr.77LgmqA7FCjrMfzTIP5ScZ5GSij4ynvyG4b.SRhai8KdVlvq0D+qoc1gCbvjKzC+JR8XXvPIJuhq67H3WysQoRe0Wg1byMQGc7tO6vZnF0pWqQsmtSslJpkJUBNJAuHAtWTHIFsIR6ksPGhrYBoxyl9E2YAskv8qHCpSCkE4ufgEjRCzbCpWt3QrvShIgbb.He1t.zvN7dQbFLn7r4rLqwdndelujxYHIGIHZbf709gBTKLXgPvbYakd3nHJqidaRYgTFA0NSdPX3pRhKrn7bkdSID7AVkFDkdwggl5VOIbGCUlB.1cCDE80HuJqAe4QOZN8rpO0XcfEYAScWlNOJcUV3bpr6VgQcwkynzJDt2LOxcgklSsISgv9zNcCgej5c.rm.jHPTFJlDbMPxaFhGZaT4TiwBTwS4RxS62qEI9HsZKSmKG52H3C3QA9JJvqTvaK81wdR0OJ.t1fF0gPagiUAqF6QThTYQ2.HoiqM7rJj6iCQ8nLUHuMAavpaXRG+5D5to102C1r2Tv5oDTo3DDMWNxnaLF99coHbtbjZv2aSMmkxDHUYe8lYhMBpGdeTc5skTFSa0WRJO6g7y0oDlc9Lbsw2qLJ2ugBkrZ4BAWVE7PxBQwT0szPP+fdlE8nKp+QXsqRsY7ZpVsWyP+FHDPKvMHH2OPcx0hK6hv5whqvYAT5tTQTHdvVrfhtKibgOYouLWrMLbjOMl1oCDMIgWAB2VE1KwEQcAEEkEICfUdTKkQ8P3uP.ncfnIsfK5kyPaYpHkKX1L.pNl+UEmHyRd4aN.nFQGOfQkTv42WE957tP4.O6.jRaI1rqPMnRkFZJ4LkW+wLsoaFvRfFcp1sG6bp.4w7PUJiwMspFh3qRvxL8Ms4QmgC6SFxHjmrXxWmKO4qYsA9I4ULXjyTVniiHrKqhAqzjQv2d1A6hkXUF6TZ.eQjXIUAA6cImA0Kkj+dFmcIhWI4QPoOCyfA0qISK3HItWc3fPBGqmRAnRgT4ehiIIOqWaVN1fgCP+kpmSCjcGRH5uVsKQkdHm+uoZJFS.TIG3PtEGGGX0pSVYZyLcPPv6TbSkjd4Te26d2urH0Joj0LKIuVlybF7zllI9i1NJe2YgU6EJHN6uE44tf67JZo9XG6KgaWIgPgoaiCED87PjIPLfz55g6SSFAgw0i2ouPx6sWLNpK0WTPxcIsw8CkaAwiwwpxXgYkw8SlbaUFU8EYv2BlvcgUVW+Ys0bWcc2U8zbcJuSmPxQ7.RAMqJfAJHjwHgJnno8LA44Dev6y.KCWMXx5gXYS4fvQzzI0xNBFkN3EGKyWkJYzqwBLV6UJ8Vky3PmooRbl93rREw.eZunG5jGywvE5Owql6B8s+gpVWrrSnfWdPe.9EqBV0qP5DvsyBkdpJujInxAl8RbqUZ70EhepyIToe2wiwIFCFg6vuOvXZCEerSs1sAOjb.NkS8e+U18vTWuk+patwDJO3R5P7g5VDfQjXuaiFBit1MDZO46i94l9NW+b2eu5Nz8pakk+KSV9OyooLlfgpZ6j19qFCkbxZF9C68ozH7Mo+YC191pa2GrQwEo92ppWps5w6yJrVoHuAARbJUI+xm7AUazXuXd+nQk56dr1o3zXHsJXJLm3XFAr0Ry83NwbgnMrcz5RXN0I8i6nrU4TZPNiDKJRCJTHMInpNOaaUcXBh57k5eDFZQoPQR5Uw8Tr9LdBmjwdiLtxHiWbjwKMx3kGY7JiLd07wIFTnyPkmwm3.FDDCpOFANixKT05zWupVAsoStav41zNCWoDJ2Gl71OLYgmL2LYXrIUY3qwNCt9ATTX7ybRq.MiZkBn7HNiG0kyn9Ec1kI8QZh8wtgfNwg6Z4T97pMHgDrv315ut5gPJcbbw6v+frEd+feJki875W3j.WjJ9E5+cSuM4+2jd6pLQ+jzjaHcOJ2AOCeniNDLRkw7CI7Zv6q5SOKCjCjlpIjZ1mXlrZBUBvjwtpwJPzjvBzCTsSmNoWVlM0jdYSZ4moJX+j9ccW11SRXpLN5pvBgblgltnBn..EjfrQlFwuHwH9QNpmskto.s86m6X9xhHwJq6U0Xv+31uPljGH.TOASDwEDOSM2jzidJzvqn.0QjnxXkn.0cIx9rhpNgTAtTlh5fovyzmIiXEyZifDxETFLtflNxrrj+4iqoOuZRfcdvwBevvnryEKFJTPzOxDOSAyIWwj7933.3LrP9jqt+Juezze00+8k8ybtvKbZbu2L6+tSx6f5viewKeRsuAsIZoEyduT6evd6mRbU2Ml49GI5+4ORz6q769J+tuxu65U9oBl+561mhegCjKsBReTh9uyY4Ghx.+wxZzC6GyeoeRZLUfkGno.1Vl9eRnYbNRMF4YoSsYdf0Cpq3k99EU0EDrxMUvEuoBtzMUvkuoBtxMUvUuoBt12ufpx91puj2K49GT96I0R5Twt1vNUlz5eSGrO4x
However, I cant figure out how to connect this to the Script Processor to update the key range of the waveform generator. Any ideas?
-
@Tangerine_Sounds either:
put the start and end values in global variables - and refer to them in your Waveform gens Script Processor
or:
add two controls to your Waveform gens Script Process - called low and high, have your sample loading and range checking set these control values...then refer to these in your Script Processor
-
@Tangerine_Sounds Colouring the keys and limiting the key range are two separate things, so use two separate scripts (midi processors).
-
-
a little funky maybe...
HiseSnippet 2545.3oc6ZslbabbDdWRt1BPxN1N1k8ebpIrxO.ino2E7cnYD3C.QVhTjgfRJNUkRYvtC.lRK1YqcGHIFGVUpbNxgHmfT5.jejiPNB9Fjz8rulEDjhhQT1VkfKaiomo69a5om9w.dXjvkEGKhLLqd7IgLCyaY09j.Y+s5S4AF6tsg4WZ0RDMb.4qHa0W7DF4tQhggjiYwRdPOiMOIjFGy7LLMm7tHKlUlxP846uylTeZfKqfjgwCEbW1d7AbYA0CabOtueKpG6X9.sUuPiccEAaI7ECA3MoksQH08Izdr6SwkMgkwNz39Fl+Zq5065ths8JyO+h1T57dT5BNr4Wk0cottKZupsWmEsg+YICy2qoGWJhZKoRVrg4TaJ7NocewyBRTvC4w7N9LbfiQaPyIjaI78vsHR0Xq9beuCyrawFFlVGVXEmLwJ9oV6y834zKrlejZBRAG5FPyIJCuIKAOGc3YqAuw.ISMHMUBj9Xq1tQ7PYwLHdto0tARVTWJbNoCkj0ZLweuh0VBXEAx4FPeBqUDLHmiZKYaOKA9OyrV0pe8WSVe80I6ev1OXuljiZ1p4QMu+VMaiTqVsJbTFKIwzAg9rHx5DkW1b8Xx1IjpMc5WrmFjVxpeB6jVbeY40WxvBbo.ZgA0of8v.+CiX9BpGve1t.jvVhAgh.XPsoKVRAaOkFQbUt5muV0uJLNUixniL39rmKOWcmNeYlFF1GXnYPOd.aN2HF3H7fXVD.xXlbGZfGZpPyMOvGVBo6v.WIWDPDAoxCUVjvulalllEDr+P1LU+tpU3cI0RGUAFVIUQnA.4sPU05R8iYfhpToZkSqd5ZUeIah4hYYpdKpueG3pZsQwDh6wCbPoO8pBbjWtXX7EA9yG8H2W.50.lB8494sxvuTP.lQeUhqJVULoCEtEAarb28AzvPHZo5pvn6ef46wNIILWbMbyRfOfVNB2JD.M5xVMYWQDoFG7SrWivIeCwo9JvWt8smQMK9I07nK6Z7YIoZYtmwk82vOrOsVFkN9vVdVh8bKOCtOSgvN7d88g+Up1AvdBPRLgGPhXdWBj7c43AO9RMFywiuuPxt+vAcXQ6qDaM9LEPufoJux6B.V3dXdbOjKkp4e8z7ugeplP5zwdjNLzCt5QFM5h5nHhFziM1yxDtdD8oLvvL..8Q3RyOT8EtTex.d.LCXybpu7Z5zoOOgtc5Av0pwMiQTvIHZlBjwWaLq62lhvYJP5Hqqz.UHT7raCoLh2YnjUyY1LUs1Kao0mMSK21Qa0mldnUMCVoP9aVOCbiXaxSgTV7Sum3YDjwoGCjNOdvaC4LknsBlffDwBe1bgQbLxhOHePNSSt8Yk+HKsOJ1r0pKVkuYt2ID1pC3r4U3sg9GcDx9DpZb7E3RBBcadbnO8jMB7J6TNR7mDUedNxqocc43Hdudrnz0FSncwL0INhX7BRXVxW.VEIZQi5dv+GhGlGpMCs03woqBlMCf3w7ur7DYVxyeyAWgNUqpjcC3RNbGyECm9r9r.xC1kfhKwncAxgTspVpJ7x0AAJaWEvTPFcptcG6boYPT4tGyzXcuQWDi0BTWn0SHhKDpsqbAiVmeAi50y5ljLTagh.zBcPHK37px0HMCJTb4DonBVpTUZ4GlVZ4lCkRQfAGpfrhUZpeCEj06Av3xxNl6cLr+fc2lJoXQtoPBfYHKRxQKf41Pw.trjRdqXsMK9IRQHXnxy5Cs3HSqQOQss.+.rWli4fkBU9OyRmjiwy0U+I4CH+kFOi6I6mSH7u0nOCyVVr9usQJFS.TUKvGqifF4YzoWVmM2xZg5qrvxKs57qXavkrAYSbSqEVr9pqrvJy6nQudBGqtvpKsb8UWzPppupnIIkwYh+noEd6YZPeOBA4z+Fhi8b1yhzRcxOvUB2uSRU.SqpYRMODaDXCHspZ3N7jQP5J03sFFKECtaDMrO2MtDmay5RG5K2.x6Pivd+fYkQCSlbSrDCUnDv4FlvdtkVU8YkUrWdU6kcTq5XQud9r8EdrRRFq+F5hJHf4iPQQCJ36gLWv8WCK4ZClrkOU1Vdh+HR5vlYGBiRGtFEIKzR8L5MC7zz8RUOE8gycmlJwc5Cx5uhBqS4GcKqhndZNQ+IQiBmnW7GZnKq2+RbgpPRMFpIIicybGsLaACybEsL+EvHzKAZ+0RIgWAMptC9bTJ+yRN+WNssIbhCM3eldQgtfEdCgimxsFiOfP5DP3uR8ih8bFDykmn+.Cu15W9xBwO15Ptzs+3w3DiAiXzxqALl9JCefUytcga.E.bJqV+9qmmTPW823bdpnaodq.XDKx40wKCEdoeYHyIuNdXm26GcOry6tK811couLQ8ehUaYDiB8JzK8cvTXnpU1qhUx5bseeJMqUa9eVaYunwlCAaTTYp+iFJUsw.wvfR5JE4GwfhAjXB8hIuQiiNR83Yix02eGkSwwQPhC74k0l3f.FXqk56wshDwwcgsiRVw5Sc3vndnspfxQrmxhhKSCJ9IMwNV7roIVcYLCOe4t6SgF+JU5mRK1GSUmwSXkL1Yjw0GY77iLdgQFu3HiWZjwKWLNwfBc0idFVV6fGsiz.PkKWC.fLTkonsxM48xkeBE8fi4VZEZzBrl0hnljZyjXsywZjdSFacpK2sxKNz+OAhyV5M9qjgw1b7LrYvSg6u.EDiehUZY4YTqWBk6KBDg8EAb2x2VjIs2qi8wtg1PJwp7xo7oMNh4ynwZW2+UM1CpIfFUNHvqjsv4U926XrmWegUBbIX.Px+OmauQcytvbkSdoxU9ZGuW87luQMceXZFThp4tejeNeKqjeRILE8OTP8HwPL7cV5OKHGYant.WldlxIvruIiswwHfZyB7TC9uvmzIcxRqhS5jMogalnf8V52UOag4jr.LAipHGeHgsutKcLT8ABIHUntA8ySLn2zByEo5HQYK+LqrbSj6xfNRPK8E0Ux+90eUTIuvBTLSPbnHl4nI4WzlMfeLzCdrN0Q4nt9b4bTh51L4vfRhNkToUglhVfovQuFrLh00IB0ETRXv3RRZe8Zh9O2oo57pMC14dGD6BFFzNWtRL+Xl5MnbzYrfbccx6Pi7fyvR4ht3l6bdqo4NyItr+p8+bqy7ydOte8dy+kUxur7dG7nGeuleKY8zeLhrew4c18t6jMg5WdXsJu6wtK8X2WoWaVO5z6mL4mYo9SFPEdu7Y4WXM9+XBJcfVvr9Ei8DvQVNg+5dMTOUawaK96TQpTwvtVJ65cUI+tpjeWUxuMTkLlf64+z4j9ysfZMpSTG2je3OueSTx7aK5X.0MR7X2jT8XPoann.11.0eVmUr1GGSbN6u76.nFrG65VVTmgw5WUFm+px3BWUFW7px3RWUFW9px3JubFwRj2XnTLH4tHzpvgMS5pyrYdWcSZ7+.D9IJCB
-
@Chazrox Amazing! Thanks.
The Choke Group Processor is a new one for me but it does the job!
-
add this in your script processor onNoteOn
function onNoteOn() { local note = Message.getNoteNumber(); if (note < LOW_KEY || note > HIGH_KEY) Message.ignoreEvent(true); }
-
@rglides Thanks!
-
@Tangerine_Sounds no problem!