HISE Logo Forum
    • Categories
    • Register
    • Login

    Sample not triggered if MIDI overlaps

    Scheduled Pinned Locked Moved Bug Reports
    76 Posts 6 Posters 8.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Christoph HartC
      Christoph Hart
      last edited by

      1. You can‘t change a const var defined number. Use reg instead.
      2. the startTimer argument is in seconds - this is highly inconsistent with the UI timers which are controlled in milliseconds, but I can‘t change it for backwards compatibility reasons. Use 0.04.
      Dan KorneffD 1 Reply Last reply Reply Quote 0
      • Dan KorneffD
        Dan Korneff @Christoph Hart
        last edited by

        @Christoph-Hart

        Synth.noteOff(storeNoteNumber);
        

        This line is giving me an error.
        Illegal operation in audio thread: String creation

        d.healeyD 1 Reply Last reply Reply Quote 0
        • d.healeyD
          d.healey @Dan Korneff
          last edited by

          @dustbro said in Sample not triggered if MIDI overlaps:

          This line is giving me an error.
          Illegal operation in audio thread: String creation

          That error message usual means you have a typo in a variable name

          Libre Wave - Freedom respecting instruments and effects
          My Patreon - HISE tutorials
          YouTube Channel - Public HISE tutorials

          1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart
            last edited by

            Not sure what went wrong here (probably something trivial), but use the event ID obtained by Message.getEventId() and the Synth.noteOffByEventId() method which is far more reliable.

            Dan KorneffD 1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart
              last edited by

              BTW, a hint about the issue would be just adding Console.print(Message.getNoteNumber()); into the onNoteOn callback to see whether the second overlapping MIDI event reaches the scripting engine or if the problem lies before this (either the DAW itself or the way how HISE processes and prepares these messages).

              Dan KorneffD 1 Reply Last reply Reply Quote 0
              • Dan KorneffD
                Dan Korneff @Christoph Hart
                last edited by

                @Christoph-Hart @d-healey Illegal operation in audio thread is being caused by the timer interval.
                When Synth.startTimer(); is set to anything less than 1, I get the error.

                1 Reply Last reply Reply Quote 0
                • Dan KorneffD
                  Dan Korneff @Christoph Hart
                  last edited by

                  @Christoph-Hart said in Sample not triggered if MIDI overlaps:

                  Console.print(Message.getNoteNumber());

                  hmm,.... that sounds way too logical. :grinning_cat_face_with_smiling_eyes:
                  Great idea! the overlapping midi note doesn't make it to the scripting engine. :(

                  1 Reply Last reply Reply Quote 0
                  • Christoph HartC
                    Christoph Hart
                    last edited by

                    And you can confirm that this is not a problem with other plugins?

                    Can you test what happens if you overlap notes with different MIDI channels?

                    Dan KorneffD 2 Replies Last reply Reply Quote 0
                    • Dan KorneffD
                      Dan Korneff @Christoph Hart
                      last edited by

                      @Christoph-Hart This is for a drum sampler. I can confirm that overlapping notes do trigger samples in SSD, Superior Drummer, Addictive drums, and Groove Agent.

                      1 Reply Last reply Reply Quote 0
                      • Dan KorneffD
                        Dan Korneff @Christoph Hart
                        last edited by

                        @Christoph-Hart said in Sample not triggered if MIDI overlaps:

                        Can you test what happens if you overlap notes with different MIDI channels?

                        Ok... changing the midi channel for an overlapped note will trigger the sampler.

                        1 Reply Last reply Reply Quote 0
                        • Dan KorneffD
                          Dan Korneff
                          last edited by

                          so what does this mean??

                          1 Reply Last reply Reply Quote 0
                          • Christoph HartC
                            Christoph Hart
                            last edited by

                            HISE processes incoming MIDI messages and creates the event IDs, I suspect there is something fishy going on in this logic.

                            So just to make sure we use the same conditions:

                            • HISE 2.0.0 (the app, not compiled plugins). Also is this behaviour new (=> is it not occurring with HISE 1.6.0 or earlier?)
                            • any DAW / OS
                            • happens with the minimal example here:
                            HiseSnippet 743.3oc6W0saSCCE1osFXhsNPBw04E.oF13m6V+eah0QUSY.WMYbNq0hD6PhSgdKOY7HvixdC.6jrkDsntlKXrIHWkym8I4yemexIiCDTHLTDfL1X5Re.YrI1dIWNu2bBiiNrOxnIdDITBAlIPcW5SBCAGjgQ880.Faz.Eec9dcItDNExfPnSDLJbDyiIyPG29MLW2gDGXJyK2t2s8gTAumvUDo3ScbKjOg9YxL3Xhda0vHi6MvgIEA1RhDBQFM5JbVZOW7Udx9OgEx9jKnMrP1pGTB7Pgqilw56Q8lybcFew4NDgLviyTg5IpvSviXNrKwyTiGEufYlG40CiZqhdV4oWqRomUIzCkicMRXmhDBmHWhrHyzgizEXhhQpC4RfGxjKyGt9qR2GiGyjz4ky2ZkvWUf5OMeSC9agGb1Y.UlQ1F3ge3lMR2LgJODay3PbEYLQdZrs46IK.y8ANDnEUqUTT9y0snzesKJeKUpd8SCH7PeQXgGrM3wlJ3ZEIC7cgvv.3KSzQ4738DjfRW578FpNjk5iMQFEDmtzwSDwkEROpu1wj7MGJV0ja+kzonw+6TTEo8Z56Zjiuamv26i6bPe6IocHhu2b.eA3J7gho4iDbg+bAmQymCLAjArYyff7ruziTGoT8wkdQAKJjA2GnjkWAMYyWE4HPQs7vGnNwY16zN9wcIPqu21NJTVn.8i+XB3BjvBkbCnBU3AVUHn95EBtlO2spzjsvIGRy3FB2t+ZRyK3ZRD41MY2DGmVbWPW2FmlvdmPXahSqktKHsqb.n5+aN.zDQjjwmMhn5h+MUmpii7rUycPAES3bvU8hvF0zyNjX2RamL3A2I13WpqzEsz1FoKZcwh2HuCOBMPbpZtIYfvU2y8AwHpyMO9WY1P8OUJaSKzBhaTpJ4oFW3TJUK1OSoNk6wyqrG6TYO1sxd7hJ6wKqrGupxd75U3gd1rNQRgWRomBX7f9DIQkaOfSTYtwY4neCPOMjSO
                            

                            It's weird that I can't replicate this because this is nothing that is depending on the DAW or OS.

                            Dan KorneffD 2 Replies Last reply Reply Quote 1
                            • Dan KorneffD
                              Dan Korneff @Christoph Hart
                              last edited by

                              @Christoph-Hart I've been experiencing the audio dropout effects for about a year now. I assume it's related and has been happening on all versions.
                              What's the easiest way to download pre 1.6 to test?
                              I'm goin to check the 2.0 app on all the Mac + PC combinations I have available here now.

                              1 Reply Last reply Reply Quote 0
                              • Dan KorneffD
                                Dan Korneff
                                last edited by

                                Overlapping example confirmed not working on:

                                macOS 10.13.6
                                Reaper 5.961
                                HISE 2.0 AU crashes GarageBand on load

                                windows 10
                                Reaper 5.961
                                Cubase 9.5.41

                                1 Reply Last reply Reply Quote 0
                                • Dan KorneffD
                                  Dan Korneff
                                  last edited by

                                  Hey guys. I need a little help writing a script to get around this issue.
                                  I'm trying to send a noteOff command directly after a noteOn is triggered.

                                  Here's what I'm doing:

                                  function onNoteOn()
                                  {
                                  	noteID = Message.getEventId();
                                  	Synth.noteOffByEventId(noteID);
                                  }
                                  

                                  In the console I'm getting an error:

                                  Script Processor1:! onNoteOn() - Line 3, column 31: Illegal operation in audio thread: String creation 
                                  

                                  ¯_(ツ)_/¯

                                  1 Reply Last reply Reply Quote 0
                                  • Dan KorneffD
                                    Dan Korneff
                                    last edited by

                                    This post is deleted!
                                    1 Reply Last reply Reply Quote 0
                                    • Dan KorneffD
                                      Dan Korneff @Christoph Hart
                                      last edited by Dominik Mayer

                                      @Christoph-Hart said in Sample not triggered if MIDI overlaps:

                                      HISE processes incoming MIDI messages and creates the event IDs, I suspect there is something fishy going on in this logic.

                                      @Christoph-Hart This is correct.
                                      I've made a more simple example that contains only:

                                      function onNoteOn()
                                      {
                                          Console.print("on");
                                      }
                                      

                                      and using this midi file with an overlapping note:
                                      midi tes.MID

                                      If you overlap midi events of the same note and same channel, the 2nd noteOn command doesn't even make it into the Main Container.
                                      If you look at this example, the midi event contains 4 midi notes, but only 3 make it into HISE.

                                      1 Reply Last reply Reply Quote 0
                                      • Dan KorneffD
                                        Dan Korneff
                                        last edited by

                                        Chatted with some code slingers the other day who pointed me to here:
                                        Screen Shot 2019-01-17 at 5.45.39 AM.png

                                        1 Reply Last reply Reply Quote 0
                                        • Christoph HartC
                                          Christoph Hart
                                          last edited by

                                          The synthesiser class in JUCE is only partly relevant, I think the culprit is the way I am generating event IDs from the MIDI input. The problem is that there is no "correct" solution, as soon as MIDI notes with the same channel and note number overlap, things get into undefined territory.

                                          Currently I have only a single slot per note number, the first way would be to change that to a FIFO queue, but there are performance implications that have to be evaluated against the edge case of people not using their piano roll correctly :)

                                          Dan KorneffD 1 Reply Last reply Reply Quote 1
                                          • Dan KorneffD
                                            Dan Korneff @Christoph Hart
                                            last edited by

                                            I've just started going thru all of the JUCE tutorials. Very interesting stuff. Also thumbing thru the HISE code to learn how you're handling these situations. It's all over my head at the moment, but I'm interested to see the solution.

                                            @Christoph-Hart said in Sample not triggered if MIDI overlaps:

                                            there are performance implications that have to be evaluated against the edge case of people not using their piano roll correctly

                                            man... I think all of my beta testers are the "edge case". :face_with_tears_of_joy: They draw in midi for basic drum beats, then drop a midi note right on top of another note to create their flams. Every. Single. One.

                                            @Christoph-Hart said in Sample not triggered if MIDI overlaps:

                                            as soon as MIDI notes with the same channel and note number overlap, things get into undefined territory.

                                            I can definitely understand this issue. Once there is an overlap, how does the buffer determine which noteOn/noteOff belongs to which event ID.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            30

                                            Online

                                            1.8k

                                            Users

                                            11.9k

                                            Topics

                                            103.7k

                                            Posts