HISE Logo Forum
    • Categories
    • Register
    • Login

    Polyphonic LFO 2023

    Scheduled Pinned Locked Moved General Questions
    8 Posts 2 Posters 480 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.
    • A
      aaronventure
      last edited by

      There's an old thread about this from 5 years ago that I didn't feel like resurrecting, so there can be a fresh take on this.

      I have a sampler that fires up to 5 voices on note. These are fired using Synth.playNoteWithStartOffset using a for loop. I want to have individual modulation for each.

      If I drop an effect like Stereo FX and apply some modulation, modulator's onVoiceStart callback properly executes for every voice.

      But if I use an LFO for pitch modulation, then use a script voice start modulator for the frequency, its onVoiceStart callback fires only once, not allowing for different LFO frequency values per voice.

      Am I doing something wrong here?

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

        @aaronventure The LFO is monophonic so any child modulator will also be executed monophonically (even if it could be monophonic).

        Just use the well documented script envelope modulator to create a polyphonic LFO.

        HiseSnippet 1521.3oc0X0saaTDEdV6LN0ogpFHBA2MWzKZEkHGnTPhKhiiiCFpSrxlF3tvj0iiGkcmYY2YSpKhq4sAIdC3QfWAdCxa.bN6O16FarrcanhToJOm4bl4LemuyO1cCzNhvPc.wp5IC8EDq0o1CUlA6MfKUj1MIVOf1gGZDArDQMF5yCCE8HVVkO.EXUcER7e2rSCtKW4HFKhPNUKcDuP5IMik1s92Iccaw6INQ5kS6mUusiVsm1UGA9SYZMhO24R9EhC4nZknDqJ62SZzA1FtQDB5zP2an8.80pD8OUFJO2UfK1lXCGThXxdCjt85l8VCIDKZ2wu7xIu7Mocj8jijOFAdX7FrwVjGCrJMKWZ6Evkrx4Rqj3RaPscBj9lw6f9y8osUP.oOGf57tRhtDq+ftmFTPY1xieonU.rXjAO940p8TF7eO4q6GobLRshoUGpMhiTO9Iq8yqUcseYM1s2pe+otGdMAZWWQvT2FitAyxvGqh7NWD7T1Ub2HwHEgmeQLsx7goNIu5bJpUsURyQ9hz0szt8PrB+7jQ.RJrAe5ksaxMbLnjJCzyWDXjn6X0TbEvpSBQUoMEgWZz9.udh3Gvbz8hb4lhzILuIcC.OJDCw.kJTZFlOuZA3X0lIGadcwMnckFmAS2GKMEeDPp6BeLMy78n62uuvwL1AWg15GV1zv4+5ePx0eepsTIhKKFe4eX7Z12yuRvNPnDAH3s8LpL9myakQ+4tx3QNF35OIfqB80gENXagm7DsBQgwBeYHTHP7SGiQy7x2SyCl5V2rSK3QNUar4lnfXZwtd5Hko.Mnbw3vJyWpawLhb5Ok5jq7Nnz8amzp2gY9E5tTMyGskd9th8UWIbgxaw936C0y5yibMYRKRr6nUZ+AZkzIeT+XgIPdwEhf799TeP6ZLPO8wR1r9wBWAOOC9Q0eAv73A.NIVRrXw6zN030GQSbWFlMx9+aE6x2sUrKfm2KwI+3zIWxXQib4XusJsq1c3KZczxxsZH80t7fo0MhswF+9NYiB8T5hL1A8sDAK2fDGJLWqCtLFkR+LwZ0DL.dBCc6qI655pudOsmuLMzAXQrLDjx.DqRIZHfXtRIbyJ8RsJAWy2vCOgKcQ0riBg4c5cjxFTNtmiU4SEAgwG7pzZaA+Ch8GFmcUoE2AdwC6xgda.IBGgBnThfsbFQsF6n4CVn8YMjnVIsR77vGMNnNhZc4Avb6vbm3HSkrJmaDpDJCtBhZkvKYcZ6vSwcc3tjSw3BZDAuET8T2kln5UXqyyNmqtfTv+2L1+gH7V4zXNc5ejZFHCYgROjmJBYlABV7wvBM7.CyaTpECtEGgugc9PVH.0R0EIZitM65ABEimZJdhn0wCclG.HiyTOgGbgvDlNroR3jvAhexs6guWcnCLVPb1yHPE249Tr+bDDkGRH4faDdyVAw7NRUJhNNqpC+U2R1ipaaD91xWWbXhKEWmfwEJs2DoRIGvDG8tQFsG2jLqHIWfqJUoOyC5GWLp8A4XcYJLmAMe5PcDSID8XFMyOxDGGFCWLoBjyYoGKazEwv8LrqA8fPXhY8yvR7rPARki1CCtcZ2rMbFFA4MiEaUfEmKpNQVXfXqbaO+4c2hjgkLbEuJ66xzTF56xG1HBllNglTPB9HT8DuBO3+F9aenJYO36KEadprhzrJ4nYUlOZ1CmBM6lc92oYUnwyALwISt6Y34SuFcT+1A+0q2TsZ8hr7YiC2ryjNSsEDGVO1YXICiOw4SV7.AbYKXf3.34dmc0ytTS2A3HhyjDbGc2UhmYeVO6PxLJ9V41Do29T0Ql9sqW5S90FUqmuOxrZqjqIYg1JYU1IMz5K83wSu7F+Kh7t3qxerNx.0u6vgIHwpZGF4YCENcxlgJLa7oz00xJoZCc0qkUxKcysw0Voat8n5g+WbGdbm.8Yoy1fQz6EKAd2p3eYzpzN3Z11jqR3BTbLOB1x6LGGDh+T3aROca9rkvlOeIr4YKgMewRXyyWBa9xkvluZl1f+pCocHvrNPP28SZiZsuhCr2XlN4evWOZCF
        

        ae84a267-f28e-452d-89e7-32754f94d6ed-image.png

        A 1 Reply Last reply Reply Quote 2
        • A
          aaronventure @Christoph Hart
          last edited by

          @Christoph-Hart After I posted, I was about to go to bed but figured I could give it a try with the script time variant modulator. I came up with this:

          f01dbb69-93c3-4460-b43c-b8e006db1c6b-image.png

          Right clicking the node(s) and enabling "AllowPolyphonic", but it still wasn't polyphonic, even though the onNote callback executed once per voice as expected.

          Is the time variant script modulator monophonic only, too?

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

            @aaronventure yes. "Time variant" is HISE speak for monophonic. Polyphonic Time-Variant = envelope.

            A few unrelated hints:

            • Use the vertical / horizontal swap to make the scriptnode layout more squarish ( in your example swapping the orientation of the fix64_block will make it more clear)

            ae3f955a-520d-4e7f-a0eb-6f73e8aa761f-image.png

            • Noise phase modulation is gibberish - there is no phase in noise. What do you want to achieve here?
            • you might even get what you want with a fm synthesizer node and get rid of all modulation connections to modulate the frequency, it's basically a sine wave generator hardwired to use the incoming audio signal as frequency modulation

            cb0f90b9-a11f-403b-abec-7ec36183bdff-image.png

            HiseSnippet 1926.3oc0Y8zabjTEuaaWNYrCQYYWVARbnNrGbjxNZbHrrRHv+2ACYrG41qYiPBmxcWyLEt6pZppZaOfPhuA648FRbjKvdiaV7I.INvE9PDNv4vqpp6Y51y3YmYRbBXGY0UUupeu52626OUmVRQHUoDRO+ZG0Kk54eOTPOtt6VcILt2da64eeTShRSkX2Ta1KknTzHOe+4epYB+ZK3Y+4kqsIIlvCoClxy6XAKj9LVBSOX1Vq+yXww6RhnGwRJI8SVeuPAeKQrHCrm4QM7RIgmQ5P2mXDaNjm+h6DwzBYflnoJPlMEQ8B5Jtf6j+XlhcZL0LXUu.3E4l1aqtr3nVEmUkmmOp0fS97tS9GfZxhX8me.B7.6B3A6nLF3O23LoUmBSxujIsfyjdOTPnjkpGrhwdVFsGGbHsI.TW1Tbx54eEZKAH.WWOgbFcWILn+FV4SZz3QX3OO7G1NiGpYBNVv2WnoGvW4gK8aWp1R+tkvWeo1sG4ZF0HEwwT4HW13ckiaiqvyRNkJeD9bRbFsufvwuJlt3jgogtScIAE783L8Aoz7w6JhiLXk44g8.d4vF7zms21DMw3TxmCjKkJ0Li43uM8bfU6bQ0PaSUmoEo.udH+GvbDQYwDcU5jItIeA.Op3CMNJtho6UNtZJ3XMFKGaRMw2C0hoC6NZabtQXi.RcaXi4QleCzNsaSC0CLvEP694yZX3jq966T+xn.FmZSKZU9GZGi+4jyo3mR4ToA7VcLYF+6SZlwzINy3AgZP8GIIbUpPU4EGPSXGI3FTXvjelBRDP+0GZ7lkmeKAQNxkd4Z6BGxQtm.hNSZoEajHx35Jzf4q5GVXxBcqFQTR9Qjmbg2AoteyDV8NLxuR0kZE1X.KIMltC+bZLjdyZieSHeVaRVrtX1pD6lBtHsqfyBK60OjpkrNcnxx19HOPan0PM8Ay7AqeHMlRJyf+n0eFv7HR.mnyHVL8UZGo+5aiblK1DMh++2L1ye6lwtBddWmQ9cx6bofE02jsV62MeUbwx39qOyzsMYohXh7FKPUzcziPSSmHn2PbtR8VrOUegPdlE3xe1y+NNXQYMxSn4vxIICfkMhiEWrkHIkk6fA3wNWKQbuBLxeNmDTfYv4z3hDzH+4.M+SHpiHrXiXAYJnqnnC3Afv1JS9yeLUpru36fZTG9EXH6aiAWbWRHXC8ZQfJf.UyznEP7nx5g8Ifi01K6RMuxhJYHeWMnjDCzX5v2fssHRngengUSuVy4OeodubbMyHv2NmQu2Csm5XypgjXuiMdOyl7LZwgv1S.xHZMDWbRBTOvqx448KcdJDXxM3WOyCUx7tGRnBgx+1njgPbIsdokuI6q1hO+qN8UUrwdnHI6bpBq6RwLdZldok9wXB9Tp1bqtPBOhEArabagzJCWvTTrFBiwWHxhi.IwvQJlwcK8H7oYZPRhNecnGgLljBuyvLkVj.hEQeX8qAMFKBJ1bYQi0ayTowjdalAs14xhTYFC9winWZv7WA+rCDeFAMua2d9bdkXJ.Ks+H34lLdNZOHCPSxkWatGrdfllFv9MUJzDbF8BG9WobF3hVDYKJMzawa5U8GMBUCIotQUuLxzKVFDq1af9k+nk9m+wG7x09Zz+KWaX82XJO52yperqYvgd+y...JaJw9mBrzaMUONr+NnVcMsnLzq9sftWz1y3HN1kxbrHpiQlJ4LV1kyny0+lMiIa1SQGAg+61D2OyMlovPm9cg7DJaEUHQBVIvWPwYPNhO9wOIZSLQgSHWhMZBCRZ9RMUh6qDjNeID6NCiXO+pgQrO8pqgX+gu7K+qqMMH1u+W1t8lWsQFjaBnP16vN8dt0+h0mH63Eu+1+i7H1fDgP2kw6bc22S95xXLJb.XISh9upye9astKh8Pphpcukgotk3OKfZmTk8Tywdfou4JMeE+4Uqz7WPafUlaFeg4lwcJtYrqTAvWJJAEJR.LADsCmDaK6jZ5csf1YZLakK5xfYXtsnoWpOUHNCGQay3LWqaswDtgrpL2KmpfBSRWkIfbBE0fpRFJJSa4jFR5uhYJ30yYhOa2Cd3Rikotv3Yp2Z4z+Eewe6+rx+5eu1qIccpSzr7fqUL0IYGUAlUlxBLOvBFMgadxRiYT4+aUjoRaj.y8w.YsZHy8Qf2pa8h0lvbteNjyEX4l+kjJjZBGZsR.AOZC0Edxv+eQi50qu5KfTw7NTW3jY5RwKpdJMMASuLkFpUfzikZ6+1nj4Dj2494c7B+074Gp.meHh.YG5oJZ6MWlwjN54+oWM9lyus6.8lG.NiRHt4neWzO0lNx6MeMvg1p8iXyo1q7px+l14Cyuh2dQ8ahnug5lyVJ065Ve4DWu4SMND0axN.1pXUL+xlo2lPAjDh8d2u1ed+2EeW5CEYZnrYShVxLbx8yRB.peXwU8UE2xOebihbMAv87aTPXyWbUyX+7EWsOa9sgNRHgRwIgtu6hwadW6Lv4la+u4qFpoYLdUuyc7.j4qQ3YtV9IggFH9iW0yaz64wyvd9dyvddxLrmu+LrmOYF1yOXF1ymN18X9D54ciXh3fIZsiKIn+NbBvdsLcu+KfhYT.y
            
            A 2 Replies Last reply Reply Quote 0
            • A
              aaronventure @Christoph Hart
              last edited by

              @Christoph-Hart said in Polyphonic LFO 2023:

              Noise phase modulation is gibberish - there is no phase in noise. What do you want to achieve here?

              I just snapped where I left off yesterday. I was trying to figure out if maybe it was polyphonic, but the noise seed was the same and that's why I wasn't getting a polyphonic result, so I had the "phase" of the noise switching onNote (which is firing per voice) hoping that was maybe the issue.

              But it turns out the whole thing was monophonic from the start.

              @Christoph-Hart said in Polyphonic LFO 2023:

              "Time variant" is HISE speak for monophonic. Polyphonic Time-Variant = envelope.

              Ah, I didn't download the latest version of the dictionary!

              @Christoph-Hart said in Polyphonic LFO 2023:

              the well documented script envelope modulator

              😆

              I know you'll get to it eventually and re-do the whole docs like you did the website. It would be a shame that you built all these magnificent systems all intricately linked together, only to have them go unused because of the lack of documentation. Dude, I can script my own fucking modifiers and build networks in minutes. I'm not sure how many VI developers are aware that HISE has this feature, or the depth it has.

              a6337ba1-9b49-4aba-bc51-c4140232e3e6-image.png

              Right, what does this little guy do exactly? https://docs.hise.audio/scriptnode/list/math/sig2mod.html

              I realized that the osc signal was going negative, that's why I did this in my first try as posted above. div = 2, add=gain
              9a16761e-da88-4dce-a206-e481cb653f66-image.png

              I'll get back to you on the rest as soon as I try to implement it.

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

                sig2mod (abbreviation for signal to modulation) scales a -1...1 signal into the 0...1 range. So basically the exact same thing you did with the div and add nodes, but within a single handy node.

                Sidenode: using div should only be used if you don't have a constant divisor because it's orders of magnitude slower than floating point multiplication. If you write that in C++ code, compilers born after 1970 will usually figure this out themselves and optimize the division to a multiplication of the inverse, but I wouldn't trust it to do that with vectorized data too (all math nodes use a SIMD function that operators on multiple samples with one CPU instruction). It's not critical, but I would recommend making it a habit of preferring multiplication over division whenever possible.

                I know you'll get to it eventually and re-do the whole docs like you did the website

                yup some bright day in the future. However I think it made sense to implement the stuff first before making proper documentation because it allows it to be used by me and some other brave power users while the API stablized. The documentation can't get outdated if it doesn't exist!

                1 Reply Last reply Reply Quote 1
                • A
                  aaronventure @Christoph Hart
                  last edited by

                  @Christoph-Hart said in Polyphonic LFO 2023:

                  Noise

                  Is there a way to get the same behavior as the random LFO which is available as a time variant modulator?

                  To be precise, I need it to generate a random value at a given frequency. I'll then plug that into the smoother node.

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

                    @aaronventure Just slap a sampleandhold node after the noise generator and use the converter node to control the duration as milliseconds:

                    HiseSnippet 1396.3ocyX8zaaaCEmxIzdNIsocce.zwTfBC6rttArC0M+wcFaNwnJKn2JXkniIrDolHUR7FFPA1kdam6ggsuF61NsSqGF1Wgs68av1ihxV+wtowFIEyAHPjuG46O72u2iR8iDtToTDgrpez3PJxZCryXtZ3tCILNp6dHqah6QjJZjsYpcFGRjRpGxxZkGqmvp9pnjeu4g6P7IbWZ1THzwBlK8qXALU1r8a+kLe+NDO5QrfbZe+1ccE7cE9hXveVA2DERbGQNgd.QqVELxp59dLkHxQQTTInyNBuwNCEmwM5eLSxdtOUOnExA1HyzncGx785OIVkHj0p8yh7ULQ9Gg6w7XSmOKCbqDA1YqHeNvpxE4RsV.WxJmKspwktM1wMhEpxjn8m0wc4vAx.Bjpy6JFcQV+FdWAn.W0HfLh1IBFLcAa8flMumM7u694Ch4tJlfaK3GHTzC4ac209t0pu12ulcYQCFLWYZyDI78oQyUr9zM5hV3V73fmSitm8oD+X5TEgvuXNs5kKm5Zh5bJJ3c4L0ggzzwcD9d5bk94YOAPooM3out6dDEQenjNGnWHMRwzti0dzSATs4HpNdOpbjRDB35YN+.jivK1mnJBmz7lTAP9nvYn9fhKYpw44UK.Fq4Ehwtrt3sw8YJ2gy2GqLGeDxTWG9XJy7F38GLf5pxbvUwcd5xRCatvzv0RogfM0Feizg1cdZq4R.eINCrGFQCIQziD88Ii2RRBB8oOA7w6Y+beg6HG12RmkgDZbgczZrk6PBmS8kKCQp5UTwIzSDwJF+jdDUD6bjE9f3.GnLsKc2TuClyphlCYF2TOViKbnbujA+K7KUXK8XqTgslHLG86.p5LQznjiizmQV0L4dYRR9YCNuE5Q99hy1UDDxRQovYPxb8E9iCGJ3LW8TFMl3oOJPDCFI0c+Bh7HByWCqchkPgBuC4NfxIswrV4XZjLYiqga1.9Cf4GH7.Q3NDWHwNtOQMTyWz0d.vIMpg6TPZAeMONQuESZyYxRfKFnC8jlbqjqXiAOpGArsJlcsq7XsTWhO5X84s14Q58Tq9Gj5eFUERWnUqlbilwginMxIdY8OsH.Re9j5k6wjg.RemXfwZ3SElQGDbO54SNz2GvsdPM4jkOAHzmDAc7Ul0Wc5H34dLdZHmU4oG47Rycq1NJZnlZkuJpyH5YljP9Y04op5ZfTzL6B5hM88aOioe4eU1z+xqd0uNqoa+CAu9gld4chneSLf2FWx9uXz6x9u4gyF5MWvPeiD6a+DM+AMy9iV7bOXrEL2+Xn1z0logZLuUSWC2eHQNis0sft1sc0jKALmvNG8cccUkSAhFsD68NIkaf59MxT3Jq9RQxvF3dxscR5ZAJmcgfiHQmPUxzaHwotl5uIUG6BNwlXSqNB2aHboqrLpVXc3Bpw5ajhJR0sV37d6ebAw60vlMnz1Lnc9DeYmuPx+CwCNuQQ4KPtuRgZmu0nu1kgs+hW9OKXzmk3Ks48a+nXkH.XhdS6ljlLVCKCDB0vxfvMMsPlJ7pIITYwg.+7kqjq8q+ISI2MwNI9Lbclj2+L2186+4e72x1uGn+2DdqgAjXe07Pi5e4N.pikrS1NPTBGdSLbbMrwDYW8XvqsptWhX9F3.AWrs96NPEk4eI3t7xuRh87luJNjRFUztqarahfEvfqVvfyo.508EnxGW0vtPUqRD4ML.IijKYjcGrBtM8H6.pMDNvsdaz3+u3pBYicDhQAjj2sX4dK+2GuIT.wMR7rzl7I2pOYFn0MO4SgUG2SO1tE5zxQa.yi8LW2ha0LKb6kcge7xtv6urK7SV1E9fkcge5xtvO6cuP8WRLsUq9BS.vu+9Fpq09bB7t3ILOz+AoYut3B
                    
                    1 Reply Last reply Reply Quote 1
                    • First post
                      Last post

                    43

                    Online

                    1.7k

                    Users

                    11.7k

                    Topics

                    101.8k

                    Posts