HISE Logo Forum
    • Categories
    • Register
    • Login

    Sampler.setSoundPropertyForSelection(); seems to have a bug.

    Scheduled Pinned Locked Moved Bug Reports
    9 Posts 4 Posters 130 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.
    • Felix WF
      Felix W
      last edited by

      Sampler.setSoundPropertyForSelection(); seems to have a bug.
      When I changed the values ​​of Root, LoKey, and HiKey in the sample from larger to smaller values, the HiKey value with the code 4 did not take effect.
      2025_11_25_03_00_29_64.gif

      //I am a new student at HISE._
      //Windows11 & MacOS Ventura 13.6.7_

      d.healeyD ulrikU 2 Replies Last reply Reply Quote 0
      • d.healeyD
        d.healey @Felix W
        last edited by

        @CatABC Use constants instead of magic numbers

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - Public HISE tutorials
        My Patreon - HISE tutorials

        ChazroxC Felix WF 2 Replies Last reply Reply Quote 0
        • ChazroxC
          Chazrox @d.healey
          last edited by

          @d-healey There are some rare cases that .setAttribute gives an error if I use param ID instead of a number. Gives an error on only certain things error: "expected int" I think the error is. I'll specifically note them next time and tell you.

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

            @Chazrox said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

            @d-healey There are some rare cases that .setAttribute gives an error if I use param ID instead of a number. Gives an error on only certain things error: "expected int" I think the error is. I'll specifically note them next time and tell you.

            That means the constant is invalid

            Free HISE Bootcamp Full Course for beginners.
            YouTube Channel - Public HISE tutorials
            My Patreon - HISE tutorials

            1 Reply Last reply Reply Quote 0
            • ulrikU
              ulrik @Felix W
              last edited by

              @CatABC if you change both the low and the highkey downwards you need to change the lo key first and then the hi key, cause it’s not possible to set the hi key below the lowkey

              Hise Develop branch
              MacOs 15.3.1, Xcode 16.2
              http://musikboden.se

              1 Reply Last reply Reply Quote 1
              • Felix WF
                Felix W @d.healey
                last edited by

                @ulrik

                @d-healey said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                @CatABC Use constants instead of magic numbers

                Sadly, I tried using constants, but the problem persists. Also, if I swap the positions of HIGH_KEY and LOW_KEY, and need to move the smaller value to the larger value, the contradiction still occurs.

                const var ComboBox1 = Content.getComponent("ComboBox1");
                
                const var ROOT = 2;
                const var LOW_KEY = 3;
                const var HIGH_KEY = 4;
                
                const var C1 = 36;
                const var D1 = 38;
                const var E1 = 40;
                const var B3 = 71;
                inline function onComboBox1Control(component, value)
                {    
                    Sampler.selectSounds("C3");
                    
                    if (value == 1)
                    {
                      	Sampler.setSoundPropertyForSelection(ROOT, C1);      
                        Sampler.setSoundPropertyForSelection(HIGH_KEY, C1);
                        Sampler.setSoundPropertyForSelection(LOW_KEY, C1);
                    }
                    
                    if (value == 2)
                    {    
                        Sampler.setSoundPropertyForSelection(ROOT, D1);   
                        Sampler.setSoundPropertyForSelection(HIGH_KEY,D1);
                        Sampler.setSoundPropertyForSelection(LOW_KEY, D1);
                    }
                    if (value == 3)
                    {    
                        Sampler.setSoundPropertyForSelection(ROOT, E1);   
                        Sampler.setSoundPropertyForSelection(HIGH_KEY,E1);
                        Sampler.setSoundPropertyForSelection(LOW_KEY, E1);
                    }
                    if (value == 4)
                    {    
                        Sampler.setSoundPropertyForSelection(ROOT, B3);
                        Sampler.setSoundPropertyForSelection(LOW_KEY, B3);
                        Sampler.setSoundPropertyForSelection(HIGH_KEY, B3);
                    }
                };
                
                Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);
                

                //I am a new student at HISE._
                //Windows11 & MacOS Ventura 13.6.7_

                Felix WF 1 Reply Last reply Reply Quote 0
                • Felix WF
                  Felix W @Felix W
                  last edited by

                  @CatABC said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                  @ulrik

                  @d-healey said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                  @CatABC Use constants instead of magic numbers

                  Sadly, I tried using constants, but the problem persists. Also, if I swap the positions of HIGH_KEY and LOW_KEY, and need to move the smaller value to the larger value, the contradiction still occurs.

                  const var ComboBox1 = Content.getComponent("ComboBox1");
                  
                  const var ROOT = 2;
                  const var LOW_KEY = 3;
                  const var HIGH_KEY = 4;
                  
                  const var C1 = 36;
                  const var D1 = 38;
                  const var E1 = 40;
                  const var B3 = 71;
                  inline function onComboBox1Control(component, value)
                  {    
                      Sampler.selectSounds("C3");
                      
                      if (value == 1)
                      {
                        	Sampler.setSoundPropertyForSelection(ROOT, C1);      
                          Sampler.setSoundPropertyForSelection(HIGH_KEY, C1);
                          Sampler.setSoundPropertyForSelection(LOW_KEY, C1);
                      }
                      
                      if (value == 2)
                      {    
                          Sampler.setSoundPropertyForSelection(ROOT, D1);   
                          Sampler.setSoundPropertyForSelection(HIGH_KEY,D1);
                          Sampler.setSoundPropertyForSelection(LOW_KEY, D1);
                      }
                      if (value == 3)
                      {    
                          Sampler.setSoundPropertyForSelection(ROOT, E1);   
                          Sampler.setSoundPropertyForSelection(HIGH_KEY,E1);
                          Sampler.setSoundPropertyForSelection(LOW_KEY, E1);
                      }
                      if (value == 4)
                      {    
                          Sampler.setSoundPropertyForSelection(ROOT, B3);
                          Sampler.setSoundPropertyForSelection(LOW_KEY, B3);
                          Sampler.setSoundPropertyForSelection(HIGH_KEY, B3);
                      }
                  };
                  
                  Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);
                  

                  Ultimately, I set up two methods to call different methods depending on whether the value in the combobox increases or decreases.😹

                  //I am a new student at HISE._
                  //Windows11 & MacOS Ventura 13.6.7_

                  ulrikU Felix WF 2 Replies Last reply Reply Quote 0
                  • ulrikU
                    ulrik @Felix W
                    last edited by

                    @Felix-W
                    I made some notes how you could solve this
                    There are some things that you have forgotten

                    1. Reference to the Sampler module
                    2. Set the combobox callback
                    3. Reference to the the sampler properties, Root, HiKey and LoKey is set like this:
                    Sampler.Root
                    Sampler.HiKey
                    Sampler.LoKey
                    

                    it may seems a bit strange at first when the reference to the sampler is Sampler1, anyway that is the way it works.

                    1. The ComboBox value start at 1, not zero

                    Here's the snippet with comments

                    HiseSnippet 1676.3oc4X80aSbDDeujbn3qPUAwC7PeXUDO3TEB1wg3TQQ3DaGHkDhkcHsHTEZycqsWk6t8zd6EhAw2o9Qnej3aP6r2e7smiIDbCzpV+fkmYmY1e6L6N+10cDbaZXHWfLrNbT.EYbcydi7kCaNjv7Q61BYbaydTItGOx2A2QvCnB4Hz1iBHggTGjgw7OQYoQoEPwe9vi2l3R7so4pPni3La5dLOlLWamFOi45tCwgdHySy50arqM2uI2kGAnZdyJn.h8IjAzmSTlMmI5ojvgHievrV8MH8WqdcJs+FU9w506uQcaxZT550Ve8icHGu1laZu4CpuIx3ZscXRtnmjHogHiE1l6Lp2P9a7SlfiXgricoJgpndvLmndGtqiZIpzhZNj45zIKcEhPFlcxSdymj7ts49LG1X84IwuKd.btG5IPi4JBu4K.up5vqhF7lBjLzfzBIP5ll8rEr.Y9HJ77Ml65Koh9DnNoCkDaQy8JSylbvBe4pdjSn6H.gwdTdiJUVACes7CsrfZUnD2j6cLea9YUwOBm43.pDTGv8AgxKM1hkTdc+6WRP6SETXiBVxwxgTbHwKvkJRiXuDIU.i2PpBWptxKkMXVrdIrWAeBcTXpyOC9I33qpswJ3ZatBdc.u0q9aIFukDy7YRLDPLAujcj.fgT49RJnXCXlHn32vjCwtPEQXInCvolAQFBrJ9uZ7JRAsiHtQzxKeu3Ig46x7o39Q91RF2Gq1NmZqJ4H3tksyxLqfOU45xVuCCerTeAXbDOB6SoNJ.MjbJE.54xWoIA7idz3jUr6YBqFRco1x3StgPAnlJaoMI3CgfXq.F9X9YIvHDGJIBYHlHwUWA6yk32RE7XOb41DWUZJKAD6Q7JVG5ptEJ3I3b4j3IALYcQ1A1xGCQHGUN0pU6BtsRw3WD1kZNjZeBl0G6wOExPQAXt.6.mVhM.zWVgw6oWw9IbkkKAqXvCl+fbiemUoOeDtGGB44g3LDomxlZjTA584KYpaHE.eoTvGEL6P+iLgWcIgIfNf5n.G3LjVwHdfBmlfx0CsdObt4S14PgszSPMIttGCDCkO+gKUSAKKsSeOmKoG3WFNiYUxBf2jC0u+TGKMbpNNSaXEsk3hbrrej2wTQ9I7DCgVyE62a9w62qSGYmjczLj6uKzH6f.p+GijBklRUbConBLUFyL7coLCYoODyQQLLNahhgsNyN5E61hHIYACha5dDlZYXzhdJPymP6TxrEM7DIOH11zZIxXwK4TeV9zd2FizEdCyQNLWwKaLjxFLT6dEsZ3Q.2MMTxLI0Cf1MLaV0pUUq1Us1tFb0iywRB7ybmHnaeQRa0UaRG.prEXJUrg9gL4H8DzjL4Kb4Xxu3KZbYg6MM6vj1CmNdmaJ3Epieowa58htgY698gNH4fcAyc90K7RPW4P46SfxsL6IEThGzJMsWVLdrLy5+cUb21fK8ca6HntbhSO1a0L6OZrcDjuDE096Mhmps7flyElqTj2kFPIRn7q4yhM518IBdTvjd8gGGuY4PAzBERE5CbfOEx6R80XSAOLrOrbhiUn9PchDCT4pbMcomREgE087HOn166CbYpilFfpWDRU0Zl89Dofclt0wyRkCIw0a3B+wxUmPdsIjqMg75SH+fIj2XB454xFlE2Kt3kqA89jfNDXIpY41rzcYvXIZz2vNNsFO0ZOH4Wfq70mK7zTMka6esuTO.4qZaq+9cYuZduToLL1ioJXs8OENYBZTX7V.aVeRjqLSawtD6y84AC49L6hmCf80CFPE5XepKnsjR3XXtla2nKbgKRHUm3aO3IEDQwi2eV4hpe1ucbp0q6Xl.Wrp0F9+Friy++d1wKJ08sobi3dp2F9u7570Mi6liUju+SA0t7HIPplQrYBrevKpD1TcNv4T7pIxUTxJ.0i56DK7mvmzAqlQXpFrZ1fH6rPAqszeGe2bi4o9J1j3K84BTwt5aoCg6UnfDPxgR9+V7TDSKnxbWyDRARzDWXvzr5p.0FytCGRdv4FUSFyGpck.hmGIyNCijnBblpGxqP6cgoM90hYBwOBMejiTHTkTeJK9mPfVqdFJR4LYto+6e2w7cc5dvO2t4gudmC1qU6tuuYsUIr9nVQAtLanHpV1eUJ.dDaA+01IOpRUFVLVCfX+XnVxbekL9buiBg7.p3WaaWLTmyw0lUGqMqNt9r53ClUG2XVcr9r53leZGU2TZqHI2Kgm.g1uS6jyVFsGe1ZdzeAfnKfMF
                    
                    const ComboBox1 = Content.getComponent("ComboBox1");
                    
                    //	reference to the sampler
                    const Sampler1 = Synth.getSampler("Sampler1");
                    
                    //	Your keys
                    const Keys = [36, 38, 40, 71];
                    
                    //	At init get a "current key" to compare with later
                    reg currentKey = Keys[ComboBox1.getValue()-1];
                    
                    inline function onComboBox1Control(component, value)
                    {    
                        //	you need to have a reference to the Sampler == Sampler1
                        Sampler1.selectSounds("C3");
                        
                        // The combo box values starts at 1, not zero
                        local key = Keys[value-1];
                        
                        //	Set the root
                        Sampler1.setSoundPropertyForSelection(Sampler.Root, Keys[value-1]);
                        
                        //	Check if moved up or down
                        if (key - currentKey < 0)	// moving down
                        {
                    	    Sampler1.setSoundPropertyForSelection(Sampler.LoKey, Keys[value-1]);
                    	    Sampler1.setSoundPropertyForSelection(Sampler.HiKey, Keys[value-1]);
                        }
                        
                        else	//	moving up
                        {
                    	    Sampler1.setSoundPropertyForSelection(Sampler.HiKey, Keys[value-1]);
                    	    Sampler1.setSoundPropertyForSelection(Sampler.LoKey, Keys[value-1]);
                        }
                        
                        //	update currentKey
                        currentKey = key;
                    };
                    
                    Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);
                    

                    setkeyprop.gif

                    Hise Develop branch
                    MacOs 15.3.1, Xcode 16.2
                    http://musikboden.se

                    1 Reply Last reply Reply Quote 1
                    • Felix WF
                      Felix W @Felix W
                      last edited by

                      @Felix-W said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                      @CatABC said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                      @ulrik

                      @d-healey said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

                      @CatABC Use constants instead of magic numbers

                      Sadly, I tried using constants, but the problem persists. Also, if I swap the positions of HIGH_KEY and LOW_KEY, and need to move the smaller value to the larger value, the contradiction still occurs.

                      const var ComboBox1 = Content.getComponent("ComboBox1");
                      
                      const var ROOT = 2;
                      const var LOW_KEY = 3;
                      const var HIGH_KEY = 4;
                      
                      const var C1 = 36;
                      const var D1 = 38;
                      const var E1 = 40;
                      const var B3 = 71;
                      inline function onComboBox1Control(component, value)
                      {    
                          Sampler.selectSounds("C3");
                          
                          if (value == 1)
                          {
                            	Sampler.setSoundPropertyForSelection(ROOT, C1);      
                              Sampler.setSoundPropertyForSelection(HIGH_KEY, C1);
                              Sampler.setSoundPropertyForSelection(LOW_KEY, C1);
                          }
                          
                          if (value == 2)
                          {    
                              Sampler.setSoundPropertyForSelection(ROOT, D1);   
                              Sampler.setSoundPropertyForSelection(HIGH_KEY,D1);
                              Sampler.setSoundPropertyForSelection(LOW_KEY, D1);
                          }
                          if (value == 3)
                          {    
                              Sampler.setSoundPropertyForSelection(ROOT, E1);   
                              Sampler.setSoundPropertyForSelection(HIGH_KEY,E1);
                              Sampler.setSoundPropertyForSelection(LOW_KEY, E1);
                          }
                          if (value == 4)
                          {    
                              Sampler.setSoundPropertyForSelection(ROOT, B3);
                              Sampler.setSoundPropertyForSelection(LOW_KEY, B3);
                              Sampler.setSoundPropertyForSelection(HIGH_KEY, B3);
                          }
                      };
                      
                      Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);
                      

                      Ultimately, I set up two methods to call different methods depending on whether the value in the combobox increases or decreases.😹

                      Wow, this method is so cool! Thank you for the code comments; they really enlightened me.

                      //I am a new student at HISE._
                      //Windows11 & MacOS Ventura 13.6.7_

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

                      46

                      Online

                      2.1k

                      Users

                      12.9k

                      Topics

                      112.2k

                      Posts