HISE Logo Forum
    • Categories
    • Register
    • Login

    How to reach -inf in the core.gain node?

    Scheduled Pinned Locked Moved ScriptNode
    11 Posts 4 Posters 197 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.
    • S
      southfieldsound
      last edited by

      Hi, sorry for the stupid question, I just started using HISE recently. I want to use a gain node but how can I make the range of the knob go from silence to 0 dB? When I try to set minimum knob value to "-inf" HISE crashes.

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

        @southfieldsound -100 = silence.

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

        S 1 Reply Last reply Reply Quote 0
        • S
          southfieldsound @d.healey
          last edited by

          @d-healey that's originally what I had assumed, but then I noticed that if you put a -100 gain node, followed by a +100 gain node, you end up still having signal. I assume this is because of 32 bit floating point. My concern is that the end user of the plugin in their DAW can end up raising the -100 dB signal as well since their DAW would be in 32 bit floating point also.

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

            @southfieldsound said in How to reach -inf in the core.gain node?:

            if you put a -100 gain node, followed by a +100 gain

            It's just maths, -100 + 100 = 0.

            However if the signal coming out of HISE is -100 it shouldn't matter what the user does in their DAW, they won't be able to increase the volume - at least that's what I think, I haven't tested it so give it a try and let us know.

            If you just want to prevent any signal coming out I'm sure there is another node for that. @Matt_SF @aaronventure @ustk ?

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

            S A 2 Replies Last reply Reply Quote 0
            • S
              southfieldsound @d.healey
              last edited by

              @d-healey in a perfect world I would want to set gain to -inf, so that placing any increment of gain (such as +100, even +1000) will not let us hear any signal at all. I will test it, but based on floating point theory the user should indeed be able to hear the unwanted signal in the DAW if they turn it up.

              If it's not possible to set the min value on a gain node to silence, is there another way to achieve this using scriptnode?

              1 Reply Last reply Reply Quote 0
              • A
                aaronventure @d.healey
                last edited by

                @d-healey David is right. If you set the gain to -100, HISE will clear the output

                HiseSnippet 1850.3oc6YzzbaSDckcT9pEFZokxMzANjxTxX635z.GrymsdnNwSrIsbJrQZs8hk1Uiz5jXX3N2fq8V+IvUNQ9IvPOxENw47K.3s5CaIKWGGmPBvT6Y738su2p22u29TUGtNw0k6fTludWaBR4lp05xDsVuElxPk2.o71pUvtBhilOn05ZiccIFHEkzOVBPYtoPdeNs3ZXSLSmzGDBsGmpSdJ0hJ5CsZoOiZZtE1fTmZEA67kJqyYqyM4c.9IsZFjMVuMtIYarDsTpnmfcagT9H0LOr.gr7RMLLvKsjQgBEV4Qqjekr3FYxiOHagUxmK+x4dzxMPJSuoAUvcpIvBhKbnqwM5VqE+Hl+CXOpK8.ShbQVTM3I6CFsdKpoQ0PkiKBonVsupJsup5NpUnFzdv6qxdGuMz5SQTklRpQwRYOGrjRDVZJeV5Vp0zcn1h96H4manVlAVvFXv1DkU7wEobh55b.AlXQKbaxVNvhdDrPgLYdfF7y8+zFcX5BJmowYayEjcXKb+4+l4ma9ucdsA2pQigtm7w3vMMINCcao6fynHbAVGqCHNOP6PrYGRODAwOtNc5wSmp6K0QPjyJynhcrIAq2haZH0Ux+mzBfBTav+97xafEXoQI.FfmMwQPkrixFjCgv.eSzbpaPbaK31PfPB6G34vM5XhEwcmjAZAa.5iX1Pogh4REciFHdN7wxLRerwkEukZUpPu0v4wTCgGAM0+D7XPj4aotYiFDcQeFbJ0sd9jFFl4bGFNePXH7LkO7aFrTaqmmcnAfemZemcaGhM1gTmW0D2cAWrksIYWfGef1Alb810neMIYDhsOKrlDiEzagYLho6jDHM8kTxIzt7NBJqYErvgdLj9b6NV0f755j0C3N.lRJYLj+5Lx0R+hZDlg2h+B9DrYV4ZkfMyFtYjvusIhi3Ns8LGA+GoLiut20SIueiiyhV0zjez5bKaZfWJXC7fUka10tEmQ0kf7wHjSW0h2AdHArKTBpNlZJcqq0wERTXrCqFfrWcOkz6Qbb8N3YTyrH7Eby2la.aMyVXcPw1sJVzRFuHy8.NmDmE064jFiWi5m3W.L11xSMrTouhC3ZKo1PVnTZxphc.xfz3xLPoTRGIijuSqbEDRlx+QW1cO4t5XSzdRmBIQdOEI5S4KDSKQcd0NLW.MhCJlLcaOYBbtVr29IkgHDOZIHN+h5mYoN1oIQ3E22W.kBT3JjxrUnr.Yne9lJ3iG.1oEqIH1x.pn3UqM4He4JJlRAeFU+CHwQuAoAtioHA7U6H3VPfjm7ihnBmVsozlGS8cCP84PVr4fMY4q2Bn3LzYohoyhoeROZ8yWbRR8CnKhqed4KdwOULg94jl+3cK4KUdMDNQpmTnH72Lik8qz2WZr3uu7c23UE8aCplEmKZAokFjIyWZ3LY9RmAecYn2to5tDWh3b5bE0eZVUujHYQmQRlj9U8nbDdVETorCAuJhglzITSv0fCtA0RSzBKfeHZtzlLrolLvTS2j.0uLPWrLNohHduspsEd+fDGFwEx2qWVmX3jTRG3PtnYe7ZziQz8Ki3wskMj4HZ5oN640HAFDXbtBHu1SXcVQjm9yWbFbd0J.aPsM6hRb5CmGOs3U.aoptpgwjEIFZ+OGo1CI4M41eSt8vOQMuQculS0TNKkjsdYzkgsn5tKFteR+r9zNBOsOP8q53JzZvczbwMHhtZGAs1SzfaCHamG5D7LaKS18rI43v6CuA00FtIyZcfaj42oVLHxpALCxwgM0uIbuDC3N2djG1neLuc0qBqV8VND2Vsfq+OIVsw1MmOlt44+geqneg9UEBrd6AYpxuFe7xktBXp4.ebnluK4RiqNsXRaXowiqd4q9yeMn32tRGyDEVJNgEVFVAYTojEVNs3quvBjkhZP76EaxRFD6dNy3mY9iylIC5xOPHBoZ0a7GexIuNEWzVg7ZcancFEbClg1XzPIXfF1hQXXmMn0371VXua9egmA28727FpOCeHwaJ3d2J+tdqgLhVZOl.8RKm7U1QLG7eYbmCt8XOG7czE.KT2Aybs4tjrwLnDKZcNi3FC5.TjanTjKt6mnCK9Q6CJFVRUwVfpHBdyVJDXtn.qhYwNLXcrSphbrPgK+8haxvGXRpQ.I2XGWcPwfGH.pZGSWxynFhVYiRXev4hB9IXGCvFpGajioiOcqoFuoaEe5qQveHCCb5qgWSvkyHbuFmxbrQnNWHOViJ6iXS3pmlPXrGOda0fbPgPiGGVgy3gSwquUeWhvg1rIId13gIPA0V6A4NkBKr0CzGV5ov8owNU75IahzEm+2pyPsWuePq.ZxjGZ+28sCj9+0ucfwO5CxG9uaq38Tg7x4z7LkZWO1xqhWpvUwyvBq6v2OXvUxf9Y8f.xMK3pZUjq0xhNbv92rfRF6qqG+nRPXtIkvklTByOoD9vIkvBSJgKOoD9nylPYE8fYeHiMf1bpto+UYU76vw+cA72TtkzBG
                
                ustkU 1 Reply Last reply Reply Quote 1
                • ustkU
                  ustk @aaronventure
                  last edited by ustk

                  @aaronventure @d-healey @southfieldsound Well, I am not 100% certain about this...

                  In your snippet, it seems to work. But...

                  At 16bits, the dynamic is 96dB, so effectively setting to -100 clears out the last bit, so raising up to whatever million dB after that will be still 0, rien, nada, nichts, peau d'balle...

                  At 24bits, the dynamic is 146dB, so there're plenty of bits full of information below -100, we just can't hear it... So raise it again above +100, kaboom:

                  Screenshot 2024-12-05 at 16.54.36.png

                  -100 ≠ NO SIGNAL
                  The solution to this is using a Math.clear node, or a Math.mul set to 0

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

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

                    @ustk hm interesting

                    alright then, we can just test the db control with a compare node and smooth over to clear

                    HiseSnippet 2299.3oc6Z0zaiiaFlxNzNwS1O6tc6gVTcnEHawz.qLdyLC5g374tFcbhQbZlcNkkQh1lMRhBRzIwsn26s1SEXts+D50dZmeBEcO1K8mP9Ezsj5KKJI6XqIIcyhj.DDQxWxW99979vW9QGWpN1yi5BTpczHGLPYYX2Q1rAaO.QrAs1An7tv1HOF1UMnnsF4f77vF.Ekxetn.kkV.3+yUarExDYqiGWD.bLknieAwhvFWZml+Vho4dHC7QDqDstQyV5T6solzgb8oLrNvAoeFpOdejnYkffu.4M.n7qf0+r0w3m9jdFFnm7Di0We8m+rm234Znd0afNUa8m2XsFOcsm8zd.kJ6ZPXT2tLDC6ATVXKpwntCnWXGL.GS7HmZhEenA5xG4fh2iZZHlhhRAaOfXZzIxP4A.JvNiMakCLaeDrMwfDW9Xy266Wg5XIRZ.UJIqdkkTOsjpW8DpWNpjRBUZg.U5Cfc0cINrw0HzmGAaYy8l8Pb+TRUIns.k2.2lxafMaUKzY38b4eDKvJqWu9iU4+4S+M8FZqyHTaUp89TF9.6U9zZ+wZKU6OUSMcU85kachgwkZZhcysZAzvcZBth8PqSwtOV8bj4PbbC4SeYaJbx1zjtb8fYchFRsaYSXG3fsmDP.DZp3+2uq0NHFR3HBKi2NGrKiHTAkcvmyCCBbKKA2A6cFi5vCDx3y3nEpwPSDSFBIBzBqfaCj7aBmisGgMJYf3MFtZVUwO.1gvzGjuNVJGcjaotMzwvnw2AtaudXc1XEbA3de4cWnWsvPO9XJF7kC+TcuuTK2ft+LbL.2wE6fbwGQ6XhFshGxxwDeHWGer5olT8y5R9C3rQENApvVhVrh9.jsM1zqHAOUlYqh1zcJGRGxH18aiXtjK4Qg6OzpKmWWGucn1wKSojHFJ365huE3htXaC+O9N9OgUpI9VIrRsnJSD9sOlcA08Le2Q3+CTpFX687Mxmz6RMvlllzK1lZ4PBQobefeYcnlibFPsI5hhBZQjltoEcHePBUW9RPGgHlBXc2gdbxAiCr6xar+5dJkOF6542wUg0Wk+KGluO0fWU08P5bC6nNH1.Q7hfugCNwtqpGCRkz0j3jfE.kpVzqQKUFX33ZskvZHVnT3x5fb4hwotELPkTJmfQJ.zJ9hGRVJXna4crnVcjI3XAnPHj+nHZd0fIQEQSqAGZ6waF1EHMm9P+4DGbsZb8YmCIDd5y.Y8ELlY4HjaeLyKjp0FqG3H8MysLD7q5b2GOBBDa.DEWA9BbONTIgUQXEh9BnrXahc3DeLIUazkoJ6pM5xvNhnvjsq6Y3KBLFIaovZUEFzAY55cv8PCMYYJeygLpEO5yH1ADZ2q.6K.JR17Gwmrt3U6mNyr.icnDWigtjjgVx9Td51mW8lr1GtsP1970u90+iMxXedS++9G2LXV4mEYAMOIzupyj+q4eo4Loee0OZmucif7k5ZQorAbtrzJYil4qjMZdM50MgcaY3gXOLaNAWIwSiCTxgZRDFGUcVf0XQukBh+YPOeqN13DmHS4IgLGFxA1QAXyEx8lHxNjQ4VA4lGBY9YdNjzePFE7UuYhfi4NZB7SalUmtZiIqSKC21G3HxdrXn1oiLjPx+xXj7zDIK5d5Cw7f3yrLaEQxywwquC7E7L.PtpGxyxadBOpAMbGcxEXllbrvhvcbG8RL6tOX3sbYtof774AKLOdrB9di4w8O0gDcWyJ..YBb4upYAhJxy3Msnhkf6ZiNU.txzQ4qUWsQXHQ0fDxhQCSLISOGSBKmzBShlWpxeq+q+NQ+mGie3XjBsGkfXIoDDEs0QnCWSRu4keXrrWWfVpgtZfWNTMOwhbY5DTe+X9fK6gLxM8zzxmu4IodDcTQYxvtTpP+2SrEnDF+PWZvtJ.SkmXwPdBd.3EhsYOldnTxBjoKtN1C+TCSkhrepXfh0mBi1j6y6UocWNaz07l5cBolKLz82jwK+Px3yax3EYG4IgD.IRWQ.XQIciksHjtUg5lB1IowcYHGXLX0fZxNjQxL8wa1BLTtYVg9FkNQlAIlabtXPhk5AFjGXPtkXPtqCjh2ghzTRd2.yVFGoSUaBGJPxfgDzkKB8IC0lexxXImB005Ph847gEanJBfUYTUdG2iXoxFfX7+fU8H8sQlph73T8oB8uuw2lynMYJ3uKzwBMgsE+iiSCVpMYmoo5jaoi5op+gTpMCoMdudarhg3ad6UvZv1b0f3XNJydE+lItWwae0BB2zvnXGnSj+eNVZLRjGNX6GVILyYW5k9TtMEu9jrWVkwHajEQ2a0n5y6POhpaJHseN72Ozio1i5p5g5gYiTuX.wDqxvdhK.Enrv0QLJ5KGS7kQuffcHdNlnQaMrWuv0kkJQrZfsA9xnqAcWqSwF7r+7EO5pQkP6v6Bu1QCbwdCFvSDsHdsYFlSmQXdi+5+NLgiMYLj9YoUpVS.i2p4cfRsDGiyWy2CeioUWk8HRAMmMs5q+1+6+J5BCD.y43PHm+7EAy4EFvYoHF3fbwJFYfbVsALy+Zs50A27ABy3Msb0FoyvsbtYFEd8s4lXTtBjJgs7yHdBGeW70xmuTaQomYg7egEu0u0oOInxGAeI5br+qMz+0O7w9ey4QsT+bLOCbwcDoMk2a3+bVeugNy76M7.cFWENxEY64P8vZRv.rE4HpM1SpzTRrVtRrlLnkMzVtqCJRpUBSwdbSQh1sXynBWKYgcP1RcF+aodps342D84+YifaZnKlOyMNvSmaXPoB65LzzC+RhAafVRAGW7ZIK9KPtFbentzS6p7zd0kZE7UWV46cu5x6AOfOoWm1RQ5XWhHgic46Q0jG45qieHLjrJpT4Pu1TaZzCjZri9PLykzuOVl1NuIT3hvwk7QMiVALtneQyfa4v+lOJlsPateod45u9Ig4LnJ3KTu+9vKK+C5Gd4rG8wo.+9sW7Sfbp30T8ckp++wWdW7dMuKFCKjtK8jvS3RDzuneI74sc3d5ZK9VUCbd5D8r3KYbhttbWkQv0JpfOonB1nnB9YEUv0KpfOsnB9rqWPwJ5gGRhH1fmYSmcC1yqRzymPbGB+O.+cXDhB
                    
                    ustkU 1 Reply Last reply Reply Quote 0
                    • ustkU
                      ustk @aaronventure
                      last edited by ustk

                      @aaronventure Nope, add a positive gain after the limiter, there's still something.

                      Screenshot 2024-12-05 at 17.07.40.png

                      No matter what you'll do, if you don't use a pure mathematical multiplication, the limit of the dB scale can't be guaranteed to kill the last bit

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

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        southfieldsound @ustk
                        last edited by

                        @ustk thank you, your suggestion of using the Math.mul node seems to work best for what I'm trying to achieve.

                        The dynamic range of 32 bit audio is 1528 dB. Perhaps setting the gain node to something -1600 (just to be safe) may work, but that seems a bit clunky for me. Weird things happening with the analyzer when I do it.

                        Would there be a way for me to create a UI slider on my plugin, where dragging it all the way down will make the audio silent, and dragging it up would increase the gain (just like a fader on a console or in a DAW)? Would I have to code something where, if the slider is in the lowest possible position, the Math.mul node becomes engaged? Or, maybe I should start using Math.mul nodes instead of Core.gain.

                        Thanks all for looking into this and for your help!

                        ustkU 1 Reply Last reply Reply Quote 0
                        • ustkU
                          ustk @southfieldsound
                          last edited by ustk

                          @southfieldsound you're right about 32 bit and the test I have made confirm there's still not zero bits after -1000dB, and even batman can't hear that...
                          But superman could! After all, each -3dB just divide by 2 the previous factor, so you never reach 0 until the last bit can computationally handle it...

                          Now to be strict, the math node does the job of nulling to death, so yeah, if you need pure mathematical silence, use this instead.
                          Just pair it with a smoothed_parameter node to prevent clicks and you're against any upcoming super hero!

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

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

                          31

                          Online

                          1.7k

                          Users

                          11.7k

                          Topics

                          102.3k

                          Posts