Can't change Slider style


  • administrators

    Which version? Master, develop? I remember fixing something like this a few months ago.



  • I built it from source a couple weeks ago, so think I'm on the current one? Tried adding in "style": "Vertical", to JSON, but after F5, graphics jump and it resets the slider to a knob again.

    Thanks Staiff! Still figuring it out, so appreciate that. Saved me a couple hours of banging my head on the desk. πŸ‘



  • Tell a lie! I spelt vertical without a capital V. With the V in JSON it’s working.



  • @staiff I'd looked at this today, was really helpful. But I'm trying to make the vu meters with film strips, for left and right on separate containers. Little confused on how to implement it to be honest. I'd gotten as far as the code below before I posted about the knob problem. Haven't got round to thinking about changing the container ones to left and right, just trying to figure it out as I go along. Still very much wrapping my head around both JavaScript and Hise!

    const var container1 = Synth.getChildSynth("container 1");
    
    const var t = Engine.createTimerObject();
    t.setTimerCallback(function()
    
    {
        VumeterLeft.setValue(Engine.getMasterPeakLevel(0));
        VumeterRight.setValue(Engine.getMasterPeakLevel(1));
        vu1.setValue(container1.getCurrentLevel(true));
        
    });
    
    t.startTimer(30);
    
    


  • Any chance someone could help me a little with the a vu meter? I've stripped the code back to below. A panel pops up after compiling, but it's not showing any level or change. In the JSON window it's linked to the right container, but nothings happening. Could anyone give us just a clue as to what I'm missing?

    const var t = Engine.createTimerObject();
    t.setTimerCallback(function()
    
    {
        VumeterLeft.setValue(Engine.getMasterPeakLevel(0));
        VumeterRight.setValue(Engine.getMasterPeakLevel(1));
    
        
    });
    
    t.startTimer(30);
    
    


  • honestly didn't use vu meter in HISE. But i think i will start with the demo (dynamic) project i gave you before from Christoph and replace the part using vector rendering by filmstrip.
    i remember using it on another platform (rackafx) but that using other style of scripting.

    i will try to find again a thread where i asked to Christoph to control the pitchwheel and modwheel. Christoph gave the script with vector image, and i replaced it by filmstrip.

    found it:
    https://forum.hise.audio/topic/445/pitchwheel-modwheel-graphics-linking/11

    and the script with filmstrip (i just added this and delete the vector drawing parts):

    // le pitchwheel Modwheel:

    const var ModWheel = Content.addKnob("ModWheel", 147, 553);
    // [JSON ModWheel]
    Content.setPropertiesFromJSON("ModWheel", {
    "width": 27,
    "height": 112,
    "filmstripImage": "{PROJECT_FOLDER}ModWheel_128.png",
    "numStrips": "128"
    });
    // [/JSON ModWheel]
    const var PitchWheel = Content.addKnob("PitchWheel", 95, 553);
    // [JSON PitchWheel]
    Content.setPropertiesFromJSON("PitchWheel", {
    "width": 28,
    "height": 108,
    "filmstripImage": "{PROJECT_FOLDER}ModWheel_128.png",
    "numStrips": "128"
    });
    // [/JSON PitchWheel]

    So, pretty sure you can do this with the vumeter in the dynamic example.

    for the separate stereo, not sure how doing this. but when you want to know the God's secret, don't ask to his Saints, ask directly to God ! πŸ˜„

    Christooooooooooooooph ? πŸ˜„



  • @staiff said in Can't change Slider style:

    for the separate stereo, not sure how doing this. but when you want to know the God's secret, don't ask to his Saints, ask directly to God ! πŸ˜„

    Christooooooooooooooph ? πŸ˜„

    Ha, thanks for the help! I'm trying to understand Javascript better, I can tell a browser to say hello in so many different ways now, but figuring out how to use it in Hise is proving tricky. Thanks for the reply, I'll have a look through the example now.



  • @staiff can you share the mod & pitch wheels png?

    Thanks in advance



  • @staiff I try it and it didn't work for me



  • Wheels example:
    https://drive.google.com/open?id=1MjqMBWgF6T9Y-zlu_-2_nyGoceU8JnQ5

    i used a simple basic Wheel .png sequence made in knobman. You will have to replace it by a better looking png sequence.

    The white panel is not useful for the wheels, just added to create a light grey background.

    Enjoy.



  • @staiff thanks bud



  • Starting to understand this I think (I hope). One thing I'm not clear on though if anyone could explain, I've put the code I'm using below, it's from the example you gave @staiff. I get the level, all is good, but I don't understand the line:
    vumeter.getCurrentLevel(vumeter.LimiterReduction);
    Any chance someone could explain that to me? Why if I change LimiterReduction does it not work? Why is it linked to the limiters reduction, or attack or compressor reduction etc.? The meter is responding to the current level or peak, so don't understand why it's working if I use say .CompressorAttack? Or is there a line I can replace it with?
    Sorry for the idiot questions! Getting there slowly...

    I've put the code below with comments on everything incase anyone else is trying to understand how to move through it. Swapping for a filmstrip is relatively straight forward I think from here.

    const var vumeter = Synth.getEffect("Dynamics1");
    //name of constant variable we want 'vumeter' = point it to the module (effect in this case) labelled Dynamics1									
    
    const var level = Content.getComponent("level1"); 
    //name of constant variable we to see 'level' = point it to the widget (slider) labelled level1
    
    
    const var t = Engine.createTimerObject();
    //create a constant variable labelled 't' = a timer object
    
    t.setTimerCallback(function()
    // triggers the timer below
    
    {
    	var v = vumeter.getCurrentLevel("VU METER");
    //set a variable named 'v' that = the current level of the constant variable 'vumeter', which is labelled VU METER
    
    v = Engine.getDecibelsForGainFactor(v);
    //The variable 'v' = the API getDecibelsForGainFactor, which converts the gain factor on the meter from 0.0 - 1.0 to -100 to 0.
    
    level.setValue(v);
    // variable 'level' is set to the value of variable 'v'
    
    });
    
    t.startTimer(30);
    //triggered by the setTimerCallback function
    

    edit: ok, that's just me being an idiot 😬 , changed it to just a label ("VU METER") and it's working. Have changed the script above! Hopefully someone finds it helpful...



  • Managed to get this all working. Put a link below to a project showing how to do it. Hope it helps someone out...

    Does anyone know what the best way to make the fall of the meter back to 0 smoother? Is that to do with timer objects?

    https://we.tl/t-pspQRut6sF


  • administrators

    You need to filter the value you show. Pseudocode:

    If newLevel > oldlevel
    Then level = newLevel
    Else level = level * 0.97

    The number something between 0.8 and 1.0 determines the fall-off speed.



  • Thanks Christoph, any chance you could explain that a little more? I'm not sure where I'm getting the new and old values from?



  • Am I right in thinking it's kind of laid out like below?

    
    const var vumeterLeft = Synth.getEffect("Sampler 1 Gain");
    const var levelLeft = Content.getComponent("VULeft"); 
    const var t = Engine.createTimerObject();
    
    
    t.setTimerCallback(function()
    
    {
    	var vLeft = vumeterLeft.getCurrentLevel(1);
    
    vLeft = Engine.getDecibelsForGainFactor(vLeft);
    if (THE NEW LEVEL(how do I find it?) > THE OLD LEVEL) {
            levelLeft.setValue(THE NEW LEVEL);
    } else {
        levelLeft.setValue(vLeft) * 0.97;
    }
    });
    
    t.startTimer(50);
    

Log in to reply
 

5
Online

337
Users

1.0k
Topics

7.0k
Posts

Looks like your connection to Forum was lost, please wait while we try to reconnect.