HISE Logo Forum
    • Categories
    • Register
    • Login

    Lord of the Knobs :)

    Scheduled Pinned Locked Moved General Questions
    41 Posts 5 Posters 3.1k 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 @orange
      last edited by

      @orange

      Cool but all of these 3 knobs will have different ranges. How can I operate this different range knobs with this way?

      Well there will be 3 knobs so each can have a different range

      Besides the One Knob will control these 3 knobs at one time, simultaneously

      I thought it would be only controlling one parameter at a time.

      HiseSnippet 943.3ocsVE0aaaCDlxwLaVatHEnOrGIxSxHsAVIosCHKXd1NovnKoFycECnnnfVhNlMRjBRTYwnH.6m19oreB6ev1QIZK4LkVqML8h8w69N9cGuiGGGK8XIIxXjUqWuHhgr9Z7jEB07AyobAZzPj0CvmSSTrXR9R8WDQSRX9HKqsdgdAqVMQYe+422mFPEdrhkPn2H4drejGxUEqNt2K4AAmQ8YulGVx5i5MxSJFHCjo.e1B2EEQ8thdI6Bp1rFXj01m5yUx3IJphk.1zW5uXxb4uJxs+M7D9z.lVvEMAbT9xnAy4A9iWFqIHjUywEQ9V4Q9ivmy84qVuHCrSlBRAhx4.qFqSolqQI26iRmIC70N3dnmUI50LmdODOwKlGoJzn41WgGIfCmYTHsWlV41hZ7MMvCjfEB09gzqXmECBqP37rtceL4oc614311ssiYWR3Y+CNFRTjqowjqDxoIjSHu8cYJlIiINbP18XBm7cjife1auNss+XaaB7kY99QoIycVtsWxTCjgQRAH3r6KAC1cOdmNGae656jW3zyk9Lv2UizneWMWM+e+DsEBUrLX.MHXJTs3XTMnedLwEAbAiLKU3o3RAYkZGubfOF17fTVQHbugnVowlUg5a4Ow8c6m.G2Fd3j4MxImP3PHps6V6aWs6RwERE6UBmN1eztk8s12UyrYUox36.VbUZ0MQweBXNhzvor3kApwNntZ8B2s2rBWu7CmRFJEiDb0qhXF4hRa2JJsQlSWcOngffoprR7cLk3vo9TYe4MHN3lVXyYFJi+kuuAcWG7.iClDv8YwYv+Brtjy8tfMDYi.ev+EvGVA3edzPphpayMICHAEwhUb84f0P10vcl4M8svCYIWojQYYKSu.35MJecypM82dQuEEBC6ERAcXqs.IE6FvgaiyPvUrvDMycsOv9PcTtZKa9YyvEa2evKsc+9G5U1O3Oax998y0KKIAlWCWd3F5x+4ct6nSKoAT05iCzy8LJfNs0t2Ue2pHgqVTtNsFyH5V4LhJaj1P59P7Xtxad07sQE7EpK++lulItswmNaFySUP1l3y9k+siWqAU9IYphKt7bpJlq6DtHMbB7nCOFvDgfEjn6NZnayyk6pk0YlILgelveAeFktZYKiR2kJQgTuX46MSYzyz+xrU.NIxdNSK3cUfLY0USZdGBOz38dd5DwS.lWMhCpMhCqMhipMhmVaDOq1HddsQ7seBD5W08CoJYXdaArv3SytX1x5TAEppxp.Q+MfTW7S.
      

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

      orangeO 1 Reply Last reply Reply Quote 1
      • orangeO
        orange @d.healey
        last edited by orange

        @d-healey Thank you so much, I will try this snippet when I get home in 4 hours ;)

        1 Reply Last reply Reply Quote 0
        • orangeO
          orange @Christoph Hart
          last edited by orange

          @christoph-hart said in Lord of the Knobs :):

          inline function normalisedToRange(normalisedValue, min, max)
          {
              return min + normalisedValue * (max - min);
          }
          
          inline function onKnob1Control(component, value)
          {
          	local v1 = normalisedToRange(value, 0, -28);
          	local v2 = normalisedToRange(value, -3, 10);
          	local v3 = normalisedToRange(value, -10, 50);
          	
          	Console.print("v1: " + v1);
          	Console.print("v2: " + v2);
          	Console.print("v3: " + v3);
          	Console.print("----");
          };
          
          Content.getComponent("Knob1").setControlCallback(onKnob1Control);
          

          I've added this local variants to dedicated knobs and The One Knob (named Knob1) will control all of the 3 knobs with their individual value ranges! The best thing is value lineerity can change due to middle values of the controlled knobs. That's a very very good thing! I'm sharing the snippet. Thank you so much bros!! @Christoph-Hart @d-healey

          HiseSnippet 1054.3ocsVEsaZbDEcVrWk.otpQJR80Qn7vRqwhkEml1npPM1tB4ZLI3Z0JUojw6N.i7ryf1cfFRjkxeP9FxeQezpeI8g1ma+.pT6c1cgcg.D3AuFg7cN2y8d16b4NS6.oKMLTFfLxe93ATjwmX1YrP0uQeBSfZdHxnf4YsN5jVmcfM5fwCHggTOjgwVeuF2H+1nnm+4oGP3DgKMcID5BIyk9CLelJc010Ogw4GS7nmy7y3cs5MckhFRtbHnksLqfFPbuhzi1hncKmIxv7HOlRFzQQTzPjw1GH8F2ou7WEw9eAKjcImpMrQcf.Eu7wRtmVw5UQM5y3dsm7NGhfnzNsBrUbE3Almx7XSWOsR7YQ.3TFYqGF4Vk7ryJuJqu7LxHusik28M63FvFnRQzZ6dlMEJZPWBrEjUVw9hx89sLaHAODp87IWQON.Llxv5QUprKd+JUJ8jcJn+C1JBU3Qj.7IB4k0veKdB4dTUCo+.o.LrJFgVTyZVFNqjgyBXTckLpVbhxXBNSPwcGJbULo.KjA9DNCdaOW9bhnG0JckKH7gzcw9LA7E4Uk1ova1o.FdBnpgABM.9Kwy4O9KvVfy3xZXcVudQoUJzxxVq3.I2xchb2EdgffDmp7boKgiGYCuaenNGEqNnvWd+GqSzD2qtJ2K6rK1tRV2cVk61ZuicG9.xMTxo6MHfoqrir+FbQnBLxNxg4QqlfVcgnNInNKBsL7TbRVgOQ8I6ERUQkXqjDF0KjY0pSWsZlUcRhSzWWG0Fr7FE6hkzTS1WZP37KgwHVytcU5IY1GaIUzyDVkJ7lB4Kbcg4Q51cQPIAhSCVDpdxVvJnYIF5eIMXRuRhevOvmcBh4xmfjc.mabwHiiRQSASc1.pXYyUPIUP8.vDQAtphlu7oIyW5vYdz.DCFibGynxGJRuIyre4698+5on0lb0rjq+mu9AOq95S1YlL+uV+xmuAjqMC4+9Y+ViaP+XyCIJhd9ZRg.JNCnAJlttabHcDbvU7z17lGRCuRIGDUoR50f++iVqd0zy19CV8wSMdaaszmFm67QKaow4sMyDGbu59yd.LLzJ07mATOONssLjoa9RQd3FkemL4ud+L4GMW9u6Myj+Gtz7G07s14uV17OJS9e4b4+zYyOBsr7+02f9vyTgS1kdC4D0rG2quiSBfNFYOWUe1o.h83raA2J2AXck68MayTt8Wrdys.8Bs+215M4FU6XdT2tTWUpX2173e51+5SnmKGpXhdmRTALn6vr0P+NvELcofRDBJWOk0HmtkL1th1VWY5PEdQF+G7j.ZqsMR.sm.h7ItAxW3FONRems6FsBnIQzUWyadp1FOc7oV2P2I6Ett5BQYP4KlQ0MlgyFyn1FyX+Mlwi1XFe0Fy3wqfg9V6e2PkzO9mEHz+Cgp7dO.
          
          1 Reply Last reply Reply Quote 0
          • orangeO
            orange
            last edited by orange

            Hi guys
            If we put an if / else statement to this code, it doesn't accept the values.
            I mean we have a combobox and it has 3 states. Each state will define different max & min values. The One Knob controll this parameters acording to combobox selection that defines min / max values.

            @Christoph-Hart @d-healey What am I missing?

            Content.makeFrontInterface(600, 300);
            
            const var Knob4 = Content.getComponent("Knob4");
            const var Knob3 = Content.getComponent("Knob3");
            const var Knob2 = Content.getComponent("Knob2");
            const var ComboBox1 = Content.getComponent("ComboBox1");
            
            
            inline function normalisedToRange(normalisedValue, min, max)
            {
                return min + normalisedValue * (max - min);
            }
            
            inline function onKnob1Control(component, value)
            {
                
            if(ComboBox1 == 1)
              {   
            	local v1 = normalisedToRange(value, 0, -58);
            	local v2 = normalisedToRange(value, -3, 10);
            	local v3 = normalisedToRange(value, 1, 100);
            	
            	Console.print("v1: " + v1);
            	Console.print("v2: " + v2);
            	Console.print("v3: " + v3);
            	Console.print("----");
            	
            	
            	Knob4.setValue(v1);
            	Knob3.setValue(v2);
            	Knob2.setValue(v3);	
             	}
            		
            	
            if(ComboBox1 == 2)
             {   
            	local v1 = normalisedToRange(value, 0, -18);
            	local v2 = normalisedToRange(value, -3, 18);
            	local v3 = normalisedToRange(value, 1, 18);
            	
            	Console.print("v1: " + v1);
            	Console.print("v2: " + v2);
            	Console.print("v3: " + v3);
            	Console.print("----");
            	
            	
            	Knob4.setValue(v1);
            	Knob3.setValue(v2);
            	Knob2.setValue(v3);
            		
             	}
            		
            if(ComboBox1 == 3)
               {   
            	local v1 = normalisedToRange(value, 0, -65);
            	local v2 = normalisedToRange(value, -3, 28);
            	local v3 = normalisedToRange(value, 1, 28);
            	
            	Console.print("v1: " + v1);
            	Console.print("v2: " + v2);
            	Console.print("v3: " + v3);
            	Console.print("----");
            	
            	
            	Knob4.setValue(v1);
            	Knob3.setValue(v2);
            	Knob2.setValue(v3);
            	
            	
            }
            	
            	
            	
            	
            };
            
            Content.getComponent("Knob1").setControlCallback(onKnob1Control);
            

            This is the snippet

            HiseSnippet 1175.3oc2WEzaaaCElJIZo1YYnEXmKHB5Amsj.KojrzUTTm3jLXjkDi5rfsSsLRzwDQhzPh1KFAAnW5+qbZ+N18co+C1dTR1h1Q10Z.8RkEBB4688de7iTjO1LT3RihDgHiRWLnKEY7slsFvkcp2gv3nFGhLJad9YGcxYmefE5fAcIQQTOjgwh+hxtQokPwOe5MGP7IbWZVWHzkBlK8WYALYVuMqcBy2+XhG8BVfl2aWqgqfWW3K5AbYQypntD2aHWSOinbaASjg4QdLoHrkjHoQHikNP3MnUGwexS7+RVD6JeppgEpEDnjtOV36oXrpWT8NLeulCGyQHHJMyTfESTfu27TlGaT+YJwSiMfyPnqGFKLK5YoSupyO8Lzn2RIz6YlsbCYckYVTbaEyFbIMrMAlBzoUhunEVbYy5BvCtbq.xMziCgFiPTY2pU2.6Ts55uZ0xpevTQjD2mDhOgKtZa7qwCAeMUVWDzUvgFUVK15ZJTiivYlHbxAg8LQXOABv7UhCD2ZMUTi7XsgiojeLtOiSws6wckLAGyEgADeFnVWHdKgeMsRVOWR76Q2.Gv3veH2t9pkua0xX3IjJ6ExUFv+HdB+w+.tB3LdSkYUtuOuzJ3pgkkh6gB+JtCI9FvvCBRVp.nsqnMbeM1Zckk6hsUxW3R7w8U5viGI8S3OL0t4N6onxP2smk6a5rA1ppt6NyxcKk2ItCuv.JR3S2paHSMKz25mwqAZTeqXGlzpcpU6bs5jZ0IOqaBOqMLqva7Jwshnx3IgJoILd0lVu1i50VqWmr3fKASWkR9+IEdakvWPc2pf59dER226qNYeRM2IdwdQU8c2oPptcgTc6uZT86GEPs26i2tb5aECanphV5NW0I99WAGTWY7MzV+UZ6zclPROmWY8x2UtT46KOok1syyTZf7og4YUU6P3LfUg2K3JZ3vcSS8CNBc7ynMm9Yz5kP3lHFZNJ3M3L44co7ocxMJUAgyvMSIE3pL9D7uK8D7V9LOZHhAGTurYr7gh4qdYUn4F71iAF+w+w9g4GryXfe34ebkZyOX6w.+91+0wOF7SSAO7q6X3qXN5i8IG4nZneqwgDIQUDTpVB5aWZnjol5LNj1GptLojnRlGRitQJ5FK1oKWgY6Oqbe6nD92rZCF03CMUCfQwY4OqxmEmZ80hy6utVfdUxm9.TYfdExALOOeZSQDSs9MyxKenH42QO+czxOZh7+jwy+KpMs7Gu9ctyusV9+PCs7imH+e5Mik++Xp4+Eio+eybtDRKz6qqB6WKNslFKBMXRZPjh4VksK6.WH4QEXCk4K754SjiW6u5BOoFTbUuHaUgzbXLLPen9E4BAyKcelYSlzsS97cgb3K7Y1WZ9ld8pUMOpcapqLirKYd7u++8tT4eUup4Qk2J5IY7qOkHCYpkCm0KnEbaSWJvDNm5qNPvXA0R+j1UUsUJSKJ2Ktw+BOoFsTsMRMZMzHJf3FJdmaxlepKv8j3d.NwiuGaIySUswi1uSwU3q.16bcUBwlfHlOB6BivovH1tvH1ovH1svH9oBiXuYfPcE986IEAIeVfP+GjEnFVN
            
            1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart
              last edited by

              Combobox.getValue()

              orangeO 1 Reply Last reply Reply Quote 1
              • orangeO
                orange @Christoph Hart
                last edited by

                This post is deleted!
                1 Reply Last reply Reply Quote 0
                • orangeO
                  orange
                  last edited by orange

                  Ah ok I get it. Thank you so much... @Christoph-Hart

                  if(ComboBox.getValue() != 0)
                      {
                      }
                  if(ComboBox.getValue() != 1)
                      {
                      }
                  if(ComboBox.getValue() != 2)
                      {
                      }
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User
                    last edited by

                    How would you add to this so that which ever knob you turned, the others were linked? So the lord of the knobs was actually all of the individual knobs? Maybe selectable with a link button?

                    orangeO 1 Reply Last reply Reply Quote 0
                    • orangeO
                      orange @A Former User
                      last edited by orange

                      @duno You can link this LOTK to whatever parameter that you want like this for example;

                      Dynamics.setAttribute(Dynamics.CompressorThreshold, v1);
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User
                        last edited by A Former User

                        Yeah, I mean say if you have 2 samplers, compressor on each, and two knobs controlling the threshold on each of the compressors. I’ve figured out how to link those controls to one knob, or have another knob (the lord of the knobs), to control them both, but what if you wanted to select a link button which then allows you to move either of the two threshold knobs and it updates the other as well? Does that make sense? I haven’t really played around yet trying to figure it out, just thinking out loud!

                        1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User
                          last edited by A Former User

                          I've laid out a script below that I'd use in KSP to do what I mean. Finding it so difficult to translate everything to JavaScript! I found what you've done above really helpful, but not sure about how to alter it to relate to each knob. Is the thinking the same as in KSP? Or is it done differently? I'd do the below twice relating to the two separate knobs controlling the release, with a button controlling the link. Be super grateful if someone could guide us a little!

                          
                          on ui_control($knb_rls1)
                          
                              $i := 0
                              $j := 0
                          
                              select($swi_link_rls)
                                  case 0
                                      while($j < $Channels)
                                          while($i < num_elements(%CH1))
                                              set_engine_par($ENGINE_PAR_RELEASE, $knb_rls1, ($groups * $j) + %CH1[$i], 0, -1)
                                              inc($i)
                                          end while
                                          inc($j)
                                          $i := 0
                                      end while
                                  case 1
                                      while($j < $Channels)
                                          while($i < num_elements(%CH1))
                                              set_engine_par($ENGINE_PAR_RELEASE, $knb_rls1, ($groups * $j) + %CH1[$i], 0, -1)
                                              inc($i)
                                          end while
                                          $i := 0
                                          while($i < num_elements(%CH2))
                                              set_engine_par($ENGINE_PAR_RELEASE, $knb_rls1, ($groups * $j) + %CH2[$i], 0, -1)
                                              $knb_rls2 := $knb_rls1
                                              inc($i)
                                          end while
                                          inc($j)
                                          $i := 0
                                      end while
                              end select
                          end on
                          
                          
                          orangeO 1 Reply Last reply Reply Quote 1
                          • orangeO
                            orange @A Former User
                            last edited by

                            Hi @duno
                            I don't have any experience with KSP. but @d-healey is the pro for KSP. you may ask to him.

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

                              @duno There are a few ways to do this. This is the first method that came to mind for me (I use simpleGain instead of compressor but you can use any FX you want).

                              HiseSnippet 1242.3oc6X0saZbDEdVvqSgVhhi5CvHeEnj5rfSRqjqUHfsiPw+fJ1tsJJJcX2YgQL6Lq1c1TnQVpuFsW2Whdmej5aP67yBrXiIPUZTsTlKr7YNmyLemyb9aocD2EGGyi.VENcTHFX8E1cFwD8a1GQXfV6ArV2tKE0GzXTHJNF6Arrx+BEOqBqAzq+5YMPTDyEOcK.3bNwEeHIfHlta65ujPoGf7vmRBxH8iq2xkyZxo7DINxa6.BQtCP8vGiThkyVBh88HBdTGARfikxzf6MpSe9OyLxeNIlzkhUDUAcjGjYaPy9DpW6w1XL.XsV6oVbdiE+k1GQ7HS1epkeOMC3TMx5CrxMKjVaFHU8lfzAbpm5.tA3YkAdqYf2F1cbiHghobTX6ysawD3HejzsmEVFYA49i71M4RIXhsBPCvGDIIlnQ4m537P3SbbprSohkJFg6AI5+S9LDKfuEEA8GB2E9pWK20e3qbdsjPGVrUOrXeeerqn7lcHAgTLTELrYEifUeeBVayJW4h5JXGRXCj5MFuRMaxCB4LIQ4MajHDbV0qo2.Fua7XLpILvb9mxKkBXNCinUWrnig43ycqXkHLQDm1DQockgmkU7Z1H6QtXoJUjvnDFF5mvbEDNCZ3U10nxCklEMAWoTw2UpHTtnbWDER7TuD5qXKByCO7D+wZnNUkfl+R7gkSclJK5b0gUtBb2cgNUfO5Qo.KFx3BnDGCvdF8RuM0R9BJuNsc7bgHhzMQfK6LFX6nk6Bi3XZLFd8CfGAKSj30YGHA9sovlhY8D8k67fGTYprYTa7cei27rhZ72FoMlYV.pAYVnpVEuXhWmyNlKvmvJWo36JVn3EEuJGe+4wJ0+QwQyiqpfVzBTqLKInKNZrAkJmLGe1hHqubEQbMAtYDjyZwHhSBwozSKyTcNkY.oQ9xBN4SAn7+D5xM2MsbSGJwCGAHxC4N15zGfF6oksqu81abIXoUt1JnrIiWqbA6zz+YTW2yAbVq8PBjplYp0HsvPbjfnbjV6geqrAjoBZA68vwCD7Ps4llnCrJ8dM3gSuvCqOZBQ8ypGKFodVVWKHHf34Qws4wD0qtRNKsf0tLVfC6P9EMx+8eSs9ymEjs44OdY.ZX1FmwI99D4N11PuF.eBMHVlOD1JP1ODXce6yj4cdXeTBU.iGHOJSt7obcix.tWpA6R5hopW5k1dqkwdcByXu+5GT68CqAdEuWV60dIBqlp7O0KiEC5UWfGJTFrpdpbzkq0VVNb.2KghDyNwfpIWJCkqIaqYU6WlzkMJaX7JLFgybGiXt42KIb2vtMQ31e93M2bvqLa6+Z7lNTVIayzCSA6Z1G7CeDl.KWFrbmIiDqmf4EigRI6LizbSSFqKxsGlhlw+88DOQ+LoC0myryV4WzztU+WNs6hCDT.GdqIv891ZG6sI.qe3u8.36Y2F8+g.huimHHrdGgj8HTMMNNIni7yDcwRnxXxoPk6YkSU32P6nnU.pCl4oI9a4JkYUEsUJypiYBVhL96lMiu1mR4+TJ+mR4uMmx+w3NBPtQ72j9s5pTyOSuiztY5eWqB1GongS93FkuQNZM4Mttpwc9Jo2Y9ZTak0X6UViGuxZ7jUVimtxZ70qrFeyBzP8y687DAOvDuK2n895OpzxZeFRF4pC8A+CP6V2pj
                              

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

                              orangeO ? 2 Replies Last reply Reply Quote 1
                              • orangeO
                                orange @d.healey
                                last edited by

                                @d-healey Very cool way.
                                In this scenario, a knob (called Main knob) controls 3 parameters and there are 3 range options that are selectable with radio group buttons.

                                But when you select a range button and start to tweak the knob, as you can see values on the fx unit are jumping. When you change the range, main knob vaue must be picked and recalculated the normalised values and apply the fx module simultaneously. This is what is supposed to be actually. What is the way to do that?

                                HiseSnippet 1286.3oc0X0raiaCDlJNpM1stX2hdnG5ABeRt0Ivxd2tEsHXchyOvXa9AwoI6s.FIZahHSJHQ4ccWDf8PeI1a8QouF8snuAsjT+ZaEE6hlhM7ff4L7i7aFRNyPepGyB66y7.ZkOepKFn8458mR4i5NBQnfd6Azpnexw6+piOYWSvtScQ99XaflVoCk50JuNP09qWtKxAQsvoh.fKXDK7OSFS3oROsyqHNNGfrwmSFmYzOqSOKFsKygEH3RI8l.Wj0Mng3iQxgslNPSeeaBm40mi3Xef156xrm1eD6MzvweAwmbsCV1wDzWLQghOf4XKYrTJn6Hhi8ow1rOPLKml5AJE5A9J8iH1jD4odhmnT.SQj0ensVQzyLK8Zt7zSKC8VOjdOUuukGwkmpQxsOSuGki8FfDaAYoU3XAqc4mn2kIFAku0XzM3C7DcRPX7hlMa.Ma0r9OUsR0JhMBeNbBxCdFhNDaB2FFicHl2kM1kQEcLpEptlD0bXZULlV4gocwXZWKjcYw0mL10AKOJJvpN2JQt+fAXKArTsIPITGBECGDPs3DFERYdiQNDgy5blZULRkbAxI.2.NlPEePusd0JuqZEnn4g4AdToB32Ama7vuEZHFLbSoZ4pdadKKidzN8N9J4sJoE6wbLrhM2FBKSLQxkStXpkT9gLvHzeKMQ0ZYTGt81Py5grRM5PDkS.pZNLKjCbhbebQ6cRnUJ1+etZ6ubFDsJBwllpCMK.pcQfLiQHAbqZSANm80p.6KwllcIuOKqUyU1zZ.auhVVSEFAnxEYcs+u25LWUqq8pabgHxXYILU9UbF1m4f2x0iHutNw7Gg0DWMlXpVj401JRaqb01NRa67ztonotKWtbryM8R9V9X9NbtG45.N1Hi7KI17QMhnCr7RfP9oQLCWhwuG1AMsQDoC8Kga+4GOK4xes5xoLJDPWjiy0hjdFKFcHL7UlvGGy33SnF0q7tJkqb6BZFLHOUQSlC1KOsx7wdE.yfFL9ZrWb3onwIRKMadO86NuW1zxVgNlLCjQ6QI7Sbwz6JaHHxaJSaGQJwP4prheQTVw9NDarGfXKSIl3FAJNGUswu+gO7muDbWSvtAbNiplfMzCC3NCZUwNq.5Vwn00TfWdjsmC4uzaODGIKJHxOH7MtXONQ5101COQTsUXIBk02C6eCm4JJbJ4XmvosTtp2lXn+gamoIcd+Ic.YlqMBmqpwEifnXmHxq9sYl4ATKy7.L57F48wDAveqyHLY3nzhDe+gctl4I3VexuNSAkgROCYSB7yJWqzhLqn8yLTClkZeybTCbwBTqSGWjmXcxtfwVrmfXrC8XAtoyvF440J5zRF2+q+3hasyxsgO7bawReEEfyrCbP7YqJWFBNRgHh0Lk+JKwk5S3Syd68AoT8kktOU+TB2ZT97csb3q338CMeid3SU8vJmSI655G75+suxI+Gg079dkyml7LzjzqJpLif69gnecGUt3zCdC5b4rmMOuSNOUUqzr1UokyttmGTV74.0yVdzbt8K0UN1GSDVsw+3gvOQFO7i.5dFKfSnCOBIJzUDwW+3fw8YAdVXAUoh.1xh7zVSVJSX+lwUnzGSsUc9aQKRooruVjRyXk+urFiQVdrqrBq2Rd0bCkDgcSU+mRk0OR1GlTemz2LlXStxxRF5aSg2IeDsVYDsWYDOakQ77UFw2uxHdwJi3GJ.g7uSam.Nab34c.3e.nZZ4wD
                                
                                d.healeyD 2 Replies Last reply Reply Quote 0
                                • d.healeyD
                                  d.healey @orange
                                  last edited by

                                  @orange There's something wrong with that snippet, when I load it into HISE I get this console output

                                  ONEKNOB1:! expressionCC was not found.
                                  ONEKNOB1:! expressionCC was not found.
                                  ONEKNOB1:! expressionCC was not found.
                                  ONEKNOB1:! dynamicsCC was not found.
                                  ONEKNOB1:! dynamicsCC was not found.
                                  ONEKNOB1:! dynamicsCC was not found.
                                  ONEKNOB1:! vibratoPitch was not found.
                                  ONEKNOB1:! vibratoPitch was not found.
                                  ONEKNOB1:! vibratoPitch was not found.
                                  ONEKNOB1:! vibratoRateCC was not found.
                                  ONEKNOB1:! vibratoRateCC was not found.
                                  ONEKNOB1:! vibratoRateCC was not found.
                                  

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

                                  1 Reply Last reply Reply Quote 0
                                  • orangeO
                                    orange
                                    last edited by

                                    @d-healey
                                    Interesting...

                                    This is the snippet.

                                    HiseSnippet 1292.3oc0XszaabCDlqk2VK0phjhhdpGHzIoVYCsRIM8ALhrke.gTK6Z43jCEvfdWJIBuK4hc4pD0.C3C8GV9oz68RA5OfVRtOkzZYoh5hXdXg3L7i7aFRNyPchGyD66y7.ZEOahKFn8o58mP4i5LBQnft6AzJoebu8eQui20.r6DWjuO1BnoU3PodshqCTs+746hrQTSbpH.3bFwD+SDGBOU5IseAw19.jE9LhSlQ+j1cMYzNLaVffKEza.bQlWgFh6gjCaMcfl99VDNyqOGww9.s02kYMo+H1angi+bhO4RarriAnuXhBEe.y1RxXoTPmQDaqShsYefXVNI0CTHzC7E5GQrHIxS8DORo.lhHq+PasEQOirzqwxSOsLza8P58X89ldDWdpFI29D8tTN1a.RrEjkVgiEr1K+H8NLwHn7sbPWgOvSzIAQ0m0nQcnQyF09wxkJWRrQ3ygiQdvSQzgXC31vXrCw7NLGWFUzoZkP0UjnlASyEioYdXZsXLspDxtr35SbbswxihBrpysRj6OX.1T.KUaBTB0lPwvAATSNgQgTlmCxlHbVmwTqR0TImirCv0gNDp3C5s0JW5ckKAEMOLOviJU.+F3LiG90vphAC2TpVtpWm2xxnGsS2dWHuUIsXOlcUyXystvxDSjb4jKlZIkeHCpF5uklnZspVCt81PiZgrRMZYqXBLUylYhrgik6hyasiCsQwt+SUa9Eyfn4hProg5HybfZsHPFwHj.tVsk.mw5Zt.qKwlldIuKKqYiU1zpCashVVCEFAnhKx5Z8eu0YrpVWqU23BQjwxRXp7q3DrOyFukqGQdYcrwO.qHtXL1PsHypsYj1l4psUj1V4ocSQScStXwXma5U7s7w7c3bOxkAbb0LxeEwhOpdDcfEWBDxO0iY3RL98v1nI0iHcneIb6O+nYIW8qTSNkQA.5frsuTjxq57wFBCdkI3QOFGeLsZsRuqTwRWOmlACxSUzjYi8xSqLar2BfUkF3bI1KN3Tz3DIklNqm9sm0KaRYyPGSlAxncoD9wtX5skKDD4MkIsiHkXnbUNwOKJmXeahE1CPrjIDSbi.Emip03l+3m+8mCtsIX2.NmQUSvF5ggamBspTmU.cyXz5ZJvKOxVyf7kc2CwQxRBh7CBeiK1iSjtcs8viE0ZEVfPQ88v9WwYthxlRN1IbZKkq5sIF56caOIoyMG2FjYt1HbtJGWJBhhsiHu52FYlGPkLyCnZ62HuOlH.9asGgICGkVh3MG19Rlmfa8I+5TkSFJ8TjEIvOqbsByyrEselgZvrT6qlgZfymiZsa6h7DqS1EL1h8DDicnGKvMcF1HOu1hNsjw8+5Or3Vqrba38O2luvWQ42Lq.aDe5ZxkgfiTHhXMUwuxBbo9D9jr2duWJTeYo6i0OgvMGkOeWKG9JNdeey2nm8TVOrt4Txtt9Au9e6abx+IXMtq237wIOBMI8phJSI3VdFZ6V+09uWkKN18U6W9x1uZpyl278sy4gpZEl1tJrb10c7bxEeNP8nkGLma+bcki8gDgUa7ObH7ijwC+.ftmxB3D5viPhBcEQ706E3zmE3YhETkJBXKKxSaMYoLg8aDWgReL0R04uEsHkFx9ZQJMhU9+xZ3fL8XWXFVuk7p4FJIB6lp9GkJpejrOLo9NouwgXQtvzTF5aSg2IeDMWYDsVYDOYkQ7zUFw2txHd1Ji36V.B4el1NAblS34c.3e.zIJ6EE
                                    

                                    This is the interface code:

                                    Content.makeFrontInterface(700, 120);
                                    
                                    const var Range1 = Content.getComponent("Range1");
                                    const var Range2 = Content.getComponent("Range2");
                                    const var Range3 = Content.getComponent("Range3");
                                    
                                    
                                    const var SimpleGain = Synth.getEffect("SimpleGain");
                                    
                                    
                                    inline function normalisedToRange(normalisedValue, min, max)
                                    {
                                        return min + normalisedValue * (max - min);
                                    }
                                    
                                    inline function onMAIN_KNOBControl(component, value)
                                    {    
                                       
                                      if(Range1.getValue() == 1)
                                        {        	    
                                            local v1 = normalisedToRange(value, 0, 50);
                                    	    local v2 = normalisedToRange(value, -100, 10);
                                    	    local v3 = normalisedToRange(value, 1, 10);
                                        };
                                    
                                        
                                      if(Range2.getValue() == 1)
                                        {   
                                           
                                    	    local v1 = normalisedToRange(value, 0, 200);
                                    	    local v2 = normalisedToRange(value, -10, 30);
                                    	    local v3 = normalisedToRange(value, 100, 300);	
                                        };
                                    
                                        
                                      if(Range3.getValue() == 1)
                                        {   
                                           
                                    	    local v1 = normalisedToRange(value, 0, 100);
                                    	    local v2 = normalisedToRange(value, -3, 30);
                                    	    local v3 = normalisedToRange(value, 1, 30);	
                                        };
                                           
                                        Console.print("v1: " + v1);
                                    	Console.print("v2: " + v2);
                                    	Console.print("v3: " + v3);
                                    	Console.print("----");
                                    		
                                    
                                        SimpleGain.setAttribute(SimpleGain.Width, v1);
                                     	SimpleGain.setAttribute(SimpleGain.Gain, v2);
                                    	SimpleGain.setAttribute(SimpleGain.Delay, v3);
                                        
                                    };
                                    
                                    Content.getComponent("MAIN_KNOB").setControlCallback(onMAIN_KNOBControl);
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User @d.healey
                                      last edited by

                                      @d-healey @orange This is so helpful. Thanks very much. I'll have a play around tonight, want to try and make it so that it picks up from wherever the knob is at previously rather than snapping to value, will upload a snippet here if I figure it out! Thanks again both.

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

                                        @orange Yeah the value will jump because the range has changed and as soon as you interact with the knob it will recalculate and apply the new values. If you want it to move from the existing value of the previous range then you will need to add the previous value into the calculation of the new value (and you'd need to know what the previous range was too). It shouldn't be too difficult but it might cause a headache :p

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

                                        orangeO 1 Reply Last reply Reply Quote 1
                                        • orangeO
                                          orange @d.healey
                                          last edited by

                                          @d-healey Yes this is a trouble :) Can we make only this?
                                          When we change the range (press the buttons); could the parameters and knob returns to their minimum values?
                                          I tried that with .setAttribute but it doesn't accept.

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

                                            @orange This is probably how I'd do it.

                                            HiseSnippet 1441.3oc0X80aaaCDWJIZKwadncXOtG37S1MNIR1sqC0qXtwIoHnKIF0coEnnnfVh1lHxjBTTN0qH.8g8Aqej12fsiTxVxIJI1IqCsBv+g2c+N96NRc5nZK3tjvPtvvbsWLNfXX9sVcFyjCZM.SYF6uigYAqiNb2mc3Qa6Xr83.bXHwyvzb4mpzat1JF5q+921F6iYtjTQFFGyotjemNjJSk1t4yn996g8HufNLi02u49tbVKtOOB3xxV1FAX2Sv8IGhUlsjkg4WsqGUxEcjXIIzvbks4di6LfeJK19iogzt9D0.GiNfihEuG22SwXkTiVCn9dsmDygFfWZmlAVNNC7CVGP8nSkmlItiVAJEQ17g4RWE8btgzyLC8VIld20piqfFHS0n312XsOSRD8vvRPVZEaqwRqrpUKNXASt4P7Ij8DvfoHJ+Pa6pHmZ1UZTrPwBvBQnDMBKPcnCC7IpkZziQ58Ea1mH2sWOhqrboTskNOvQf8u9MMPas0HmpnQ0fO0KVXzlBRHQLhTtdL.AoOh1H92gbORir9PfY8IaGIkfjX2ofziKPkovX6FHJ5WQ0geVe8JEK79hEPvUVTul9FvvIwMv7V7gAbFLnbomqrqz5koq6TQQlbvtYnBASJ39sv99cgMjk6JYZjs1tRiBmoHDk4SYDTuHlqjxYHFWLD6Sg7+K3ZSKmJ4XreDoJZHkAegeWFVSjQBlRAZcz4rGcOTYvXzFJ0Jpl6zFE3Aa7RVZNgw6pwlNCzdfWfTL5mdLJh4Q5An8p.KPsEjQPFAcJVvnr9HvWTFUFiJAr5J7TpzcPrSpjJNiEpKWbHAY+nYEptF8Za0hwEyNS4ZUDrI7A1SVLlEry0BdCG8l3KAesqEuSdf6JH3SZjSH5byCwZ12lXrJp9MODs0vm+nr1MOJctEQY8aUPlG33Hbpnyh0lZSZoL0M8OQJEztQRR4LxeI0SNnpN7y584.o5qp5HeAAtCwGOtpNpmf7r7u6OsrTY23JV.rYK.nu4+wyTiaSJTH3cG0aBlISxL0RruzRNb1AOY+Ceqp2fjxjfiRJvlY5Syzy32X8oIj3+r08.WEx8IaFHnp5zibdDpDTTbjix10Nu1ZIZqkq15IZqmm1MfK3AWpY8daAgn9wK4+vhowYoJ48PgKlHpzHSV5PtjbDqbkBuuvZENqv40zqWdpRbjOQjmVUyShq.VYVzvtDwjUgD6fdHlsIEq4qIE23jRFC4r8gmQbT.gcYstXjjIU8XkPJvTotEluKoElN9TOhvf5o5eYZJzPy4r8VZbYNHder1AqZouAv4Vgt14QmDGyG554f9O1eGrDq5jKIe.4n.hPRUoeycHifVji6qaMqcHgmH4AP2tS25AIu4Jk8toS5GCZNd5fObTSiL9Z0XeUbRGjXFwOI.z+2IieLJkwOFkadpp72TAn+p4.Bs+fzN6+vSa1kK.t0g9myjBhk9brGMJLqbykuHytp00LTCkkZ+34nlwwWfZMaFfEv7jcBmDwBfX7mJ3QAodX07xZW0tlLo+W84E2pmka8+zysKddE3TSbuHerb1iRod.WhBnx0LmYQctDVHUNN6cwKv4qrm6yWMuz8tVsUM+lOeWJG9Bau+Ty2jSqVzJ94oojcEq8d0+sGM095NZ5WO8cGLs4EMUlQvk+1CV8i5Ncxtb+xY2aZXjy6Wvb4Yiqkmu35ZdK.W89.8Yg+hYe62aoSreIQX8B+WND9Np5geFP2myijvo2O.CGi.p3acXzvN7HgKAnJCJXqZ1ybIU6LwisUiUDpCg4oG7OvUhRG0XyDkNST9+xbLD6J3uM47HpaMWUKAhal9EAtl0Apwno84oxMCodz255pJ8sAjcxGQsEFQ8EFw8WXDOXgQ7yKLhGtvH9kq.g5cf9jHIeX79cPP6c083ZZtKCC6b0a8M9W.x2t6GA
                                            

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

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

                                            51

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.8k

                                            Posts