HISE Logo Forum
    • Categories
    • Register
    • Login

    Global velocity modulator issue

    Scheduled Pinned Locked Moved Scripting
    24 Posts 4 Posters 1.3k 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.
    • d.healeyD
      d.healey @Christoph Hart
      last edited by

      @Christoph-Hart Thanks, I'll check out your example

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

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

        Your example works, but I have another caveat :p

        The way I'm mapping my samples is like this

        f5b9317c-21d0-4ecf-8e50-293da184442f-image.png

        I'm separating the guitar strings, rrs, and up/downs using velocity, and separating the dynamics across the playable range. So when I play my artificial notes I need to be able to control the note number and velocity regardless of what the user actually played. But I still need the real velocity to be passed to the gain mod. I thought the global modulator would take the real velocity, since it's before the scripts, and that's what I'd get at the gain target.

        I know I could use another mapping system, like one group per string but that's going to end up with a lot of groups when I have lots of articulations and rrs.

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

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

          I've solved half the problem with my recent velocity range of 1 modification. So now each sample is mapped to the correct MIDI note, as shown in the below image. But I still need control over the velocity because I have each velocity layer separated.

          71fb9f29-b98c-4323-845e-9c35c58027a1-image.png

          I'm not finding any way I can get the velocity gain modulator to respond to the incoming MIDI velocity if I set the artificial note's velocity.

          This snippet is a simple strum script. When you press a key a timer will play through each note in an array, each at a fixed velocity of 60. If I enable to velocity modulator in the gain section I just get silence. I need it to be fixed at the velocity of the note that triggered the on note callback, how can I achieve this?

          HiseSnippet 1257.3oc6XstaaTDEdW6rPsgT0BEDBDh4G7CGkfkWHzhHpjqNQVDmXEGBHUgplrdr8nNdlkYGGvBwSDOBHdG3QouAv4L6tdWmrIM0psDQYUTTlykY9NWmyjNZU.KJRocbqb7jPli6a60chzLb6gTtzo0NNt21qMMxvzjXRaMIjFEw5435VdOjfakEbbbH+9e7mquEUPkArDR1uST7.197QbSF0Na7sbgXWZO1w7Q4jd0MZEnjaqDpw.dJ60vIjF7D5.1ATTrRdNtuQydbiR20PMrHG2E1R0aR2gpeVFK+I7H9oBFtv2oKrQwj2UI5gHF+amsGxE85jZ2QNvl1IyKTN1KbOu17d7ozy7F2wxfjoQd+gaoqBd94gWiBgmeAvyIG5VHFc.HT8FKnlYQFFNRXvUyFoZIMLYD2LIya+z0+WEt20qC2DLrX7Vp.7BApW13MI3unWy98YAlLvtf2t+vq1H8shgxG5smPcJUj4.URCfJl1hqONgMYJexTA7urRU36uttkpgW6RU2xy5QJe4dj7klETNtv+IJGe2KDZhdgVQ9bzeyMGjeyXHW06DlPEfGOB12a5xL35+rg62EwNlZwSVVTK4YLsAUJi1Nr.9oLLIlcU0yycJyKjdNke8rmyQpwFtbPapQy+EGWuCFOpKTTGv.jHkLAbPdtkbPUsqafqQOSWlrmcweCeIL8w0tIL8SYl2bucr49VdcgdT1IMrF66aWS9d5YLxdLn60Ey.eo2A6v.Cb7GqoxnPUzLabW1H9wJI50yHBY+6pY+zQXlTd5aqn5BY8z02ELxB0oK0LVaSI2bjZrzLSJX44povrSCjS9aHsbmyFXI0220qaflGZx3D2zMlZF5lMGJlqSoCJ4AA+HC4Lplv6EQdHoob.DbpGnY.xQKbedjo1RqsX0LICFpz8r4AfBOpwJjUWg7feDDQyFPzJk4.kgkrL.CiL8Z8GKCv..QIQtGJqsT0ecwpUZCvCFssNefToYMOiIM0L5wL7Dq.+XqMpGYTgXdq1hjJIaJb5MvkoGIrNc6FvrTfp3SSUJcmnZS7V0nt+RqU82pRNO152GAW0JI9BpPfjirzOuB3bFZkPfmBpy4Xm.ZzTIvGb4BbUnD.ZJlWNyY9nDyB8jwhCgj5QLyITwXVM4JjXSHTPmfphTteikPiCEN92I6wxKOCUdeRsTm127vbAv5BlbfY3RUqfhcQmcwVaMo0utBjM.HapcCYkyl1W85k1CYVvUNlbBpjsjbyggrjGzjlzjRw2YZnJuPYAi7Ts1RAhkQpf6C1NFSX+sV6PMTr7KgFHWHb2NGsP2cXmAMaiKFq3sCK5If26lwiUdN5rTpyEd.7cfqhFEJXMgAYDfAaw66.VXe5XgIk5r8UZqjpvgJIOHei6iXvcpCFvz4siBMtMMF3ktYTt2FGwDLZ9Kg9zM1GpIo5YGh5h9k4eta2qYr6C7hgKAyuH2ndvYxql9njYusyCzEa7M0LrVvmjNatU.hUhKYv2ROiAeQARG3Et5DIZqZv+aEPYijY6f335eUuT6qKZ56+e53WSlN9UwYLhFnUONHt+OVreKKEvtk1+2ZU7ZiqI9N1a1.87ZTugyHXNnGGDft6OC7OEqymOG57EygNqNG57kygN2eNz4AygNe0UpCNB5liMpQwkh.gNMi6r31ThsYrY8N+ijHKtk
          

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

          ustkU 1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @d.healey
            last edited by ustk

            @d-healey I just tried moving your script in the interface proc and it seems to work so you might want to check that. 🤔

            Can't help pressing F5 in the forum...

            d.healeyD 2 Replies Last reply Reply Quote 1
            • d.healeyD
              d.healey @ustk
              last edited by

              @ustk hmm I will investigate

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

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

                @ustk It doesn't seem to work for me, the only difference is the velocity mod is now fixed at 60. What result do you get?

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

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

                  Ok I just tested this in Kontakt and the behaviour is the same - how did I not know this!

                  The standard solution would be to use the change volume function on each note based on the real velocity. But I'm wondering if I can find a solution using a scripted voice start modulator.

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

                  ustkU 2 Replies Last reply Reply Quote 0
                  • ustkU
                    ustk @d.healey
                    last edited by

                    @d-healey Like this, the velocity is the one you set in the script.
                    What if you do that:

                    HiseSnippet 1339.3oc6XstaaTDEdW6rPsKA0RKHDHDyO3GNJAq0PZKhnRtZGEQtXEmFPpppZx5w1ix5YVlcrAKDuI7Fvi.h2Aj3EouAv4L6tdW2rw03lfZUY+QTlybN698clyswMUROVXnTYYW5jQALK62wo0Hgt218nbg0d6XYunSnVMnOwqmT01ZqQAzvPVaKa6h6hpXWZAKKKxu86+w5aQ8oBOVrHyyoRtGaedetNUZyM9VtueCZa1I79Yzd0M1ySJ1V5KG.voniqU.06bZW1gTTsBNV1uU81bsT0RS0rPK6E1R1dTqdxeTDo+o7P9Y9LbQMqVvKJRbCoeaDwnTqs6w8a2Lg1gVvKsYpSnXjS3tNGvayGKO0YbKyFjTKx5OrKLM3UKK7bmc3YmAdKDAua6zxSwCzo6fX6lN6IzLUGJbDjEVQ5ZU3uJ3rsDzPnq1mdNqgBVL1hJ220cEx8bcWZsEKuXY3fHTSFRUDd6PxCI0Ec4BVUOECnF5B1mGpqf5lpoI.4DofgF7X3ss5JjG7DPEEqKQIk5CkZV7xgLeoGWOJdomb.Bj05LP3o4RAQJPkORTYox+b4RKVtzA.OgPgp7tBohUeHvhJPXICgv3MQZsoRy6v83TeC7PaMAzUC0x.LfSEIO9SR.r5hqS.HrN400kYjb3f9mkXUBtmTqSikFoSxmipzQeO2p0VZsx+RYxySuNch3W4Rw9WpuOtQnYmm2D7vSI88QrXrZxsi4Vj+h.O.ln9DA.0Dtsb5Qzii4+SLG2n5vAc0PfKT+ArJhUHQzHvmNBMEkjP9kPZhlD8232zxKOgTdGRkDe727vLAGU8Yht5dKUtDp1EOaxm0UDlSA.DH9FyeHkXxbNmKOmKaIAunDgLJJE6I35iBXhKKSzJN6A9uGs2NTMESNikA5EvfHODB16vFBU8hRUK4rCK7bfdPcuKjGCUSjsG3S0SVhAqqFuA3ClHWFyWEgvYPZYyms90RcmYEt21oIW60Ke7VHG7Bdsqa7FWEeQm5c5v7zofcAmFe+0eI6rP4FQP4ib10WdF0O0ABwM.pXQkt+j3sIi2mLVgZWVOW34Om0dtAybOW6hyrGI+drt40DagWo6wNqw524BGSg+6yNKNaH9ELIvaGAyxNI8dL.78GuLEh0dwP7QgrSnFLjFEsmXHTPCMJU1NLO9YLLHlMs74hyVHy0TMmhuYVy4X4.MWz8.pVw+InOHL0RKHo1iAHQHX9XuQ6BXWrn0t3ZzyzhIZaV72vS7l0v01waVKYyrz8cin6McZA0nLMwMj8CLqIeGcHirKCpdcwHvq8JXG4ogO+IJpHLPFNwKtEqO2LDRVgPzeCE6GNFijxJeaIUk6VOa8F.Iy0lVT8.kIjby93vOSDB95Uk0ql5TS8FK2IVZJhpk2MWr+UGxkbyfoNU87N97K2Dnkupl.MgoIRbsFSvrhR4UVoF5jiZohdMd.24tAicglW3G73VPIq9A9r5B79MfDDiuGvpNzA95DoSFXdfTHC5IEburI3GyfZuc6xTYwdtDZSsl5cdpj6twwLeFMawpOai8ghLT0jMauJ8E1y340G5DAWBFSQdk5hIwSW+wwykY5azBu38XZXXvmlL2lQAhQi4b.I7JMICFA0aQglLE7mmBRUDLSUCK6ZSah9uNuoz9+ondCYJp+K9F8odJ4S8hp4iI62vHA3sv7ioVx4.bMolkoaFXmiaUWq9v3AO0yCc2eN3ex2luXNr4KmCaVcNr4dygM2eNr4AygMe0TsAmLayAZY+nTQPPy5QUVrqKvxLlndq+A32ldOA
                    

                    I'm sure you already know the "how to", so I imagine you have something in mind preventing you from using getVelocity()...

                    Can't help pressing F5 in the forum...

                    d.healeyD 1 Reply Last reply Reply Quote 1
                    • ustkU
                      ustk @d.healey
                      last edited by

                      @d-healey I don't know how to use the scripted modulators, would be cool...

                      Can't help pressing F5 in the forum...

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

                        @ustk

                        so I imagine you have something in mind preventing you from using getVelocity()...

                        Yeah this is the problem. I need to be able to specify the velocity. Have a look at my screenshots above, I have mapped each string, rr, and up/down of the guitar to a different velocity.

                        The other solution is to use individual groups but then each articulations (assuming 3 dynamics) will need 24 groups, and if I have 10 articulations that's a lot of groups to manage. And I can do it with 1 group per articulation with the velocity method.

                        I'm going to play around with the script modulator and if that doesn't work I'll just use a addVolumeFade command.

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

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

                          I think I've done it :)

                          I capture the real velocity in a global variable and then I pick it up in a script modulator to apply the gain change.

                          HiseSnippet 1277.3oc6X80aiSDD2NoF0DnmtiCgPfPrOvCop8BNkxUjpN5eSqhnoWTSuBRmPUas23rpN6ZVuNbQH9Dw67BhuC2Gk6a.L6Z6XmVSuzHt1d.VQQYmcl0+lY142ra5H3NjvPtvvrxwiBHFlumU2QLY+c5ioLiV6ZXdOq13PIQfhEs8n.bXHw0vzr79JAlUlyvv.8q+9erw1XeLygjHR+bBm5PNfNfJyj1Yyuk56uG1kbLcPNsWcyVNb1NbedDfmxV1FAXmywdjCwJ0JYYX9NMcoRtnqDKIgFlysM2cT297ehEq+IzP5Y9D0fFFcgEJV7dbeWEhURM1oO02sSpeGZ.KZmrnP43nvGX0l5RGKOKZbe8DnLKxGOLKcUvqQd3YO0vyHG5lKFc.H3tQ9X4jHSkNRlfxmLS0hIIrPpbTVz9UabqB2GX0gJc5WLdKU.dgD0aZ7lj7WvpYudDGYFXmyZuu+lMSOeLT9Xq884mg8yBfblDPEQnw0mlLMZ77nwJz3uqTEdd4zVpFL0kplkm5HRwkl1EUZN2sPo40.dlWdy9Cr55HnAxrYTX6gIRyP2jom3YMLeokWbB06zgDetCTArduHlip.AwYGxkjmxpsX0etZkLMPOA0FVSfnrtGQdRhzZKtd0eoJ5hV2qWr4WXN01FA22mHJbZU1WbUFViEM3LhXYzPreDYrhPXYx3d0oKtCat.B.YNE4rVLp7oAjDp9zfQpjFFicv7Jk4W4kpcmBTKSTAUm6DiI3WOq0tXIVk+SjA5EPDRpxCM2kLDJjh2MTwZWR34RdvTyK9vKURG91LSd4+axjeDORRYdswRA8EFlVGFMnKPU5P.jvXDe3EYYVRsoJdrsZrJxzkvb0C9S3IYxFpwlIS1Hcx7t68hc220pKv7qO+l1Y+P8Xz2gGRP6SfdBpD2Mbegm5HgW+wBLKLfGNwB2kLfdLmoh5YBeVHYOA4GORsSJu7c3XQgS8pM1CbxBsoKVFIzaI2Z.OhImXK3aW8qJOcv6FnGUoCKYA43PIP0KPT2Pn8SSlGjCp6HH.ZUd0AzPIz.ZgpYZ5zmKb0oavfmauLZ0kQq8CfJBhGRv4RE6cxPGU1hHJt02BUqj1ti5w3BRyg.EbMo.56.1WA9nKApGB7tIMtTxSVT3saqFl9Jmr6oRxg5VYwFktRXgLdorq23parlDKv99JwgZ4qOicaWnJBdf94P+.F.zTLuTVv74ItkJRFqNjRpGBmCP0HtFaYTrKD3iGoLUI4w1KpbNkxwemrFKszDRo8P0RCZeySxk.q6SXdx9KVshRsKGruidDA6+kbDg2n2z6ZP1Upyk92CtOzwYPfOoISc3TPhBuuO3g8vQ9xToSxqzly3A84LpSd94iHPqSOOhHueTnyskThcNOmsadDwmfy2q4y27.nlDKfXF4phK+ixxVXt6irhgKRs+Bcm515Vwv9SRZCna62UQ7M1Mzdvmk1lPq.RqQ1gUW406Ho2042rxSRj85pMT8yVLWxKzjDBBzEmk6FQnu.0Xk0paeQdljkfGbwU35w9dMoqle51ybYxoLON+cXF6DudJp6NLR++U.tctBvMw6X.1QvO0IdulhpadsDvuY5+V1JVsUiQMLzEJfcV10sMF.mB7TGGU39QP7oXaVYFr4KmAaVcFr4qlAad7LXyZyfMe8UZi5.3aEI4ChKEAAcZpq8MMaxvvNY8tdi+BDx2eVL
                          

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

                          ustkU 1 Reply Last reply Reply Quote 2
                          • ustkU
                            ustk @d.healey
                            last edited by

                            @d-healey Glad you found a solution mate ;)
                            So if I understand well this function returns the Gain (0-1 based) because the Voice Start Mod is in the Gain modulation...

                            function onVoiceStart(voiceIndex)
                            {
                            	return g_velocity / 127.0;}
                            

                            Can't help pressing F5 in the forum...

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

                              Yup - https://docs.hise.audio/hise-modules/modulators/voice-start-modulators/list/scriptvoicestartmodulator.html

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

                              1 Reply Last reply Reply Quote 1
                              • ustkU
                                ustk
                                last edited by

                                Thought there was nothing in the doc yet... Wrong me... 🙃

                                Can't help pressing F5 in the forum...

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

                                  I think it's probably better to use a midiList and record the velocity for each individual note, although this might be overkill

                                  return g_velocity.getValue(Message.getNoteNumber()) / 127.0;
                                  

                                  Although this won't work if you're offsetting note positions.

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

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

                                  28

                                  Online

                                  1.7k

                                  Users

                                  11.8k

                                  Topics

                                  102.8k

                                  Posts