HISE Logo Forum
    • Categories
    • Register
    • Login

    What does HISE use for its Midpoint Formula?

    Scheduled Pinned Locked Moved General Questions
    12 Posts 4 Posters 444 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.
    • CasmatC
      Casmat
      last edited by

      Hey!

      I'm trying to find how I can remake the whole midpoint curve function in HISE (the whole curve skew equation) or figure out how the curve is calculated.. Anyone have ideas?

      Thanks!

      i make music

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

        @Casmat Why?

        And Math.pow()

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

        CasmatC 1 Reply Last reply Reply Quote 0
        • CasmatC
          Casmat @d.healey
          last edited by

          @d-healey yeah, my question may be a bit of a stretch since I'm tring to adjust skewing of knobs in scriptnode..

          HiseSnippet 2240.3oc6Y07aabbEeVIsxlzoIwIwnA8zB0hVJ.EAtTJxRsvPTeZKXKIBQEEm.zZOZ2gjS4xcVr6PKwFXfhdo8VOma8Ogds2L58BTf9OP9SnW5Y22alc4NqDEMspgcPQDfEz79Xley68l2GqaDK7XIIhXhUoiGDwHVumcyAgxNa0gxCI6sMw58s2mlHYwNZRaNHhljv7IVVSeejfUoYHpe92quIMfF5wxIQHmH3drGw6wk4TaT+g7ffco9ri48Ljd4564IB2RDH5C3YZ6pjHpWWZa1ATTrorIVytiOWJhaJoRVBwZlME9CZ1QbVnV9S3I7SCX3BWRSXizj2UD3iHFoR1pCOvuQ18NgPrrajaElVaE9D68497gzysFenhgStFl1CqoJBuoK.OWS3U0.di.RVFPZFMjtscSuXdjLmChmaYuWH3bZQAytITzxRlpps8VBPhP4h8ncY6FCKFpQkUpVcAG3Wy+qJWNl01QB9Cm64rSXadHaQuXFbOPeT7gm9aYdxJnbnLKlHowREmJtZ00jYZhaQCBNE7cUZ0OzSxEgUlu72TtDfjDQ.awnXdnrR5ozlI2l4wOkEjrqHFCo1k5AFQC95.vFLZ2GwdFKnR04mGNxmC+ChWRjNOiF67vPwot.1ytsfZaI5EIBgEUlSwctBJrYeoTDd0pjxeTJU6UnTshJo8E69X7rTOtPk1oUKzhNmloCvEURgSzLdDMrMqxmsxhfCpVU72vubMk.hCaHP63ZK94nCfGF.lKmLKtiHTIJhyXQPEuLPt.fof9LkCYHxvMbCoLleZeIqRNYzcjo.XwgiYr1WbaROvgg.EwwnQZpsdrXk2phZgy8tmi67kKAjRUCO0SPVUPCTJ0Z4Tw3yRCsaUliERgWg9ysfiLVcuJ87wb0FFGL5KWQnOtqWs+mudUG40y8JudsnAIrBb0ZrBRaB88PD3jYgpMdKTMCKD7ig04.gjcXZFhxOuryEY0p0H4kteAPJnQwVmbZLJVIreuSYwl9.TPHeawj31WcRbyZLdZSigfhv8B4xCiXgWUkGRp8DR3OcJpf+RpR2+9oo6aFv8YwDNjU+F1J+HQAXnr4rylUk8pTVa5UJWxNMbJWcqqg50xUOSaxWr21TIEqZkdef6XDKVxQym01rmAs.nqgUxdaVRWoHBrxCCffdNjoEcSC9BDTIOr8wbvLiG9GXaRxkbtYGFCxW7apeF2W1YHAm+P8NLd6NF8d7U0SwnFPkseHavoBZrO4z1YcdTZVee+WhRykrd4Te4Ke4OoH0ZojUBKYmKyENCdJSyT+ZK6uoriybvo8kHDm6W53tLjUGosMOIJfN3POI8YrCTAk.a0aWE+GINCTCHslZ4C35Ut0tqZ8V8Sjhd2OlF0g6kTPysYsn8CjaDEwnwXmY.WLkmh4lAvySXqNBLrBfQ0EWYM0OqtZ06tV065pj5XQ61Ar8E9rB6L1DDzTTXHK.ghh1WjvNggUtMvxvSCXta.U1TNH3B6TicxbAWjdSrIi7SoVF8cB8MN6UJ+bLBdXvzsdkuefvGaquVG5Xa8GgmAIHrftKUBP5w88CXMDIbLiQdryOsdOy9c+zWzidtY2qI8a0hetpQ0V7fdIPJ0n85A8uRr9Hav.33q8GNIcg8AJRzk4erPIu4EvdBdCmet+dZ87W.OMoNFERrtoM5xbbeM23ZFa72EMlMtFzE+k5P8CQd8AubwFlw5HoLPyoYWpXmngfYdf4TDWrK5YlrtnGeS9SJbuscCtzqynw6Ti.uPZu2Tc8St7bH+Haceh4.bF6ce7augNJmkR9wpC+8ryaWcTiaX8mryqzFEyhnwriEMfraURn8hBXPxF1BNmFH751j+6XWt7bjFBahRTwS+JO45TEe1I1p3NdmxQh9Xkm8ovyYLyAjgtIji2iklCBaQvZJrJpdcUbMFWzjE5qVfEHRY5hqsRY5lwLuO.xAL4Yh3tJ2Q5eCItz19DkQ9IsN2krQPf3L7oMOMJE7AJZMDACh5HB4dHIsDYHcidh9p7.J39.ZxwTd.FV2reBzkh+ggMAgUCvaM8Ir3D0FeCaXxiEgKxTG.u7ACqd7rAMnXk1aaiM9.Amr3E8FFjV.qlwI3VjUiTak.H1SkcBxBh9mFPkpdLXbOr2gorl1nWBcDJtBd+Mk9b1K4DjqGMfbhtwD3xgmBJdJhsQQm0tMhtBf+V.3igILu320X7nzZJSLQL.LDCMbEX31mGlho7RF6SO+BzVtdSIKBeMjR6u7se6ea8lcYmowJw5iscWbokVwcokpszpKu1p0p4RzWI0Gf4B6GgrQeng.HrWkxhXfnYuLhHjKgn5+4WIhTTe5Gu8+Zc82fnYOgP1AdkPtzk6Ub9e0HrHvqiI47eQ6+5cpqiBNhkMayksFDiffanBBbeGGE7yFUTvKd8ty+fueh78EbKVlvwvH9l5cZoY96K7KV+e7z+y5lpJZ05mWWMZTHSU7RkYJeYZZp87GliZHL0zTXjLRExhmGoFaJDc6QU0RtVinY1NxczLuk8WBynn9FVpLP2QstkHtmy8YPI.rWJ2w7Ih+mS5mHNZh+Dw5wlNFFuIIRj.CGZryWfWMSdayj8CKJtlTAovq2tv0yTt5YDMj7l0aPCKrYv5B6z9biYE9t02Q8QZZxfai+gIdvkklGcq2f9vnPpgEcMULmbMSxO.leB7KdEZLc5ItQ5WiuV9reu6qk+1aTj2L8VWJCiM4XOw6D9LV.7ZTgwOxNcn8LpEeNsuHTj0dWti9HFzaZ61rXSrOxKzFRIL0eNkOo9Qr.FMwr5T8GAcyQi2WU17ZYKbesmyXj9qO0VCWGLGfy6D+1ajwFm9+qGabxe8Ao.+9sW7GaCohq4nbkNua7kuMl17swYzi5EKdhmdHc7Q+MUTf6cn5+L2R16iqcF94nswwLwO8F+IddX75mAUeFsN0tF5rz0PmkuF574WCcV4ZnycuF5r5X0AqTmN8.FyCDZripoQKKcyJpvex+Ez7S9xC
          

          In this snippet, I have a knob on the UI and its connected to a scriptnode knob. The scriptnode knob affects gain and gain1 nodes. The problem is the gain1 node.. when mode 2 is enabled, I want to change gain1's min, max, and skew values. and then on mode 1, it to change back to what it is right now. Is there a way to change these values in a node from the ui? Or do I have to add soft bypasses and make 2 gain nodes with the different parameters..

          Thanks!

          i make music

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

            @Casmat I think doubling the control in scriptnode would be the easiest solution. Then just hide/show the correct knob on the UI.

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

            CasmatC 1 Reply Last reply Reply Quote 0
            • CasmatC
              Casmat @d.healey
              last edited by

              @d-healey what do you mean?

              i make music

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

                @Casmat Have two knobs on your UI, one for each mode. Only show the one for the currently selected mode. In your scriptnode patch you also have two knobs, and two sets of nodes if necessary. Connect the two knobs on the UI to the two knobs in the scriptnode patch. If you plan to allow the knobs on the UI to be automatable then this might not be a good solution because each would have independent automation.

                Another solution is one knob on the UI and when the mode is changed you update its range and change which knob of the scriptnode patch it controls. This solves the automation issue.

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

                CasmatC 1 Reply Last reply Reply Quote 0
                • CasmatC
                  Casmat @d.healey
                  last edited by Casmat

                  @d-healey for the second solution where we change the range, even if I change the range in the main knobs in scriptnode, the values dont transfer, just the position of the knob.. I made this new snippet, which will probably be better at showing what I wanted in the first place, sorry! Is this what you were thinking of?

                  HiseSnippet 2508.3oc6Z8zaabbEeWJMxlzwN1I1HA8zBgBTJ.EBtqTjsZfgn9qsfsrHDUTbBPq8ncGRNkK2YwtCkDafAJ5k1a8XQt0OB8ZuYzyo.En8CP9HjK8r6alYWtyRQQQIHXaDDAXAOu+Ly6898l48lYU8HlKINlEYXVb+9gDCyO.0ne.u85swz.is2vv7VncvwbRjkhzZ8CwwwDOCSyodjffYwoMj+7iqrF1GG3RxHYXb.i5RdJsKkmQsdsmP882B6Q1m1US5EqssKKXclOqGXOSgpZDhc6faQdFVHVAjg4La5Q4rnFbLmDaXN8ZLu9MZyNNPI+AzX5g9Dw.aiFvDoHuEy2SXwBpFq2l56UO0uiMLLQ0yhBSohB2EsC0iNfdVz31RFVYZnGOLKj27lJm4YqadU0LuQXRlZlzzJS5NnFtQzPdFGg8bCz1A.3zDCgccSQIqQg+5Ln0YfDA7JcwcHaEACFnQ4kpVcdK3Wy8EkJEQZYwA7v5gVaFzhFPp3FQ.+PfQQ6d3ui3xKKjSHSkXNNhK4T1VothLQQbcru+g.1UtYu.WNkETdtReaohfkDy7IUBinA7xIqRKBeChK8Phe7VrHQJ0VXWHHpwWk.Vmf67TxQD+xUmaNXIeE7OHeIlacDNx5IArCsAaO0aA0Vm0MjE.CJOqj6r4TXsdbNK3rUIg+nTx4bTxIuRJrXqmKVK4lKgRa1roHhNqhoEvUnjzNEgw8vAsHk+rkp..jSUwugeYqKAjGVmIhiKW4yE..MvGBWVoQbKVfTTgcFw7K6lZjyC1jeOhDPnMKm3lBS5.A8xyY8vGZYOWoh.+AVtXAWkyinG1iSJmQV.WoS3WTp3qJUDfQxjoaceHErsXqYTto3UfyLVTTLgIt0fDs7d6niGIt53hHxPhbjVTXPHu7rj.LrA1a14s3QJ687QrhmEjc9gH0NZGXpt.haOukcBXjBtwofqjQRRZFUwre1Q8AaDFcbOeTcbQdmyKWb3.+Dl9Ag7QfDRHvd73P0KJNXewvgpmENTcj3f8DfCNiGGbzvA3GML3YLNY2jChK8pRVCypYyQxKY97gS5GEaUMfwnX4fdcOLaGdpfPYs70JQmcsR8R4tpPilfrfsCn7cCIAmUAdij3ITWcpDqB9ebYU0akTUsgOENGxfBEOuFRlnXHMX8dYLNKkUgdoxEQIX8.0m4xntSl5lop+kauAliEMGj3OfOFRh3TQ3ybCxQPmVpVEJh1fD2gyBgn7fDHn0NdRuMIYp9LLmFzZeJDlEK9GhzIYabhty2Oavus1wTOd6ADr9i0ZSnsZq0h2WWKwFUFTIzSH8Ojgi7LNrUZCdEmwyy6MBoobR2Lpu4Mu4WjmpSBYovbxI7LgSMOYnovuwD8skrrlEVsuRXhy9qsrWDNBPPaCZbnOt+ttb7QjmISJA1MwP8JI+mxNFTCHsrb3iopQ1N2WNd8dwbV2GEgCaSciyo4Fjl3d97UCCI3HQCv.WQ4AIy0fpbcfoZOHvx.FUqrzxxedvCpd+kqdeaoT6yZ0xmrCyijalE8ZB8dFDP7Elhj1WFSNfHZPRyVFrZ.ys7w7F799CMS02LEBFldCQubYqhSJ8MC7zV6kJ8JQF7fjohm69GH8AY9MpTGj4eBxiiElEzDuT.itTOOeRcVLUbhQVtyOrRbulMomH63uI0uaLbBa31cgKBXX9QHvEs7TQbq3NPa4PwlNDu8YR40MQzDrKMKG+Ofqkki+x3Zh7LCyqiDfhk8Ebhczl3eHbLSrCbcnS0p+sE75A3X9adHp1kvPDvza2WzRe.DH6qecrguNxzS10QF+sklTy8Nn5Tta6QauEFg8BGrcUc8IiSegtahTMbmYfSi154u8t8VozCcetbw+.TVe+i5dal+YTVszvHRHNhrOC5Xte4Xb2PeBbbBYdqC8YtcZP+8jSW.NTYBqIjnrqZeb7koN8LSbTwd7fxdrdhZK6fgsyhyFfyfa.mh6RRNkQzDfYAQcR03phwh7hFj.O4.QIfDl1hwlILsSYlUo23YD9wrnNR3H4+CGMoh8wxf7KZdhswp99riEasoIYo.FHoUm42OrMKf5JHojH0RWsKqm7b.o49Xb79XpuHstQuXnODucCZ.BKeIDyoNfDEKm3qgfFQq.NRgmA67g.q5dt8qiE0RuCRzZCjbRhp3NHIMmspmmHlhzpfpnDXhckmNAmBJvm5PsntD3dyhtCJXNkV2BpLTwHX+WA05rc7ABttXeiCTsd.NmXUDhOsxhQBQuN5jlXwY84L+aKMeHOpRB2I2XGxzJLjo8ghDEMmIw5TwdigDdF4opoxbczSg3INBxRNVbXz93HnkZ4hnSHokp.hbKgHUc7b0LFQjLcDfv6PCNX3tF2AexPz9wUZvIghss5x0nC4XUHUWRgScMjZBN0TuZOnkDXao2.vJAilA0RjAkCgtAfPQjJsF9Q7NGvofN3j20mZ7t9m95S65KVaHW+u8ce2+XEcW+iQ1UVXgkrWXAmEdvhK+.GGaCkKIeswyIFnYQyLQfQs+x4ZQRpu7i23+rh5A2Zzkw3sgSxLNkycNq+WOhHB.7Sx5+5V+86USsScOR5EFOczPOI3lnXVS9KNTh04yE9DsCazE5JaS6Ybdxo1ZOHVJeI3AasuapqnN9NymtlLw19cbl8hi.G+ku9hgi+b97DkOqCK5I22RO419mTY2NuiytW9J.U+4r6Kd1cNLZZcaSKhdUUls3z+y4+Uq7ud4+aEcU+ue+2aUan1cLKjMLo20s8Fzhw.yTQSZiFiTgzitGoFC6s2Do80ALt5aq5TpNYN8fdey4Do8mMN+1Yx76hnj2N9cgOaNR6OeaD47hRnAGHcldhy6OdxP0LNSWYMFqSWr7tiWpGcU+4Gtmh4MPeE9Hh7i+I6l8dxwMYQcsdDApSId6D6w7s0+2S52VObh+15pGBc+HbPbHKlXqOyCwyQm2FDduf7hqHkSJg6sE3d5xUKknljWuVcbPtICFmal1gdh9aCto7Kv0f.di2twtfyhykc.SPO+Xh74es0ULiriN4Gii7.bwM2CQM0D+vYWf+LCl48t+LCd68ziWMukVwTarAU7FXaFbDwG1MJswOBk7L7oTyucZGV.K84bx.58H7HZqVj7W4dTNzpbN1sSFk6VaOhOAGqeCfZpWaP9BDWtXg8E9cEGId8oHk4ZINCv5cBtck7LwS8S5mIdx28AGA99MJ9IH3nXGKITZ8tAKea75xuMVitX2H1KRdLUwl9qKo.9cf7uBthncDisF7AlQhmUV7wznuv0Uju9YP0mQqiykPmEtD5r3kPmO+RnyRWBct+kPmGLVcDUpStWqHmGHTeSYSillplUjo+F+ePOytRj
                  

                  Just don't know if its the best.. do you think there are ways to make this more efficient?

                  i make music

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

                    @Casmat That looks good to me, but I'm no scriptnode expert.

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

                    CasmatC 1 Reply Last reply Reply Quote 0
                    • CasmatC
                      Casmat @d.healey
                      last edited by

                      @d-healey ok thanks a ton David!!

                      i make music

                      Matt_SFM 1 Reply Last reply Reply Quote 0
                      • Matt_SFM
                        Matt_SF @Casmat
                        last edited by

                        @Casmat Just passing by.... Why not use a control.minmax node ? You have access to min / max / skew parameters :

                        793202bf-e6aa-4f8a-a8b0-876dfec85fd7-image.png

                        Develop branch
                        Win10 & VS17 / Ventura & Xcode 14. 3

                        CasmatC 1 Reply Last reply Reply Quote 2
                        • CasmatC
                          Casmat @Matt_SF
                          last edited by

                          @Matt_SF Ooh, that looks good! Thanks!!

                          i make music

                          1 Reply Last reply Reply Quote 0
                          • A
                            aaronventure
                            last edited by

                            Not sure how HISE does it (I didn't look in the source) but here's the function from my math library:

                            	inline function exponentialCurve(min, max, midpoint, alpha) 
                            	{
                            	    local a = Math.log((max - min) / (midpoint - min));
                                	    local b = Math.log(2);
                                	    local exponent = a / b;
                                	    return min + (max - min) * Math.pow(alpha, exponent);
                            	}
                            	
                            	inline function reverseExponentialCurve(min, max, midpoint, value)  
                            	{
                            	    local a = Math.log((max - min) / (midpoint - min));
                            	    local b = Math.log(2);
                            	    local exponent = a / b;
                            	    return Math.pow((value - min) / (max - min), 1 / exponent);
                            	}
                            

                            Basically it's

                            1. set the ratio
                            2. set the divisor, log(2) because you're aiming for the halfpoint
                            3. find the exponent
                            4. exponentiate the alpha to find the correct value in the range, add it to the minimum
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            46

                            Online

                            1.7k

                            Users

                            11.7k

                            Topics

                            101.9k

                            Posts