HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. Mighty23
    3. Posts
    M
    • Profile
    • Following 0
    • Followers 2
    • Topics 93
    • Posts 345
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: I'm looking for help with a paintroutine

      @ustk a little oversight that was driving me crazy, thanks

      posted in General Questions
      M
      Mighty23
    • I'm looking for help with a paintroutine

      I'm trying to create a correlation meter in a panel. I can correctly display the positive side, but not the negative side.

      HiseSnippet 3019.3oc0Z80babaD+njO6XFq15LoM8QLZ5zbTVjljRx1wNpVxTRwZpkkFQYmzoSGMf2giGFc2gK2AJZ5L9s9P+Jj25q807QHu025GgzmZeLeCZ2E39KEirrpiaK8XSBfcw9C6tX2E.l8BIKzg4bbRHOJhIMLpM+AwBaVRhH1nV8ilDwLpcCy9SBkd87n7Pic2xn16YdPLKAH+QShnIILGiZ0l+yvQqc8qXn978O7QTeZnMqnKCimK31rmvC3xhdOXieK22eGpC6HdPIpWcicsEg8D9hQ.Rl2rsQD09D5P1SoHYyYZ7XZhmQskL+j0VqC0w8ttcVoymLvw0lsxcaemUuaW5Z2y08ts6r5JN20cU.jWcaGtTD2WRkrDXRejvYReOw3Ps.dNOgOvmgM5XzGjrtaiddbemb0RBnjLKojlWqj9Py83N779KTV+L0.jBNJqzpM24AoNuAPpVIHcEMjtoYe6XdjrXDDOuu4tgRVrKErMkghlVi49Gll8D.EgxVAzSX6DCMx4v5t2o8xjUWociGrP85291jdh3XlOUxEgj8X.UKTGLaIRxozXRb.Ycx1gC4grVCYxOyWLf5enXjjGNbOZHXLisvIpfinPe0r.7kABfwdhfHQHzvZwLBVD4aADAOKgQjdLB6ETaIY2sHSDiHComp6cnRlGaSAsHIT3vH7PhdohsJK6RKkdJxWGV.JwisrVb5wKAgHGv7ks9mltVwrg7DXndTe+AfSrk6nPakFy5Tp+HViEp+UKTm.ef4ZK1fQCIQw7PDUvnIDoffnT3yzT0S2nkhnJ359jEI2RylFbH4YprV.HosTCBKM02O.kXB3+wzsmhgXVDEEQiGPx+.LDybhoiIQzPl+B0e0xjMSlDZ+Tgj6xsU3.XHU07XQL+kfkj5CqgBWk.kQFmFvUXg54RDBpb.JRsSBKWSYMrPIMrkKDwXSeeq1uXmc5zF+SC0JAUtCiEiBcxV6ncMaEyS1h4BSpikzimTRazf7PxTcQtOo8CJOIigIPQC3O74bGomxwMaTuRi9XFenmrxvAbGffwjaS5lOo.bg3B9.dHVsKqaZjsJSPGeL7mZcp+jMqZcvgLao0uGl8kIvtxNKS79CMpf5AzXEXAouGU50hNHI0kirDhpbh4to9hjeCocJBRU2yBLqtZud24NZk9vXFKj3JfMuhDtjCa7JsZJOGmExJPEPegU2kywZirkAxzqzew7gM4EX7SuHXrWuUgOZLBdrJDFxFRuvHjz7GBeWPj+J72460EgvND19gVMp+U0ud8WUmL8PttybLLPXrv2GCVNigwzlwmGiVgiBFvhWNMtPFgPZhp4dt5EK2isNtbIBEg6Fxk6GwRauiv2Ayof+9rYpLRCrC+5Y6tEriCSdk1GPWDKVxQ3TaK1oP4B5TYW2bKVxIRQjh1zrA.jkpQWHKQGFQxfChttYVHEiWTTSwuaiI4M1fswXznAIyq8qmyvvSssEa0UUVxYxlB4wENi.elpI2wxdRG.z5UxnhYMCgsDSJWVzaPF+1maF+KJDuo4Abos2rw3by.if83GCLlVmzBla65BawJ.3UL24KtrEE09Mtnn5o9JfLQgeizljc9hNypbnZ+IyhsTQXBwX1QhC7oSrRnAQ9rCALBg.7E1mzm+R1Y2GFogviPJrr8ngfOZxkY65UeKUpnQdEXxXNr6v7oiB5CQMsY8RQGtKXNbmptcarM5WzGNrfpw+B9jNXGrcszA6jMXoM4OkIGKhOQYNR+sQsqg59qYp2gBoxEiwc07TGT85gEmnZbMy1sf+nI6.g+jHOQH2FMRZlxv8lAPpeYF3giGbDk6iN48Gk.Amb1OrOPr5LInS1Sg5+.s5NPYih3IGPwXA2zDCuAdlPsH14dnY.sv+.0r5ChjMFNaYmVQqs.vEnhRAmUo1733nNHSr540kNJQZTAB2.fPLqkdjYKQ8XuNIVJXJzSZKXe9bnnutYOeXl20w34naFdltd5EhwTT9SQ+iCnwTUMaIYzqBtWpaTDYsfk2d7vTBKBqrG8ES022+v9RVDtuoRemvFqUIk6Ue1kM8GBUTJ8BLNyzabNxei+9K+iObJ4+m+5u9uNs7+t8Fbv4H+OPc1ogw5hXUGXcpY7u7Pi9iw3sGQighAUd8k6HMYWHSsqOoZyTuCvnT6mXV9jKEKMbrqYpEpQIWoonuhG0uvLVuiuUEZlku0TSSYWraXtZ26sxZ2q6J26NmmmVso7etgYoEXp15CLm9PRS4KUqjszrvVdUylcfHAEFRSSrcgQ7pXrhNoaZ0zr4HoH.BYpR2YTjFL2.UQxFul0xtIOGG0l5msVfI8QBwIATULtKUMMkSS9Q5AeeyOGNBq5dWTqletpMTCa.4yXPzILGemy49W9aWz6eI5Be+K6aKAHbTLMLApzm0o7L2mEvOBJJKoRuSwQ2YxQkd2hIGEVcp0cUgJTUrCnJJQ2GtQVmcK2ITQXkICZWZ7s2XOdoxC+tGtcH5K1mAqbm8SrAECcpn.GLBNJhpZ+NkYrn6tk69wzXGvFZWo3p4qlG+JWr73UqyrD8ynrmq9i00SckKVkXulC.7+90VWovwqmgw9brfusCOk4CaoMzID1hAYi8kY8VcO4dhPQV0JEd.GxfBuFNjUM8xrVPaJkT6SJ6PeHymQSJsO8WswSfpUnw6oxEbozEu42r3LsW+RSMbU4EI+mX2dm5lctmOZ9Kz4idqi2K+YkdGuCEhe9+OV5OxDho2knL2j+6aueWbLr2ExHfZGKN1Ve5ULfw6o5AV2gpZJut4dXaRGiSmtj8.H0yw11UmpyvX2KKiqbYYb0KKiqcYY7NWVFu6kkw685YDqLHs7YbeBbBtC1VUcasZ5JkTaYLXACXNfmt9JSPW67dBYuXG3L2pzHtbbKxb3WZj7A5Cxd6doOOQRT1kKZL2+78LgrshXo0hIRGEcs74CVrwCvmcZ82peTui09Gd31OYyi1c+mR1a6i19PrS7uaRvmtgIHQdPd2Y7HFROpj.ayhFISHzzWaX.SNFuV7lcHzPGxs5fSEOzQ89HgCUOMkdBylsDOdTNa9LWohwX7RIIY2ZTKXVvI5VcHqSbG46OIGOLGhU.TsQCbbR67wcXkoXL2gktdTD1rXhngRdyxzBKIhvUixFu804n3KeXZIVzf5w3.jPr3gjDUY3IMHMIxIQ3QtHvIIFxHcZ2rS61AI04E7erh+0IdI9vZL1ZwoOn9hKSfiFtl5e6f+aW0Oa2Q6QQ5GP88K.fTf212ofuHwgeJGuIJxfIjWxhE0YQIben85jNL.IpWXXmMeV+iHftBbAxuSO7IGvmEhL.zk69wADeQh1tNVLx2g3yOgodcOne8yUppvDOYsF3Ma07iUn6IhwMwjTDX2C5zYC6JccItwrubDKzdBY.XkbH.K7ozo08ibOFoCgaq1jaSr5BesDIf15fcgumVIlpOdDMgaOC28pHrdIBNNH8kaOlrL726Wl4iAqmc8wboG4qTOOxziY4uLItAvre7w50Hrb.rl7kPH.+tE8sDItnUCxsHoViFposjDRejsdwhjjlkWG.mADqm.yzgMxorrXWmX4ixoArFb4s7EiQUuE30joKAcTFikkEFq7LhJAj029MJq9ge62TRhcOiD8uPRLtJiwWHn9pGT+UZC6lHqg5mAaJ2sQIXrojQA21gCEdFi2UJZ18DNm0PeL0WdNFab3yyfiimazs.YdbjXL39zjfxV2ngxCHenaUZnWigGYJgOTqXuEJjkfc6qUnDUyTNEMmAEExMEeH0KkMyWHKUI3ByQtHWJW5uQlszK9DhK5yva2qNMuq0I36gEOwZwbxVT8Lk5mENKF2dPkvU1RiFhzpf0ZP5TRY5s3HC4F8O89Dqy3VrLYldJ3JUOkcsxERJr5clfLJr7rcILs2YBXfbE30+mk67zQZBinRzattspYt+DEOHpG17GHNy8IdCnwPXuHuJ+Gn.zZMUJrF.YZzkVydQT8lYUDvCgb9KmWe.XAkdwhQC8z3urh1gmD4SmTO8wf.HpQ7CpaX7uAIq2q8.
      
      // Horizontal correlation meter drawing
      pnlMeter.setPaintRoutine(function(g)
      {
          g.fillAll(0xFF101010); // background
      
          var value = isDefined(this.data.value) ? this.data.value : 0;
      
          var w = this.getWidth();
          var h = this.getHeight();
          var mid = w / 2;
      
          // Midline (0 correlation)
          g.setColour(0xFFFFFFFF);
          g.fillRect([mid, 0, 1, h]);
      
          var barWidth = Math.abs(value) * mid;
      
          if (value > 0)
          {
              g.setColour(0xFF44CC66); // green for positive correlation
              g.fillRect([mid, 0, Math.max(2, barWidth), h]);
          }
          else if (value < 0)
          {
              g.setColour(0xFFCC4444); // red for negative correlation
              g.fillRect([mid - Math.max(2, barWidth), 0, Math.max(2, barWidth), h]);
          }
      });
      
      posted in General Questions
      M
      Mighty23
    • RE: Correlation

      @udalilprofile
      I tried to do it in FAUST, then the value in the UI must be made with a global_cable and draw its value in a panel.

      import("stdfaust.lib");
      
      //==============================================================================
      // CORRELATION METER
      // 
      // A stereo phase correlation meter that outputs a value between -1 and +1
      // indicating the phase relationship between left and right channels.
      //
      // +1 = fully correlated (mono)
      //  0 = fully decorrelated (wide stereo)
      // -1 = fully anti-correlated (out of phase)
      //==============================================================================
      
      // Integration time constant (in seconds) - typical range 10-100ms
      integration_time = hslider("Integration Time", 0.05, 0.01, 0.2, 0.001);
      
      // Small constant to prevent division by zero
      epsilon = 1e-10; // FAUST has a function for this but I'm lost and would like to close the implementation -.-'
      
      // Low-pass filter cutoff frequency based on integration time
      lpf_freq = 1.0 / (2.0 * ma.PI * integration_time);
      
      // Basic correlation meter implementation
      correlation_meter = _ , _ : correlation_calc
      with {
          correlation_calc(l, r) = lr_filtered / (sqrt(l2_filtered * r2_filtered) + epsilon)
          with {
              // Cross-correlation term (L * R)
              lr_filtered = (l * r) : fi.lowpass(1, lpf_freq);
              
              // Auto-correlation terms (L² and R²)
              l2_filtered = (l * l) : fi.lowpass(1, lpf_freq);
              r2_filtered = (r * r) : fi.lowpass(1, lpf_freq);
          };
      };
      
      // Alternative implementation using sum/difference method
      correlation_meter_alt = _ , _ : correlation_calc_alt
      with {
          correlation_calc_alt(l, r) = (sum_power - diff_power) / (sum_power + diff_power + epsilon)
          with {
              sum_sig = (l + r) * 0.5;
              diff_sig = (l - r) * 0.5;
              sum_power = (sum_sig * sum_sig) : fi.lowpass(1, lpf_freq);
              diff_power = (diff_sig * diff_sig) : fi.lowpass(1, lpf_freq);
          };
      };
      
      // Algorithm selector
      algorithm = nentry("Algorithm", 0, 0, 1, 1);
      
      // Main correlation calculation with algorithm selection
      correlation_calc = _ , _ <: (correlation_meter, correlation_meter_alt) : select2(algorithm);
      
      // Correlation meter with UI elements - following the vumeter pattern
      cmeter(l, r) = attach(l, correlation_calc(l, r) : hbargraph("Correlation", -1, 1)), r;
      
      // Process function - stereo input, stereo passthrough with correlation display
      process = cmeter;
      
      
      1. Two different correlation calculation:

        • Direct method using L*R / sqrt(L² * R²)
        • Sum/difference method using (S² - D²) / (S² + D²)
      2. Adjustable parameters:

        • Integration time (10ms to 200ms)
        • Algorithm selection
      3. Real-time display:

        • Horizontal bargraph showing correlation value

      As for the implementation in HISE (UI) you need to connect the hbargraph in a
      global_cable scriptnode and draw the "bar" in a panel - this is more complicated for me 😧

      Since I'm still a newbie, it would be a good idea to properly test the implementation before putting it "into production"

      posted in General Questions
      M
      Mighty23
    • RE: Modulating in Scriptnode with an Oscillator - what am I doing wrong?

      @Christoph-Hart
      6252a86c-bf97-41c8-9aa1-39fc9d0979fb-image.png

      Oh, rightly so, the frequency was too high. It works now—thanks.

      posted in General Questions
      M
      Mighty23
    • Modulating in Scriptnode with an Oscillator - what am I doing wrong?

      Immagine.png

      These are the nodes I'm using to create a modulation signal, but it's not happening. What am I doing wrong?

      posted in General Questions
      M
      Mighty23
    • RE: Free Reverse Delay built in RNBO

      @JulesV said in Free Reverse Delay built in RNBO:

      Thanks for the update, it sounds better. I think you made the transitions smoother, right?

      Yes, transitions are smoother now because of three changes:

      1- Smoothed delay time

      delay_time = si.smooth(ba.tau2pole(0.05), delay_time_raw);
      

      2 - Hann window on reverse buffer

      hann_window = 0.5*(1 - cos(2*ma.PI*window_pos));
      reversed = rwtable(...) * hann_window;
      

      3 - Gentle (?) low-pass filter:

      ... : fi.lowpass(2, current_sr*0.45);
      

      this is to try to: avoid clicks, reduce aliasing

      posted in Blog Entries
      M
      Mighty23
    • RE: Free Reverse Delay built in RNBO

      @JulesV

      import("stdfaust.lib");
      
      MAX_DELAY = 192000;  
      
      // Phase-shifted phasor for reverse reading
      // dtime: delay time in samples
      // phase: phase offset for reading position
      phasor_phase(dtime, phase) = ((os.lf_rawsaw(dtime) + phase) % dtime) : int;
      phasor(dtime, phase) = phasor_phase(dtime*2, phase) <: <=(dtime), (*(-1) + dtime*2), _ : select2;
      
      // Single channel reverse delay processing
      reverse_delay = _ <: direct, delayed_and_reversed :> _
      with {
          // Get current sample rate for scaling controls
          current_sr = ma.SR;
          
          // User controls in milliseconds 
          delay_ms = hslider("Delay Time (ms)[style:knob]", 500, 20, 1000, 1);  
          delay_time_raw = min(MAX_DELAY-1, delay_ms * current_sr / 1000);
          delay_time = si.smooth(ba.tau2pole(0.05), delay_time_raw);
          dry_wet = hslider("Dry/Wet[style:knob]", 0.5, 0, 1, 0.01);
          
          // Direct path with gain
          direct = *(1-dry_wet);
          
          // Delay into reverse buffer implementation
          delayed = de.delay(MAX_DELAY, delay_time);
          
          // Reverse buffer with windowing to reduce clicks
          // Use a single buffer with smoothed reading
          write_idx = phasor(delay_time, 0) : int;
          read_idx = phasor(delay_time, delay_time/2) : int;
          
          // Apply Hann window to reduce discontinuities
          window_pos = (phasor(delay_time, delay_time/2) / delay_time);
          hann_window = 0.5 * (1.0 - cos(2.0 * ma.PI * window_pos));
          
          reversed = _ <: rwtable(MAX_DELAY, 0.0, write_idx, _, read_idx) * hann_window;
                           
          // Process delayed signal through reverse buffer with filtering and gain
          // Add gentle low-pass filter to reduce aliasing artifacts
          delayed_and_reversed = delayed : reversed : fi.lowpass(2, current_sr * 0.45) : *(dry_wet);
      };
      
      // Main stereo processing - apply reverse_delay to each channel independently
      process = reverse_delay, reverse_delay;
      
      

      I tried a few additions because the previous version worked decently with mostly percussive sounds, but with instruments like vocals or pads, it tended to create too many clicks/pops and glitchy audio.

      Test this new version (milliseconds > Delay time) included.

      posted in Blog Entries
      M
      Mighty23
    • RE: Parameter restore in Pluginval (compressor using scriptnode)

      @ustk said in Parameter restore in Pluginval (compressor using scriptnode):

      When you turn the attack directly in the HC FX, it goes from 0 to 60,

      ok thanks, that's definitely the problem but I don't see it that way, I see correct ranges - very strange indeed.

      posted in General Questions
      M
      Mighty23
    • RE: Parameter restore in Pluginval (compressor using scriptnode)

      @ustk said in Parameter restore in Pluginval (compressor using scriptnode):

      Why having the Attack using the callback to set the parameter and all other knobs connected through the property editor?

      Initially they were all connected to HardcodedFX via the Property editor, I moved the Attack callback (knob1) to scripting for testing purposes; the error occurs in both cases.

      @ustk said in Parameter restore in Pluginval (compressor using scriptnode):

      @Mighty23 It might not be this, but the first thing I notice is that none of your parameters have the same range as their targets in the hardcoded FX... Start fixing this

      I don't understand this one. It seems to me that the Min, Max, and stepSize values are the same for the knobs and the HardcodedFX parameters... that's definitely it, but I don't get it.

      posted in General Questions
      M
      Mighty23
    • Parameter restore in Pluginval (compressor using scriptnode)

      Hi everyone,
      I’m building a compressor plugin using scriptnode in HISE, inspired by the Distressor. When I run it through Pluginval, it fails the Plugin state restoration test.
      The problem is that when pluginval saves the plugin state and then restores it, the Attack parameter value isn't being correctly restored.

      !!! Test 1 failed: Attack not restored on setStateInformation -- Expected value within 0.1 of: 0.728435, Actual value: 0.131516
      

      I've investigated, but I can't figure out the error. I'm sure it's a problem with the Attack parameter and some inconsistency I can't find.

      HiseSnippet 5668.3oc27rzbabjdCjz30jxNVdW4c2ZqbXBK6p.snfvKRBZEai2jPBDDDC3SWNZGLSCfgXdwYF.BHGU1UpbJWhOjK6s8uvdL2zOfbX+IrmxYeKmRo7087pG7f.fhwQaXUhTS28W2eu5uWcOScScQjkktISjUaNx.wD4CX4GoY2sPWAYMlJEYh7gr1cksrMcFV9QFBVVHIlHQt6t3gDYk6wP94m957BJBZhnflXXNVWVDUUVU1Nn05YetrhRYAITSYUpQmNaEQcsB5J58Az4trwYLDD6IzAUS.Or6vxrmfUWlHeN6NatYBAo1a2NQpD6zRpsHJ01w2J81IE1LS61aGOQ5TRa2NMfjuWIIYacSdaAajESj6kWWZDeW8qzbVfiksjaofvOjfgGVYmlKqqHgIQbqLE5JqHU2iOYwvDgsd.W6tNbsGxturjre6AbuGP5fK.BZFXj6DF8taHzKAM5EmB8lBJEgBktmCJ8wr7hlxF1A8fwm6yVQyFY1V.jSznhyXYty+8CYKnCiPyNlpPOTYS3AeHhtU73avkZm3q+zU4Q11xZcrhYgrOWWWsJZ.RIZhX39Jo0QVCESQWPpL.eNqnq8c0abvyJUn4KJeP0hkZ7Jb6VOoul7isDzrh0EILXziEELrhoa2dsMV6HMYbG4pVsPt57qELovxsqhdKAE7LDcJia0m7DtcyUoFWiRR8Esk00VETqrr4FHXxYpx8kbtyTGuYpgdeLorufFnrYFEli..v53UQssAvLUwfTP.jHQWyq80lXzMj6zcpCuQEnCBFF.fglxtMpBi1ioiAQW0PWCgoNmtCuFj1Zb8fzXrkQo00tLNcGdYHs035AwYYZ2Wivl4L06qIkH5v0W86VkC9wDY22TiaeA6twH8EcH2mykH95bOA98SW8UXQ0QFRfxOgyw0.4Jw3NVPoOxZUOtbLSTGvFDxrffhRKvpPT+EM5.7PWmyYIcXXXkDxL314So6yDY.ypcT2VI+BSvcLK1Byhv5vbOlycZ+btsh+TmA4vkvycz0rQCsWaCt0d7ZbOxitISv5vyqwIkeM2oGnPfAZoqfhYXhW10nznv.6gguZCtbVizDqoaK2VVT.SbXtquJ0BwCVwiRZLKJYEGI20SFMnIi.lWiqgw1flwNKhA3F0wigyYKGhqrKIDnDg2eiIYOUAx3cGdTCAMjhurF+.FiBMj.lRGuAh+oSr1fSmbJJQiOrb43kyjKU40eJV7jGXkcHzN0fsvJ6XGQNCOcpxIx6L7cMQHswUW2GAxkU8gGKDHLHPHPz9EZYEE6EEuIxg+st6rgrcz043EZiTFEZJTwy5dHW6Idv6zPTr.krFOMXcgIrnovUNnCWaScUt7511ver04ZpaLF2nARzN52.VzmXpeL8ZGz+IxR1cit9Fz89stJAuZc2Mz4LLTFMlXFVdf0CMBRLqUudQLYWJLYyeTMbUoJbv94OH+AmVhmx9EXqpkdd8gIloIL+QrlirfW.LWI3HO0kPSYtRN24JoybUD3Oi65YOASIQXdk1W.uKt7oXLiDqEdtJ0tMVZr1jihrETVSAyG8UtwwI4thXDxTWIpnG1rg6NdvJ7JSNcXU6b11lxs5aihNk9cvccS2og6wIvRV.GlKk6rqgfM91nlDQudxIwsN4.1L0MwqBVnNNQMWMiqmlRPQSXUeaaneJY9y0zaMaEPRuyP7R561lW3feaD3yYVL.WLa5DOMpgQdLkWMW4ufvT3ZoO7K7B8PTs0KTDZSw.DMQf29p5hBJU006kSSpLBBaDG4gyX88x44YH5ZRfIMOFN3rxiIEsyFb5st.3ENNww7aAXof1hI.KCk68PV44DAC6lbQsfrJ3Dr3.lkMvxa4Of0cgYbu.kKWJ8Vautaz.tlPw.fjvVREz5.Q5IrA2lqGdoOnuMQ55ttRBl8.qyVcgDf3ZCsHhYkfLZ8UuNeOtchYFScQ2fKgmuZXMaBN18VvtBZRJdKOwofCIaM4Bh4c3XBbdzeQgAL0nsg0LSHLKmhbGMjDd08mqM39FguI92BATj.b0H7MI9V7uS9sfSljjFR8sPKqo3DLMmOITzT2PBREhSvzT+Jtn8sfXz4vLcNr30gdV2O7stfnGOWDS4tNM0aCttvTtqhIdRPRDltyjZI+RzBw1wKaSSYG1sG83REcgvYSA+0i7fdHMsQn+.zHITf5Uva7VmXO00HBdomXKg69g0ep+3RNmwg2GVovA03CmrPcHycjMN05qKmgfQENMfV1ZNcMSf8GwX4bXMnyTWZGS.7Guaz01J9NwzZt0yyTHwn7u7xhwNs7y15n7aO3ppwjprmLeU9Boz1Ke7bMSOrvEGe51Mab9Qwz2qh0iNnE+lGTX6g6d.ZP5b0EicQ4Xmeb5sunVgSz61QQ94mWoZOypkO+j5mwuYomkV6.4NiTR8xcrsskpH2oiV6sO94c50d3wm13k1GLnPt7wFxeN+l8FVo19Za2qdE9h4Z9bit4K7L97sd1yezKs6e4kEx+7XBBxaFue45wx2quYupGVLSN9ZwxKWWOV9Lmr6gcJUsd2c2rRMqxc103zFE2s1os2smUNzg6d4g0D3uDcVJCypZ6wexoGVtPgNWToapL6cTb9DWlqxo8Ktsjoow.ssFbR+c0ub+gmwedwbhXiiw1LexCRkQp24sN5rizA0YcYwsyzrhP8cs6dIhu04CNsZMzKsM0ZpiFdxNR1CO57yNslw95F16bTtmWtWe08MzeV0iN3J8L6EaO6jYN5jZHCDRXT83GsovVaJbhFp546T6jmkbXiVWsy9RMyHp0PcyMS1+py1obxz5RY5Icw1hmu8VaUU7xz7p7pcSK2n+NUsyHr8oMyX0TcTZ0Z0NJi09CKodfzYZaKcw4F6um4t6egN7uKa0L9QGUSNYgxMKtiwvmUX2bkhE6BPBjBDHmleGsNwPhloZNT8py1rFJ9UCSelQSXgDLdYI09Gq2by1k0qkLyYcGURAkH0wI5aWEs4vLVUktHiZCC9CQacgb59CqD25jM60CvVqV6bYyFWs8UWdBRnfLudgz781AF7i14v96zre5dGteBc9KONgY98ZeVLYQkbmmBYd9wGdXsAGJpTbqxBc5ra6RsGDKYtNurm5nD10OQJ1yKeZtNkTNu3o00xKVp8IGcRUoBVGMTemp4Kl9kubPiSZjLW8Aw0yeQilOJ1Y8RKumcF0l1GN3R015wNI0yezkmVTXSiAcsqYdQesQMRE+7lwH6vBsYclo+.Y+r52sxpqPaWy4OVwtpqrM18+JNFswaECsYMHfeh0l7X2MVQiutiKlWMVoEDZ2zD7IX.Fk0rWHW8gAYFd7ap2Ar0lm3oZpd8CSaXuMs5342B68ckY3g1K9fM3RSJVEld7sgMUSrgwWu7XIieZlZmuY1YDymOVbsw8I21Meetu7KAABzxJ9SrSV8CbJaHv0rMww4ApAuB92XfF+5AssfhEQIwE3YFqHk8+oGu33j05OkhlqoaiNPKJgxf7G4Fuq1smZetSkBtbcSoabgkMuN.ip0WsExjluhGHSj6EthrrythrzELVzgyPMPcsJZx1GXfzlUYjYbYmLLQdfKVAC0lT61+F2Z2xqHKgLYjkXh7KXIwcyPP3fhlykkYgAN4X.+CsWBfSM9J+vk.3ziCb7WOSfc1xS.dEVmGlfp+oudY.eb5lwk4uffmZIV8In7MGG3ZKAaaqk.wm.3sCA7uuc6+yk.sy71rx6DB3+3e3O7uuPq766ngG+sB5ITU929pIf9AtP6EXMA96y5GO9BHumyTLgF26mk4nJEErEvmUi6FevXfAxzVFamIRQz.YQjyI2rBaQjUOacClHelugVfBcV5OzcoqnJzA4R5j+eBlgzxqQAO7UYuBW4N+Fd8+T1tjLjBZwLK3rz8j1VichSqwDmr7laxEM05wLz5vnnK1ibvQ2ggBCe3bsdQggEyNhdWQXLjox3XHzhEXdEmZIleGIxcwORpcZcci9F30HWK8AHFvzNuMr9VAT2KvTmpEtUG1Vje2DzXO.AIzlstthsLLg+8r6A4HdYeYwdJivYQZfODTreDjVGXVr3DZiKzpcWn8t5JRbxVbhl5jyTSUWBVl2ikbFmpBTD9YYgncL3gTOo0ws52tsLLJVVNUKFUYIHm855VxX+VzLAU+ybk.lDpsPeEmhJGLrOMqrUck9cj0pKfEc.VhkUFgaxQZ+9rNkEhgVR9qmqqj.B5G9l24kjkmojTR1xSXdUWjFmkbGMAENIXuoEWKjB.lu3c1xzr+qiKSIlMVHYZ1umRlRjcSWllNqgWzCUjvm37jE3iwvSzVg3+pARAIXAFIVXkg.Xn0F9UyM1.J0as240FxisS6qAHnBYHXiqiCfWH2CtwBBhWU2DwA43QF3.DsZCiZ3a9Pn82eUVJ49WjfYZ61WRQ4ufsA9fIVBAoGDzhwOYtQoEPE+dq24EiEYI24.79VyPRGNKaASaKPjBaeCjndivQv5rQ2cKM1iqnLrcOrfs1qCIXYXligao7yzvcxWujh76y1z2tyhK1oghVz+gKPL1ATJmIkvOKZBY83wS.tzvU5Ee4gpMRw87yXFWlNYXEN0g9EZXXBKa+R1bRRVbCj0rAX8Ec5lbWIXpZ2kSPC71pgqwfEHZIGaGmkBFMUFwrzrZBVSP5kgUG.0xwpocdB7xaFq9CYy0GRT00Z8375+tYwqE.fByp+B1xD1Bm6bwI02DWocE89Rb3KHD143F.ykrWxsSvUJxdY4yNnrmCloxTCOjoJLVNdMsqoW24FxquOadSY6oqUOSNcK.jvb5ulMuttksm5ZqQboh+YbWIiUmCbyfWJYqt3iEBesQ3D6BTuHl3WR18pDrlfzSkWS0+bYz+54lla.a9Ge46rtNHRy6vFHRxwtGfKOFqliOZI71.bPgdGeOmnroXePzaqCaOj5KhvtTdLBL9XzW0.1I35.49rkMQW1GoINJrKjzYCEm32Ou3D26kyxEBmR1kNpA9B6UuLyLLewW3EkIj77E++p4Vnh.Z7u78uyG4PVuMh3P93Z6J4fDwAWJTBeCAXmI9vBkPOFu4Dr6gHWSiv4yEcp4yMq.A9s9QGdOVHdgkTj9Ar6UtjpQWAKYqkvW0pr9.sL4qu8LCHT6cQw5WxlWA1ZZwAwJ7XIm68ABGlfQeaGyrdwQfjdRP+58sgAvL8rtB1bdW1O6ZRKeo2ZRP0kJfdGHt9RI3UsJeQ7GO2B8MjtdvuqKhKwVQsky0LGxN29J7cwyfHNFfdhFpifMISsQhJHb7+NmAkEGjmfFG3GUUWSVzJLO7uLysp+4kMMsGvVTF5Nm0HUnMyQKUzjAPQK+9kysVqypPLuSJ+JDjehadaRXNFmnhrA1cJHTAdSPpaeImkNoFaV9WNOlwp.V3TzxNKg4OsrByO1QXFbq.WBo4GvRA1hIN8q98rJQp16l4fWgXcsC99v1B0V2WhFHvv6CcJetEmj+swCLKaiz.oznvaGe3Lkfu+309bo8cRDnEMASDLyvFqSmyMdn2Kbo3I2qUWony8WcVgC+5ViKE+zwkh+fP1kYoZPsTO3UuUK0mL+CWYVg4sPJm9ZMoXKKiqxpimWNERYbv9lAEBGUFmBqSWwskof1G33Q+ZqsS5v01Ic1adscXX9YZa2Rqv6vHHumVzB5UBqSUUnkuNE4+mXVEn.7vDVN+CGNgbNcVjjrs.4TxibWmTt7Oig1fg.GozCXCeYBWJDLTETN6V.ACp68sDFFptCl2BXHck8tkvQ5589ZkaAbzqny2R3GcQEx982B3GUZP2RnHchu+wQWGJxzbAEy7E3bSK+VBG2dVaV3LuYrwPQ2bKgjYlkImaJR54K+VB+niyNK5V.+nC3+sEGWw0rc7YYz4lyDcR571BASLqcz2TDz2W+Bhg2218000ACKqnKfe0OaJq3bUJ9HV5ll8MpfgYd2nBPI18ddzzMpplNg+3DAm2cUDF+6kISl2fgP1FoFz5adyaREt0j3l8V+fqou6f+ObujN9z5pK3scYHsMp.Z7G66T5R1H2aBxk4eXJjqe3c3Lm7Cy2o9x.M.A872xVnZob0V8jbM1e0b6taiR77UNtzp6kqQwwn9u9e4idy3DzJK3cugJH0KlJAc2Eifbw5Gx1Xe9UqWJ2yWE+llUoVohqFjADjyueACm3rfVcdaHBEHCs+iexdb+GxSIh5I2P7grM2qBeSLm8fFjcEgpNzOjM6auAQmWD1Y44ahsxPZrStU1KrqGGOVbbr0SfoLQCQcKCpQmRD2+3aMpQiFSCMYl8czJHasOhMz81lITpGTmJU+4igEyRa7.14Oc6ALyX6yTNrr6y5eGce6PLKgAnJdyDvtlJh5sy42whuurOYOHKS2aSMWdS8qrfHetFoc.K89Arz2B6z+Q6rgs7.s8loa2kz7.ua.LaD7i3ay23GG4B5cI40f0NW0bZGWTDaH+JeDqSqdrNZVNLQ+WS5X4O8le7MWiiExsT7N+y2gE+xSuFVDwCRU2Kh+WPtR4a30SogFf4CvzmUNKXp5qhGA4li6ODx2RCyoCN9FdaMwbBa2bFdntBZ9f1sw217u.+BW4ATNIoouDMPZfsto2WQHkO6YzWYgA5l.Gh7FQQ0mKlUAnZITdcSf1BQx05q5vHvHeRRSNOSd2oIoGAc7MjWqr3wRM1OarjsCM+sj0nJ3vMmIRvm23tBaLs+3CkCl0P+p5BRRfV4hBGORvTradASmWMDLXNcrutoK+b7dBzgFuGON8D8t5qVjMu3WLwo4JaxOHJOfE7O2WQvN72mEb0Qb6.mOC8GEkJ9knjpLx2ZezVVTT7iYqKaK1c533clBNBVk9eCbz8ScyGx57tpGff2is7o+L7cs4gNq+mDT2KNmBewAKOFOlZEwnwqZH6qzM6gGYyfuoQds5VhJpWsBuZBQc.YNE3fpZ0AUkg5kaf9RrPIV7uuETpSdut8zmgwXmhD0LPUAapxTN9AUDpK5W+c5oh5fjoZM3NMQ+gchjDH0KR.UcEotn8N21.pi9OxcWX8fDWuZn+mnGaSR8XAyr7fiKQDnEpg+nRf8GeGb7NNOG2y+LOf4jGfvOdiamIvOGwsyDdcRqp+abT0tO6IfYKx2nAhB1mPdtstoJ2tHMjIdeZhq4Sh0edQ+jXYrveRrNPzFPAmWGMcKHCUpYlGoJ2DhWvJTqiAQxoBQnVAUx9ZgmZmlBMJLqnLvJRPqo30XR5isABYKzjAOGZl1WNTfPkzvQayi.JW5.KQfwHDZ+wO8006CtaINTSPeNtAMmjtYrQAPFJFx.4cutOLXItgeXvdu249vf8WAtACYieEObjWV0PAURa.RQGZAii+RHSaxUzvq0va81WWS2nK9.9oEzM.Knxc5fBo+LUBZby+ObBy+LeZ1pxZPrOiaebI3EIV5uiaSUd8acOPENr8Bt+5M7k69+qCeYw28Al.e2VJ9aXASwI4HhRt+uQV9yQL.+brFpBhl5uv6JQ.bn2mzBP2ZtuCN6ielKwjuClpfKiWHJFdpl.vj2T.ScSAL8MEvMuo.t0MEvsuo.lY9.h8niC8W08h+vre8RjxoDIhSPMjsIL+O.Oth7oC
      
      posted in General Questions
      M
      Mighty23
    • RE: Knob Web Studio

      @tsempire I fell asleep thinking about this last night, and now it exists. Thank you. 😰

      posted in General Questions
      M
      Mighty23
    • RE: Faust Gate

      @resonant said in Faust Gate:

      Is there a possibility to add modulation to this like below?

      From FAUST documentation: https://faustdoc.grame.fr/manual/syntax/index.html#faust-syntax
      "The vbargraph primitive implements a vertical bargraph (typically a meter displaying the level of a signal)."

      I'm not absolutely sure, I would try with a FAUST vbargraph primitive to "visualize the effect" and then connect it to a scriptnode node; like in:
      https://forum.hise.audio/topic/10619/gain-reduction-meter-on-a-faust-compressor?_=1754048833174

      posted in Faust Development
      M
      Mighty23
    • RE: Free Reverse Delay built in RNBO

      @JulesV
      the delay value (0-1 range) refers to delay time as a fraction of one second.

      • delay_base ranges from 0.02 to 1.0

      • This gets multiplied by current_sr (sample rate), so:
        at 44.1kHz: 0.5 = 22.050 samples = 500ms, 1.0 = 44.100 samples = 1 second

      To do this in milliseconds, I can modify the implementation (I just need to remember). If I don't remember or am unmotivated to do it, feel free to message me and send a reminder :).

      To switch from ms to tempo sync, there's a node for this:
      https://docs.hise.dev/scriptnode/list/control/tempo_sync.html

      posted in Blog Entries
      M
      Mighty23
    • RE: Faust Gate

      @resonant I haven't tried your script yet, but if you want, I'll leave you my gate in Faust in the meantime. It's still under development, but maybe it could help you put a temporary "patch" on it.

      //-----------------------------------------------
      // High-Gain Guitar Noise Gate (Zuul-inspired)
      // Designed for metal and djent applications
      //-----------------------------------------------
      
      declare name        "Zuul-like Gate";
      declare version     "0.1";
      declare description "High-gain guitar noise gate with sidechain input";
      
      import("stdfaust.lib");
      
      // UI section with all requested parameters
      //-----------------------------------------------
      threshold_db = hslider("threshold[unit:dB]", -40, -80, 0, 0.1) : si.smoo;
      attack_ms = hslider("attack[unit:ms]", 0.1, 0.01, 10, 0.01) : si.smoo;
      hold_ms = hslider("hold[unit:ms]", 50, 0, 500, 1) : si.smoo;
      release_ms = hslider("release[unit:ms]", 100, 10, 1000, 1) : si.smoo;
      hysteresis_db = hslider("hysteresis[unit:dB][tooltip:Amount below threshold before gate closes]", 6, 0, 12, 0.1) : si.smoo;
      key_switch = checkbox("key_input [tooltip:Use right channel as sidechain when ON]") : si.smoo;
      
      // Simple hysteresis implementation
      hysteresis(lower, upper, x) = y
      letrec {
          'y = (x > upper) | (y & (x > lower));
      };
      
      // Process section - main function implementation
      //-----------------------------------------------
      process(audio_left, audio_right) = audio_left * gate_env, audio_right * gate_env
      with {
          // Convert time parameters to seconds
          attack = attack_ms * 0.001;
          release = release_ms * 0.001;
          hold_time = hold_ms * 0.001;
          
          // Threshold conversion from dB to linear scale
          threshold = ba.db2linear(threshold_db);
          lower_threshold = ba.db2linear(threshold_db - hysteresis_db);
          
          // Select between main input (audio_left) and sidechain input (audio_right)
          // When key_switch is off, use audio_left for detection
          // When key_switch is on, use audio_right as sidechain input
          detection_input = select2(key_switch, audio_left, audio_right);
          
          // Envelope detection for detection input
          env = abs(detection_input) : si.smooth(ba.tau2pole(0.001));
          
          // Gate triggering with hysteresis
          gate = hysteresis(lower_threshold, threshold, env);
          
          // Hold circuit using peakholder
          hold_samples = int(hold_time * ma.SR);
          gate_with_hold = gate : ba.peakholder(hold_samples);
          
          // Create envelope for smooth transitions
          gate_env = gate_with_hold : en.asr(attack, 1.0, release);
      };
      
      posted in Faust Development
      M
      Mighty23
    • RE: Non-compliant values ​​between sliderpack (range -/+ 12) and cable_pack node
      HiseSnippet 4152.3oc0Z0DbiibcFTiflgXl01q85qoZqpRUfTPT.j5mQTd1g52YkizrLC0pZRs0Xtf.MDgEH.L.jD4rd1Ct7Aey45V4P1pxobKW8IuGiu5TU1C4PrujqYOFewNuW23WRpe20aUlyHPz+752qeuu2OMAnCintlTytgt199zHAgR2qcfmAMLzKPnjzQi7oBkdjXmQtQ82tutsqv96HT5AhsCngvz2ZjudXH0TnTo68LbzRkmUf84Ke5V5N5tFzrtDDN1y1fdf8.6nrda25uy1wYOcS5Q1CxM6kasugm61dNdmARx8DUE70MNU+D5y0woMinv6oG1WnTUw0WYEMcSq0rzZnsdOSKCZi0TWc40pquxisrVSUa4FlqYsLHjysqocjWPmH8HZnPoY2xybTm9dW3xYvw1g18bnXCMgN.m4cummiItEwdE1tusiYpJJDTXylSgcOtB6cDOz1zNs+LE22gM.Iih7JvRyTT7tWAwSKu3olS7lhHUJmHMKWjdawNFA19QYifxyCE22MhFXoC1o7hBetBy72Oq31dvLbipMP+T5dAPiTJjWUUUg.WprgjDXqBiHmqGP5z9fM2i7DRBgFATX+bfmgtyAddmtoq4dTpiLPTNZbrMoAsACrVNJOgFss2.eOWng774ly7HGY7oV.8D6PPf16LWiHaOW44MCzu3.aWpd.mh4UHVICdhBwq2OohzGKIUF4qNvMniZ5fLtAuqyi65bcmynO2KXfti8qol.CKeRsPThPDor5v0ZnVeyFa1.jEXDjqumWf8qAYG1n.+k0+vFuhrDotBQ+CUeEds9qPAuL7eaKh74j28IDsJRk+Xoxk0+PsWAbl80BjDRIUIxZ0TIKRNGYSYV+OIa3EYD.i7lxkkJScBoisZ74cYjlwj5.SpxYxah2nOKP2zFz76Atmxen5vc2lueUHZfYG++KWaucWWswNqy6RSU8UbkgEPxKnFQx5X6wTbuLYgxTbuv6LLJDRht6INT4DaBiOZ3DWZo3ohKa1v3XRuAtjCcfLaB3FCsTDndjN3Mc43M9vLnF+VbcY201y+L+T.WJ3ZnBYDBsH3mDnj7HPSqVgYHQk9hZ0q.JcYMd2KfcrAiBNcAznyBbIxGpG0uV.pWjGVEzr3Tmm72NO6qeFA+N2TNmObXz7w5iDgh349buH566JiRVYo2HQFeHKqoNFpTB7bbnAScXLXcvUQnr6YC5QCTHLGozIBAjJFkS7xixkOHrA2Fkahdt66ZG899T2KKzrPrgEypEKU.6iXwC+twwCyvMB1Pnu2RLGPRfI54SfYpGoKTRUrQ8Zvm1a9SO6Gs61Gril4tmeb+c2cgg58Or1Nu9nZ+n1a2430qEd5wd6rCWPXb+dbt+ch4N.254sk2PFukDMFz6HJ..Gmwe4SEFW9eq3UfAHYj+.QNL8xj5OPbU0ZE+b966usu85qsM9OV6id1QKrdtwe1QOq8B3sqyGGtXsPtwED9f82AWdHqQr1Fr.9zfHaz3VZG54PJedJnxh6PCOMxyG1Do9YPNnagAYX95CFk0vs0f7EeH+4CzyMU4VWXaFA0JHVRcFAg9T6S5Ggs94vf9I.l8MYU5vDBxduTSvjZoelSzwb0IBBCYhxlC.etbUvPZIja6HUz9bfdOpSr8gc+ktIZ8SZQAOCl8DRACocNwc.aImSzgZEIDQGFg5o11QF8IG5YdliN5yIjt69Lg76t+FnkEXS5.4uxXY8BR6CuY3wLQl7yxq22oESQKV56AMhEijw9wsRDkjdd2V1QzA.rvTTirkdfj1R02Auf+cDbYYr0x3eXqGisdL9G1Ra0cXWYWvNZvnsQc1EriUYju5xrKGIXG114rSrcaqG.ULBkHvCS3WrSd0j2WjuOi77bhr8y5Hut59Wqm2kXY+ng2M.nvjkwAEPxs6EqpDq8NGfHeobX4Ztg1QixGNY7RMm8lUpYVkvSqryap391bD7zk2Ylh7BAW95pzXgIKV+sD20xBppHS.mUbuW9MPk4yw4uTrIG3Ix7BHf7BwyOa.Clg4LKUB1JPGYwFS6Mtz8R+Rwrjx9ATendoi7Z6nORNTefuC8EvVQgzywy3TL.wjYxiwkagyP1nutqKTe4cIg+b2Xkm1Ua6fxDircOAp6IvFi5fJ.njRC51wRGpClAy6yaqhsQ3SG3PtrF+Y3S7fZoJLXPsjAyJYP34znK7BNkY0huGhAv825z2d.T+SR2GSCBQbLD1PsF7OgMcb7t.CcXGivA6Gqu1dNi7664ZafcwmQh3mjWguGfS2djtsC5Rz4rPnJGy22sCLY1QpQH4y8LwHW6oa.J2Qs0w3KusHVmDfioA0LxEeXL4MCVgZZdHvIlDt9IG+lqFAwkmPBN7MZ.SChhY5mAPn.En55dbQaNj2RhC7L4hRAI8cxIooyXZxUtE3pknL9Kli+kECsOoNrDEY+2Rb.V8bxXE7yXrMitqgqyjqdGH7RlJAc1yR8L2g1tGOdgYGpO73wqzqSD0uXFa.hdJ8Bt3mel3169h7EXhkVHmN3QhQXxrtgibMllU.bdqkaFSyJTXItN6PVj8izCfCUEFWcnK0f6LvvtX5t4DAEjelVimBrMMv1yj8yAUTgN6zUnhnWWNk4bh0WC5HSSJJBGhVfqu340mPes4YQd.jfmCRHGeDyyGsw3i1pWBedj3gmgUR3XCqQAxEtY6A9jm1RWVbWWLOf4sXSbEL5AhvoKUKvq2AlB1I9Qa40U0zVUiw5uk3G3hH.J23bc7OuiQN3XrQu.P7g.PLfViMvzvewzbMHuYu4Hu2Rz.Uhc40aW..l3Swp8ygNL47M6XG5C4O25LnbAt+cgdf166ZRGh0Orn1XH26McD0T0z2MaSA2lbFB1Qiyw8YuNLG+2E7.OOeHicPzTBsbaWs4f5Sini6FbInihFlBfjueZzp7SYxX2EWhqCyTPPt4.nGHBmNLLRabrSXea3rZiichqbK4NArNWFVgKQ6BUNYBkVyldoUDarZ1gzSO486UagW97Cd1ZicR73wuhbO2+a3bOECCTHYLjPsNjXcpIiSFaZIiSF6uRSFmWRJf7YGH.aMBgDL238COFG0P2IYgJpDSAdEzgOhG.kMzTzfoDcc4tKHbyLlvUVbaGXg2OK0SRQio6pjo9swpyyssSb9KMg9nz8uBKym8oe5u9oiYY9HKq+mwsLs9Cu9W7zK2x7PQSaKqyXEoOl042+TguFPFWC+KKZFLZoKnEilN6W7ub64Nr6+OukbWRzhRM6g+jZ4WoeLtRWE6gkMZbkeKou3+cb1+6OrW6qf8ORruEwDReCmcSXh0+a.s+ivvGI+VCWo4eJQJk+7IE.4ViI.LX5UEXfmUH+xP9m9ze6SuIErksTSJHOXJBx+5UHHyAmp40SDf5AsD5bA9SxjlyqXPaG7I1BRUg.NeWQyQt5CrMBqkL9zBbmL1W0rv25hwxRvhmquXB13y5WHJj3Uq8+GlBLPP3FAC97S9299s33vi5GPC622yoXw6+6+w+7+8u416Hzx6lgC+nk+G+udJO0wlQQiGFXhZ59KDyKK9BpCUOr.76yWqQisZcGP9stYb+y9O9S+tXWvWf.pB67YDD9+tKweDZMYcAe4Ul8oisIk+aXb00FT3bByk+.q2LIaiagjMwlJegtWdcuE9k.Fq123ey7w2COjOPGjh6dkW2v8wW9zup6irCXOwNYNQ1wqtYNH+pBFCHfy+7kmkHkTXZPmuyWYiwXGU+NUz4VddmNPm8SfdmdLeei7C1NP2Hvqa7ACwM2CX8.tRtwofNDaSlxyEcfsocWCihK0DDV+tRXi6JgKeWIbk6JgqdWIbs6JgO95IDeUohKPBQ8fKV6c44uKk3fBEZHPiSsyevGHVMsGW5v8riO2skM6X23WbI46wORzRwmfolYnexaYfvLewCEsAGqfH44G.Gav.pwoG9tUjzIrLfi138RYOHojdkVZo3GMRHba6NjDPJYQRHPhiskM0jD4Asv25ERVUpD+DeYobc9DRe9SfFDpzdmWgnVaE9KJCdqJ9JwrzRjcnA1mCKe5JERrB7FjiIRT2yoNfWLrvp0zHKjW.pRpWa8MHDXkFn6GRTWTCkTXdK1PJzGNOwzoZcFUjoRnlpjI0OpOPYFM7Ym+y3TtnljQTfSW1Ngw0UljHFYV1CA4ROhXPwWRMhkW.oG+0PzjLvdnDqL775QVGyyzdKpUWgr.dAj0Jafq2N1Af8jDRgZX8boIFPbpnjASFzzufdNMnWpwUBqvt.Kf1yyLNv+avLQq.lnzCjByMaxo8lZVqwrpqkZZSNJWAxR5juSv+WqwJojz2pa7wuxKWYGJiwKU0Ux805qG2hildliGnGIRvoX6BmhM+xDev1oBCQO.cWROJQ2jAzQWCIvP.DBWq.qS2prWEJrkR2pvWMe2tLBiylEXajnZcvGtng2fd1tvQl.mlSb0chQ0oPYKO7wrA1dcWShWngsC6oOCDlJHzLQwnKLeb5PBDncPhe1paH4mx+tY7GkZkTl0MRA3N8mpPXvZb6HCZztIxfb1Dqzra0oxLneFwJfrJiKVkpfdrYWk39qzLSc0r6BH1OmZcf24Y6F3aOoWhBAPckeXS4efBbixO.LDd9Vx5L4q6BnFeQ8JeRKYsJU0AfNtdjNrGJLI.0r1vImvG3H3DA6L3LUoOs2PoAgcif5MXyNTdPHtn1tQvcfyOCv.e24E.O0cbviC1ENYY+tVr0Q1LRq6fPECOpkhYTc7d3Keuvt7UBkbxOrIQtpLNG.RzbglsjKxT9hToRy3Ec7QwkshxD8FykJU.W8JjOgzk.7ATQYhJLKThr5Mln.cbIBxksfINJc4FOCkgpJiTUFpoLRCW7PpSRm.0wsXCJUF0WjOlHUtb43ATFwDHsEMpTcHDv0n5nMvwIuA3zls2aqD8pUOMPedNWsdNeCmnms5Um4u07JrKSi9JMyzNoKD2CkkQKLR2MJL0+BeQANgiIgi7Dfm2ivSKFCk.etX8GHM0UW9wa.8LzR2jBwveBQSs9xavWbLEIE+IBXNJnqu+nEAIIBVdlSOK+MIfBBJ9BFLB0jTRsknC4LXIe7G0nKKFOOAuTTftaHLeJQ9BEB3KCRNDHoBvZoxbkgFrSUv9pZMv1U1bogJZ3qWY1nKbAebvhjaJfoC1AwlOz5YiaGH1lu2ExPVkvkzpydIdKioNsQvxBvkEjunB7kEjQDfbWTggj1fsVrOnMN9UwPNFI.e0DgmMkJCe8R3FY7tpIYA.WbH9ey2kAMzZTa0pXNHEHKR0z7KJZPhE3upxXfGsJKnUYo5JvjWOcxqjM6JMwHHY4Q.LO60U8xX5xqVqwzVmw3ZsUh46xqM84OIekJWo4Kq7IE2vMMMXuHKTH7k7iUgIMgu55OFRpWAzXL4akF0TuVkBLTr3sRN0xx4ktw4xpv9.3RJJSNErqDCxUJyeQekG1b5YXxJ0IKQC.dvJtRxy.4LXXZLzysUOno93ZpYJh5KeSPGvlhqHpuRs52HEwZPhpqUQTFA4vFXzWKpBvyA1uEC7F2BBg1UYDFYVP3+WikqcE
      

      This snippet shows how the modulation is correct if I replace a sliderpack with a table.

      posted in General Questions
      M
      Mighty23
    • Non-compliant values ​​between sliderpack (range -/+ 12) and cable_pack node

      I connected a sliderpack (range -/+ 12) to a cable_pack node, but the values ​​sent by the cable_pack -> [paramiter] don't match the range. What am I doing wrong?

      80db9b16-f926-4f9e-8cb7-a2a5fd9ed809-image.png

      HiseSnippet 4086.3ocuZ07caiccGTxP1D1SalLS5xddwq.knn.32jJdD0mSbrrLGQEerGebX.AdPDVf.r.PTjyDOKxprKcaV04OgtsqpW10smS6htH651NK5h1Mc589d.D.jTVzJSirEIeebe2eu62WBQGGPcLnFc8crFNjFHHjY01dt5TeeWOgLRmMYHUHyCD6LwIn+980rbDd7ABYtmXaOpOr88lLTy2mZHjIypeNtZlr2Qf8y2sydZ1ZN5z3oDDdtqkN8XqAVAwy1t0SrrsORyfdl0fD6tbqGq65ruqs6k.RVUTQXnl9EZmSOQC21JhB+bM+9BYVWrQkJpZFl0LUKo1nmgoNsTMkpkqUTqRcSyZJpkKYTyrL.x0NzvJv0qSfV.0WHyc1y0XRm9tW4vYvys7s5YSwApBc.Nym9HWaC7JhyJreeKaiohHePfcmDBrU4BrOU7oVFVSmOVv8iXKPhoHo.LyJog2pofmZR3oj.dK.RYR.o6vgzGK1Q2yZXP7JHdtu3icBndlZfdJIT36UXk2rp39tvNbBJLP6B5QdvfoTHWUQIOAdI21RRftxOfLRyizo8w6dD4QjHB08nv84XWcM6iccuXWGiinTaYfnDzXaYP8ZCJX0DTdNMXe2ACccfAxOLwddHxQFeJ3QO2xG.zQW5nGX45H+PCOsqN1xgp4wo3g4IlQKdddhau2jS5qkjxh7UC3FLQAM.iaymZT3Tizrujdhq2.MaquhZ.LL64E7QDgVjxJiqURo3tk1sDfEXEjq+bWOquBvNbQA9Kq8pRulrEoXdh1qTdM9ZwWi.OK7eKSh7Hxm8HhZNoresT1rZuR80.mYusAIhTx5DY0BJjMIiP1jkM+ihWdSFAvJuMaVorTae5LmFeeWGowLoHvj04L4sgWzO2SyvBj7GAtmxuRY7g6yuu4IpfZG++KpczgMTJcPC9TpJJulKLLARNkpGHqgimQv8hnCJVvcp6kXTHjDMmysoxQ5DFeTwMt0VgaEO13kw0jdKybH17.41b1aLykbaGYJPbcNwMf9LGYzZHqzakHytjo4BWCsN8bssodKbYLJl26iPYmKGzi5kmvrvltQvSMs6u3069mL5jN2YIwFccdriUvyFRcttXVBgdXPnhUBQEv9.VfhebXfhX4ofEDS3iDSHfEXPGfXluG9wPKPSHyqDqVtPcig+hcok+hNGTqzIzmM54UZOtP02z4K2ya2d8Nbjo1jZab5HEypO4kO4Ikd1SdYvmWnr+Kqs6aBlL4Wzd+1UUKn2+jCO3fNe43un8Utab7t6xwKCjqxA4OJDjP3gdt64NlAQIQ8A8NiBALhvWbxHge4iO.gIDbK7tCxigTu.KTTm4.5HHyDORYVwCn9WD3ND31zvOvo+AHdFmLM1j3ANsFjLGo76FnkXqxstxxHnOJVUVQPnO0579A3neKr3vH02iMXIjYffbzKTELnlZWZG7b9UlmQXNX+QgTbrVOpMCw2Sj84qErsdSKJXOpwL4xrJDE7bmAribMQapYfP.cb.JOZaEn2m7TWiKs0PKcgo2huUH4s3uFFYBx9NP3zXVVrURzd+kS8FCYxuIo78fVLApXlOAFDBin09UshfRzLeVKq.5.P8aHpR1SySRcqhGfuf+dF7RYbTY7WbTcbTc7WbjZ0CXuxdAmnDi1REYufSTkQd0xrWNSvxus8kma4zVyCJfAxXwcNGldRdwM2UjeOCbcsCrFFOgv7I1gRJ3h9z0YfUikPmjL4Nl.2w2JXRRGjYK93NKWwGw0FsnBQVV39wbinEi2UV.dw.W+.Urjv7ku8QhGZZB4YhA3cDO5E+YnVMQN+kBM+AdhLOk2dRPbxkChi5fYLxjAtOg0tk42IFm7YnGcHjv7L211ZSj80FLzldJf77jd1t5WftjymwJLjyd3Nj06q43.EXbaRrs1RKqTe+pJnNg.KmyepVfmE5miB.nlBc59gnCkAqf423iUvwn0RGnKGkn7UgKpNUfAKpFsXbpQgSnAW45cASIE9YvSj6d0ou0.HOezzOm54ilsfipRA3eB6Za6dEFXyJzfFTWr4Z6ZOYXeWGKcbJ9Nhf+tCf5fBhtCP6MmoYYid.ctzGxla7LmNvlY8TgVfm3ZfwJNRSGDtSZqgQ69XQrd.vrk5A4QiCGLCdishPIMOnybaBO+n9u3hQ.t7T.P2WnBbZXKLG5JfAIPAJtVkCs0PdKINv0fCkTH8SSfzo6XQ3JwA79Qzh4+CDCvPmc8m3nuHD.FtERriEgfTGwMgg3fXmo4Acv3GVygCUmaHvzaXV70DAo2PgoBQdl81TOKWCVuvBIjuXelwYNV6oVNgI7EQKNgmpMNb7ZhEqASzIfNjmoUTD5ffYFDkE44oqNRPX2KCbG.NmrvsBI3iXR9nNCeTqdM74AhO8RLuksEbFoHWX4tC7MuniNq3gNXIIFe.Wh2CitmHzzhRJd8ovVvIweTK2PQUspJi0+Eh+RGzBfxUN2D+iKuTPHg4XnROkg38ACQOZA1BKx9Kjlavx6NKuk2CD0QgXW7aTIs82cE42KVQY1zwQEMefk+PH0wdWBIF4osRMCL9wPGbiwLkapNig6pK1fZgB5ampIkWSB8.q6mDb+N2jIG+6DAZabHjrxKPH0l+fOo0fpvBny5AbMFFozIWSbpD6XwwoRrge3rVtqHzfgevrFJ98sft.l0PIYAIoFJfExwLQP.eHTofAT43Aw8NdXfwYaTyYjRMq5Nit5Y8p6TXiu53IGW0x9k1t331MFYbVI0Newat5KeVkAWdViWbRoAUr9pCdYvyL9hKNXiiu37qps+ok1S4Y0cZnsQgYrEy7gpCibHlypJoZLIKRsBq5NbzD75yzxO1+43p5Z1QFFPzhD1AQR6Tl.OfGgfuxhT8QTcSYmRAtUlAbYE22FN4GGGbMpjfo2pns9Wh0dk3Zmr6yTB76dqb9+DX4pMX+TutRsFJ0TSDG3uB0VJ7kaTqV0x0KVodwPmWCKSyKYEikLB8u1z7+XmkLo.if+qu+6+O2YoXYVQCuIacEMPXF5+i6jLkvpWad0zbGkLkJyYTYkRMpTpRkk6tKIZRoF8PesjH4WYZ9uty0vb9oUNRRWuXY0hMTmAMMZTgomJWqZ8R0TqNGZhTjkqUtQsxUhhI22jX.4sfB1Ed+r6CPxL2EeojLO.KgLp0x4zxWiYwcgLYEmsjmhKWBonniopIXlJFje2RVoknXoTb8mfWzJgrEj2JUpqTMLgiOtiYXz8ZIz4Jr+5oA5SFuIqnM9.Y.LjJhyOVzXhi1.Kc+BQqmp0SVTmXZuorMoBWtfTOev0aDkLg20V5zIgcxkJNj3hUxQxnW9tY7+Y+DKyYy8s+g+v+vNctfdEWREN66N+u+mzhakcVeOpe+9t1oKO8e5+46+i+iBue.HHLG.Z41Zo.vut7e6+9N7GK2tAAy59G9T19+clmU7TpMUyOk426pUpzdstAt+c6Luru0xw8u8e4+8edGtC2onAUpaNzD8+8Ne32bf4yvaFFmi2rY44b5.E4v6P88H4msT30R1R1xgrs+.P1bGWxp6desFjnW2Yp3K56fbl6v84KzAoX4tGe2N256w2syep2i3VHm6lrlHqChkyA42mRY.Ab96VnIZ5KArMXxOs0epWhYZF8VUz4dttWLPi8Ebcqd7H+Y4qiafltma2vFfvK28Xy.tRNgofdJNlnN6y7QPXfkgUWc8zG0bDV71RXoaKgkusDV41RX0aKg0tsDV+lID+KgHr9HzpGbwZeHO+clHGTrpYZXpc9WqMZqNcFG53irr4l7lV32f7J3abj7I7Nh1JrClBF9CidVoBq7uceQKvwxKP9gCflEzgZb5g+QEDMIbLfi1ryRYOUfnYk1Zqvu3ae3is6PhLRIaR7ARrsLsnFj.WXD9PsIw0fRFF4KKkXxGQ56yZWF.0zYeXdhRgJ7mCN9QE7Idu0VjCndVifie5I4SL8bGjfIRTmQTavKFNXnLUxFIAv5jhEZrMg.mz.sg9DkMUQjB6ayRR9Cg9HVLUMXTQVHgpJRFzgA8AJiogu6j+LKkapJoG3Y2kcSXbsx7DwHyzZLfKs.hNE+aPgX55Q5w+qLxfLvZrDqn6jxQ1DOjI8fh4yS1.eAvZtswy6.KOPeR7oPMrtNzHEHtUDYvlAI8ozQTudSUtRXE1oXAL9gLkC7+RLUTEPEMsMTXuwad5rSUqEXZ0ZSUsQsvkhrnI42D7+EJUYJI8M6F1mURbE28EiWJJUR7FzRGeD2Z5yscA4HQBZjsKzHaxiIr21EZFhd.ZNjdThlAyPGcMj.EAPH7ZN3b5ttrJ3Ofix2cc3sleVWFggYy7rziDs13iNR2cPOKGniIvo4bGM6Pq5olxlt3CQAz8ZNFDWecKa1iRDHbJPnwPQuKreb6PBDXrWjeV0skFNk+ci4Oh57SYV2f7.2o+M4ILyZ75HCRztQXPNdi4Z1c8ExLXdFw4ArJiGVt0A4Xyt4CmOWyXwUytaf19IDqCbGEeaf2ckdABBf5b+rlx+z7vGx+SAEg6PSYMF95tAJw2TK22zRVM25ZfgNddjNrG4GwCkrVPmS3iSBbhfaFzS0zmkmuz.+tAP8Frc6KOvGOTKm.3SfyOyfAduyo.O0rsw1A6BcV1uqI6bjMBT6NvOutK0LuQPQ7yvaCc86xOID4jeVSh75x3d.ShlazrkbZlxOjb4ZFdnytJdr4xO2rgbIWNvUOG4aHcI.e.QTLTgcgHxr2LPAl3Z.x0cfQNJc4JO87iUxOQI+X07STwC2mZGMIPc3H1hRYQ4E4qIRYylMbg7SX.RcS8bqOFB3pu9jsw0IuE3ztsOZuH4pYOUPdNhKVGwuvQxYydEY9aMeO5kEQetlwRmoGD2CkkQyOPyIvep+E9XfOmaSBs73g86Q3oECMk.etP4GflhJkquMLyXSMCJDC+QDUkhk2le3XJRJ9UDvbTPW+gS1DPR.b7LmdV9ahGE.J93imfRRJovVzwbFr0P7K0nKKFOOAuTfmliOreJQ9p7DvWFPNDHIGvZorbggJbSyiyst4.KGYisFmGzYaPhWciq3qCZjDaATcvMHT8gZOK75.w1F5dkLjUweK0hr+F8xhoNsPikMfW1P9pbvalPFQvj6pbLKosYmE6GTGG9f1kCsDf2ZhlmMkxBu8B3Cx3mVOJK.3hCw+a9YLSC0REptNlCJOjEY8o4WxqBIVfeWWFC7nlaC0baULOr4FS2bk3cmqIFAINOBXyKgf65XZ4pEJsnyYFtVnRHeKWaw6ed9JkMWyWj6aRegaZny9yTfBgujqq.aZNe0F0gj54.IFCeUJUP4FEJvRgvqRBwR4jnaVtTEtG.WlZkIO0XOenQd9rDtjabyEmgItTm3DMfwCVwUTdFHmAylFC87gJGTUpWPIVPTr7xXc.WJtfnXkBEWJAQMHQ0MJHxhF4vEXxOHhBvyAtuoC7FNBBg1M+DLxrfv+W7GFe7
      
      posted in General Questions
      M
      Mighty23
    • fix_block - I can't understand it

      I have read the documentation and read some posts in the forum but I am still not at all clear on how to use this node. Can I have some concrete examples?

      I don't know if I'm doing this right but I have a multiband reverb that seems to work decently only if inserted into a fix_blockX set to its default value (64).

      posted in General Questions
      M
      Mighty23
    • RE: Faust Meter > Global Cable > Interface?

      Hi, this is a complete project of mine that uses global cable + faust and displays the values ​​both in a panel and in a label. Unfortunately I have some crashes that I can't debug when I test it in the DAW but it remains a good example of how to read the values ​​in the global cables and display them in the UI.

      // GAIN REduction
      const var rm = Engine.getGlobalRoutingManager();
      const var GainLeft = rm.getCable("GainLeft");
      const var GainRight = rm.getCable("GainRIght");
      
      const var pnlGRL = Content.getComponent("pnlGRL");
      const var pnlGRR = Content.getComponent("pnlGRR");
      
      const var lblGRL = Content.getComponent("lblGRL");
      const var lblGRR = Content.getComponent("lblGRR");
      
      function round1(x)
      {
          return Math.round(x * 10) / 10;
      }
      // Update Gain Reduction Values
      GainLeft.registerCallback(function (value) {
          pnlGRL.setValue(value);
          pnlGRL.repaint();
          
          var grDbL = (1.0 - value) * 60; 
          lblGRL.set("text", "-" + round1(grDbL) + " dB");
          // Console.print("GainLeft = " + value);
      }, AsyncNotification);
      
      GainRight.registerCallback(function (value) {
      	var grDbR = (1.0 - value) * 60; 
      	lblGRR.set("text", "-" + round1(grDbR) + " dB");
      
          pnlGRR.setValue(value);
          pnlGRR.repaint();
      }, AsyncNotification);
      
      
      HiseSnippet 10316.3oc680zbibbkffcqRRMjjkzXY4IlXNjCCaGfsHQiOIA6VsDA+.jTM+pAHa1cqPCmBnR.TMKTE5pJPBzdTXGarG1Xur9vdYt4+B6w8l9A3Cy08lOsm8s8n12KyrpJyBEHIH4X2dB2Nr5F4Gu7ku2KeekYkIcnO01fZbhmsY+9T+Tol4tG35zh5443lZlzGNpOM0LenViQ19cWqqtocpsWO0Luu1AtTOn4qNputmG0H0Lyb2MwZm4duSJ1e9Se8p5V51snQEkJ0ybLaQ2wrmoeToGrxSLsrpoaPOzrmTqKsx1sbrWywxY.fI2UKWp95sNUuCcOcrY2QK0V5dcSMy80Vtb475FsWpc9h4WtoQ6VzhKkawRKUPubk1sWJW9REMVpcI.Ie2MLL8cba3q6S8RMy6rpiwnFccN2lO.OyzyroEE+Q9TMfQlWbMGKCbJhklZstlVFgjHOffoIQvtKmf8YZ6ZZXFVdDg6SXUPh5gLAbl6nhd2UA8xKid4jPuDPoYjPo2giRepViVtl88ipAwmOPaaaepaacfOIiJ71l5NZel1ZNPKr8y1S+TZMW3Gg8Hyh4xMOo3x4l6QoaP88Ms63kEjJdoiSucnmQsxjOKV2F1cLsoYsbzMpA8upWlY+0GTe+uYi0N7jZ6uy5aT+6wx8dv.ayE7zs8x1kpe1nEZo22Kqie6Yme1irMwJptyNqU8fFyFATX31zxootEBgLIztzO3AjMqt8dj5aXLnkuoicZPrxymbltKwsG4wDAj5D.o5NCvoxt51fvlaF.FQc.kw2g11G5laOrKqoCbjLyFT9ri055lc5lXyquMTACCi5PeaqMquCz5.hN1Emd8cro3riWs5XvJq9E2k5wFFqlW3vvqVcXXkU+h6BeXZOvlQlItNCrMxmY3bo+0oIvebo9CbsI6p62MKqtLCI2mjO2bjG.+2Gk96QV0Q8M.geFkiTmJ3XjmoaMf5kNfJm0k1wzCjBWS2xpInUHS3fl4LroyQ3CImfgBILHHp7Qx04R6CP0OinT1+AmvcbWuIRhPYXxBDAXuOYwbOh2HNUBgclY8oC8mcdxrKLK4KBl2L.LG76YIFqNq.7vLDHfdNVzr8cwgcVIIJryAX32OOop2H6V643a11rkNN4PpanH0UhFbufYR8IMStGmycwSi5xSiHhW8KfvVWlvNoICPMN.aCgujiRpIlBQBQ35abJGHJvZun4Y5qaSsB403OPLRoIQDkNAMD+SmrsAiNUsrxjaXsZ4pUoZwZy8Hj8rJPJ6vl6RM1CE1QCQ7lWpXs7qxa9ltTpcbw0co.eIcX+Ql.i.ALAlzudSuL9cM8vEQb52bBnQ84x5jF5soViT.QODpaQE5SB5OufLHCkMFOJZbA.ttq94bzgz10oGYUGee3u7cHG5zOF0nNskeluEznOFnWPdrip+XSC+tYlad4Z+NgPv2OmXAc098sFEiMCCOP5gBANlW5KlEyVkB.6xaUcgH0Z6u6p6u59OeiFR5u.cUMcV0YX9IpBKrEyx4EMzA0U5b9oiAMAXU3RgUANrVGnOwM8rktqQK.tF6piqhq8bDyXtYgvZi1sQtwri2J1RPSaKjNFJbi9IIFQDgbcrxzJ.alWrhGzBeuwAGJZW0220r4.eZlDpmi6NtBvPVHOxYAb3Rm47UMLrITG03H5EOcxeqOc.clNt3nfL03SpKUx3hmS4klSLQwcpV6grJIMcF9v.Svs507DK81RROsbofUucbZoasiiyoUsMpQA2mPKv71FpsOPCYlYMfk1ACLnzNf3koy7DmluBnObiYnrlNLTPYY0ggQxLmh1NRKPAmKIiG3cMQ2i.DPefUzLrAyI5Sbsg0psQoEWZNgUQgpDrCTCTihtcGviG84IkmScn2efOiqKFWCc2SAsTdcg.AHsgRZgzRfuMW5KRGrnRjXj3fNOIefMKXLODLvELfc0sMrBFdlxQ9T1a7ADocnsQ9OCGTnAI50ILlUTvrpVlcroF3nGBq4Ieq92l66.Cq4AUt5ea9uC+uE9NPYaAVAE+NnjYs3NURBmBq65z2.BIfn655bNIy.OvWUBRzIH6kOelKzMlt.qGgESklv3gSaPENNyEBlHPnFLhNGndlugdkH63vdnqImbGLeDyhtfacEg+NX5A0vJZdk+BliLShGrMtBbNldEwhIbnGaIgX8vbOJrcEtj1gqC2ds82qgpSy7.XwPLuHemiZkp6vM8s4UMwNG1hX9d6cVmDGZtJfFOayLytXtkyZe3hOoxZ4Gs5ad85YedsuYwiVcoyNemrFaukYicZrVQ6sVMW0CKMbsW8rmuzg0e4QYc1ZauuX+lMJu+ZKMby8omUp5Asx9pZYe4yJszq1asic51wx7Iub6cN0cmZu73CdQixa7Mkr22ryHqhuYYeeeisM6zwt8RO6IcNs8vm875uwe+yVq5pYG13kMJe5vs2aW6kN8fsard0CeR+tqt12zX0leyS9h23O30udsUeRVccyx4FT6frqd5.2S24oqWoZi8xtp4ANYWsxwa9zNaryAc2r7164Uqyl8ed802bum2dyS8pRe5lu9o6o230zWTru6N1a033m+zZqsVmWsc2hU15nbMx+5pa+7Aqujgqa+yrW7riGroyq2c3KZ7x0q1BUNls7pE1uXEiSeYyidwQNf3riYqkpb315Groe2WSaz7km87c1i9FeW6CcnCOdYC+gG8xW7785uqSe+kOp5Spc5fd6124a14n8O2oxVY2xuPkiNdOZeJUezA4Npr9hk0O1ltyKWdui+lBCq277k203vJsrq2qb4BCN+EKWqPIGiJmZ7pkZ8xkVbwcZ85RM50nW2Rl0Gr7N9UzW54GVw6vdiJ0au8Nph2tC2n29FuvdIiW8x96tk6l69JG3++5lGl6ni1yrvZ0Nb8k6O7aVaypajM6q.NPQfg77UW1tSVZK2hGNr24un7dzbmOrzK5eHLP58eyF8F7LmCK2tlydEp7hti1vhlu3yxOveGZ4gU71w3UU5UueimRW7UlkFLb6bdGW9zSAr0q4xu9v5muz4u9Xp9ZlMbVqTiSWFZ7Wr7SGr7gCJc5S2MuSiW+r7tqtU6Wj0rkU0WVj59xm8zmt2YOsk05KVSuSmMauQ6yxVnZm2bZuQ48O3XirOo1yq1YCqWt9yOvd0Vaz93iNdGi07NZnyx6r55kdyaNq9w0KT8fyx4r5qpe3Wj8EmVxbK+J8Nz+om85dscxdbwm7Eu94qqWt+Yc82y8UCrGUuXtWdXV1JLkEqSLL.HJfz+56k9dx503+kW1y6Z5iwvbOtRabonxh0HGeYZaVEM23kI2bbSLeerPr0aenKXSnOnT11+JYpWsKSvh+gNc.csqxrTknUe04FZsoYm.6Vn026MAKzA9GLOoDKoM37ITGVhpXUw2f34XsOIUsWtZ1I3ZaHVbg9BZ1VD2K4wOFXHPI2KDv7naOim9Lfp46hAqBhAeO7+i00bWbWaqa4wDRDcdhNMJo+OYmFiOsl6QRyYHRY591YXyLHNJR7pZ2Nw5DfxBSaUBUiIX08h5XF6A8ZRckoqXCSMy6nlYRsImYR4Dm1hSYjZni811l962mZOozolRPNSkZlOQfUPS8Y4v7mHxgYCKSCpaJSiTy7dZOw1oY9TLDVj73+k1su+JotxctfRmSkh3LEctnRm+i+g+vuZJ5boXn8+2J+vD6LeIOqy2Si+i7wP7TBp2Ur6EtYcu3Tz8wl4ki24RSAYawaxHuT7N+hoXjqbSF4kU57u+e6e6+8WeU576ykvyci58XhJ+O+pw58mH5cfi0r9+AZg9iGGD+oudZAwXRbu+JoNZ60080w8rPrvGTFzmBQni5YlYc5Ylsn7cv3dZqS8N02oepY9kgJZgYHen+HwPucO8NTwTm8uymZnL+ZTzO9pUNGyfUXA+v+kU5xhPJpD2U.ikhcbZVsw10BWLX4xkIYJNW191cRY4z5T1FnbmTRX3meoZujvv0WQBC2KFFlZ63XHThGndECsDo2yLycwexxg3AN8GzGGipMcNilBTs2vGFeunY2I3rqmGVJmrMy+vXywSADjM27cbr7MA.9kZaAwH95AlsN0ZDFEYevLlGZGgZ2AfhGQuMlvQ+tP4ccrLHldjVtNr8VpmiALLuqFau95oOTdcH3sS+FPnmxx3dCZ21DZklFomWpdlFPL6G33Yh1sjIB8B26QV2Lns0GXwStZTy9EqzOvRy1F3tzMdBhRAdynyxm41LQnp99f45TldGXMnio8AA0h739pEwkRB6xzHATPRB329su0KATahR.FldABAm2kZS7L6XqaQLf0zdjlTKnaghESVVXk+GwkEXpatRxBq7ajjEX77jkEJMsxB2SqN0hp6QmBggn9HKM7SuTeJjVVX+Vuzvpn98PI.8dPjE9X9e.7hJ13COv4+dNtTBDaHqgmQkEaR0S8jCnnW3qVQhu+v7oRRKwTxJeOs5Xh8mBFYPOjYi+rK06tnYw+h2a8rw00X6YOtt0Ug6P770c88.VJr7MhiFzBNikuPWrjFsT2xDVtqxX26GTXroRcIJ7MVchJ7K7CSIK+CzNLTuyUmsK2KYV+GcE7MOZlRbkX9qPGiWG2ODvTHlgX7b2r2HKw9OkJNOcb2Q34u9DarOp71GqU0vviblosOz2PVmiK4bc2d9cI51fUZaL2Dd.qkssWDOKDMsFkZpI0LrlgzSCoNpWSGoV13IPKudj5ORq5.H.Wg153z5+oIQq0gNoRpenVMFYgHfEwXfKlgdKmAFD7.1fFGmGHtr0RhJASoT+okNyQ4.CLIRTUaRhLioiVKaZ5G5bMo0ef1ptl9IKUOQJcSnKpT5uVaUGGO+.w0liHEy8KImahhyQlYvgxzqKtcR3wtfzpKL6agS9ojbmlg0LjNQZsT8WJg9yuzviiHy+t27VqoCF27NZQrjpZaA3xBnXNtkT3x.zovfs+lzxzs0.f066.KOLFzhhlTVfBJe5OnWeXkfv.xGnUyk95AT6ViTMgTZEE+D+MWleha8lIYBgXsxT60Pi015fZolf5qFqcRM1T9xY++zKMAGQyw+3u4sdOGVIXgH5xGosfyAAvClTjX980gUl3lLZPW.WbB58nri4fZbfYRLNvI4Hveen2guiF3uvTxR+PsspsQu9c08L8lBaUo0B6jLa8ytzTOMIGBseajs9XsUsfkldDvWgEL3maBJ5lP+A9b0rA9QPMdPT8NC7gFjJ4nthVbdWse4EDN+TuzjgpSkC87dbwofHHKWgr3O8RSPnTf7seqmEug118ZxOl1Pz49mimks9L1wYzGXS6n6yhTaTKKJ5+Oeuq7HPbB1DvNZOGayVdpzv+3DWp9uOsgo8IZqaBUW0aTOnL2QSk2jQ8Rl+82co4ncRIh4sR92ZQwmHhay.oXjVVl8Qyo.SEnMQgt8XhmCK2bdgGtsTwxblZHZqLIl4eZZYleJmYFcp5lBt4GpI0sqF6LLq4SJ0p1ucFC91LsqcvySZSZamPNZDCCWGxS6tGwH7zrApk8o1.WZj5xwOahbv2OdNSmZamLF55tfJhTSPGKuxK0en2UME9ryEpfKxO+mSxc3enYbt3uHNW72puxzLT0kFpO46uQC0O6x2TlI4l2UR3LTponVMSLKqbKuDKVZbPayf.AWjgmPd4LtMMIzdetE8KL2NkTysSoUt941IUp+LsrapE34DB124jLi9dpxT6n2LTlh8uyOoDT.VXT4y+1mNFetzJTCSec1tqOyc4gbEtGCsAEAbtzmnodHDmJDTICJu3V.Aix68sDFpj2A2aALTNyd2R3nb9d+AqaAbLHoy2R3mbREV42bKfeRgAcKghxA996GcQnXpCuhr4FqQDgkeKgiKMoEKD2qGYTw6laIjrxjT4bcQx.a42R3mre1qPuEvOYG9uo338DpsyMIkNWehHOnyaKDL+jVQecQvPa8WQL7C7EetqbLrlkiN9oSdnoE+HX7wZxEM4ShQpTW1Iw.DhEmOjCEdUcH28GtGbAmwQn8uakJU9QrGl9zdQk9i+3OVTszBXwAiezw6Wz3+f3v8DNWSeEOkLCk0QEMG+cC3otTal2Yroap+4Dltgt2gQNE5lOO+xvb.b54eTasc1n5doOtZ8cSWcyMquQiFa+rMRuU05qGa1+0+2+3eL9D5dWwyrijSpuJwIzcuZSHAV+YZ02sQ5C1n5SRieoVau2FqmNJBHHl+vDFN1dAk9xVPn3Hir8i+jeb6GlI3Q83KH9HsC2Z6FGhT18qyVUnjcne6JqbyUHx+PRmjkuwVJCgwN9R4.2tVHW1bnu0igooxnL6lFTSNjHx+5MF0jQijPyTS9rcEEs1GqobduSoD5gztRM3xwv0WQV4ArxOY8AolvxmD1rrOPK7r8dyPLO8ynaG.IfbkHhFrx4ePCOmsOXKHJSwovlrpqy4dfmOW.2Nhj9AQjzafd5eu+JpZdfx9wj06xJ9rfSNr1L3OwSAX7si7JZcovEf07intrgKoIqhckOVbyVDP5jI4.f9+Mtgk+W+3u6Gu.CKrS23c9udGM7iOdVjE0.3phCv+CYGE84CpYig8A0GfpOupd.nFzCaA6DmG1D1cQgaxcGOY3diASX4Fu4JUEU79saimR8GhenVAcppgQxCQcpMnqK45VGB4yeB0US+LGWfBw9RpjpSfYaCyZC5pNtvbSYJu2fdbBAh7EXEw+M6aOlEdDTw2x9bzxksXr+L+TVNT72wFic.CtUco5gzFwHLeR+UXu3XVcmyOP2v.jJup8qAU2sU2U0c4eRIX23UrqiqfdFulHYn30DPoGq1ze+UYwK9AMljorwuPQ9DMv97.Kce062DL6HhJv3YjuTQ1NLEkRoQ9V6RO4phhep1Al9s5lLNdmDvQPqz+QfihqJlORi+sdGgfuiVsm+eP2KL2QZ7+L93+yhx6Egm3KBL7HdjXFwjoU6Q8O2w8TrkG1EVwvORQAkJRQkzmjQPNgj9PK3I3P5imHJqLReTDxGhEI1R34sPprfOWc48vH1tHI25nLXKklx3aTgRUxe93xfRZijkJM5LMIi2rf.kxgfTdEkNf97Safj6Cyb2qrbP9KVLL7Jtw2kkOVPMaCvvUKJHEZiWJCn836f96v+ct.6yM.Lm8Cv8ieTTYd72yHpLePkIrbLcfgbt70GJ9IIlbUvkOzL+2zh9Dk5iWmHtzCcNvReD9Qp22hBBOz4IMwCceC1Wrb7uqIQBdWEaQlVho104ye5c+qIBe3GPUJwRQ1MBU3h02iu1NgUrOi5x1afYdOMvW8r4RU0xxAuiA5aJzTxlfrROvwZT+t39+hbLdaBlDUYGA3fYxV5dGpaZgJLZLvqOfp6a2.ZL6pACUtsGa4w6USGW2N5.czD0mpg6wErff5lsUnlwDw5HIGjlyCEKwFhLrv81viOWvwNvUNNgFlJ8XtHdGMnIX8r63KNR9tHV7dZs0G34mRAg+P.gcoY40jDJEzqKaDk97W35qweAJstCNz2SaMK.xaajRbtJ9H4IJy7hby+XT9RZJK5zc0J.MMpXvPoz1.osqosngeFHGjOG+O4Ksbt74WLepc0GJp98zfJAwjFga0ShcfegwILGfpx6AqhBtN0Rdf0PAPoQRSKux3v+MB3eB6DNRBrNbaCd4ip30E1El.rSqEZr55B5bYKKA5OGqO2x7+rzRKVpRgxUJHb5gYTiDYE7pMjWhDflVYkI2EfAej.C3VaukF8BW0Q+uSL5RV0utz7hSfcNdZ5tdiv6pkuvUaQ0GosUMRnWGWuQa70vQynOF52PRl0cG8fio9ycqu3R43se0.96osPg3jqB4tpjKteVraqqq7jIerQq3UbzB17tq13.Lc0o06i7E0gRzFtcfoSgmfHIy1KeAr8FPv3LqtDzCzqLmYwwUOckHUx6Ea7Aqw4XvZGp61g5yrHJWf3qF0lmuXO0elh6YA+KR.7l3LvvHfyGndtA43ZpqCT+vHnleBfUxqAYbPwygepl337jMpAI4.gL.lJmHlIlWAuqFaAWvIyTynYA9QZHJj3H5cxS8ehVG1Uk4IsXYxM4IuhGFyHI07tQRMuu1Bb8OSVrA+M3U8ozy4jMjhUNaoBEJrTtkWZ4xUxUH+RhkbbPHICAdfJwCT3XWKlfBD9KMW3iU3B4+qF1PLoGEFwmq4xCQJqRaRhWDCLxbiOTqTgJEp.+IWgogo7gZRDZAgHsVvUz4EPKemKy92DHLLcbIvwkIWwYyWW5Ub3j.AaoR4JV5lRv9.svq21+bRwlb.MJAfbaGcin0+Ts7EyVfW0xKt3xkKV7JZFIHvvCR7COOU7IRjo+oy6ANQMbtUf4j4M.Ck9zliihAt9bSciJhzlK6xhpVpbAn9aBhG9o7FGskcC4F6WSrdeCvWkuA033r5G32z5DtRiuAnXrfvGCKk9z39KEJJGHeB3WXj3Saf7JUdCvOITXLzaruChabJAtsnpimVgwPdkiI9schEhzPjsbYVcKVoR4EKuzMR4qZpJFaFM9WxvscFKj.lntJ4KtTwxkpT9lLuRHIHIJqorEGSapPtMEsTSmRBhVRa5xMMgJ2V3sZRYRvHSzVB8WJcgJ4cIAq278mZ5yYTrpuAXX7LOk.qWZOyt4oGRz3OGVdtLDxPwBExUrPoBEWtDcgktYRCx4bJAZMeS9tFYpQs82HZsZ5dRcIN7us2yvZaoaEfCPzcq53bZOc1VMcstQuj2sveNuxOP6X8ynraDcVr.+L1ua631irI0l5h6pe9K3An4e+p9.zz+J+.zreKe.E3W5kNdPHTRPtAsm4gN1TOkRi0iBI1iBw1.6A1pflWjRqPRQMfTjW9nTDTXA4OxqCzsU.F7aEHsqoxwlZCaL3vFTXlaruWKfvnqra5+ou9fAVdT1wuIu7W8YTwEjKFOBA.Orkxwo3tWzyvS9q4yvy69V2yvyeEbnYTdoftW.N1vD2d8MrOiZAqbC1.E9GzcPopK810w1IX6fiXz0AWBM6zgpH+j3DR4vhv9rEG67d7KVYGSaptq5ooXpnE4m5WMoD4W+8hfyIn9Bxe8dXmt6+o9vNc0W8g9Z7VMW7mqAphKPXrRxeY3k+43fq7miwnmdKWmSB9.pAJz6yJAl21harucweSR3t0sGXx3jVsTA0Xcrv0siEutcrz0sikutcbwqaGW551wJWdGQK5h7DyhrM0tGrAyQzYlg6TCaYRJZulTCvOB9gLCEsCKwlNrloE2sW7ZeEV9f+EGS94bemefz4sIqgW+f635T24+SVMvMZKcWJA6AYVrkKHZ57j0C6FDcnXA7rOJcPWNie1qHylKaQohMndL7jUUDHVvx7Tkqwse0uhnKxAiYKoqEfYwaT8d8gejYVOeC1THqkYyfWFup19lKXPsAuF0svyKWv2dSvgiKsNzhSBZQlgyQdLYH9nkPWnTNwqqGaWEHd51f1GRqtTvxnuCdh8NCu562SeuGrscaD3806H9dzsMHzgvjAnS7adc8VsFDPVPfhDO7diM9sFoOr5lnfSLfcN99mv+nGzsGgiEvvQIgVhqqvzbz6DF5wmFdfGFs7Kjwz6Do1C0MOY37DHpp4Rytka90gubarolYaAJCXGL2lm.St4IAXy7Dfa7JfJGL+rFQrv8nfAjwFJ7YYCeMvf+0WhzzB4li7uFVzWAEsHqfgj+IftKd4kvWAl03m6Q7c8JfSYz5DQYAroGRZal0nknTwqikkdu9Qm8Q79XBu5H.mzHges6doghNoE1xLVNyS5ZBjDDj8zGxJnmocFdgAuvhGsc3sRQZ98w1iIc8XW4AYlkkv8u0yejE8g3We+2M673C.Sd3+lCoz4mCPUOyrd8bbdT5n6MXIPDlC7XfYA7wxYgEQvLNjz4toIAFtiawfQddWw+QB.I3d7Sd9vKZLvjiCKL8ByydXCk.iSX9JjgjT1AhAsbh4VgDPIC2QGydPEBgiR5RRBuxEfe7Wawbxfqa+130slL7TRIPL3UQfUkEvSFRsCx7kLvjRH13SRDFEFeJ1TrgA.bXKYa5LLyrgovGUegJ4Ds.+ldbGkY1XYLLb.JJvS7Mni8eEx1XU.jvKwwwFK4cz.GN6fz1ozpnDoEnQMHM9D75xfeMYgyH3u7wr.vtqK7j0O1xU2qKnfxPzwSvmrOo4jn3vISA16MBpOJ2iquaC3WO9.p9oPEOF+lMgXjLBgE.GEvFPBBIyLLlkTXoqRFI8.rKelSLvDgKyQkxOdbNZ1xhESr+NWLAWF3jtKaFClQ4ldL.WQ.3BSDvAl.GMNbC2ghw.adgpijvWlBScqVngIp31pCIEhabRc7YyBlEHq1Svq0aSAqfMYe2MX22v1afaPOrAVtKoiCM3xvFeRNybdWSvu9ycF.p7ZAVngQJ3CAC3Wd9TcC7M6R55aYNDx3y0EdOnPXoaM.LsT.C2DK65DxM3kSbtzgSj5BM0ndc.U3J1YfadAF+EjLgKEuunr6ie5T3SBZlnEEx0UXt4BcuP2xoyBLRt3hLRRNieUcF41R3UyIzDyVdoip5jndwssw42gu9Mxho2GMU8.hTQxlwi0QFvBtwyNAu1rvhtOZv8qv2BFXRFbMnoV6WRxE7bmFu2nk2GPxjGeJzP63gHSjb+b+y4yF7d3MF7Sn+YFagCfD4WHlTOP1A3VHxKAL4a76BLzOAGW1y9VOmHmSXRtoAxtgzniBCKjK6xboA1+.ryiOUuYyKf6HPlvPlUxVAvphZ0WxoD1nhqIBcxf60E6EYk4DqNwic16dPKX0zbo6wlmr1jwz.7CSedRy4Is.Or.biQvvx4uTO.NoS9BkByiE1LVgEvBaEqvhXgF7ITcmlnKaBbbA9BalBbNxwdh8vatxvYL1q8sAm6brojlflcXomI6lwCVUxVaAn9YNl32AXnKvnmpL08DPD+Tuzwkpkm7Al2XNiNoUBSrFF2pHTeDu8hZYE9JVbREY4meAth3+BD898sLYJ6foLX7J5V8jeweOOYu8OjnO.jHY2ymHjNFW0Qs6h4f2PnX7ggWOnPjBnMXD7HYIgXPR6EfJmvQENQhwDA+ZwKaTL8GY.6AHvOAbi4DD5LeUeHQ1ge3mnr4A0hTRGgHL.1s8ITgOJhQaLPDDFPUCX1LnoOnRChAEjKZMvKltqfmXwnH1Bv59fo5SnulqssB2eyJyk7XoFlC6w0hQaBuZc4NOxd6JCZlWrXVDlevodDkGDT0sNWeD6BZUmSN.Q3NTRlB415MHCN+CJgSB9GZEpaW7fPpPoEJKJHLbzSOai5OnDHzwcnbtXu3m3aZLAbFLfPGLOXX73xESfuHIEvVNK4y4WJTJfAnlXC9Jd8YjEexGH9LYom6y0FKAn6ybXcNAiZLl0iBKNNePd1e47CIRdLJdbRNdzyhihPYyIEx3Ha8dfnYP7L9XxqaIbtIzbrp+KF79bhnORj9PeluOG+h0x.cs4QcGhlNWPa87wneCZZxBrJX43tM0yKI+cdC2RmsioGM34pMxMIjDkb+nCaIRuf7v5IIwqhxBt.d1Mxy4CEXdLwq8AX7ewk8iS8YSZNUlGNQf.e.grstvAdwHI7MC+GHQkoGIv2dfuDLdIxLRFcCkQwRjw84YMOnjBrRjqGsapfkyMmjbF+UjH.0DtEGZFPJES5naofU2DRVC9jsJdMBLDBp3CJHrFiYFFB6gYzPGSaG6WdffLyHMCeR61ySl3fYYYnPufHIKgN462MSS8r95CJz2whhDox35ZRlSDVFG2Th5Rcj6tiicGlhLaCP5DQMABkNNeRJgOWEbIGSIyEi.7nTDg9It8GirOyWUy7o.SBZHigfWtFbTcrvSSy.RLzlKcFDMYOygYXJJUvkXqkavgL6sepstA+BokeKCqfFdIBaIk7H+DhJ0GnYLBp3e2RLoY+NAct5v5bVSA0gmytpC.BTyQLSy7YM0HBS3Y0KAsfJXviIwEtPqCP7WKDs.MbIaPyBWdFg8OdrkvQ.BEPBQqEvfDSzTJKT.gypMwyriP7W77YKDHXt3GpZf0NIkKLO7qHgx7v3d.AOftJipBwFEiU3NINOFaDmS1vbBy+w5.qwXMiQREzkP0NMbZ6SN0lJ8zgJyJYKcTx6hgId2yfOw4iHug55jFuZjOAgPFvia1UkQnLXF1OY9WvVSJzkfpoZyaJJh463.hU5Vf2vMY6LGNbrf.TFLbSrWfMhRf9qhfbDgkEm4BBTgMjxU8UjIVyik5EBjGSj948g+GFgblRQzUzv.qI2m2Ptou4lbFPhRRaXVPT0rbgYCQ4ogaBthJwpBhVUxaEunjXbhbBiY3MKB17Atkla9nwCzlt.ILK3Qcj8fTn64v1nHIeuhVF9kXJhPBXQgF+yUdh6BLK0iExF+QYWnXEyaiNDW.DQCKU4XrUXYCPeeWffmMJ1spNKXJQDOKv80MT8TTjVoQqlmDz+LrPtNgWUn35XANo1pjhMheGYR1eucdg3MZP0.hzl6vFBUKDbXvSUovBDKpjvYg.2wdBV3rXGjiBFMSDUVi+EVwByb0IL7f04EHIHALW.HPRNSFR2.2MFzMhf1D.fu7gjnk7mfoBNYRSUH12Qrlx0ujLFwVHIFdVhADW9D72AOmyjkVBv.gBOlJ2PMjRiIWW7DrHw5+BnNPdW1Njp0g5GKkeBohjbxfuGIBeVuf4uXuTRdxmLniG8fhT3ENXJdIO1nAigQyBbgHUQF7oUFo.h5Phfvz23x61w2yRw8sNOp5IE.tv1wDh1Nxrbfo3wBvJIe9ifrmhkBlwDB+RIwC25S+qP5cir0KKWgFr4Fkg+6ChpVNrAWkrAmWIavpoLVxc+0h1D5fzD4wwHfO33Z1gQn4YFRnEHHQ1AI679DUcZCCr6vdtI.qBrMifzw0YPelxIvIRrfi1FFfN.K7M7sMl0rSXMiC5y3+6Y+1Be2tr8yX14IA.eSEhFQreGVTPgPGvET1H9XhLH61T2siqd+t..y8c3GDHYy5juc.HB8PiUYaFIa6LQhiK5r4UAP4+t5XSmLjTM.qxpYDCFjQyM3shC9fJ0AhiR2SklRZNvOHCl8szGw1.gi73OLYfLph97w7fJZQhGOgtPnDlVPgoQw6SXiTHRI45dRIvKwLcoL5O7xMSbY1.lFU7JZuu00Les07NE5UGNtxzardoHQKu+boPQN9lchEEaD1vwV.PlnN4jRabbApXwRFKLSV4RTqoMz03DpKIR1oOZ1PxxMHp1wCjVMLVtZpoMX1KLf1D.4jCq8hiuLdLlS.aYwwpF9pb3liExoLXRt+g88hi.Eaw2qJ+xL2rfWeZKy13AxRMaXWlzaxS1aRRrjx9Ph.dJSIUTT2bkeV3WTA5g63wrgiId5qv1chncA6yH.W6trIUtrKw2gwBb3JN6oDzdLQbysI+li0EOqqmQUsMkV3x8IXujyUc7iv184OhYLW.RxIToGgGkmQEFBDiWAHiz9oEGbfAnPgHv9S3alKaXZ.NK4+vHmjDOV1rcIL7kUSNzIw1M6eRPrEwFsPySXiVPzHT0EeGVDt7FkODYqDQTjGyNUBOH5PAvVS7fxgx5pS4nyDXF0BWfvH04xVTZsgL5mwvcz7fJLeEMjLyhcUW8yib.7LedkhC7uJZcZRZyYCIhZvn.CVLDkM7Kvwh.8.KMOICWQvBAGXJIEUgHCtvAlBh8hmclrvkPQi28IAkdekfVxDcXvvkZJyoPaHgmlOtvRcZObSLVeMhC6RoMwNotL6QxgrntdLNEDOTSI6J2CIJ9DGps66UWnxb3c5Wox51eao5eao5eao5swRU0vNiuVsAlKNGRjvVvxPz2MISmySTVd9nTo9+C3rZZnI
      
      posted in Scripting
      M
      Mighty23
    • RE: How do you Tempo Sync ADSR?

      @Delamere
      hi_tools/hi_tools/MiscToolClasses.cpp in HISE source code.

      Find this line and edit as you need, adding tempo values:

      void TempoSyncer::initTempoData()
      {
              tempoNames.add("32/1");          tempoFactors[ThirtyTwouple] = 128.0f;
      	tempoNames.add("16/1");		tempoFactors[Sixteenthuple] = 64.0f;
      	tempoNames.add("8/1");		tempoFactors[Octuple] = 32.0f;
      	tempoNames.add("4/1");		tempoFactors[Quadruple] = 16.0f;
      	tempoNames.add("2/1");		tempoFactors[Double] = 8.0f;
      	tempoNames.add("1/1");		tempoFactors[Whole] = 4.0f;
      	tempoNames.add("1/2D");	        tempoFactors[HalfDuet] = 2.0f * 1.5f;
      	tempoNames.add("1/2");		tempoFactors[Half] = 2.0f;
      	tempoNames.add("1/2T");		tempoFactors[HalfTriplet] = 4.0f / 3.0f;
      	tempoNames.add("1/4D");	        tempoFactors[QuarterDuet] = 1.0f * 1.5f;
      	tempoNames.add("1/4");		tempoFactors[Quarter] = 1.0f;
      	tempoNames.add("1/4T");		tempoFactors[QuarterTriplet] = 2.0f / 3.0f;
      	tempoNames.add("1/8D");	        tempoFactors[EighthDuet] = 0.5f * 1.5f;
      	tempoNames.add("1/8");		tempoFactors[Eighth] = 0.5f;
      	tempoNames.add("1/8T");		tempoFactors[EighthTriplet] = 1.0f / 3.0f;
      	tempoNames.add("1/16D");	tempoFactors[SixteenthDuet] = 0.25f * 1.5f;
      	tempoNames.add("1/16");		tempoFactors[Sixteenth] = 0.25f;
      	tempoNames.add("1/16T");	        tempoFactors[SixteenthTriplet] = 0.5f / 3.0f;
      	tempoNames.add("1/32D");	tempoFactors[ThirtyTwoDuet] = 0.125f * 1.5f;
      	tempoNames.add("1/32");		tempoFactors[ThirtyTwo] = 0.125f;
      	tempoNames.add("1/32T");	tempoFactors[ThirtyTwoTriplet] = 0.25f / 3.0f;
      	tempoNames.add("1/64D");	tempoFactors[SixtyForthDuet] = 0.125f * 0.5f * 1.5f;
      	tempoNames.add("1/64");		tempoFactors[SixtyForth] = 0.125f * 0.5f;
      	tempoNames.add("1/64T");	tempoFactors[SixtyForthTriplet] = 0.125f / 3.0f;
      }
      

      and this:
      MiscToolClasses.h

      /** The note values. */
      	enum Tempo
      	{
                      ThirtyTwouple = 0,
      		Sixteenthuple,
      		Octuple,
      		Quadruple,
      		Double,
      		Whole, ///< a whole note (1/1)
      		HalfDuet, ///< a half note duole (1/2D)
      		Half, ///< a half note (1/2)
      		HalfTriplet, ///< a half triplet note (1/2T)
      		QuarterDuet, ///< a quarter note duole (1/4D)
      		Quarter, ///< a quarter note (1/4)
      		QuarterTriplet, ///< a quarter triplet note (1/4T)
      		EighthDuet, ///< a eight note duole (1/8D)
      		Eighth, ///< a eighth note (1/8)
      		EighthTriplet, ///< a eighth triplet note (1/8T)
      		SixteenthDuet, ///< a sixteenth duole (1/16D)
      		Sixteenth, ///< a sixteenth note (1/16)
      		SixteenthTriplet, ///< a sixteenth triplet (1/16T)
      		ThirtyTwoDuet, ///< a 32th duole (1/32D)
      		ThirtyTwo, ///< a 32th note (1/32)
      		ThirtyTwoTriplet, ///< a 32th triplet (1/32T)
      		SixtyForthDuet, ///< a 64th duole (1/64D)
      		SixtyForth, ///< a 64th note (1/64)
      		SixtyForthTriplet, ///> a 64th triplet 1/64T)
      		numTempos
      	};
      
      

      once you find these lines in the HISE source code, you will need to add the timing parameters you want to add, something like this: .cpp

      	// (..........) 
             setTempo(ThirtyTwo, "1/32", 0.125f);
      	setTempo(ThirtyTwoTriplet, "1/32T", 0.25f / 3.0f);
      	setTempo(SixtyForthDuet, "1/64D", 0.125f * 0.5f * 1.5f);
      	setTempo(SixtyForth, "1/64", 0.125f * 0.5f);
      	setTempo(SixtyForthTriplet, "1/64T", 0.125f / 3.0f);
              // new tempos
      	setTempo(HundredTwentyEighthDuet, "1/128D", 0.125f * 0.25f * 1.5f);
      	setTempo(HundredTwentyEighth, "1/128", 0.125f * 0.25f);
      	setTempo(HundredTwentyEighthTriplet, "1/128T", 0.0625f / 3.0f);
      	setTempo(TwoHundredFiftySixthDuet, "1/256D", 0.125f * 0.125f * 1.5f);
      	setTempo(TwoHundredFiftySixth, "1/256", 0.125f * 0.125f);
      	setTempo(TwoHundredFiftySixthTriplet, "1/256T", 0.03125f / 3.0f);
      	setTempo(FiveHundredTwelfthDuet, "1/512D", 0.125f * 0.0625f * 1.5f);
      	setTempo(FiveHundredTwelfth, "1/512", 0.125f * 0.0625f);
      	setTempo(FiveHundredTwelfthTriplet, "1/512T", 0.015625f / 3.0f);
      

      in .h:

      		SixtyForthDuet, ///< a 64th duole (1/64D)
      		SixtyForth, ///< a 64th note (1/64)
      		SixtyForthTriplet, ///> a 64th triplet 1/64T)
      // add those lines for faster tempos:
      		HundredTwentyEighthDuet, ///< a 128th note with dot
      		HundredTwentyEighth, ///< a 128th note
      		HundredTwentyEighthTriplet, ///< a 128th note triplet
      		TwoHundredFiftySixthDuet, ///< a 256th note with dot
      		TwoHundredFiftySixth, ///< a 256th note
      		TwoHundredFiftySixthTriplet, ///< a 256th note triplet
      		FiveHundredTwelfthDuet, ///< a 512th note with dot
      		FiveHundredTwelfth, ///< a 512th note
      		FiveHundredTwelfthTriplet, ///< a 512th note triplet
      		numTempos
      	};
      

      I suggest a double check of the values ​​but it should work.

      Once you have modified the two files (.cpp and .h) you will have to recompile HISE again from its source code.

      posted in General Questions
      M
      Mighty23