Group Details Private

administrators

  • 2.0.0 has arrived

    Hi everybody,

    I am heading off to London for the ADC now so I thought it's good rolling out the new version before this.

    https://github.com/christophhart/HISE/releases/tag/2.0.0

    This also means I am finally back on the master branch, and I will try to follow the GitFlow principle from now on more closely 🙂

    There is also a new example project, which will be demonstrated during my talk (the video recording will be posted here if it's available).

    https://github.com/christophhart/vcsl_hise

    Please have fun with it and let me know if there are any issues. The idea is to keep this thing always working on all platforms as test case.

    posted in General Questions
  • RE: updating changed images

    That's how it's supposed to be, but I got a bit sloppy. I'll clean up for the ADC next week and merge everything back to master.

    posted in General Questions
  • RE: Host transport callbacks

    I think I am propagating these events as HiseEvents that can be caught by a script processor's callback, but I forgot how this worked 🙂

    What do you want to achieve?

    posted in Scripting Forum
  • RE: updating changed images

    I really need to add the info which branch is used somewhere in the about panel. Did you use the master or develop branch? the master is heavily outdated and the develop branch is almost a new program.

    posted in General Questions
  • RE: Latest HISE Build, anyone?

    Yes I fucked up the macOS compilation because I went crazy with weird metatemplate programming. I‘ll commit the fix in a few minutes.

    posted in General Questions
  • RE: updating changed images

    Which version are you using? I added this a few months ago.

    posted in General Questions
  • RE: HISE crash when try to control the CarrierIndex

    No need to hack around on the scripting level, I provided a fix for this. Just ignore the value if it's zero, it won't cause any harm anymore.

    posted in Bug Reports
  • RE: Lord of the Knobs :)

    You simply need to make sure that the actual value update is fired from both callbacks - the knob and the ranges. Move the logic to a separate function and call it from both callbacks.

    I've implemented this along with a few comments. Also note how I tried to use arrays wherever possible which heavily simplify the logic.

    Content.makeFrontInterface(700, 120);
    
    // Set to true to print the values to the console.
    const var DBG = false;
    
    const var simpleGain = Synth.getEffect("SimpleGain");
    const var mainKnob = Content.getComponent("MAIN_KNOB");
    
    // Store the button references in an array. This will make it
    // more easy to set the currently used range
    const var rangeButtons = [Content.getComponent("Range1"),
                              Content.getComponent("Range2"),
                              Content.getComponent("Range3")];
    
    // Store the ranges in a globally accessable array
    // It is multidimensional which makes the logic pretty easy
    const var rangeOptions = [ [[0, 50],  [-100, 10], [1, 10]],
                               [[0, 200], [-10, 30],  [100, 300]],
                               [[0, 100], [-3, 30],   [1, 30]] ];
    
    // This will store the currently selected range
    reg currentRange = 0;
    
                               
    // Changed the function to take a [min, max] array so 
    // it's compatible with the new functions below
    inline function normalisedToRange(normalisedValue, range)
    {
        return range[0] + normalisedValue * (range[1] - range[0]);
    }
    
    // This function will be called from both the knob callback
    // as well the button callbacks to make the module parameters
    // stay in sync when you change the range
    inline function updateValuesFromCurrentRange()
    {
        // get the range we're currently using
        local rangesToUse = rangeOptions[currentRange];
        
        // grab the current main knob value
        local value = mainKnob.getValue();
        
        // get the values for each parameter
        // (note how we access the array within the array)
        local v1 = normalisedToRange(value, rangesToUse[0]);
        local v2 = normalisedToRange(value, rangesToUse[1]);
        local v3 = normalisedToRange(value, rangesToUse[2]);
        
        if(DBG)
        {
            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);
    }
                              
    inline function setCurrentRange(component, index)
    {
        // Update the current range variable
        // Note how we can use the same callback for every button
        // and just set the value by checking the index in the
        // component array
        currentRange = rangeButtons.indexOf(component);
        
        // Update the actual values when the range changes
        updateValuesFromCurrentRange();
    }
    
    // set the callback for every button
    for(r in rangeButtons)
        r.setControlCallback(setCurrentRange);
    
    inline function mainKnobCallback(component, value)
    {
        // We just call the update method here, since the logic
        // has been shifted there.
        updateValuesFromCurrentRange();
    }
        
    mainKnob.setControlCallback(mainKnobCallback);
    

    Here's the snippet:

    HiseSnippet 1980.3oc0Y08aajaDeW6rswpmKxc3d7dfPOzacqhOsR2WnGJhh+HAFo9CD4jb.FFoT6RIwy6RJPx0NpAA3dnu2+g5CG5eI8g9GPe3tmuaH49AkkrpbJthKxFIhCmY3uY3LC4PehfGSjRtvyeiSmNg34+dA8mxTi2cLlx7NXOO+FAGez9O4ni2IxamoSvRIIwy2e8Gqm2ei63Y97edvN3TLKlTSxy64bZL4OSynpZpmz6IzzzGgSHmRyb39S6cPLmsKOkmCXY8f1dSvwWfGQNBqYas.O+e09ITEWzWgUDom+c1gmLs+X9ULK+OmJoCRI5AQd8AEYI+HdZhFwZpd6NlllbRoMK8.sbRsGXcqG3CCNjlPqnW6ItmYBTsDt9C+0VF7hbgW6EBu1KBd9Nv6NV389A8iEzIp5YzX62Db.SQDCwvVfKrr75s1VuWvtbfClZ6L7EjGIfAURD9Esa2BE0o8Ve0lM1rwm7In9DERwQJQNQ++SDTFPXLAcINMmHMyAifsLIOkr8lMzeSAyJP6syiQ+IzPbpjXzV8LRZ1jThNvAXvDks8HhZ+gCIwpvl8qlsoFF0hkAjdBiO.DpzD.w1kmMgyfAgMO7gGbzK0QnMqwOrSPLPbPtRwYHAYHQPf.TIBVdL7qPfmtM5zwTI5JHjDocKHpxHdlVZBVNUanRh0ziyEfFToSQ4fyEIvrQDWbZHriY4j.VOawf8oZthZtUqMaftwOKQzNu8h1s4VmOuCx.aqWAMJkO.mBVHNVGagg.VqixHyAJD3rxxSUPZPFgIobFNEc0XZ7Xi6SZTXJeDMFBYHJ0TiSbNmzwSTzBmD5ryfPuOq84sPnytejINTO3rHyWNeo1pU3NsMB.B2B00pHid51d0jOpP9tkhaVb3qmipbW0gIxJGWc7fjjBgv0wDBxnxYMNdvPaazzRfhYYfZM.6IF0OLmEqcSlbMcrIFcVFk0B7zu5b6tBRxsxQUerDRFylfU5hL.RUiMJgQtpRQRz.RJ+pMaPYoTlyBv3hLbJEBpOkavaXMkmqy2aYMrs1rwqs1.r2lKXVpm09bze.cMIP+dTnc1nyQ2uhQc94abcoUXv3aG.NUH7Cb.CE7Lz.dgUbgN6WOy.3LAivXX2f.R3jgWNuo3jIYVOYFOIGbHSvB3bDnbmzHtTANOHhWNkECwuDFZJOGEa790IEy6oxmj.U2MVnDJglsqylbXs6AVgQEEMLJBv5GKls.BkMxxaJG.dQR3o7mI0AKtIIm4FHoiGsAKkKi.OvMXzTrz5uLUpcWCCAP6k0S0kHLlR3VyoVxLU6GxEPhLjjW4Fq3DBUTDDbLGXiEUMLRZiO0wg.dpHr0L3IB.y7wdW5DwY8HEANNR1YUkL55R1cUkry4y5UnCCgS1JLfWWmJuawQfliHCadYzeD0DxGtLpT7EwTmBl5rLl5VvT2kvz8gOvod5YLr7FWHWed61vYXOToDTHWgD5P+EzD03VknciUPB8+zp.4qB+6QRwSaYrhFuYYU.mOaCT4LIXwkmm0BxcSHuZlDtmYRMmIWvl6Am5P0GjUw4QNQrwvMAfSyMhIgP6ppH1X9KIhoE0WpDGyRPeSNbblzMIAMXJT+fDeAjXanZPHxF7WIakETdppl90Nov8ZDaazxwCqM84RUcrabrJuLOWZKqUWBxVbSZka40w9ppZzUW84l8J.kPg1NcwcQZhPGUnuPhfmtagJBu1tp8JaWequrFUkTN68F6al89WPr6HZXZvq09PPopw7DzX3lesfrA31e0WPoR3wX8AifuRNlNTYO7UnuR6J5nr6FUEUWfEeciwZx5eprWNSGUdLKbqFutwFMdybyLb3hlpXkRIhEMqtCKwRDKjkmMfHJ8nE7AMZLamLMt4NYbazJ1dwSGF4rCXT0wSHUisFYIk1dUFmKoZixkpwXV.a0jlu8IuhKCq6yqfcfUkoMpeaQaT8SoIDgGMQ2CUUmDdFWRQ6oe2OD9Odf2Mo.aHuQA2Mvd69RoC7M81t5R14sVxtyfXSG4dO6f8vJrtKxB+.3alPDJpdW0eOxkP641dJ2HXOh7BEeBzocUWCfSakbUupZQ+tI8lVM3aOtmmittqUWaV18JlQRKL.y2ibziWSG83E16J8oTUDP+sdiIzQiqeUgu8w8FvE.15S+qy7BDVpOEmPyktz8Wedjsr8SGngbg1GcMn4874fVudvklf0wcAKsXA.L9iE77I0Z3tKxqsrHFG2+W+KKr00Eai94Gay+VI2K3P88+wpYeFG8ESJl.JHNy6kneSDnwV0T2Lo+meamE8zSqJbe+fSnp3wKFuqs.7Bg2+bi2hWJay.6i2TC16D7nu9s8Ywhd6dVrec06VVcoSCTlgvM7xk+quO7e+.yMTKH7W96+y606EyFa965sf21ze8Ysq0WM65+xKPt73.yKm8NSb6GDXbruKAXyF+6N.9d55g+B.tOkmqf1dNDCs+AU7CNJOqOOWDSzOmETvVpuOyZ5qyXG2t79M8IrDyfeD9TLYjdrewjQkS9+k0HCGK3uL1dmKcp4cMT.6lY9iPrQvg5wnp62o8MYzD5Kii0k9tO3cVrDct0Rz8VKwmdqk3yt0R742ZI9hasDe4RjP+2e4g4JdlMdGHbx9l6356uOS2juIz26mPV4e3T
    
    posted in General Questions
  • RE: HISE crash when try to control the CarrierIndex posted in Bug Reports
  • RE: updating changed images

    There is a floating tile called ImagePool. Add it somewhere in HISE (eg. the custom workspace). It contains a list of all loaded images. Right click on the one you want to reload and choose Reload file (it has a few other nice features like drag and drop, preview etc).

    There are other pool tables for all other cached data types (audio files, samplemaps).

    posted in General Questions

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