HISE Logo Forum
    • Categories
    • Register
    • Login

    When are artificial events inactive?

    Scheduled Pinned Locked Moved Scripting
    13 Posts 3 Posters 707 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.
    • E
      ericchesek
      last edited by

      Hi all,

      I'm confused by this function: Synth.isArtificialEventActive()

      When does that artificial event become inactive? Is it only when that event is manually killed? If I store the artificial event ID in an array, then check if that event ID is active (even if the voice is no longer active), I get a true result.

      Is there a way to make the artificial event inactive when the voice dies out? This would be my preferred outcome.

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

        @ericchesek An event is artificial if you explicitly make it artificial. Otherwise it's not artificial.

        Is there a way to make the artificial event inactive when the voice dies out?

        An event that has been killed no longer exists, so it is neither artificial or real.

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

        E 1 Reply Last reply Reply Quote 0
        • E
          ericchesek @d.healey
          last edited by ericchesek

          @d-healey said in When are artificial events inactive?:

          @ericchesek An event is artificial if you explicitly make it artificial. Otherwise it's not artificial.

          Yes, I understand this.

          An event that has been killed no longer exists, so it is neither artificial or real.

          I am asking about the case when the event has not been killed, but the event ID has been stored somewhere.

          This is related to my last post about choke scripts if you recall. This is in a drum sampler that has a one-shot behavior, so note offs do not correspond to the audio sample being killed. The sample's playback length is independent from the MIDI note that triggers the sample.
          I need to store multiple eventIDs per note until the voices can no longer be heard. Once the voices are completely done playing, I have no need to store the eventIDs.

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

            @ericchesek I still don't think you need to store multiple event IDs per note.

            Just let the old notes continue to ring out and store the new IDs. .

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

            E 1 Reply Last reply Reply Quote 0
            • E
              ericchesek @d.healey
              last edited by ericchesek

              @d-healey Then that defeats the purpose of choking, doesn't it?

              Maybe a clear description of the phenomenon I'm trying to recreate will help explain what I'm trying to do. I don't know if many other drum samplers do this, but it really does improve the realism. I was able to script this in Kontakt, but I haven't quite cracked how to do it in HISE.

              A drummer plays 5 notes on a floor tom in this order: hard, hard, soft, medium, hard.

              • The first hard hit makes the drum head vibrate with a large amplitude. There's a lot of kinetic energy.

              • Then a second hard hit comes and disrupts the sustain of the first hard hit. In the sampler, this would be equivalent to choking the first hard hit in a sampler with a quick fade time.

              • Now, because the drum head has so much kinetic energy, a soft hit does not disrupt the low frequency movement of the drum head. The soft hit stacks on top of the sustain of the hard hit.
                This is a case when the soft sample does not choke the hard sample. Their sustains overlap.

              • A medium hit will then disrupt the kinetic energy a little bit. This is a choke with a medium fade out time.

              • The final hard hit overtakes the energy of all the previous hits, so if any energy is left from the first four hits, this sample chokes all of their sustains. I no longer need event IDs from the first four notes once this one chokes them.

              Finally, I can clear the event ID of the final hit once its sustain rings out to completion.

              Consider how long a floor tom's sustain can be compared to how quickly a drummer can play those 5 notes. That is why this choke behavior is important.

              d.healeyD E 2 Replies Last reply Reply Quote 0
              • d.healeyD
                d.healey @ericchesek
                last edited by

                @ericchesek How many velocity layers do you have?

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

                E 1 Reply Last reply Reply Quote 0
                • E
                  ericchesek @d.healey
                  last edited by

                  @d-healey Up to 30 for some drums, but usually on the order of 8 to 16. I calculate the fade time for the choke length based on the difference of the previous note velocity and the current note velocity.

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

                    @ericchesek Ah ok, I was thinking that using one sampler per velocity might help, but not with that many layers.

                    So back to the original question. I think that as long as the note is still playing the event can be manipulated using its ID. You could quickly make a little test project to see if that's the case.

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

                    E 1 Reply Last reply Reply Quote 0
                    • E
                      ericchesek @d.healey
                      last edited by

                      @d-healey This is true! I am currently manipulating the event when the note is still playing. Meaning the sampler sound is still ringing out regardless of the midi event length... lol the "note" terminology gets confusing.

                      I'm trying to check when the sampler sound is no longer playing (i.e. when the voice is no longer active) so that I don't have an array full of event IDs that no longer need to be manipulated.

                      I'll see if I can do something with a sine wave sampler so I can upload a snippet.

                      Thanks again, David.

                      1 Reply Last reply Reply Quote 0
                      • E
                        ericchesek @ericchesek
                        last edited by

                        @ericchesek said in When are artificial events inactive?:

                        @d-healey Then that defeats the purpose of choking, doesn't it?

                        Maybe a clear description of the phenomenon I'm trying to recreate will help explain what I'm trying to do. I don't know if many other drum samplers do this, but it really does improve the realism. I was able to script this in Kontakt, but I haven't quite cracked how to do it in HISE.

                        A drummer plays 5 notes on a floor tom in this order: hard, hard, soft, medium, hard.

                        • The first hard hit makes the drum head vibrate with a large amplitude. There's a lot of kinetic energy.

                        • Then a second hard hit comes and disrupts the sustain of the first hard hit. In the sampler, this would be equivalent to choking the first hard hit in a sampler with a quick fade time.

                        • Now, because the drum head has so much kinetic energy, a soft hit does not disrupt the low frequency movement of the drum head. The soft hit stacks on top of the sustain of the hard hit.
                          This is a case when the soft sample does not choke the hard sample. Their sustains overlap.

                        • A medium hit will then disrupt the kinetic energy a little bit. This is a choke with a medium fade out time.

                        • The final hard hit overtakes the energy of all the previous hits, so if any energy is left from the first four hits, this sample chokes all of their sustains. I no longer need event IDs from the first four notes once this one chokes them.

                        Finally, I can clear the event ID of the final hit once its sustain rings out to completion.

                        Consider how long a floor tom's sustain can be compared to how quickly a drummer can play those 5 notes. That is why this choke behavior is important.

                        @gorangrooves I'd love to hear your thoughts on this if you have a moment. You clearly know your way around drum instruments!

                        Is this something you've ever tried to approach? Maybe I'm thinking about it the wrong way.

                        gorangroovesG 1 Reply Last reply Reply Quote 0
                        • gorangroovesG
                          gorangrooves @ericchesek
                          last edited by

                          @ericchesek you could empty the array when you confirm no notes are ringing.

                          In my experience, you can do this in a much simpler and practical way. You could split an instrument into 2 or perhaps 3 samplers, all placed within a single container. Each sampler takes care of a particular velocity range. The main thing is that the quiet notes don't choke the loud notes and this is particularly critical for decaying sounds, like cymbals.

                          You can set each sampler's max voices to 5 or 6, and adjust the fade out time of the sampler to something like 1500, then test to ensure natural playback and feel.

                          Goran Rista
                          https://gorangrooves.com

                          Handy Drums and Handy Grooves
                          https://library.gorangrooves.com

                          E 1 Reply Last reply Reply Quote 2
                          • E
                            ericchesek @gorangrooves
                            last edited by ericchesek

                            @gorangrooves That's a good idea too. David brought up a similar idea, but yours is a little different since it handles velocity ranges instead of individual velocities. Still not as clean of a solution as I'd like, unfortunately.

                            I wonder if I can do this all by changing the release control of an ADHSR module. That avoids the weirdness of not being able to modify an event ID once the note is killed I think. Not sure if the module operates on triggered samples independently though.
                            Is that something anyone has tried?

                            gorangroovesG 1 Reply Last reply Reply Quote 0
                            • gorangroovesG
                              gorangrooves @ericchesek
                              last edited by

                              @ericchesek you don't have to worry about note ids or any such thing. Just set the samplers' settings correctly.

                              When you specify maximum number of voices, that handles note chokes automatically. If it is set to 5, when 6th note is played, the 1st note is faded out based on your setting. You just tweak that to make sure the fade is unnoticeable.

                              You'll know you got it perfectly when you the instrument and everything sounds natural and normal.

                              Goran Rista
                              https://gorangrooves.com

                              Handy Drums and Handy Grooves
                              https://library.gorangrooves.com

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

                              13

                              Online

                              1.8k

                              Users

                              11.9k

                              Topics

                              103.8k

                              Posts