Get name of attribute



  • 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. 🙂



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



  • 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 😉



  • 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...



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

    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



  • @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.



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


Log in to reply
 

24
Online

620
Users

2.5k
Topics

20.0k
Posts