HISE Logo Forum
    • Categories
    • Register
    • Login

    Get name of attribute

    Scheduled Pinned Locked Moved General Questions
    7 Posts 3 Posters 803 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.
    • BastiaanB
      Bastiaan
      last edited by Bastiaan

      Method:

      Synth.getAttribute(int attributeIndex)

      Returns the current value of the given attribute index, but i'm looking for a way to get the name of the attribute. How do i accomplish this, i can't find any method (like getAttributeName(int attributeIndex)) that does this.

      Ps. Logically, given the name i would expect that getAttribute() returns an object containing both the attributes name and it's value. :)

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

        @bastiaan Don't think of HISE script as OO :p Very few functions return objects (at least in the form they would be in javascript). What are you trying to achieve?

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

        1 Reply Last reply Reply Quote 0
        • BastiaanB
          Bastiaan
          last edited by Bastiaan

          I'm trying to get a list of all available attributes from a processor (in this case a waveform generator). Trying to build a custom user control that dynamically builds up a display of all available configuration parameters. So it would be nice if i could query a processor and tell it to give me all its attributes with name and current value. :)

          So in an ideal world i would like to be able to do something like this:

          var attributeCount = WaveformGenerator1.getNumAttributes();
          for(var attributeIndex=0; attributeIndex < attributeCount; attributeIndex++){
              Console.print("Name: " + WaveformGenerator1.getAttributeName(attributeIndex));
              Console.print("Value: " + WaveformGenerator1.getAttribute(attributeIndex));
          }
          

          But, as i don't have a way to get the attribute name, i run the following code:

          var attributeCount = WaveformGenerator1.getNumAttributes();
          for(var attributeIndex=0; attributeIndex < attributeCount; attributeIndex++){
              Console.print(WaveformGenerator1.getAttribute(attributeIndex));
          }
          

          And it outputs:

          Interface: 0.25
          Interface: 0
          Interface: 256
          Interface: 20
          Interface: 5
          Interface: 2
          Interface: 0
          Interface: 0
          Interface: 0
          Interface: 3
          Interface: 0
          Interface: 0
          Interface: 0.5
          Interface: 1
          Interface: 0.5
          Interface: 0.5
          

          So getNumAttributes() return 16, and as you can see i can get the values of all 16 attributes. But which parameter index is which knob in the UI? I have been able to get this list of parameters from the Waveform Generator C++ source:

          parameterNames.add("OctaveTranspose1");
          parameterNames.add("WaveForm1");
          parameterNames.add("Detune1");
          parameterNames.add("Pan1");
          parameterNames.add("OctaveTranspose2");
          parameterNames.add("WaveForm2");
          parameterNames.add("Detune2");
          parameterNames.add("Pan2");
          parameterNames.add("Mix");
          parameterNames.add("EnableSecondOscillator");
          parameterNames.add("PulseWidth1");
          parameterNames.add("PulseWidth2");
          

          But those are only 12 parameters, and i found out that the first parameter in this list is Index 4 in the list of Attributes which i see in Javascript. So what are those 4 preceding attributes? That's why i think a method like getAttributeName(int attributeIndex) that returns something like "OctaveTranspose1" would be very handy :)

          Ps. sorry for my noobish questions, second day of HISE programming ;)

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

            There is supposed to be a parameter list when you right click a module in the module browser but it hasn't worked for quite a while now.
            0_1540559405448_Untitled.png

            Parameters 0-2 are probably the bypass button, intensity value, and pan. I'm not sure what parameter 3 would be though...

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

            1 Reply Last reply Reply Quote 1
            • BastiaanB
              Bastiaan
              last edited by Bastiaan

              Cool! Learned something new, i wasn't aware of the module browser. In my build it seem to work 8)

              So this will at least solve my question about which attribute index is what. Still i would love to have a method which can be used to get these names programmatically ;) I hate magic numbers in my code.

              0_1540559794312_Screenshot 2018-10-26 at 15.14.29.png

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

                @bastiaan Oh you can do that. It might be documented somewhere, I can't remember. @Christoph-Hart will be able to give us the proper info but you can do something like waveformGenerator.Gain to get 0 and waveformGenerator.Balance to get 1 etc.

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

                1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart
                  last edited by

                  Yes the parameter indexes are constant properties of each module object. The autocomplete popup is your best friend in this case.

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

                  7

                  Online

                  1.7k

                  Users

                  11.8k

                  Topics

                  102.3k

                  Posts