Switching sample maps with radio buttons.
-
ok, So I have set the instrument up with velocity switching but a bit unsure of how to implement the buttons since I am not using the keyswitching , should I set up 4 buttons in the Midi processor On Init and then link to those buttons for the main interface or do I do the whole thing from the main interface script ?
not sure if this is the right approach ?
-
Your interface script is non-realtime, so it can't change the velocity of incoming notes. So your first idea is right, you need to add 4 buttons (or a slider pack) to your velocity changing script, and then link the interface controls to them.
-
@d-healey This seems to work , wonder if you could have a quick look and see if I am breaking any practices here ?
HiseSnippet 3261.3oc6bszbbabDFKIgkHsoSriSUtRkTEJ5KTkUTviAO1njxjbIoLiIEYQJq7vQkJncGRhHr.aAfkRLpzkbH+Kx+gbLGyOgbLGyOAeOGRlAOVLX3vkX6rijcRVxCKlA8L82zyzS2eCVbTRbebZZbhRmkezkivJcdO0StLJ67dm6GDor21zBReQPV+yChNyQYqKG4mlhGnzoyhOfdGcVdIk7Oe8mskeneTebcQJJONNnOd+fgAY0kdzFeQPX3t9CvOJXHyci1Xu9wQ8hCiGSzlEU0UF42+49mgenO81VPUoy6ryffr3jSx7yvoJcVZq3AWdx4wuHp39ebPZvyBwzKLTNgzPEEuab3.pFS+tRuyCBGbTEpSUHM5Q0iAKVLF7QpGDLHXR40iEe27Jzpkfc7nyBSS8L.pdcXTukJTuOP8j9IAixpqgpauq5dQY3jS8Il.V0p3dUV3etjZuXxcDkcug9OGuaB4hIRrtit9c0r00uy8WcE5eDSQZl1E9IZOabVVbjg1OWqR7yvY8hGNJNhbw5qUV+ZTI4kx7FjxTnTV2fTVBkBcCRgVq.aZW8ivBoEW2GWfCi6GjcIoSxWeP6hFSRVespaoreBhBChvZmNNpeVPbjVbT4HEUIShCWuekFdWRODNFemUW4UqtxxUMy8RwYalkkDPDCu9jR2JuQrqjgzUuNu6tAiCs0J63d9ggOirzZcdMpx1ecZt47PyclIM2b5ZtYK0bq4gl6NSZt0z0bqVp4n4gl6MSZNZ5ZNhSyq9irfgQ6eXbF9vn0uyJuZkkW40qbkpN8Tg0U11g3DgUS2wHYZBtdz3gOCmTg2paj35rouY014atewvDyMFGsWTP1givkWeUO1JkisDe2pkZE4Vyx8b+9kdtKLKJADGzKqVtHTIWkY2PUYFD2rRb0N4ROChZAWTzrK52oQQWA0jOe4da6m4S25qbjjL5NBmjEPMbc1FeAIlhhMBWVcab5yyhGkOTWNMVoysZwf8KY6xKYu3EACxNutfe8FmiCN67L1RR7GDD+fj3wi3LWSTgkagAiQE9MaLeTgQUyC2izSqnV4FfDIUBIHJxd86kqAaUpAylFawnw+ie2aCM1ZF0XDiFqm81PiQMz32o0qJXlanwp2+1MZgdqb0PFIAtFOXbneVynYogvWVAwMZivFogFFkRAFC1mgPb0EFhqPGlsTc+.0in4gHVeWPf9RbgHa8sLggUU24zSw8ypU1kT28WAM6.XpxOrPU9P0SxRv9CIoqch+vQjcRy0mUTKuxXdjC2nVmC2QIj0G9CNI32yba+0M1ZLY7JoYo+4Mx6pMGFONpQeUp4GiGg8yHleFYt8FGeb9JTdo95OKexxiRHgtPFJXq3vHLYbOiEi8RhSSOk.m71JkspiFmbFcrptjiwWfSRaV1CGOjX6ihvgzfK5P2M7KSwTacP+C7Igk0X+l7dQ+Q941aRhs4WavcsI20VbWi3t1l6ZGtqcqutiZy4h2pcQCcf+ni7IPj4N2JnbVFothRXSmcxvZdWyjo929RCegqpdee08wmQbQ8KCxN+XLwFe1YkK193xZzdAoJsI00Xo2BcVrodtX6zyoEvoRa4JfYaKQTE72UUSvmoMzezI3Phas3DRZu52uIu.kIhxj0s+fAEEt9ZkUt1c0zI+2Lc8x7.mlfNDAMrtNQcmlntDQMctNQ8llndDQs5VIJqv9IIEQTjRj+qpRAuJg1pzCKakmHL8+B4mjMUc5bWTjIGkvgZxLHtMoFERuU202KHZ.9kGdZsrT0rl+hBZ5VuQCbmWUysQe+Trl9OsIYGjAiz3P78FkDPy.7zfjzr0pZ2pOWch.asOircyyuOW+XL89IESFbGbCcjYa5Hyo2QYmGjbS8CpM8i0MLvEmjc9MzON2P+L.ep+3vro1Q0SGdLMwozuR+IZep1Zj+9TsqTmwTpybJ0Y8Ddfvg1RMskSTdc8bzUW40zEGkqfDQyPy0IzNnbY1rbytyxM60taln6B32XxZ2CHq27OCSaqGW5acclgibpWV8ab7frx7hGjpQjpRzUl.P1hpwEao4vQvsUWzToYYoVwXQ4bNnzrTNKT.eEyf3t+mIt27hsjkXRJcoVLl8xJFdtjgpmYnEbJZg+.7VvsnEVpC3VvqnE9iMZg2XYJuX6R26FN.nkqzwSBnAcuSDMLNRITc7CIl2buxUk1LSuChihGcdbTP+l4xTE2JitKDPalkQbDVWxGswwDWajcFmTze4Osw9jPd7SZlh1UyBGbjthNLLg1qOVsPc0ndVz9uCFNV7+4Y3XZCcueI+FZjdOI6a3142SMOibMJAJusT0iiGmEDcVE4DpOb7vShGmzGyxiwBTmrEWqW4y7Dbzf7K9WjOkUZTQ5AsRipJU5W0TDrU987Mq5rHNhxHPddvgXh6J1ozoiO8TpJsfJ464F0g4jKPG4HkwQ3CEdGDz+nXxvFYEC08h58U574ERpz4cONlx0yRpHCk8i+B7kke+yCp+99wOlpBzQsOOn7qFUcTIsFAgkOHBVpu5niO7WrSuG8zcOb+s243WuEw90CGFF+S1O9L+HM50Z4E7zcMu2K7uPY6wiBC5SLeT.ueb7ncpvOssoETLssysTMLcccTJtmAzB7brsQUiDL3w1pFOjuOAO4kKM7XM63wwxqId5ZoK.OHDi8AwXePyFdPyBddvm.v.4YY1DPHcgFHGFCjCiAxQp.BfExtqUS.4o6IxBwLiCwLiCIyYbO.fAxQmaEjtqsHCjMiAxlw.YKS7.ZEjQS735ZIBOLd3rY7vYKQObaCY91UrOtVhV.gXV.gXV.gj4BnMg3QvwfCPHjoHCjGiAxiw.4IU.AvBYXzzEmqtmqHKDyJHDyJHjLWAsIDCjiM2dp5BWA4xXfbYLPtxDOP7Xay6QnqH7fXvChAOHYhmsfDyid2l3g7Qj8oKi8oKi8oqLwCD6iKWHBtFhV+XwXerXrOVtRzgPuOAjApIfr61UzVpHFCDhw.g5JU.MO1S01QTToVL6AYwrGjkiDmw0ChGNKNObFtFhLPLaAgX1BB4IS7.v93Z51.OntB8XawLgyhYBmkLmvsMnUPF5bqf7DsBxhw.YwXfrjoAZaPdDb4CxVXLO5Ltr0YbYqKS7.JIH9ztQBC4gAOHF7fjId1ATLobaAoaKz9XxXeLYrOlxDOPbX6x4vtqtPZDXvChAOHSI5PXWPzHX1zgfikkvXRY3EwlgWDajTADHW17VHagaA0Bh3LqAj00AH2qGPa1qWAlXKAFYb5bTiz0yCHYbxASfRdfahmsGBHgbsASdyJl.QJmiSyLHbML5BjTNIAJPoQ3waofRLmTl8AibNt8k55XBjbN4fIH6MYxSufkCPBsjxjOXjZwmgjmP24sgTKIAJPVJtn7HKo.RrkTl8AhbKdxF5ZpCjbK4fIP6QwamDdFKsgfKofosLmGQv10CHIWxASPrSHtr.sASzkTbR.hrKGSdP43BjrKIAJHVJGNP4IL.o1P3kTl8AgzKRRTM4TwwEAjzK4fIPw7wkwgqWWfDeIkIefH+x1jieeKWOfmfoj.EHKE+wXpaBjQOoL6a64AoDt1PY0SNXBRLe1VsI9n1vrmTvDD18PdbKnPNd.Y2SNXBTLeH9C0z.HCeRwIAHV9bzs4NIcgmKSaX4SRfBxJJCdFjDGIaK7RfpAk80Ap6e8f5vDBf3fUdYv7T30LSJCOTWfdJjFtf3s3J7HoaZCzag7v0b3QKzTWb17sviQav0OCBt.40v1nYphFtVP8ZHQfAwhgZtukogAzyHPZyD2ET.t7FLwjk0hyIPd3Bxdxbj.ZpKbhXaNq.oMQD14Ezkyf4X.8g3Uh.Cz4j5vYwLrAdlARalHjyMv1tI+EF1lV.O2.4gKPO2AHN6kNzyNPZSDAd9ANbFLOGfmefDA1rawHwXzbOLccg.qMmgfzlIB4bDr6xsByAA8bDjGt.EygN2JLOnOrrRCWfNOAt4gFN1t.OOA4gKP6fwYuL7zAdlBRywArGhVilKvz6Z5A7bEjHvf7j+XXyk2rvmEv1b1BRalHnGpVGNFoLMLAd9BxCWf9A3v4o20AA7LFj1DQXOjsH9fesg9KkRh.CxJLDeThB+Qg1lyZPdLtAIlCGKtmJZ5ONTleG02t32Q8OP8AgwOyOr9WScbTlePT4abqeTY0ZSpWaxMLs23c+s4+a7N92qWy76eLQ+bs6rzagWOZy+e36euqXlR++uRF9V2qjg2Du5.dSzGC86mD+z9Eu+cnKxtcdIDbGk6DbY0CnWqM4kTrpp98zUFRVb8z98oC2+Xx3iXYLAHiE.YP.jwFfLN.jwEfLdSUFpesMGmEOrXoHofi1o3MJQmIaxzYQk+8dgUgd
Also, Say I need to change the velocity switching for 3 samplers in a synth group at once...do I duplicate the code from the Midi script in each sampler or can I do it in the midi script for the group ?
-
It looks fine, but I have some suggestions. I'm just putting a snippet together.
-
@d-healey Just noticed that it does 2 switches ...one for the button it is turning off and one for the button that is turned on , which makes sense I guess but could be fixed ...hmm. Console print reveals this.
It does not have any effect as such as the one it it turning off is the one selected already but might be a performance issue.
-
This is probably how I'd do it
HiseSnippet 3031.3oc6b0sbaabEFPRH1hINsIMclLcZmAiyMTQpp3mE+vwoSjDkjsZjr3H539iqGOvjqDQMH.GPPaq5wuF8t9NzK6kc5SPeD5iPdCZ2E+PrXEjB3oZscRptQb2EKv4a+NmydNmkD8hiFfmNMJVRd0Gb9Drj7Gnz+7vjQcG44GJcvtzNl9B+jAi7COyVZmym3McJdnjr7x2kdExqthT5eeyWtiWfW3.bYWRROLxe.9P+w9Ik81aquxOHXeug3G3Ol4pQacvfnvtQAQyHRyxJZRS7F7Luyv22idYKoHI+d6MzOIJtehWBdpj7J6DM779ihdQX10+P+o9OM.SanK0mbix5d+nfgTIl1qT2Q9AC6Uf5oRjaZux0fkyVC9Dki7G5Ou+x0heb5.pkyfc8PdoqR7zYEOslKdxLh2JYh2GozePr+jjxQnx16qbPXBN9TOBEvJVYWqzR8VRoaD4JBS1br2yv6GSZLeFss0z1P0RSas6bqV2pEgHlln9buX0miChF3mbt5uVMUuXyyvIUVbZe6hK417y8oyRRHMHS8QONcnSihUa6SZqcGUe0uPEQ925qu1sZ8pa0Rk7W9D1bxroiZWHrjGX2nwShBIMZe6rK41pqStQqqu1ZzmIyTej+i2bJcBgIwQAc8BBdJQIpc1nEMW6NsdMUb7CC7CwpmNKbPheTnZ0qp8fhm5FDzDLCWJmD75En5GND+RBXJj5z1GeZ47JjshEHpjscRRrOYF313WhGvt3sY18Y8zaSwijHoyEunv6GkfONr8ZsdUqUa85Vp7Cc5o0NV9pQ.Nt1golgwW0DaGNa7SwwExTwERzGqpvqb4J7r1iCxHVlKLJ7fP+jimfCuLy.obsAhAgRtTQtzjTygOL2bXmz0OIehV+pJYKl5RohLqWJoEX5FESWQNc1KvTMgOUzhO0eTktt.pI+80GrqWhG0eR9JIY0cBNNwmRbx6heNwQcl2kUU1EO8YIQSRWpyUkkjuQCVreI6i7b1FuveXxnxN98aMB6e1nD1dh8F5Gc23nYS3nq4hvpMfvXDg+vVWOhvjB8vCHOoVJEVrjsmhI6LQbfdPpDrStDrXRrIiD+u+SuMjXyEThQLRrVxaCIFUQheuFaUvnanxJ2+wsZfbKcw8gIQCDMbVfWR0PDnwEkO.wMZk8ho62FNkBLFrKj3FZp39QJ8nA2Uu7tTMxKwEhnk27nvtkxdmdJdPRovthx9+NwGxEqn7yyDkOVoeRL1aLIF39dimP1IMUdZoj2R+5Hv3IMNv3dwD6Cug88+yLW1+XqclQVuhq16eaqzG01iilEV4YkK4mfmf8RHzOybt4VmbRpEJ+r9luLUY4AwjviHKErCbbHlrtmvhwtwQSmdJANo2qorC0aV7Yz0pxdNA+bb7zp8c+YiIbeXHNfFbgLc2vudJlx09CNxiDGUk8aReJZOvKkuIYKj1VmqsAWaSt1Ht1Vbss4Z6T1VVopt3MZV1IG4MomGAhLZs63mqkQFKqmREVsxk0zGMyC3MYtMK2rP8pQjV5hhzOU4P7YD2R+V+jQmfI75Ymkaf8o4inRx.cj57wpXtsj7xWSxVYPlRMMoKlsppKmq1KoDiOScr2j93.hqLR9OzjeXSRhLVZFRjzuL1PEsgp8iu5znZXRTjLgHWSQRTdCGlsK37LnV2eCUcKsOm9OsuKjEU0EQ5x1iRu1GWeNRyeLGQXKuyvT.8vbtpMy8hd6I33csboZcckKUwJRQOZRyAHaWk3hs2T3TykU10Ulp1JKPVOZ+ukpVc47.ISOXS275JiqUXBrckFrl8xhrDOm9gVYh8BbGzytC+E32Air6vFxfuClY2g+Yk6varnsWtYgL9sTYtUKjw99zMt2Kjts.oGpL9wD58TuYAIE8VMZwihBilLJJzeP03gJ1GjQ1qEPamjP7yV1ymr0IDWadSK0F+6+0sNj3h1KtZXdWLRd36pK2P95SUxDWUpmE0uejkzx+fOKoqZo6CyyQRk7ziSdGmm+.kzn5UoIg81RTOIZVBI4phDbTHYA0mj42.LatPKQcxl0VqXKf93vgoM9Oj+xGTuHwI5f5ECJMn3VQvV9mS2rRdYbHMqhz3pCHojEvpROkjeIUjHI6HMMkTGmlfBckizGWRiT3cj+fdQjkMhEC08hxcjjuW1Lkje+Shn4KthBRW5vnuBed9mume4mOL5gTQftpcO+7OpW7fxSMxOH+DhLUdUuSN92rW2G7j8O9vc26jWuCg+5hCBh9UGFclWnJssZZGOYeiMeg2yk1c1j.+AD5iRxGFEMYuB7Su2zNxTakughtgiisT10Lj1gqskEpXkfAOVlk3g7443IseggGyEGO1ltUwSGSsZvCBwvOHF9AsX3AsH34teF.Bx0znJfPZ0RP1LDjMCAYKT.Afgr5XVEPtZt0wPLZbHFMNjH03tK.BxViyBRywpNBxhgfrXHHKQhGPVP5UwiiiYc3gwCmEiGNKA5gaWH5aWfebLqy.BwX.gXLfPhz.ZaHdDr04.DBYTGA4xPPtLDjqPAD.FRWupKNGMWm5XHFKHDiEDRjVPaCgfrs31SUqVKHGFBxggfbDIdf3w1h2iPm5vChAOHF7fDId1ARLOZcphGxe0wOcX3mNL7SGQhGH7iCWHBN50Y+XxvOlL7ioi.cHz8y.QPUAjUmN0skJhgfPLDDpiPAz0wdpV10EUpIydPlL6AYZKPMttP7vYx4gS2QuNBhYKHDyVPHWQhG.7iigSE7f5TqGaSFENSFENSQpvsKHKHcMNKH25rfLYHHSFBxTjDztf7H3vGjcsw7nw3xViwkslHwCnjf3S6FUaHOL3AwfGjHwydfhIkaKHMqZ4GCF9wfgeLDIdf3v1gygcGsZKi.CdPL3AYHPGB6CpLBFUcHXaZVaLoL0EwhotHVHgBHPtr4YHqZ2BpAEhynDPlWFfbtb.sc2tYXhsGXEiSiqzHcbcAVLNwfIPIOvo3Y4h.VPtlfI2EESfJJmsc0LHbz06.rnbBBTfRivkmofVXNgn8Aq3bb6K0w1.Xw4DClfr2jAe4ELsAVPKgn7AqnV7YH4Vq67lTTKAAJPLEWTdDSJfE1RHZefJtEewF5XnAr3VhASf1ihmmp8LVZRAtDBl1w35HB1Nt.KxkXvDDdBwkEnE3BcIDmDfJ1ksAOnrc.VrKAAJHLkMGnbqM.olTvKgn8AonWjjnpVSEaGDvhdIFLAJlOtLNbb6.rvWBQ4CTwurL3puuoiKvSvTPfBDSweLlZF.qnmPz9185nnDNVPqpmXvDjX9rLaR7QMoxdBASPptGxkyfBY6Br5dhASfh4Cwenl5.qvmPbR.pJe1ZVbmjdsmKSSpxmf.EDKJc9JHUejrMvKApDTVWFntykCpiiI.hCVo8AySga0LozcQc.5oPX3Bh2hKTGIMCKfdKDGttF9pEZnUe17MviQSv0W.AWf7ZXoWMUQcGSndMDHvfvXnp6aYnqC8LBDll39fBvkmvpuXYM3bBDGtfrmLWQ.MzpUQrImUfvTDgcdAc3HLacneIdEHv.cNo1bLltEvyLPXZhPN2.Kqp0uP2xvD34FHNbA56c.hiuzfd1ABSQD34GXyQXt1.O+.ABrEmwHwXTcOLMsZAVSNCAgoIB4bDr5vYgYifdNBhCWfh4PiyByE5WVVggKPmm.mdntskCvySPb3BzNXb7ktqFvyTPXNNf8knUupAlVGCWfmqf.AFju4O5Vb4MW62Evlb1BBSSDzWpVatJRYna.77EDGt.8CvgySuiMB3YLHLEQXeIaQ7A+ZA8WJk.AFDKLDeTh09iBsIm0f3p3FjXNrM49VQS+wgx76n9lY+Np+YJ2MH5odAk+ZpiBS77CyeC97KxGVc93pyufq5sl0+55+slE+6InUZ1a6fuk2Oqq7N8qO1l9Ce+mbAZZ5++Uxv24dkL7l3UGvahmwXuAwQOYP16eGpQ1MS6gf6vTmfqpbDss57W5OJJZapIMlXb8jACnK2+Rx5S8yw.vbLALGDf4XAXN1.liCf43dkyg5Wa6YIQiyLEIczaur2nDxy2jQdYo+KPMeIr.�
-
@d-healey said in Switching sample maps with radio buttons.:
Yep, that is much,.....much neater :)
Thanks !EDIT: is it safe to have a loop in the Oninit of the midi scriptprocessor ?
Also, what is the exec for in this.
velocity.setAttribute(exec("velocity").button+index, value);
-
is it safe to have a loop in the Oninit of the midi scriptprocessor ?
Yes, the
init
callback is not real time so we're safe there.Also, what is the exec for in this.
My secret sauce :D It executes strings as if they are code. I posted a video about this on Patreon a few weeks ago.
-
Actually the secret sauce isn't needed here, I was trying something else and left that in by mistake. :p
-
@d-healey This is turning out pretty smooth .
Btw I am using the Midi processor at the top of a synth group , works very nicely and switches all samplers in the group. -
@d-healey found a small problem with this , I am now velocity switching a synth group with the buttons and that works perfectly , but when I recall presets , it loads the correct button but does not do the switching ?
I can see it also switching the buttons in the Midi processor.I can also see that it always goes to the sound represented by the last button ?
BTW> same thing happens with my earlier version of the script ?
Any ideas ?
-
When the preset is changed you need to update the variable that tracks the velocity offset.
-
@d-healey How can I track when a preset has been changed ?
-
All control callbacks (for controls that have saveInPreset enabled) are triggered after a preset is loaded.
-
@d-healey This seems to have solved it.
reg mapSelector = 0; const var maps = [0, 2, 4, 6]; const var buttons = []; for (i = 0; i < 4; i++) { buttons[i] = Content.addButton("button"+i, 150*i, 10); buttons[i].setControlCallback(buttonCallback); } inline function buttonCallback(component, value) { **if (value == 1) { local index = buttons.indexOf(component); mapSelector = maps[index];** } }