How to make a Panic Button (Send All MIDI Off)?
-
@d-healey Here is my code
HiseSnippet 4374.3ocwbszcaibkFzsYmlneel4GPMzmDAZKSSvGRjVcmDpGTslHYoXp1N43wGc.AJRhXP.d.JZY0N5jeFyhYwrYVMKlMylYe1N+Il+A4ePl6sJ.P7hTDRhIxcKQbq59c+pKt0iaAT7LWGcpmmiqTgRme0TpTgunX+qrYi2arloszQ6KU3qJ12VaJg4PdgCiJs6US077nFREJ7IGh0oPoGJw+4u7q1UyRyVmNWjjzqbL0oGaNwjMW5Y+5eiokUOMC54lShT6l+5izcr2ywxYFvmOoXMooZ5uSaD8EZX0dPQoBe5AFlLG29LMF0SpvC20w3p9ictzVT+WY5YNvhhWnJ0G.RHtmikAxXTpzdiMsLNKnc6IAnb1buvmH7B+iEOwzvLT9buw2vKfLWin9iBOHN89jXzSMJ8pEgdYPoBQnzCET5aK1W20bJadIHe97hGYyntC0zieqQTWoG7l5EAepGiL0Z1HS6WaZvFS9dRq501QNZA+.0bzXFTRylPIx64.nZypNQ6czdtvEgVQIBPaFS4J6HaZqaMyfpTdzLyKN1w4ccsM5QoVU+Cdkghke1yH8oLRO.P4CrAMoUsbzLvq65oT9im8xS+mOXuyun2oGu+Au7ZTt2ydoy.GlySeIczLKM2pL1vxaRJGWJhtOfdT1gVNCzrPsUxndxxuWyknYY4bI0.io8fl8ad6NyEyE1yRiwnFPY0DLeWHXbjqyLaCxYZ1TKe+Gp0fvh3k.5D3.0LDhTJmnNHSRHBo9YNdlLSGakZaRpsIYYN6LUGhSYuzYFC7DJCmYqywZTE4OJWBZB8f9cjKMgPfHMFrCmqLA9YT0gPE5ZYonixNSyhxpN2JfMwZw+E.19tZWRN2jYQkKMBMtvgC2bp2pZMnxBoh9yJh+3UEsdWqoi0hYCl8EL5GXWvksIIRQ7OxUnh.RCvrcsLGYSMNGTQo7IGs+Qj95PsIm.gqt.AdiZqztuV0dKD2XQGxPeeItCg2FdE00CbSD6YSFPcS1XT+aZi48UUw+EoMznF7K0lsV.46OaP12D9aKuGbE40Xv09z2Ssbllh+0VjymO4xINFTxwZCfNU+csUDRFj+06.DGZCp0arIoYCj+5PWZWpA1DtlORB1mBFAC5tM5bSH.bniK4G8iF8GeXH6hYlhvyXCKDUOkxyqUYtWCazykEajAzu1XanN02pEFUWYmTV5BCMlFXN42HWp79tlum59bxPMKO.cTB88vrxQkb5L1zYrnR1c1vgT29l+Tr50WaxTK5Kgo2hJULd6tmcRrpBdJsIPCD8mwJ.YXOMcXhxmSXtyDR4KTn6DXbF1IyrXlSsLiS58rnZt3ju6sWZFcritF5bh2JGLKkw+QO5oSo1Gd7BXzwldfa.baDRsps1T72sEePsZM++VOPf3u0qVStzaKK+1j2yTJuObi.til3VS0+fiosR4+E6xUBBi3cA5Ssn5rANev+NpGDOxKHVjydNSF3rqyGTJGTNuiBDQzrFFMDHMVTCOZtYsvv4vnlfZegIiNAlJjGyzcFyg6ZNFljDpDNiH+5e.l7IlfSGBSGis7nVUoLGLfVwQOi18KoZhNGG7goNtLxtLaehQ4Bfqi252cFiAsmxgEWtRrFZyF9MTrKBucxcu3jDvzjl5QrvDbMdnrEZjn0HgcpWqYR6fFBcLDg5d9l4czq1Em+DllArBLS7k3DROGUTtzX9z4OmTmGjMvBls8B+xasc04xBpmJWK.xKl5386eNNx57q+cW3wzbwZAJdcvcXafR.+uPO61XXwIZfQnc033uIIix98wkdoXR2nhFGrxkDzxarl6zafa75rxDj7DRy5qBKi3uypfEvXikSVi7vSL549zaZrBdSib6MUUWitS5xYKMWDs48r+b3xI2v7Pt5p22jaEtYOL22rq2ZMdydzxY6nbQz12y9yQqf+bTt8mMpuF8mZKmsZ4hnstm8mZqf+TK+9yNqQ+4fky1A4aNn6r+TNxRUB1qBQt7NtPMIPdWnXdN4ar2FvRW4KwCRN.VcRisfUlzdSxV3pT.YsAYc1ByFqMVIHkLe8dDpnJHqAl7NldAnXGPQP11fr1frNaiJ1AUTMPw8Q8piomhYi.50FSHAzCjsMHqMHqCZKUNqpGpG2fMvUsBJB.2.vsEXrs.YvBgHsAYcPaopxWwZfhGf5A.qB.WusX8W3nUaAx1Fj0tMOWyMESXoVuYfh8PEwj4.fqC.2DvsEXLLEpsAYsQiUCMF5CTq2JTQNUQmVaLW1M4KrnEXts.YaCx5vSuEsF5ETquUflGhJhNM.5Fp3ZDAEAysEHaaPVGzZ0Pqoxyxb6PE4lDfFCeZ.H2D.tEXts.Y3PdX7uJt7SU0Pq0E0APsNfZCbE9Xtgfk1Bj0Fj0AMTMzPpgFpq39NlJIfXCb8rfUZ0Vrl11frNnQpgsd01AZsKWI.RLQhF.hMAyzBLy1fr1frNnUpgsb0NukuNzHAw+F5UdG40UmAIkJhk4gs7jwhFNFUv9IuNYENHw08RdcRENL40IqP2jWmrB6N+ZrAJaZaYZSIA64FQeLU+c88y9QYpk1UhMarBA2KNXDFOGHGwotl3Fc.NExTWJt4sjxv.GQpNeyRLGRTRsyjUsn1iXiI+SeOoVE4R.pKndlvXJe3zgwHAnzSUAs3pkjNmAUTjgGZ9RkNAXl1HLyNaiycvbvOcFSgW10v+SAuP.RdWZxzGSTByFbDk8JMqYTkJn03UhPJURWyiRJqV949WWJLQQMH0Sk3NfRnGuToAtTs2Edo.g59HfkGBgEOoUT6j.IpYHPA7nAGknrXrHO2UAC91g9XAPME.wqQHVTMuqVFHO9YbiuTLbFNbYPPDXbs3Nx0xWmQD4B8vxejPjK4RGQzsb7vVMeiPE67MWtgItYPvThlZhsDuSmN9EoOyEKXe+ZnS8U6K4cSv8CSwjKhXR9NxhBhgRexSpvU4iBMwexB647l7zzv8Fy2tyb8wtCow36ftKYBcZYOF5jrCtW2cG.8OlA1Lnve5lsRbmVknML7mT9zTXrSbERdy4FZ7WK930y2y9fMtWrYe7qb3ejGkGCdbCNWVHzB5dfCsgAE1zOv9g4Uw+YnbaCHh4oypUS9kQCK9E+BhRJB78fEI+w+XlNMfFIpekJg17iwtGjtgk4cg42DRdOXgt+jL3FtAj8PbQ8+3N24N26WZM59+trb+Qr+Rc9+x3rcot9nsoasiuTBu9bSy84O6w9qV4xwlLJLybvZ84OlPbsRvJd3OX.bMp3hbdKeHhfpQsI3ByujZ9m+2gOetlGjKwhuQlbxA+mTGVNAGnNTkLFglq7BGlNnzkLVcT.t6wGKD9adL6kOXp.mrG2NvFKnfkLB9pYyL7oURDYlsaOaD2YwCoGn3pEXWR7OLTgx9IncYXREa9r1rgDJFr8ZdHnHBTVLa.FEL.Vkgeenspw8M3li+zWSgbVeODZtWy400QmowWm9IZrwUGZ433pnjAqeZHpUHOCxkoBG2SeGWanVT8wPGi43hoSej8oAneSP9yAH4Hx4sonGV1n+kA81ewe9+PeLzx86IJbCjg3hgiPDeC+Z+95.WR0s+M0BlVEUXhocrEMvcLZC7TRhzSi0HqrST5E1MSUzMKkMi0MK5JGh1MOt8SyaXv0rIQPPuQzkqDqgkZ0JqheJ1xOveR5qLxZoMAqSIp+QLG1k1hnzv.1mPT7CHeLFiAWmfVhXD5LXb24wzgAH27jAbKxmF.VOMNSvBG1Nw5wwQsyexWXxPKO0qEm4ELBfHuqL.4ENj33bseKJYyIZiOnYL2j7BDcIU7cLKlPWOGTaTuSsU3vE7RFENC.Dx5iwnXV.QegIMmA9vMf6WCHGwuXiaAnqikEpWbuRx1cL0vWnMeMxFPEwKYxlj2iIEyqH9BDYhI.HJBY8QFJhD+k8SnVwzvOdI4iXzOE1MBeRYavydTy.nYWWWsqNZnXyVT3Vby46j3aJuWY7kZXOdHRrjZCRudi3O+MDZdl1qF5OR.+iRieBzM3blrZvtOG08K6uw.KDyPFux.K369OJAzvGRgNMO.e.G2CR.aZPGlGP6wAs2MCZt8C8D9gdO5FwdTNh0NjC5g2Lly46JBrftGdyzUKGn1kCZWeLCfD.W7ey+TZqj2FPWQCnapFPnM38cVf4FjCKsK2P6ltqi.XbZwf2BC9nKnLg0BeYK7Cjv4533CI2Q36iHQr+ejRhp10K3E6Pw2EdM+29iw4Erqf0h4f4ezmI9urFIHRzWHiafKjzSthJFbKsj+6KJLkM28vmPIOT0eM3K5sFcH+S176IJQeaS8SsObtg3UD+c3zBtT1LWHjBE5+RpJWJUNZXowyKi29ipbUXVRcMl.dXgZUB3erJ4A2339.gzXlOAoyHda.y9UhPNlyYy7FyKk+XsBWdTPUD2oHBdF02TcJn3QCgO20BbyFWc9XX0aJQ.jeSH4CR3MfQdK3Qv2lrfVVR6ErG4wLmKchy6Wc74a3+NAavZnyHcHOeA.k5YZQ6eEj1wjpCbctzipDQx9Tu2wbltImzP2RfKZd9u.fgHqHfFUym9XXgm+aSX4x78A1ei+SQZb9crkiF.VPefVh+9Db2224ZBtHxLJqFT1hw8QqIf2ecg65hvGrlvs25B20ki3v0EtqKB2ccg65hv6dmwEeTcgCmT8RWHm49LXlwQJaTirATwHkxb7KRESydiRXwb73ybHx6QpvCiedWJt3y6Rziiit30qHREcrOx1jguXtK5P5H4+NYHIU3q8SkBpJiexX9J+SFiXsBRlF3whILyEI9ZChdljjxE.F2U.n2U.FdWAXzcE.s6J.Ctc.7MEimN2cEE86ETztWPYz8BJCWUT9FeTBd4w43HWLXCsRhve4WsZ2fCSLHDfOMOMjupXzEzmAF+3Q3aPOdh37G..FTXJ0kYhi2TPbPFDmOtRE8WQkTguEZjSwmDCSpvmJr8WFb54vSJE2zeawDmeJoO.ifU.M5UAef+lYgW7YOPRR7NYgW8+Tf25BswmsRiCwg+qCf2HJ78jhB++..uo2Y7ytzYZtZSnLpKzZevz3hDGKxeVQb+X2K2DxPPnebEIzRr89Yy17RHpfP+aqIOzA41CMTPn+u0Dg5kaBMRPnMJrdHzg4lPZBBMYMQnt4lPCDD5+dMQncWQBkZdKNq9SYFH0IFq9OkxCq9LQ+uGkaZoGgVcVSzZu7SKsHz5esv5gVcyOsFEgV+10DsNL+zZXDZ84qIZ0KNs97UawDbJUNfRJfcmnwkgqtfeRvjJ7nh3gLSNxALSN5gKS9zgCm2P9XrFxSxUC4yKFdrNkn1ZPBI3iu4XplqcdllZ9Jc3sj+qnstELDS934WWL1luthgCIVAEma+uR22b6qJFc6XiQsuf4+MlffZQOVqbB9EEme3GSrFHWvGNapAj7X2gfovb.wu6B7Wo249gZ6Myi4LoOkgv5IMXTv2PD7kI9Wk7CohIUJtz5QEyWP4C1pPwXGLV4XGJV4XGHV4TGFV4TGDV4jGBV4rN.rxoN7qxK6fuJm9PuJm4AdUN4gcUN4AcU994PtFIBpdzfqR3RhS+kVw2TD3zLKMV7uCMvu3P7K.ZCw9hq.+hlv1yjcUzbQt29h0XUo32V7L7wtlMGePFbDxPYcvQ+uNR9xhG.Af5r4D7gE686VOe2iHI95iXzIZLWSr+5KlMoOzGRmBV2FxSB2nGXXSTU900BxVpO01feweE9wuPU75B9EpFTHLcftqyE5hDDwuvS9LtDfS17waJU7D7ZhZPJgEKVqZMIbntKz0wl+SUkjxVm52BcZbKzo4sPmV2Bc15Vny12BcZuTcvAgvIrmH5N.BN6.9HoEJb.eRUdTnz+Oc1ClI
function onControl(number, value) { var id = number.getId(); switch(id) { // Panic Button case 'midiPanicBtn': if (value == 1) { Console.print("Panic"); Engine.allNotesOff(); } number.setValue(0); break; } }
-
@WillDevelop Oh wow! You're using the on control callback, I forgot that thing existed.
Ok so do it like this instead.
// Your button should be set to momentary with saveInPreset disabled // Replace myButton with the ID of your button const myButton = Content.getComponent("myButton"); myButton.setControlCallback(onmyButtonControl); inline function onmyButtonControl(component, value) { if (value) return; Engine.allNotesOff(); }
-
Unfortunately, it didn't work.
Does the
Engine.allNotesOff();
function only send the command within HISE or also to the next plugin?Because the plugin should not produce its own sound but only output MIDI data (pass it on to the next plugin in the DAW)
-
@WillDevelop It's internal to HISE's engine.
-
Ah Okay, do you happen to have an idea how I can make a panic button that sends data to the outside (to the next plugin)?
-
@WillDevelop I don't know if it's possible. You can forward incoming MIDI messages out but I don't know about all notes off.
-
@d-healey If I find a solution, I will post it here. Thank you
-
@WillDevelop just send 128 note off messages?
-
@Lindon can you give me an example code how I can send this via a button click?
-
do you know how to generate a midi note off message?
-
@Lindon Ah such a simple idea!
-
@d-healey said in How to make a Panic Button (Send All MIDI Off)?:
@Lindon Ah such a simple idea!
thats me - full of simple ideas.....
-
@Lindon Not really, only in conjunction with a Note On command
-
@WillDevelop said in How to make a Panic Button (Send All MIDI Off)?:
@Lindon Not really, only in conjunction with a Note On command
so look in the documentation for NoteOff
eventually` you will find:
Synth.noteOff(int noteNumber)
so ...
for(i=0; i<128;i++) { Synth.noteOff(i); }
-
@Lindon
But does it also send a Note Off command to another plugin?
Because the plugin does not generate its own sounds, but only outputs MIDI data. -
@WillDevelop really, just type it in and try it.. if not - then you have learned something.
-
@Lindon Okay, I tried it and it didn't work.
-
I have found a solution
Button Callback
if(isMidiPanicBtnActive == 0) { isMidiPanicBtnActive = button.getValue; button.setValue(0); }
onNoteOff Callback
if (isMidiPanicBtnActive == 1) { for(i=0; i<128; i++) { Message.setNoteNumber(i); Message.sendToMidiOut(); } isMidiPanicBtnActive = 0; }
The only downside of this solution is that you have to press the button and then press a midi key
Because I don't think it is possible to send a message command with a button click, at least not "Message.setNoteNumber()" -
I know you guys are always looking at the “coding” way to do this…but wouldn’t a simple “no code” way to do this be to just create a button…make it momentary and assign it to the project master bypass? Because doesn’t that send an “All notes off” message that kills any midi/audio playing?
-
@johnmike that would be a much simpler solution, but I found nothing in the documentation about project master bypass.