HISE Logo Forum
    • Categories
    • Register
    • Login

    Change the slider name and value placement

    Scheduled Pinned Locked Moved Newbie League
    41 Posts 6 Posters 4.0k 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 @Mickolos
      last edited by d.healey

      @Mickolos said in Change the slider name and value placement:

      it takes so much time to code

      As a programmer I find it can take longer in UI design software :p It's not the tools, it's our skill sets.

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

      1 Reply Last reply Reply Quote 0
      • M
        Mickolos @rglides
        last edited by

        Sorry @rglides - I missed your reply. Thanks for that.

        I tried your code in a new project and nothing happens to the knob after I added this, see image. Any idea what's going on?

        Screenshot 2025-06-09 at 4.50.51 PM.png

        Oli UllmannO rglidesR 2 Replies Last reply Reply Quote 0
        • Oli UllmannO
          Oli Ullmann @Mickolos
          last edited by

          @Mickolos
          I think you have to use "drawRotarySlider" not "drawLinearSlider" but I'm not at my computer right now...

          M 1 Reply Last reply Reply Quote 0
          • M
            Mickolos @Oli Ullmann
            last edited by

            @Oli-Ullmann You're an absolute legend Oli, that worked like a charm :-)

            1 Reply Last reply Reply Quote 1
            • rglidesR
              rglides @Mickolos
              last edited by

              @Mickolos Yes, it was the settings. I messed around with your original code a bit, made the laf local, also just added the setMode at the top, it's not necessary to do this but I like to script the addKnobs (or add whatever) in my references so I can easily work on small parts and then copy over to a larger project without having to manually add everything every time. Anyway, this should help.

              HiseSnippet 1637.3oc4XEtaaaCDVJMZaIqqXcXO.DF6GxqttVN1cCHna0Iwtyn1IFwIAsHnHfQh1lyThFRzMwcnOaaOR6MX6HkjMcrTRpw19yLZUD4cGuu63cm3wdgbWRTDOzvbqSlMgXX9Pq9yBDi1eDlFXz9.CyGY0EGIHgn3o1a1DbTDwyvz7AuRNg4VaZn98m+7dXFNvkrXJCiy3TWRGpOUrX1du70TFqE1ibB0Wi6ZursKOXeNiOEvyCrpXLA6NFOjbHVx1FVFleVSOpfG1WfEjHfm83dy5OheUPL+mQinWxHxANF8gEJdZi8GQYd8Rs0HCCyM6svxePrk+sVcodz4yuvC70JBnERn6CL231fjym.jL0fzlwP5wV8cCoSDKnHwyWZ0N.1PFfAWsNTh40XiW8Pq84.GAhx93wjVgvf4RX+7JUJgfGE2c6sA2cj.8dbH50A7KcPu.kJH1ySNkcAEgBkPNRwbjhEya4Hh3XbvPhsZ9RnJkq3nSruXFifhWfB5D5x8jy2gFPvg.kafhp4ghponXm4nn5BT7zT.tDRppijyHgBpKlUPm3JnQCNG1nayKd6E8NpOfoZ00Q5YM5b5BZN00HcRy2bxE6eTmiN8XkoHCmiJe0HpfnuB86z9flGuJi7Po8DR7xf48d0p76gCGOLjLKC16133WmkJtjA4UKYoiCt7hNMZo45cCIP.cGN3u5v4iaD30hPX1fCJg2xgjgTYggVSCbETdfcAuP7UGyE3vY8YTORHrgMHgHxdXID+xes31+FB9ss7gTwXPkvzkwf51cNkm8L0FDZO.mCC4SC7Rvth5P49V7Xj8M8L..i4Y.TioIiQmDQrwIytzh2NHPVUKYcZKH9Hmh2TA1KsMk0hirOudID7O74UeG5opbA746.u5T4c55UeU0hQlul.0Vfy2tPiPJDjVBUsxMf8Af+E7ZroDjfbsXgSDbd59wjETtczfQGFP7NAX2tKVLprxaZKYUsPEKgNWlxTRsHfEj7hD+5A4v7Ebg3BHtrPVnRLh.AQfWM.pUitjv3wyoTx5Y9N0JlmkHguzCDC9E.dQBql83TOevqBD5BYPPjPOdDUFpN2sFAQxBvuVsb8cmOIAhEeQBouGUE9+be4g7PeLi9AhG.EEGo3OjK+5.xFDFfrJP4YnpIwIvax3jkhMSfT1A81YkduTn4wxMYh2wDWATLgQrmqS.Y0i08NpfVGGv4.FHH9GUKwcjdGWmbkz6EY2YmYq6ySKCihWkkMRI5avXYkVmSV.Z.MLR7OQFFc.xV4m9I0FSQox9EdH8CfLXlhkXyasRuhyshiSyLjbNNRryD2i7vOZZM+zj6UpRF4I4mj7Q0SBCJxA3Ice6+kNh7BPxM9PlBbEjBjj3Ua2knbcJk7JeXeE5InZEyg9SPUyvUkWt+0kj46WM2nqAVX8TKCouGmyVrDwiTHdmLrkYoTdZ7ex0jFIwcQ3g5s7LtLMra+6w2Ku.3Blk9Q5ZkPizcBpZeamdzmgRk4OgGPjgWwG.tnDBqbZnjZkfv4Ka06R14GQhGbHWPNJvVVFcqsgruaRZvfLoIUdHmwHgYRV1kU3sIncvT+KIgkhqpNmQnMjk6s4yte813F6KzXjGzNfJNZBIYbKNyS1yh78U6DxHwYB8DsQBBAVEpNhdTRGQw0DLnvh74VpsHCE3068z3dKb0aJ7a+CiSae.Vfk8kk.G.hSj4GROg4Aj2CM1F2k1VVGPhFK3ST3MYyG5j9NQ70FlVldf5lk9hO0yiQROIhVu0+tO95EC+tWFMcv.50plhgvc+HAnh19PuxFlei0oPxrGY.dJSfhFCcwxnAigxfbE+WQ8DiRU3HBc3HQ5nHXKSVrbO90xFJMzrlGcmtvkslRlvxIa7xvbaqz5J2W66s+2Xe95WeArkuZC3Pq+buoLrX46CPdwGIDjlgdS3xFsC.yal9Ei7IbIAUt0KI39BwGa0iJbGkMF2HCLJy09W.iIWsxWY0bv.nT7B.toUq2rt2ixcndnzufFLDNERnLBx5vo98gub3R.sCs7whjQCaHKODOthbrzCzGNdtZveA+RH5HGalPzIkngO1Mjegab8E4k27EpY.LEntqpsr5JGixnpDjBPuv0c4kZEAqttBty5JXs0Uv5qqfOecE7GVWA+w6VP4U80Xpf6Gm1XXzsWS0GBLMaFfgHPUzpweCvt.peI
              
              M 1 Reply Last reply Reply Quote 0
              • M
                Mickolos @rglides
                last edited by

                @rglides Thanks for your help. One last question:

                Is there a way to target all knobs with this?
                const var Knob1 = Content.getComponent("Knob1");

                Currently I can only add one knob to this, do I need to duplicate this for every knob or is there a more efficient way to target all knobs?

                M 1 Reply Last reply Reply Quote 0
                • M
                  Mickolos @Mickolos
                  last edited by

                  @Oli-Ullmann -
                  ....And how do I show the decimals in the new knob like the default shows?
                  Screenshot 2025-06-09 at 7.15.08 PM.png

                  rglidesR 1 Reply Last reply Reply Quote 0
                  • rglidesR
                    rglides @Mickolos
                    last edited by

                    @Mickolos you can write

                    g.drawAlignedText(Math.round(obj.value * 100) / 100 + "", [0, 0, a[2], a[3] - 15], "centred");
                    

                    although this can result sometimes in a value like 25.100203344 and I'm not entirely sure how to solve that

                    For the laf to work with multiple knobs, you can write

                    const var knobs = Content.getAllComponents("Knob");
                    

                    ; and it will get any component starting with Knob and followed by the numbers, so Knob1, Knob2, Knob3 etc. You can do this for any naming convention as long as it is followed by a number. You would need to do this in addition to addKnob, if you use also want to use that. Then after the laf you can just write

                    for (i = 0; i < knobs.length; i++)
                    {
                        knobs[i].setLocalLookAndFeel(knb_LAF);
                    }
                    
                    rglidesR d.healeyD 2 Replies Last reply Reply Quote 0
                    • rglidesR
                      rglides @rglides
                      last edited by

                      @rglides This is stuff I learned from @d-healey - watch and rewatch and rewatch all the videos :D

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

                        @rglides said in Change the slider name and value placement:

                        you can write

                        Engine.doubleToString() is probably a better choice, or even better obj.valueAsText (I think that's the one).

                        @rglides said in Change the slider name and value placement:

                        and it will get any component starting with Knob and followed by the numbers,

                        Almost, this pattern will get any component that has the word "Knob" in its id. To get Knob followed by a number you need Knob\\d but I'd try and come up with more meaningful names.

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

                        rglidesR ChazroxC 2 Replies Last reply Reply Quote 0
                        • rglidesR
                          rglides @d.healey
                          last edited by

                          @d-healey haha I just came back here to update my post as I found somewhere in my project I was using Engine.doubleToString. totally forgot. And thanks for the tip on \d, although my solution seems to work for me, maybe if I open/close it'll stop working, I don't know

                          d.healeyD Oli UllmannO 2 Replies Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @rglides
                            last edited by

                            @rglides said in Change the slider name and value placement:

                            although my solution seems to work for me

                            It will work if all your knobs are called Knob followed by a number. But if you add a knob called MyKnob it will also pick that up, or KnobForDelay, or any other control with the word Knob in its ID.

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

                            rglidesR 1 Reply Last reply Reply Quote 0
                            • rglidesR
                              rglides @d.healey
                              last edited by

                              @d-healey Ah I did not know that, ok cool

                              rglidesR 1 Reply Last reply Reply Quote 0
                              • Oli UllmannO
                                Oli Ullmann @rglides
                                last edited by Oli Ullmann

                                @rglides
                                @Mickolos

                                @d-healey has already said it all. :-)

                                In addition to “getAllComponents”, the following should be said: This function uses regex to select the corresponding components. It therefore makes sense to familiarize yourself with it.

                                With const comps = Content.getAllComponents("^.*(Knob|Button).*$"); you can, for example, select all components whose name contains "Knob" or “Button”.

                                With const comps = Content.getAllComponents("^(?!.*Slider).*(Knob|Button).*$"); you can select all components whose name contains “Knob” or "Button", but not “Slider”.

                                And with const comps = Content.getAllComponents("^(?!.*Slider).*$"); for example, you can select all components except those that have “Slider” in their name.

                                rglidesR ChazroxC 2 Replies Last reply Reply Quote 2
                                • rglidesR
                                  rglides @rglides
                                  last edited by

                                  and @Mickolos - Using David's tip for your specific laf would look like this

                                  g.drawAlignedText(Engine.doubleToString(obj.value, 0), [0, 0, area[2], area[3] - VALUE_Y_POS], "centred");
                                  
                                  d.healeyD 1 Reply Last reply Reply Quote 0
                                  • rglidesR
                                    rglides @Oli Ullmann
                                    last edited by

                                    @Oli-Ullmann Useful! Thanks Oli!

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

                                      @rglides said in Change the slider name and value placement:

                                      Using David's tip for your specific laf would look like this

                                      I think obj.valueAsText is better because it will include the same formatting as the original knob.

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

                                      rglidesR 1 Reply Last reply Reply Quote 1
                                      • rglidesR
                                        rglides @d.healey
                                        last edited by

                                        @d-healey You're right, although Engine.doubleToString sounds cooler :D

                                        1 Reply Last reply Reply Quote 1
                                        • ChazroxC
                                          Chazrox @d.healey
                                          last edited by

                                          @d-healey said in Change the slider name and value placement:

                                          or even better obj.valueAsText

                                          wahh? Nugget! ✳

                                          1 Reply Last reply Reply Quote 0
                                          • ChazroxC
                                            Chazrox @Oli Ullmann
                                            last edited by

                                            @Oli-Ullmann This is great! ⭐

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

                                            8

                                            Online

                                            1.8k

                                            Users

                                            11.9k

                                            Topics

                                            103.9k

                                            Posts