HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. WillDevelop
    W
    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 21
    • Groups 0

    WillDevelop

    @WillDevelop

    0
    Reputation
    10
    Profile views
    21
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    WillDevelop Unfollow Follow

    Latest posts made by WillDevelop

    • RE: Is there a clever way to deal with overlapping MIDI notes?

      I have found a simple solution with the MidiList object:

      • When a Note On command comes in, then in a MidiList the index of the pressed key is set to the value of the note that is output. e.g. I press key 60 which is not active but only the next key so "60 -> 61" is stored in the MidiList.
      • When a Note Off command comes in, before the Note Off command is sent, it is first checked whether another key also has this value
        • If no key has this value, a Note Off command is sent for the note and the key is set to -1 in the MidiList.
        • If one or more keys have this value, the NoteOff command is not sent

      onInit()

      reg midiKeyList = Engine.createMidiList();
      

      onNoteOn()

      const receivedNote = Message.getNoteNumber();
      var outputNote = getOutputNoteBySnapMode(receivedNote);
      midiKeyList.setValue(receivedNote, outputNote);
      	
      sendNoteToMidiOut(outputNote);
      

      onNoteOff()

      const receivedNote = Message.getNoteNumber();
      var outputNote = getOutputNoteBySnapMode(receivedNote);
      	
      midiKeyList.setValue(receivedNote, -1); // set pressed Note in midiList to -1
      if (midiKeyList.getValueAmount(outputNote) <= 0)
      {
      	sendNoteToMidiOut(outputNote);
      }
      

      I hope you can understand it.
      Thanks guys

      posted in Scripting
      W
      WillDevelop
    • RE: Is there a clever way to deal with overlapping MIDI notes?

      @meto396 Here

      HiseSnippet 3296.3ocsZ0sbaabEFz1L0jN1wdZurWrkZlHpXZZ.JRQxH6zPweTTqTjpnhamwiGMKAVRhJP.N.KsLiCmdWeE5E8MnWza5M8gnuD8MnuAomyt.j.fjVjxlbRjAN6d9Ne6YO6Y+A6YtN5LOOGWkDotX7PlRhOOY6w17906SMsUNpgRhGkrsMcHg6P9dGNS4fwCoddLCkDIt6gXcRj5dJhe+ue6ATKpsNalHEkW4XpyN1bfIelzy91euokUKpA6ByAgpcwu8HcG65NVNi.9b2jpJCo5WQ6w9dJVs6jTIwm0zvj631lS4LOkD26.Giws66bssr9uxzyriECeQSoM.jTbKGKCjwnTk58MsLNKnc6o.nb1LuvckdgeUxSLMLmJel23whBHyzHr+HwchRu6FgdZgomZH5s.JkHDktmjROIYacWyg7Ykf74AIOxlyb6R0i10Hqqxcx7qSB9TONYn0ndl1+QSCdexKIkJnte5vE7cLyd84PIEKBkT2A.0lme.8JVKW3koFIaHbxEQ2c1Oc5zO+4j1LNoEnR5l1PYr7VNTC78ZdYy79yN+zeWy5WbYqSOtQyymfx8d94Ncb3NO6bVuQVT27bd2L4HYhJMC.uOfdL9gVNcnVn1YWP8Dz3HacqQFLuzlxGxlo2HyKO1w4pZ1FsXLq7+YOrxQJttyfgN1PK2yuTATGxrYtTKxqntlTn+yK8aotDpkky0LCbPgG32d8a1elXgvVVTNmY.koh.I81Cfnm.Ude5T.5NtFLWRmwhgWoIvusqu8WSdsZNhVgbjBEyQ1cubjhUxQ1CjUFjUAjUEjooVAqj5ax4q2VnhZfrcAEKAJVFTrJnHHqLHqBHqZYTwpnhZAJ1.0C.VC.t..7t.tk.isGHqLHqBHqJZKMAqJLUOgAAf0.fK..uKfaIvX6AxJCxp.xph1RCYUgcCTrIpG.rF.bA.3h.tk.isGHqLHqBZLUzXnOPqPw.EagJB.qA.W..tHfaIvX6AxJCxpfFSEMF5CzJTZphBphNM.5cAjKB.WBL2dfrxfrpn0TQqgdAsB6En4gnhnSCfdW.4h.vk.ysGHqLHqJZMUzZnWPqP4oJJLI.cA.5cAjKB.WBL2dfrJfrpn0TQqoM0Z0Pc.TK.ntK.ZQ.yRfk1CjUAjUEMjJZHsoFplreGPr.f3t.fEAqTBrRYPVEPVUzHpXqWqRfVGHTBfr..4t.hEAyTBLSYPVEPVUzJpXKWqJnzjnQw+d1Xui7poyMeKSFLKha6Rs7XgiGCKnQ72iWglwduU72iqvgweOdEpE+83U3fYuOwe.eqQ1PyBZovaeU5T58Y5W4QttuodehGNY3.GCFwziPEs9zo7bH79TN7Glv2PrgwxDcpMoCiLTlvFxDn635xz4ViS+UOGR7XAYyHc8sEQXEbp1S.vgzrzwxjK6jFbslcIYmKyRdKlcOHc9uAxvP9oeBHjXRKpso9Ab6fdlWRz1IcJ.ik.hosA6cm1MrEQDeFpkPsTm.rGlEFR7ZabgCZiSGwyBYGSkZB7+Lv2ETUuqM4fSJqme6HeOF+UTqQrr6fvIpDgjJkN0iQxnk4q8eOUfBWRGwcByk8E0.qSGWF8pouJQnfOBX4Sg.yK6wQsiCjrlSAJfG6JPILK5CynshXLQ5FljdRZY3RMnELfxM0Ae8XBpsmHvvlQcALIH8bgz9DeiHCVDwOyBoVP.xRcQoeOgjNkKqGQ2xwCo8nAc.SHl3QH2vraWlKLulIUNiT0pU8KRejKVPC+Zny7U6ghQGcAZl0THhXRdAYYwfPoO8o6HT48RMweKB6Y7l7r4g60luY+Y5iAryiwKHp6rPnmW1WAgw6SfQz0534XMBrYPg+3MaknNscB2vvey4SmCi8ipP7NmanwOQ93DweE+AZGv.ugi3h2bDOJhPifLDjFDId1bwd21PtkLd.SMgAQ1r2w+tYUweIO21.nH8LKxKQ9lvgQe4WRxNGAdoeNwEp9KhS3c1YpMeej9r4aXKrWaVm1J2mEmAendMYBs0tSaw4AC2mcLlJZVOVpMXW1KVTWVH6+A6v9lnr8C1cEtMcq6rREqmZlok8Sw84gqdfSd1zlhBjiNkEue5kOo5jYfZi5cpcVAbA6VapS7kj.L5EwBH5KcwDK.+tc+zZfTxkqbSqFAByxZ9RLF6EZEp3GL4uLBX+mP9ZV9gtlvV7Lky6tX+4bEtn0nLIRqF2cqqikE1Th1QEuqHcndXa7vJ70HVI9.l0VPobj2hq3QTQbGgl3jCxhPG4QFYkNI4ZkxZZ36PfnOga+fQbNt1S+UmrMFw.dvK02VrJEpAPxZttzwG0U5UyJrWtY6s70Ypm4MvVnqiagM55UBV4zLT85ScGhPKVD0pg9VR32Zd7igtgfyjUC1FBTajweMeKEyoLdkAVx2FaECZ3g4PmsN.2TfayXvNOncWGPaI.s0MC5Z6GZI8Cs15Fwt2ZDqcn.zCuYLmw2UDXIcO7loKcMPsl.zZ9XF.I.t7+l8z7VYca.0jMfZy0.lZCwXmkXtNqgkNPXnCleniDXblsluaniK2O6BJSZMlPLXO+.IL0s.+fb0fLQNYRJYUq4cNi1F1bCKquKbRHGo3QeKJx8OmAGDZVgo1boyVnFgAKtVDM49xREF5K4X557dbpKWl4VSUUcgLdBlMdYmcWWwS1hNfrgOyO+UBLcZfnUD+6zY.bY7QtP7CJz+nBSmZtkYgkFcoUhlcXkyCyQqS4R3g0xrS.6iTIOnWRz2HkFw7wH8BBt5vsekL9h6b1Hu9hRyQthMd5IQDTEYHBQxyv9l7CAEOpK7bMKvIaL9h9vVhxFBPQGQ7iQ50fQdC3Q3tiXAsr31ScmEXNW1.m2t53KNtm8C1y9Tmw7w2h45S0xzh0drGmMHeGWmq8XYCIoAy6JtyvbBRCiAAtP8Psyja1RDxJgFUym9XXgnZ.cxjQD+5eBMyQZbxbrkiF.1EZfVx+8o3onr+DBdHLKnLUnrki6VaHfarovcSQ3laHbasovcS4HNbSg6lhv01T3toH7Aez3hG45zzI4u10jyZygMJ0K61pjsgJFpTtieQPZ5mR1NEVr.OwLGxs3nj3dQ+rkIW9msL7WUUW9QBCUQG6irM4mNjYuru0ph+WVTQIwC820DTUt3Cb9H+OvobACJlF3W2b51TTDKJI7WaVYs.vHN.9jYkAf8wBP2O1lPuOVFP+XAnysqI73jQ261siFyPQ+SBJzOInz6SBJcWUTdrOJ0cFzw4.m2IvIcxfy7aA8O+vQMnbJdmB7G6AiGGxb4l3P8DMXu0TmIugAoR5uXFkDOY5WBWIwmIs7CCt+ATalkvrOIYGp9U8bcFYaHk9NH4QBztiCd3Z7hBfub+6nnzWbQAv292IDsso139qTJ.A7eQ.7FggukRX3+k.7ldmItcBmQcoCXblKzZuyvnhjWrjeQRHEMo9ZSHCIg9gUjPe.a2XwrccIDSRn+9FxC0bs8PckD5+tgHTq0lP8jDZ6DaFBc3ZSHpjPC1PDp1ZSnNRB8u1PD5fUjPyMkgfU+kEFHUMBq9GJqCqtub72VqMszCQqpaHZUe8oEMDs9aI1Lzp15Sqdgn0eXCQqCWeZ0MDsdvFhVshRqGrZyiKnTl.JkEr6.pPFNwNrh+Avj2akDupAoOV90AEWeL+unn7kS61cVC48QZHOcsZHOPdEPEDiYiWAN7X3NlQcsiOMU5OPJloG0nr08OC25VRJl0imeQxHGxIn4INC.ZQcGi53QeK6H6ybYdLNdGIWMd+njgOVQI0+OJepo9iRF9zRUhS0XsjvL+y492XUIyaY4P4vN9t.19mf+edxt7KGYJNQqXqfxE5AFMz.10Wst.SvMugFyechW3GnVejG2YPaFGg0SoSufanapOC.5mU7CHiHUIpzBgEOyEUHr2KEPFwJUuyeMQR7y5logKriY2LgttVYjKWMhH4WrMhnCFgWAi1l+XzZ1lNXnE6bn4FQr7xjdvYmDsxbWFc.zhwn9nkfdxVTcXGyfbww9ghE2z4ZCfECyOYjE2bnkYLxW2BFwfibpWeA75XGcJdXgwZucFMOC9AOFtI6COdY75XSOzi7ZwW0VMeob9OT1+Is7pAOTXpH+GJjWE922jdhhx7WB4GmDHyHKJO5chFuH39E.sfHWDY7lCa6YxGGdSIextnzqJEeRxyvO15h43cV.Gg8KsI3n+0K+gIaBQn57YD7dIa8m1L2kbkycFgibOgxcMww+e+nAsgwj5Lv51vt1vS7ARofpJdWMXuasY1FhW9Y3megZ36I7KTKnPXxIcWmK0kaVEu.62WHA3jsH8VpjmfuSzB1fZxjp4UUvLqWpqiM+moonrXcJbKzY2agNEuE5T5Vnyd2BcJeKzoxGTGLOTvMUDFN.BNqoH8ahDMESwKhBU9+3x1OzF
      
      posted in Scripting
      W
      WillDevelop
    • Is there a clever way to deal with overlapping MIDI notes?

      Hi HISE Community,

      I have written a Hise script that manipulates MIDI notes.
      This means that I can trigger the same MIDI values with different keys on my MIDI keyboard.

      This leads to the problem that if I press two or more keys on my MIDI keyboard that trigger the same MIDI value, that when I release one of the keys, the note is completely gone, even though I still press the other key.
      I use the Message object to manipulate the incoming MIDI notes and Message.sendToMidiOut to pass the manipulated notes to the next plugin.

      Any suggestions for solutions, perhaps with an example script/snippets.
      Would be quite helpful

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @ulrik
      It does not work with stuck notes

      Example Video

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @ulrik Nice, but after playing around with it a bit, I realized that you still have to press a midi Note to send the NoteOff commands

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @ulrik Yes it works but unfortunately only as a VST2 plugin

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @d-healey

      Okay, my bad.
      I have now solved the problem like this:
      When you press the panic button you have one second to press any MIDI note so it can send a note off command to the next plugin for each note.

      Here is the code for it

      onInit()

      // MIDI Panic Btn
      const midiPanicBtn = Content.addButton("midiPanicBtn").setPosition(204, 40, 70, 43);
      var isMidiPanicBtnActive = midiPanicBtn.getValue;
      
      // MIDI Panic Btn Timer
      const midiPanicBtn_timer = Engine.createTimerObject();
      midiPanicBtn_timer.setTimerCallback(function(){
      	var panicBtn = Content.getComponent("midiPanicBtn");
      	isMidiPanicBtnActive = 0;
      	midiPanicBtn_timer.stopTimer();
      });
      

      Button-Callback

      if(isMidiPanicBtnActive == 0)
      {
         isMidiPanicBtnActive = 1;
         midiPanicBtn_timer.startTimer(1000);
      }
      

      onNoteOff()

      if (isMidiPanicBtnActive == 1)
      {
      	for(i=0; i<128; i++)
      	{
      		Console.print(i);
      		Message.setNoteNumber(i);
      		Message.sendToMidiOut();
      	}
      }
      

      Thank you all for helping me!

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @Christoph-Hart said in How to make a Panic Button (Send All MIDI Off)?:

      sendToMidiOut

      That's a good suggestion, but when trying around with the MessageHolder object I noticed that the object does not have the function sendToMidiOut() at all and if I understand correctly sendToMidiOut() only works in the Midi callbacks, which is only triggered when a Midi signal comes in

      posted in Scripting
      W
      WillDevelop
    • RE: Set step size of button for pluginParameter ?

      @d-healey That's exactly my problem, but if it's due to HISE itself, then there's nothing you can do about it, right?
      It's not that bad anyway

      @d-healey said in Set step size of button for pluginParameter ?:

      The problem is on the HISE end I believe

      posted in Scripting
      W
      WillDevelop
    • RE: How to make a Panic Button (Send All MIDI Off)?

      @johnmike that would be a much simpler solution, but I found nothing in the documentation about project master bypass.

      posted in Scripting
      W
      WillDevelop