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

    Posts

    Recent Best Controversial
    • Let’s Build the “League of Newbies”

      Hi everyone,

      I’ve noticed that many of us, especially newcomers, work independently on amazing projects. Unfortunately, many of these projects remain unfinished or fail to reach their full potential due to limited resources, time, or marketing experience.

      I believe that by forming a team, we could:

      • Develop better software through collaboration and shared knowledge.
      • Solve common technical problems more efficiently.
      • Pool resources to handle marketing and distribution effectively.
      • Share the workload and reduce the strain of going solo.
      • Bring unfinished projects to life and give them the exposure they deserve.
      • This isn’t just about coding—it’s about forming a team to cover the entire journey, from development to launching and promoting plugins or software.

      Personally, I have a few projects ready in terms of logic but need time and help to refine, distribute, and market them. I imagine many of you are in a similar position!

      I’m proposing the creation of a “League of Newbies” where We can work together, not just on development but also on creating strategies for distribution and marketing. By joining forces, We can achieve more and bring our creations to a wider audience.

      If this sounds exciting to you, let’s discuss ideas and potential collaborations here. Together, we can make this happen! 😊

      I’m also open to any constructive criticism about this idea—I woke up with this thought and felt like sharing it with all of you.

      posted in General Questions
      M
      Mighty23
    • RE: More Positive Posts?

      @clevername27 said in More Positive Posts?:

      marketing and promotion

      My good news for today: in less than 48 hours, my plugin has been downloaded over 240 times from KVR Audio to my Gumroad. I’m not sure if that’s a strong number in general, but to me, it feels huge.

      If you’ve tested your product and it works, don’t be afraid to release it. I’ve left projects sitting unfinished for months, held back by doubts about quality—don’t make the same mistake.

      For non-native English speakers like me, don’t hesitate to have your writing checked by AI or a trusted friend. Take the time to craft well-written marketing emails, and always personally thank those who support your work.

      posted in General Questions
      M
      Mighty23
    • RE: Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST

      I’m a simple person—I like loudness! 😄

      I’ve been experimenting with an inflator-like idea these past few days, and here’s the code I came up with:

      declare name "Inflator-like test1)";
      
      import("stdfaust.lib");
      
      // Interface
      input_slider = hslider("Input (dB)", 0, -6, 12, 0.01);
      effect_slider = hslider("Effect (%)", 0, 0, 100, 0.1);
      curve_slider = hslider("Curve", 0, -50, 50, 0.1);
      clip_slider = checkbox("Clip 0 dB");
      band_split_slider = checkbox("Band Split");
      effect_in_slider = checkbox("Effect In");
      output_slider = hslider("Output (dB)", 0, -12, 0, 0.01);
      
      // Utility functions
      clamp(x, minv, maxv) = min(maxv, max(minv, x));
      sign(x) = (x > 0) - (x < 0);
      
      // Convert UI values to processing parameters
      pre = input_slider : ba.db2linear;
      post = output_slider : ba.db2linear;
      wet = effect_slider * 0.01 * 0.99999955296;
      dry = 1 - (effect_slider * 0.01);
      
      // Curve coefficients
      A = (curve_slider * 0.01 + 1.5);
      B = (curve_slider * -0.02);
      C = (curve_slider * 0.01 - 0.5);
      D = (0.0625 - curve_slider * 0.0025 + (curve_slider * curve_slider) * 0.000025);
      
      // SVF Filter implementation
      svf_coefficient(cutoff) = tan(ma.PI * (cutoff/ma.SR - 0.25)) * 0.5 + 0.5;
      
      svf_lpf(cutoff) = _ : fi.tf2(b0, b1, b2, a1, a2)
      with {
          c = svf_coefficient(cutoff);
          b0 = c * c;
          b1 = 2 * b0;
          b2 = b0;
          a1 = 2 * (b0 - 1);
          a2 = 1 - 2 * c + b0;
      };
      
      svf_hpf(cutoff) = _ : fi.tf2(b0, b1, b2, a1, a2)
      with {
          c = svf_coefficient(cutoff);
          b0 = 1;
          b1 = -2;
          b2 = 1;
          a1 = 2 * (c * c - 1);
          a2 = 1 - 2 * c + c * c;
      };
      
      // Band splitting with integrated gain calculation
      band_split(x) = low, (mid * mid_gain), high
      with {
          low_cutoff = 240;
          high_cutoff = 2400;
          
          c_low = svf_coefficient(low_cutoff);
          c_high = svf_coefficient(high_cutoff);
          mid_gain = c_high * (1 - c_low) / (c_high - c_low);
          
          low = x : svf_lpf(low_cutoff);
          high = x : svf_hpf(high_cutoff);
          mid = x - low - high;
      };
      
      // Waveshaping function
      waveshaper(x) = select2(abs(x) < 1,
                             select2(abs(x) < 2,
                                    x,  // > 2
                                    (2 * abs(x) - abs(x) * abs(x)) * sign(x)), // 1 < x < 2
                             (A * abs(x) + B * (abs(x) * abs(x)) + 
                              C * abs(x) * (abs(x) * abs(x)) - 
                              D * ((abs(x) * abs(x)) - 
                                  2 * (abs(x) * abs(x)) * abs(x) + 
                                  (abs(x) * abs(x) * abs(x) * abs(x)))) * sign(x)) // x < 1
                      * wet + x * dry;
      
      // Main processing function
      process = par(i, 2, channel_process)
      with {
          channel_process(x) = x : input_stage : effect_stage : output_stage;
          
          input_stage(x) = x * pre <: 
                           select2(clip_slider,
                                  clamp(_, -2, 2),
                                  clamp(_, -1, 1));
          
          effect_stage(x) = select2(effect_in_slider,
                                   x,
                                   select2(band_split_slider,
                                          waveshaper(x),
                                          band_split_process(x)));
          
          band_split_process(x) = band_split(x) : 
                                 (waveshaper, 
                                  waveshaper,
                                  waveshaper) :> _;
          
          output_stage(x) = select2(abs(x) < 0.0000000000000000555111512312578270211815834045,
                                   x * post,
                                   0);
      };
      
      posted in ScriptNode
      M
      Mighty23
    • RE: Click and Drag on a XY PAD - What I'm doing wrong?

      @ustk @d-healey

      ok, many thanks!

      HiseSnippet 3403.3oc2ZssjaiTFVNId2LFBr.aUvkplhK7rShV4SisIrv3SZ7Y6Y7YuEEzVpkTOVpkFcvm1Zqhp3QfmDtgq4QfGAJdB.dAV5VxxVdhyjgTvR.cgmn+9+v2+g9uk9U5ZYHBssMrXhDq+ZSHSjuazdqwNpkTAHLSsxLQddztVPanCSw0l.aanDSjHO8J5pQN4YLdW+seYQfF.KB2ShgYnARD1Doib1Ss6kMPZZB.IXejdHtSeYMQCbICMCWBRdZTdFSf3bfBrMfx1ShxTEXqxD4yhlOSlD.I4rxIRkH+LIYQXpr7WjNaRPlbxxY4SjNkTV4zDP9QUjPNFV8b.NPalHOqngz5dpFKw9FXHxFMSCRuIASOhk8IKXnIQcQJUlRpHMotAgHaFlHQ6tOf8T+.1mFsERBsi99.2m3s.6dIBG.i7jCg2SO.dIBCO9Pv6HPJRHH8LeH8Ch1SzBY5reEJd9NQqgcfVx.RdJLT74k4I+8OI5m+4rkrfDDw5nBYksLvNrn.g3dQrRDBPrCmNXNTft5NMF+Bd9WxR94rW+hXuHFQQWAc7zhNIdvNdRWfDqI.C0HpgjqscXW.r7o2Eqw9ErA5VA5TxP2z.StI9oALb5N8tEf.rDKQOxHEWKe31zvwAA69F1HD8PlAHI4QJ9ogV+zWxR7BOeHr1HU+wOcIRxQkvPliurJDon571Welhe4M0Dq34E7tNJm.MMikkH+NirGvlv+oEzzX2S3rWG6MjprEPQAgUJZ3hkriGD0nAylFh.ssz4OySXRTrFF4f.ZnM9wt4XiY1r.KKv5Chc9z+B1u7WED9CIn2hujEtxTCIhbzVyRPhCAETUhrXs.XEHgAZphTsgTvd1RbqmPLjrgEabpcPDav+Zxe94rII+47yOi8qdQLVxkmQ9Rzu5sVgzfvvormyFGQ9IwYzPJUN+eI.txAvyCADDCEcfR9HjymUjLUEeAAG6r8VMHPP4pWYZXS7bC7OyWJVjM6qxvy5XPx3b64O.uzrxMTFiS3hVU7RB31hsulEpYC2awDGyhqOlE8rWB9G1fTSwef8tWHo213.IO6XYnsKiPUNoDc6tUYWrH07bGlHn1ojufA0j90aTq80zpjsUJsLbs2msYo45C2hduZXO92ox.qGGtfjl8BP6veYWKZUlz1hdNtPoPO14nKc+fZKfomWigK86DwFDfYCbdpORp60bg1ghvAaDFSpA0AlCoqG2QEYSqDie5pSOyqsQ3McinMKheF6qXC3aKkWxtsbHH2D1.SNtAVeDCT0qcyAVHfz1r+AV3f.w.SofV7G2g8S07doZev349gUnOKItGKSHsW1xPrShcxImbuTbALRGPi3BVjC1805mk6rWeRrGGySdURdJ2mbxtB6ud+AC6pz1V5PN5Zgwbx17kpPLKv2YIahzMV.kHtKBqgvv8r6EeiKFzZ4k9AFRYz9cNkgjy6zoRsTEIp5qxk.RqSoacsc7TKkUKnBKRZEIe5En3PXI3pNx6U9gso75DPY2u6ieO.jEoIrmA9q+1eOqqeRa0th1P4KMZKdZc8AUndneW81CThFNtuegvY623LpUjikn16Xcz78CZOM+dMjtLRuger9A8iIGwO7KpenMB2yOBV4Acj09Nxj2VqxafljmewgclgipeWCaZiBKnrF4HDVQUuy33XY+4uqqW8.W9lKL3r7sa7.bsyk2ufG8ckOdQI1eAs9gb8UdzeG6n7KuIam7bbue8xheUriDptmras2mw9J5QtaqAX2d..sGiCRC4rd+lKRPijQI6B8Ej7rk5rjcBaOZirJ.SBwPqiru79UBjGQuEB6+WvJu7m28z+BVsqsuEzw0BGDYd0VwNif439bRn4K5YreNabesEhuy2tJ8XsXTexOh75Xgd9HMORzXCoh8z77o4v8unQtRIp2ev4BbiuXr4fhbtF04TKq2sXAta6aXHnr95M3YCEVIOC24pV0JbwlpiJ1ApZRtVsnnbAtQbUE35cS09ycFcWkTWrn+B2IEJlZvvaFUed+J45kTpdi6pUTBMX4hoEUR1ueszxSsW..4TKlVIYxp0Sv2dIWVwTUyBztYxfAoFrwrPyNoa2L2PiExvyms7hEcSkz9hEsmkRFttR0qycSwxYEGaVW5FtVMjTKcQtgBvQ1UWk3hpaV4tdVRk0cUgk3kVm0oP6ASGNqSKP4FSK2XdgFympZJplOUaKTiZ4saHMQTLoxRqr.ozIlNeyFdUAm6pccAWkjJymktVmjJ1iGTaSs7hBI6OstCbAWxg8.plpFXChRstnj6Rzsxyt10UuWavFqpCTuYjvlJtP4oRRkxMqkTRIIygxhtktZYOq1ytZ07LcQkVJMR55rfgR4WUrgU41Z7sLEV1QlqjIdby5othu4n6RagssFtwt5nYN2kcoc0ZJvNfaqWnqvl0hiuvdpceqqxBbL1f4ROBjeV+V58LtyvPIMOlSo0xqJUpzrZEAMmH0YxrE0rHQailEg2TwXVAAzxQYEE5OT.Ma0rkkgqKaLNY0aucYKklKRCLW3zoUMkEaPURVr4prR0u95pBK33zZhKLurJdBGWwpxb8KWlSdB2597cmUnJzjSFXmW91TMjSmKeIkzBCxIr9bd41sLq1OkdqV8RL0vbTG7zo5fUSqvi5x2haT5MC.m2smT+dUlOYP8h8aqnKvuobkQslUsEecWm4J71c3arp+XyMMxNNgq9zV8JbWAcTwj84qTiu2Xd9x75ILLH5H8.yoqMztKsx.gZKVgMqHVGOvrXm1WMtmsFN0lwquVAXlQ81L0rxLUMSuK3R2uPtZcytTOk9Ty9WauQD.tZP2BpvhBloWLRe5cEaLb8PAQ2MoK3BlAptnWF0EsF141EML6ZiElJls4c4V.N+V06b0WYkpdd67oWMFOp9Tb0VMFdSWNq0yNel9nhfriy4Htt04SUc5O4b64I61L+nTBWWZijfV8bkDqOVzcdgt1H6YcvvZ2Vq53tklf0qTb75I2MZyEMHaGuScAm902nlKy4CEFWIggfb4B4g37nBokRKaveUR.Z0x7cEv3Zqm6jU65t1ScZmXX6LkWsHeaP0jCr0UuqRZ00CkgSQSDqUeVlU.kVp0l1VPt0MVFWe6xz4az31ziw43m2r1EJiW0o8jpobKtbzFNd8q6VrZ5ri.JapMp6sIptXwFf1hZs4pzDTrfc4zo6zq6Z7xp0OeQ6bUk2LZX0L8zJS1H2RZUFS6UJhNILPEFOx4tdVYf7EST3zXwda86iuuGGoQueqOedKCb.j1d26X2cBRW167qcMxMvsMbfcvwOK1WQd9PxQN2eIY4it1122PCZczkoCSx5gDLN1UeFzJ3I5BXjIxyNbJLQe6SgI7PhD8eQzPLZfouWbGSH9sM5Hlsu8JCSjmrEUDVc7lWy2a67Z5ogjfVLHIlHebT560lfwCv6GTVsKYdzBmbuve5q+C+nW+GZbIyfZzrBcpQagCAhlPKR9i38QJCWfDg9yP5jnkg1ycLLIFZ2aayDIluQeQvDlnYcOaFKZvinvrZGd+sxWtNL38lgR3U8mZRXJlFltlcv2PoWh7h6yoin5vQhvD46G8fQhvfbf5ASO7jO5O969GeCUa6olLLYpu+t8mWDMTccHW5xeC0khF4mQ92AtyGkb6LO24N6nDL1GJsu4a7rOy6xaLAVDrEFj6isdxFLsGhq7DlP7872Y4TnTyWFJ0bowk5HIIMX2sOT99j1e4WpGdTu09SjSSBmRIuziYOzFX3oAGFSe76rJcu59SV2CSgM0j2JDeKf3MmK5mDskgjqF4n7CFSKcX1aWfp2vyFkNeSLwdqCq4+sM61GKD+AQ6hbDUONFexQvHsIy+Av31Id+hnUjkIu8yd.9rnBi+VX71Oe2mn.oapAuJv7eusDXoTR7.enBFlxPMvAApQGzRhTkcjOkQM7BROxtFZ.q6Gle5i1OS7v94ydz0BTWh8C550eXTuv7G5fzK0+gMH+jnjye9uDDuwvkNL+V.GKDoObz1jW+hbRlHj.OLcPHziAeB8Ia7ummdOED8fXIuaHG38MaWLA89HaWLQvhgCC+X+vv2I5HvBn22fzKBDMZuBidfsz+4G62dz7Q+sG6H5PfPeK.11zvFlHrl6A0Q8IGsYe.06IQxiJQxC6C43hOT09jNfKZnPvvRODeO+x.hICSjTlbfxH2eflZgVE9L8JX.oHve1bcrEIAFZcW35nttZ1PucHIBK3dxICStJvRhjyDendiO6w0a7c7EX+nO39Br+OvCZbvonmDfQ+CMqPNbSi7R.65bKCb0bBnd3oosLvFz4xfNHQeCjzgPQAdP8yQcnBNN.5SzGP4Su7FnFDXGZ63O8xlHLDXQhSv2yXQh+k+f4GMe8Sh5CWVZ+B1+28ADe5+W+.hO9cejVfeXmE+wQIshSx5kJY+uSt7aiy7+1vF5.QKie81uuMcS+y8nP7ar2+ihNIZK58ruw.VXXHukI5WKJdnpdCAS99JXp2WAS+9JXl2WAu38UvruuBl6cKH8D8BtNF9yXj9jMcq3MSqHQ7enFusIL+S.b1u9RB```
      posted in General Questions
      M
      Mighty23
    • RE: Let’s Build the “League of Newbies”

      @orange said in Let’s Build the “League of Newbies”:

      I think sharing and collaboration can be done on a forum category or topic (there is even a category like "SNIPPET WAITING ROOM").

      I shared our collaborative vision in the group chat - we're working to align our ideas while planning to contribute back to the community. We aim to both evolve together and strengthen HISE's ecosystem.

      posted in General Questions
      M
      Mighty23
    • RE: More Types of Saturation

      I made this sketch in Faust to allow us to test different types of saturation

      import("stdfaust.lib");
      
      //  Parameters
      drive = hslider("Drive", 1, 1, 10, 0.1);
      saturationType = nentry("Saturation Type", 0, 0, 4, 1);
      dryWet = hslider("Dry/Wet", 1, 0, 1, 0.01);
      outGain = hslider("Output Gain", 1, 0, 2, 0.1);
      
      // Saturation Functions
      saturate(x) = 
          (saturationType == 0) * aa.tanh1(x) +  
          (saturationType == 1) * aa.arctan(x) + 
          (saturationType == 2) * aa.hardclip(x) + 
          (saturationType == 3) * aa.cubic1(x) + 
          (saturationType == 4) * aa.hyperbolic(x); 
      
      // Main Process
      process = _ <: (_, (*(drive) : saturate)) : dry_wet(dryWet) : *(outGain)
      with {
          dry_wet(mix, dry, wet) = (1-mix)*dry + mix*wet;
      };
      
      posted in General Questions
      M
      Mighty23
    • RE: Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST

      @clevername27 said in Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST:

      or is there also some dynamics processing as well?

      there is no compressor/limiter/gate in the processing. I would consider it 100% multiband waveshaping.

      @Allen said in Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST:

      For the band split, you may want to use the linkwitz riley instead of svf.

      Yes, for sure. Many Thanks.

      @Allen said in Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST:

      may I know what CPU you're are running this code on?

      10510u i7 on Windows
      Late 2016 Mini Mac overclocked and open-core operating system.

      posted in ScriptNode
      M
      Mighty23
    • RE: do faust nodes only work as hardcoded in a compiled plugin?

      @Morphoice said in do faust nodes only work as hardcoded in a compiled plugin?:

      I guess a workaround would be using a knob that can either be 1 or zero as the gate/trigger parameter inside faust, then simply passing 1 to it on a note-on and 0 on a note-off

      In my opinion this is the most immediate way and by testing it I can guarantee that it works.

      What I tried to understand about FAUST:

      • we need to enable MIDI by setting it to ON like this:
      declare options "[midi:on]";
      

      We can capture data from a graph and analyze which MIDI note was pressed like this:

      current_note = hbargraph("Current Note[midi:key]", 0, 127);
      

      And get those information in scriptnode:
      scriptnodemidi.png

      Unfortunately, I'm not getting the desired output values, but I hope this rough sketch can help you.

      HiseSnippet 2311.3oc6Z0saibaEdFaS60paSSZ1DzdGgQuPdifVMxx+stAq85eZEZrWCKmEAHHvfZFJqAdD4zYFYakfBzK5E6qPtp80n2Ef9BTf7BzdUusuAsGRN+vQZjskpcZ11nEqsH44vyGO+wuwRzqinLGpyYgLWeeZjgg4rGGvsogg7.CyRmNvmZX9XTqArnt61k3xLZtmg46fNjDFQCvpod4.eRXH0wvzb1ekXByEmyP95e9hWR7HLaZ1TFFul6ZS+D2dtQYyd71+FWOuCHNzSc6oIcisaZyY6x838A7LKplgOw9Bx4ziHBwlAY7qIgcMLeJZyUW0h3zY8NVqXsYamN1zUVu1ZMVuNY0M5zY8ZVMVwY8NM.PN+9NtQ7fVQjHZng4buj6LnUW9ULkAdsanaaOpXfkQKvxpoOf64HNhhYM1sqqmSpiJDbaHM21rJ21SPG553lNel66ckKfyzP2AZNSd3MaN3YoCuZZvq.HYpAo4TP58PsrCb8ixVQfmeDpIChlcHPbRGJJYML+FztbP.VT0djKnGD.CRUn7Z0pUAC+X4s5zmYG4xYXN6HdD8UrxKW5qJsXoeWI7vK0oSgqILS.2yiFT3xhTifaRwxr98ZSCpfuj30mlJHb7y6SQi2mpGxsUmZMA4rlL2nW4SYiKQvH1UAu6SatGIhHBDwyAx4SChbEPvbO5kPYfJrrHZOZ3EQbenPXjXFjsvc56QhxmBIJzhW.7A4hahfCKzMZfdg38Vd0cEhuG5X2H6tEiwYJ.ifm5g.iwUi+Xz9c5Psix.3bnC9rGlROcyuXh4UUSxNoRy+yimgwcnX4zzP2PZf0MzO8udW6m5em6mlTjWAMIET2XOzwVPkOmUS9B5dM+26Zn9VPsYtd9KlfwVt878n6ytj5AMfjX7mBcb5P56EkLa9rtC4LteWNy0VOQ6DZTf64mSCzwdgGnchhfqoyl4IaeB0iRB0xD+Ea+ItLJI.7SzozWXMw2+UX75mgTvEKJUvu81Sc1+mtmZQgyRwsPAaJL9iiGhO3yrJjHyaz5w4GP8IAzS4G6QFTNjHJQNAvXEbaOt8Esb+R5nLM7UP3kBIJa2kvXTuvogPx72SI4Fmv6G4xN+PBTZdMvr4n98ZA81so6FiNXNyYD7RTiqIFKxKZAD+kC9Wvq3EsDiMiWzJYQMJMGQithGbgLbD+dCyETbH6AsfOfzOLxXGOO9UGy8FjzBQdjnAghDVyEP0pB+SI0t7d9twoxPfRMLA66zi2GLa7A.H5eJw0SPdnU+PfBlyqXs.gk2FJRzNR1IY9CH1fmcvwD3dVnfQPhCxNoAUsSyR0AaVdhvCqdrB80E6Zx8kJOG.xdB2g3oOLmUrtxenLe19qrWN37AZvISD8TUc.nV81.fFqRUQhXDzBXFUIQyvWKV0l3Y7ZQRnv+Yj.5Y0.8BnNxCbN.+X.vAzpcFqqJQqIBkyLDJWDsqGryMcRfn57eJMLxR12QW3ehHG+XR.Xd3YPBSTQRiPaZCyGkNBfzgtrXA+PQ9WsMUuVe80ZrQ8U2ntwgjqiE.gpComshn9hl.iUAAVdDhntoKV0m.hZUS8xpwl0rrVSGU4vw7nUEkAY18Qn5fZ4LMBYAiUoTsgqOwcBn+1DisfPdXYiG9y4BHGpMYPhkeePxUhOkVaVu1l02b7mx54OkKJOki6XNOJ+IrQia3DhP42Z01T71dNzn0Hmd2wMcQjUsaJrzi6fCHryS28zv3zGWZbWiKKhBh4Uog9UmV+0MZnPnJWzNJugZckfOxojfyoQx9O5SD+nuLp7VQYge1PCUCanlGbhPWwKgRb.uoHWrvBHk0LJTs2ActGuMw6Lah3txh0TqA2PxmqO2GhBTWjVMmLE0wansQuw2iQMpuwlPYe8UZLYco0NfwNXPq7syL0BpycaAUUQqZpc5Gw6Ao+xm61Hi6XZTyH2UWYwhbdn2Wd0EvooZl.Ee2Y15+Gc007H4iFjdif3Q7pefn6v38Kym4WxX.qUKql6aNa6rjdsmjYb9rVWPuR4KzEuPOoNxFZvTbM8K47K5Qj7sdP+qI8Hz9WGEPr9d3S7DCs5eWBsefS88Fm57DZmLF0SK4zDa9VB0zg6Ys8e+K+CuXjdVv7C0yRJWwslJhZpb0+zW+0+4WXbyMLat8HFe6+XgMLGuwKfsZh.taa7ve3GhupRkUV4ausydiQO6u4amvyddJrwq86+psMl36oDlYBMsNMWsqplXS+l+xDGwGgHbVxyTDwe2ILhOBS3jk+au39vweqVeH5wZV+dgh7chq6TRt9GnH++STjugmGbAjU80GyC5d28T+2m062E725QrC3mEGukWoKmAhXLYLdQzghwXKiKGtcif+vY1142pQTr9zp3JSqhMlVEWcZUbsoUw0mVE231UTTDEmkK50.WOb79xjPSy8Yh9YRJlFzdsoNNTG0msfHWMcFF85C.RzxT9NthG4XFwuTH4CTrReVJKxpNg9IeUCLl4eLKxsmOOHp7RgQNRQq541dok2pDPowiDPwbe4cE3k9bwd7bN6KVZqRkd1yv64F.MHwG1bul3KnCvDawyzfILGrianuGYPI69AAfcNiwin3OF2sMT1FP76VdocUqfEe+LTaLrEewRUv0pfg1Bf8EzZ.cXfTACJujXXpf9hqzDR2nAHec4+qI9lgXAJJHk.J1teTDmUdIwPMKr7VXI5S9jHw9oMPvvMkcweZSbRcVIEmVAxC8bcnAkWRMymGFMvi97KX71RLW0R7iZvOqqdix+QFnqpbhQzbkQ0L9xcccimZDsWU4vRUMlUhtpwSUnpRC2HUageARkDeUqx7JkDbqOKNZjtqoDtGZeqKhBqFGPTwCfo1YRlZ55mReaT8qoNSYATAr1MfJBq6rWqSvz3PWoj2.aLkUk3DFPKqBPUvRucEbriqBN1MTAKxGh2T0mTMNT7sgPE74g1tdx+l.x73NRmQIk.eLrZUPfxhi8x3mCqVEd9WwEtkgnXla5iRQH9o3zSerMOsKEKwXWref3aQg6kTQBmfrQHNBVMoHAGwkiCcOmQ7vc.aUJ9SDDvhZOJqf1SSsXErdM2x3e4ywmU4rsLL923A4vWB
      
      posted in ScriptNode
      M
      Mighty23
    • RE: do faust nodes only work as hardcoded in a compiled plugin?

      @Morphoice said in do faust nodes only work as hardcoded in a compiled plugin?:

      what is actually the benefit of a hardcoded fx?

      The forum discussions highlight significant performance improvements. For instance, some users have reported dramatic reductions in CPU usage - from 14% down to 4% - achieved simply through compilation.

      Nodes containing FAUST scripts must be compiled and their corresponding .dll files must be added to HardcodedMasterFX. Important note: the uncompiled scriptnode needs to be completely removed from the processing chain, not just disabled.

      Any scriptnode that is compiled for macOS must also be compiled separately for Windows.

      posted in ScriptNode
      M
      Mighty23
    • RE: Adjusting a filter Q from 9.4 to 9.9 with a 0-1 knob in Scriptnode

      @Morphoice

      Try this:
      minmax.png

      posted in ScriptNode
      M
      Mighty23
    • RE: Quick ScriptNode Tutorial

      Thank you for the tutorial. As someone new to this, I'd like to understand a few things. Apart from when we need to export script nodes to other projects, when exactly is it necessary to compile script nodes? Sometimes, I find that I need to compile the script node to get the sound output, while other times everything works smoothly without needing to compile

      posted in ScriptNode
      M
      Mighty23
    • RE: Modulate Gain with a control.sliderbank

      Done!🤙

      HiseSnippet 1773.3oc2X0zaaTDFd1XONMtgJZof3nOvgTnJxt4qV0C04KWhnNwJqanHjHLY2w1ixtyrr63jXPHwQNfDm6M9IvUt0eBHwej9O.dmY206t1NI1F2VANRwd978Ydeed+XlF9BKZPfvGYTrYOOJxXQrYOtry1cHLNZucPF2BWmDHo9kB6Zqddjf.pMxvH2SUcXrPdj9yqexVDGB2hlzEBcjfYQeFykIS5sQ0uf43TiXSaxbSM6UqtmkfusvQzEvSNbYjGw5TRa59D0zlCi9bRPGjwmhezZqUgX2ZiVUVoxiNwtkEckMJu9pa7.xZOrUqMJWY0Ur2n0p.HKrqMSJ7MkDIM.1zsD18L6HNmGJfiXArSbnpFUPlfjC6FscGliciXkS.BYfajnpxEpptKtNyl0u+DU16qGnTxJRqzLl6pfTkI.RFofT9PHcarokOySlLhBO2DuGGrfsHfsIMTBmKx3U3sEvD3xkcImRq4CM5ufkVub46WB928dbqtbKISvKI36KjzC3Kcuh+PwEJ9iEKM3PsZMxwThwW33P8G4vJ5f+Usvk3ccOg5e+RmQb5R6OQ33mUmVX7zoVgm5TSTv2iyjG3QiZWS3XqzUpeOrE.Eo1T1hHDBPQpsD2IxRX5vro9M.hLhAaz6gS5nBReL.tkAF1LahjfLJiW4AK2+yi1N9Ws9r9ctxAoFGgd9d6nVYDF.3.Pzi5KYJMgwNzy.OvP1wB3cnAmJEd5455I3JvabiI.wWj3t9MU60uwOQpdNyV1QcVpZfPcnr1cjpV+BLpWrNaOac.FsXJU6EUPA5sdSWQWdp.DkphFlZCNUB6tNDYVOMULnnA.pRF5shCyCXxdoiQMAtekuR2uwEh2F2fIs5LZLN2HvHXIeSfwnfVuGd2VsnVxD.lGW6ESaDpxieDJbn7KFY9AYpDdF1PZPreW2DdWfhIAzJTbDqeFmDcvym5Q7oMEMbH8VJf354PODP98Kchiv5TS12SGNjRDkbK0LVxpCgyoNASSjmBynn4nCEckLd65DoOC7xvJE.jHzhtcD5T5f4TAcBaWV0VwVLobaci+F9DMXk9JLXvJwClDuBsOUdtv+TsQJ52Hi4CSVbjvoqKcGyFnMcbDmqhTvhntfgQ2WCgSOuNBNyR0U3LhAZr2bHZgT1MILGEW2ra.DX09.tILYccBF4Nh5Gn234wkWF9C396KrggJTiXA50dMHpnJ2FqhUCLVp+xV8YtogZFtitdgzip1y3BKB0Z.lc0Q+fxJLxkJjYHqU0B7ImKjitWvQpQsHNniBCYCmM0dpldLfUSsH1UXGBvL3+tove+YLLjSs72jHNWJDuHVRgLAGGziaMJLCb+kSMigwblMXRPMJIjXSheapLHJGFmZER1zZVUNiBXevsF0f.eQgBSByizf5yD15ZHSFRsI462BVZcFORCjDfsN4hA56wUMkTOUrhzIKLOkddnNIcuJ0173lpSMZfs4tUQWsre8SFV1kmPYuHtdWGIyygABYn8GM4GdPXSD.V.uKm.Q0rmERu5uN3w+2d4K+iqP52B+bthrQCM8CHAVUTJ1cDwICu9l.u1mtrdfgoyQq3ZHx4mRh7hXKkh6X0EaxRmmGGdPTxARfcQbMc6vB7f7Za0ExZGlSMSOJGdtM8h3P76BYorgRV0KONreFmiborPyOfERq4+2agx3ZNf84qptYWovExVpq+YFwVgDcWJZtI9YBgGjf1WhFZ6eKH+BPMpR5HbUxDENEu3RhBmZFiJJbpgeCQdKfaqxLkg1VPW.9Pr1zktkoYZ9pBXY4qeMd8UStri9xO5K6LCZOPJBiqvKXFY2i8nGZquDG.kwHSnq1CUFQTnq1it5gnUbMV+4xX8G6PCJW2WMrRAT.iSngW092+vpwNC.FGWcxrNIx29A67WQAELcEBYGnh6LfAqdFpqQ9yB8vh3CoAT4kvPxRJ1RHN0knKVeptre5aAdqvAgiOTKp9k9zUR+Q51k9RxYzROkBUoptCakq3w99yw8w97F6G66.KIH9l9DdfmHHqtk5xZJ3pyXRmOOfVym9cGphckt+sED+QNzqeRM3PNx0XRjc80AAG7sHTtEYuhW9w6JdYeXhTyeD2SN+6fGWb175FuCe.lLutvBwXzjoRDsK+LpC3Xnw3c.OgVDnj43dyRrqK3h36xlX0OjB2CucaZ1v5i5.soTpSrkbGfCoNTRZF7mT8Y.yi3WWGdepzES9aAOR60GiCgaIk2Xo+69vY49e8Cm8V4wfdaHCWhku33nJXU7zan6AN2bcIKKfqqZWp+SgmXKcgnbGaYkcqFZgOXZW3JS6BWcZW3ZS6BWeZW3FS6Be30uPURnnh1TtlPMYM1MrHdi3GG.7HP+C.U5eWM
      
      posted in ScriptNode
      M
      Mighty23
    • RE: This is my reverb in FAUST, what do you think?

      @aaronventure
      When I test it in HISE I notice that the left channel volume is higher than the right channel volume.
      I thought it was caused by modulation but even bypassing it in the implementation, I get no improvement. Could you advise me where to investigate?

      2f63ddef-fa54-4852-a2dc-29fcc5a2b025-image.png

      PS: The oversampling suggestion is great.

      posted in Faust Development
      M
      Mighty23
    • This is my reverb in FAUST, what do you think?

      Ideas:

      • Adjust gain curve to be more "exponential" for natural decay
      • Add smoothing to crossover frequencies to prevent zipper noise
      • Increase filter orders for steeper cutoffs
      • Use fractional delays for smoother modulation (?)
      import("stdfaust.lib");
      
      // Early Reflections
      earlyReflections = par(i, 4, de.delay(ma.SR, delayTime(i)) * gain(i))
      with {
          delayTime(i) = ba.take(i+1, (13, 17, 19, 23)) * 1.5;
          gain(i) = ba.take(i+1, (0.7, 0.6, 0.5, 0.4));
      };
      
      FDN = si.bus(2) : (preDelay, preDelay) <: (earlyReflections, earlyReflections, MIMO_Network ~ MATRIX) :> par(i, 2, (+:applyFilters))
      with {    
          // User-controllable parameters
          decayMs = hslider("Decay[unit:ms][style:knob]", 1000, 100, 10000, 1);
          preDelayMs = hslider("Pre-Delay[unit:ms][style:knob]", 20, 0, 200, 1);
          modDepth = hslider("Modulation Depth[unit:%][style:knob]", 0.5, 0, 2, 0.01) : *(0.01);
          modRate = hslider("Modulation Rate[unit:Hz][style:knob]", 0.5, 0.1, 2, 0.1);
      
          // 
          // High crossover scales with decay time - longer reverbs need lower high crossover
          highCrossover = min(12000, max(2000, 8000 - (decayMs - 1000) * 0.4));
          
          // Low crossover is related to high crossover but stays within reasonable bounds
          lowCrossover = min(500, max(100, highCrossover * 0.06));
          
          // Decay ratios adapt based on decay time
          // Longer reverbs typically have more low-end build-up, so we reduce low decay ratio
          lowDecayRatio = max(0.4, min(1.2, 1.0 - (decayMs - 1000) * 0.0001));
          
          // High frequencies decay faster in longer reverbs
          highDecayRatio = max(0.3, min(1.0, 0.8 - (decayMs - 1000) * 0.0002));
      
          // Pre-delay
          maxPreDelay = 200;
          preDelay = de.sdelay(ma.SR * maxPreDelay / 1000, 512, preDelayMs * ma.SR / 1000);
          
          // Calculate decay factor based on milliseconds and frequency band
          calcDecayFactor(delayLengthSamples, decayMs, ratio) = pow(0.001, delayLengthSamples / (decayMs * ratio * ma.SR / 1000.0));
          
          // Matrix
          MATRIX = ro.hadamard(16) : par(i, 16, *(1/4));
          
          // Network
          MIMO_Network(fb1, fb2, fb3, fb4, fb5, fb6, fb7, fb8, fb9, fb10, fb11, fb12, fb13, fb14, fb15, fb16, in1, in2) = 
              par(i, 16, DEL(i))
          with {
              baseDelays = (3797, 3541, 3323, 3109, 2939, 2801, 2693, 2593, 2503, 2423, 2351, 2287, 2237, 2179, 2131, 2083);
              DEL(i) = de.fdelay(5000, modulatedDelay(i), fb(i) + input(i)) : multiband_decay
              with {
                  delay = baseDelays : ba.selectn(16, i);
                  modulatedDelay(i) = delay + os.osc(modRate + 0.01*i) * delay * modDepth;
                  fb(i) = ba.selectn(16, i, fb1, fb2, fb3, fb4, fb5, fb6, fb7, fb8, fb9, fb10, fb11, fb12, fb13, fb14, fb15, fb16);
                  input(i) = select2(i < 2, 0, ba.selectn(2, i, in1, in2));
                  
                  // Multi-band decay using automatic parameters
                  multiband_decay = _ <: (
                      fi.lowpass(2, lowCrossover) * calcDecayFactor(delay, decayMs, lowDecayRatio),
                      fi.bandpass(2, lowCrossover, highCrossover) * calcDecayFactor(delay, decayMs, 1.0),
                      fi.highpass(2, highCrossover) * calcDecayFactor(delay, decayMs, highDecayRatio)
                  ) :> _;
              };
          };
          
          // Apply filters to each channel (oh! I see colours, that's so trippy :P)
          applyFilters = fi.lowpass(1, highCrossover * 1.5) : fi.highpass(1, lowCrossover * 0.5);
      };    
      
      process = FDN;
      
      posted in Faust Development
      M
      Mighty23
    • RE: Is there a size limit for SVG to BASE64 files?

      @d-healey thanks, I understand; either I find a way to have the SVG file without PNG inside or I limit the use of Zoom In/Out.

      posted in General Questions
      M
      Mighty23
    • FFT Display Code Causes Audio to Mute After Compiling Twice

      Hey everyone,
      I'm experiencing a strange issue with my FFT display code in HISE. When I compile the script once, everything works fine. But as soon as I hit "Compile" a second time, the audio output is completely muted. Restarting HISE brings the audio back, but the issue repeats if I compile again.

      What I'm Doing:
      Using Synth.getDisplayBufferSource("HardcodedMasterFX1") to fetch the display buffers.
      Assigning these buffers to UI panels (pnlMidPreFFTDisplay, pnlSidePreFFTDisplay, etc.).
      Running setTimerCallback() every 16ms to call copyReadBuffer() and createPath() for the visualization.

      Pattern of the Issue:
      Compile once → Everything works.
      Compile again → No audio.
      Restart HISE → Audio comes back.
      Compile again → No audio again.

      HiseSnippet 6136.3oc68rsbaajkfxFxQHQIYlba1s1G5x0NSQ4HQS.RcKYShrkkhcM9hFSMNSUYynzBnIIJCBvA.ThLyjpxi6Wy9MjOf4g8SHusul+fcOmtwkFf.h2jrcRYF6X1M59bqOmSe5S2nIaXHy0hYcRfqc+9rPEkJW6HeOSVPfmuREsiG0moT4sTaMxMr69co1tJO3dJUdC0i7YAPyu6n9zf.lkRkJW6KwmVYkqqv+7yewcoNTWSVZUJJOyy1j8P6d1go0dzd+QaGmCoVris6I05l68.SO288b7F.Tx0TqqzmZ9bZG1ioXyVRU49zftJUtk5tatoN0p81s0anu6oVsMYM1t9VM21ft4Nsaucc8lMr1tcSfHW9.K6PO+VgzPVfRkqeWOqQs55ctq.AOyNv9TGFVPWoEfYQ0G54XgrHVqx9cscrRDQAf.SURfcMg.68UejskcR8oBt2k+.RZOjEfUVJK4csLjmtL4UWh7JfjpHQRWWPR+F0Vl918CSeBROuo5CbCY9sov3jLoHZqxR+mum59dPKbCq0i9b1g9PgjdTcqcquNYyMqu1mpAsJvygUyzgQ8qBUnc6aCCeAgjyn9j9tNG1N7d1A8cniHeFIFlcXg660qumKTn5MyzpaBvHC..AGnzc3gGOEfIeaAfQt8sI0WMKHaYawlZXNVii.p9piSmdAgSOglowQ.0nHJcpg53sNBrMVUa0LCLAfwkICfE2.GgTTGt6f1sY9s3Ot5MuO02xzCLBdDM.F7O7unC.TlDmR3HTqHw8GnHP..VCLhncqpUvfWMKZHs1o7FTGPg.Wigip0QPVZ+6SC6VWRnY5y.qrifZqh8ym0gfn.ah.dQsn5jnHjPdJiZEQEqUyg41IrKBTNGhCF4Ywwzkjgn9Evi5Q7XI..YR8Iyj5EwjWLMMItjONBpb4GHynEJCQiKfKMjFIK..HWZLYtznrgxxoooarLGaNt0lLLabA7YC4QyRXzFSlQaT5vY4T0j3zOC+jXcdDL+UH4odCBscYhmUroFDS.usQMsZ6Atlg1dtU6r1pZ+8U0VAcVPA5Mrqc.RCOzyj5bWuAtVABCXdKNGZA8qM9l3xc4kavKC+oChGQjAUE+SPsysC6dGm9coo0z0NjsNodsFqwAbmZV9zy4RON1ScKrN4qg+B+Ilp9JaKTFmVw8Y1c5FVcsuYchdMAcFSGeoO0xFFcNDhho5WWN43yrPhoI.0yusAGck2XKp+yi5fdbG59MQrQa.SKHafP56EC1kLLhAi4uO0w4THpqzwwngwTLG6Ezzq+HIEJtuz09zUxz1XevEz6TM6h0LPdqVctzmyhan+MnvQFE9r9npW0DdqPNKj5K3sp5akSaOwScYp6i6h7pWe+xWcWedT2eonsStH0c84VcuvgwYSeWuH8c8hz20KPeW+JSeu.V6BT3Slz9h7umcNjWEU32ZBJ7FyiBu1JfXZlT4c.gbGeFyc1T7S5RAp9y.1AvLRngLCHNaOlnImwBMCyXJRylImQQlbFEYxYTfImwU5TL4XsINGyEYyUPfa+RznqwbNKyKWqtYznKCxqO6He5M8ZrXy1sf1dMJx1qQQ1dMJv1qwU6zcSv3SKl4HdtO1Kj8DfK096Zqn88Zj7Opc6BeFt9KeOGGbgRE7XA1tfNV0cPuSY9qSNi5LfkzPkJWOaB+TKOgex4izTrbPoF549.W6vmzm4VVVJUhVCohRk2NhpflFxSM3aGkZvVNf3zWw1RoxMT+itdmpqvIX4L3pL0c1XQ5bi7c9m+hw576F04885cp2c8Fx69apFWTeJ.QL9u6fvPOWN.VQUTXV38B5twh08FKV2atXceyEYnq4hz4EByakoy+v6+e++NyJMFKlRyVEP9+4GbOvUHlT9HSPvrrOyOzFs3qbO1Y1lLQJ5WQ8drfmG50m21nD5pTYYAZWMNA9TWlCGqugJ+6MTFlhv+88FIW3bbRhjJ91ueut7IIRpg7O1qxxR35FS.W5SMtTryiqe561qO0GPiD9RXgJuoTsZYohGROMgJ3eOCUnnLRtPYnPWYRzmxmuWHaHTVE2jFk1vnUK6uSZvzXOF3tlx8HW4ZJx3XhNRKSr8W2qbBNHbjCe22tumu82AjC0IGS7CsGiIZtmLg8lSzIcIDF.4KcBqmmEzqOT8wd98nNfn05HluI.ZZGlR.Dpf8Pb5qeuROaKKGbhcabdzTP7SegLus5DmCoLgt6qf71O+E8nxZ06YwZSG3D9rB7GkP0qLkyDVlf3w6wQpZkODJLQt7yu.wFrpfdAJK8uVQ89T+ddt1ljVcg0pncGWpiWGxWA0F1U6N19jCFZBs1W6YLmyXgj8cr6q0pOyLzm5P9Rfa0NxyYD4d91mAesKMfQNbP.HrzNXXepKLHSNxYPfVKbcSs5RAmoZs544E1kr+.enOoT.yG7xp0ZCzyKD8s19Nzf.3AQ6Vo1eZ.0hbfUGl1w.XHGDDvbMYZ2k43DAqmQ8s2nkcGsGBLA1HsuhdFfVyAN8gH2ztSvnd8Xg9.PEDLtUYji65OHHT6Y17weRqPPhobANLJL9iRFz9Q+8lVebENFJ7woodmAgdcv8kt.EpR87ZTlm2eft2B34sYDUcCUtPToL+rSh7ZT5DC1WFjGNwvv4l3ZVFwsW+KChaYU9AvnLpqzY1+.0BxSdYJe6MXQT9Nduohh9P0hRqxKPR5BiqOkL9gmKOg4eJe.Pe9L3.sgxrQFMJiL16aeQRFMKiL91fWjjwlkQF+XmKcxnzPik0L.K5WRgFu4bDZrwzGZ7xpXJWtTiMt4bDarwKhXi2bNhM13WHwFu0bDarwuFiM13JO1XiWGa7kcrwaMGwFabkGa7VyQrwFu3hMd64H1XiWTwFuybDarwUerw7HQGaO0ufHQmh3MKmclJR5iTKbeOtxnowOIwuq5i7rF3PCydvlQIbzCPm2xmlX7DC6BN0GI6q9R6zNOsj3uQ8H6PytESiKU.MpnbkPiQmQ7UUOncavydJAdc0C+KWQGH7kjv+6Hv+GnlbpdIhi0KAPORGuu53m22LxpGyBO2y+4nOZtOo3xv72sngQIyNRHpuGTqvyk7741Vn6hr0j+EH.pJwQrT0Afx+Xn4eaOr5wvCVYNDgU8kE.xwQkhxSNi4GP602w1sSF8hqM0CL5WrdgXK867HJLMIFswiGzSbXoA0BWvBD2UvJKg6BhnbcrLRBsXtV7B+evmnGpikqD8P83GJq6oJjZZQtUhFveK0zClcFEPfZxbhU4TCJEhd+.p7eoltcm8wcn0mcr2QP6qxEarmRwSKvoNdlOGWuv36QZeAscWrEUMi344YqTW9WRiHIaFqRjoC+k1Hwr5F3fRNaq6333cN5g1Nx4kfsfwDdganVuF7ehlgwH1uKFlGNHJ5TL4emddCPO7Bd39zfio1NnQcqAA8Ah7ItsfFyeucPGPOlG69MNjZBB2Q3N3iNRwcfFLUvCbbh2qbzapZDJmEuyN4ZBN7bD0GdTHW0BYHDewuyOBwJP983yIsjJzD74nv5ZBBaYwKwB3o3DzFVWYBDZQTkVR2mKruhpEC8U5mE2umpuPQpVufSDsnPrm18If7kjDU74Sh2DQEEIpYUU.cfEqcXXdJRVZzCV8jcgzSV.LsBjkFa3PHumigC4tOOnWLb1YLrC0C+Kx4WfVPmo.qYFHpTIoDLA9irciVSpJZOp7H5vjx5PYj9tgpnpLOnzwSU01sCyxHqpRg0MNJfUCeTQ7hnSSR3g9EbXCi2c5bN5yWCT9Av5KGF42rbkwReB+sRCKAgXsjXZmGD7L7olTmXwA3URh6eKUzrb90kxz+4SWlCfYVaRteuJoNsLpYnOq5SQ85pSgR+JUgZpbbthJLo2DbiKZQItwi6976F+Rxx4FhV3EG6JKKG8gRVNRsoXyGoFrHyVqlwjBVi4I88bXFYIreqZaaGD10haPIlVo8eF0HOT.+zulpCdc0MxoDVYYISQ0TSwkUMxZKtBTA7Apq0yYmKXIbQT0qYXr6t0at4VFFMZty16rYzqb6g9r+1.PcYjRVPpTLBeO.RMpy+nquqQ8cM1UB6um5t01YW7yV56rYi5Fa2Xb5Xqlaqu8N5a2n9VapuyVb53Zp+o7NMJz0yM.IyNYX3kU4UH7mvWJUFuTkvFE6BKOo1ntdcjY2c2cZt6100iDYhbXhqBKp2eHBs56J9r81a0bGiM2wXFwcHquXWLRcmtLl4.V4Bl4BnqndfKl2IqozKcpJdiEzDowqMQdsIxuFMQtgZa5ffbQF+VvTa9PXL7mTjgQbuljQQlIeWJ2juqnx2pjGjPpusZKZ3.eLai2q0QIzbb6eGLEBRlMQ8Zrvnq7lKpP7c3abAA02v2sKErDDlZxcWwhB+2UB978A9xAABEUcg8a8laCZ0M2LVslmwfKQt4BP1aEgrEh0LlVrootviSFSuX7E3X1J3NA8hYDSiipEfsfoUJSY+8SspIXVSW.N5BvxGjGKWhiQoXAzr2mvywJ.hrNXacNtoHGS86vBy4iUKILh4JJDot+5fPdcPH+pNNc8ELNc8Wah7ZSje0XhTZFMuPT1rDT91pY1F1wlabwRwb5lGY7RXyizh28G84a2ij5+kx1G81x69i97r+Q4fv7jz82JcGfzmur9K0+4eGr5LN9mXV+S62qbY82Xtx5uwUXV+MdQsMRqJsMPykFUV.Le5zIaHzroSkoiuxoT0XtTpZbEpT03k+VIoEuWP5y2dII0+WhalT4olJwGc7ovZlW4aZzWaCk3uYztL9I8IPISwHinGXkl6tDJAqrvEoqjmX4SRKNaXKbZGhZ8GfOEBIV7r5FFM2dqcVDNQNSWiw.ugZzAl6xh7EsdAH2zj7LFwthZ7Y4agyc0kE0JkqswH2UUkOmgyZLwWVTX9T2V.YJetGmWKtElNKNeUiQshy+vkqIGtlJ8cEOc25aaTWugwhvJYR2aAZwwmczWYr4jx1YAt3RNWquxX0Im04wH32VMygt8kkc2XaoQADZlkeNqqfMSimNBMywtHC0liVlq40uqm2y6Q4G4z45tIQ93D+QhG9lp3K9C+peNJo1X41d98HeIChrF8VneA2U7+OS6cEe+o9th+Ilg.IbrO0MnuW.SWFxsX8rO1ykEjo1b8vnvdjo16wBG3lEzhpha0O9O+m0+QTTbHHJzkOv4wUZHW4QTWoFY7iPYC4CRelCx9O8EhDwzBV+uq0SBLAACkm6II.NvIfwumvzk6XZ0YPOdn+gwPyK5fte8o6XUOgaL+kek6Fy+W.ulKYtT+WIlFaYidINv8LlCX4xoweKXpxe8HiqMqo2i7b8hOb3oCzOEeO85zgkQ+oPF5NggTymmVy6u2SYNLZ.S9EP5gvBpo977ONexB8Y9G3fBGu9cpBxkf9KH+x80S5Z+p90SZ5s93K53U4QwOREbEaP3CkjWNikuHdAVdQfidTSeuSLEu2OnQ+avqA3a2nib6ivxjBto9fUzYehoYVPMVGMl2N1Xd6Xy4siaNucbq4siaOucbmI2QbF8nswAsMTTdzQGvCDsRk3cWBeCcY8NkYAwQHdYyPU6jZbYCOz1QD1aaazrXI7eDTxuSDn+skOUV0rB5GewYprz+3eQEl2zyOr5MCBs3stli8o2T76VC4fgP70l1gNiHhlQrcsrOy1Z.0g.symxe24iAwoz.ayfH.f+Lq.Q9RNkVK.lWzLzcc761sWmvBMqkzILouI8ItS8n0BotcWG+RfcG2A8x0KrRpSdbEXWKfuqhIsKd6my1t110tUx6TW.mU+yALeR+jT8oEPCOAe0iOAFyHeFAeaf8GU8limksuNzyyIzt+mzhykj.QKvWVOr+B1AfQz6z22bS985J7GC80I5ffNAS35.KGU3hxlFbwgRoHK5mnjayu9kidUBCzrv0+GwocC32QFUuYRZ3Rvp3Uli30VFwkxe57Kt15HVEvOh+xgfL7UoXnXtRBEZ3pmyyBwYQJA9OYPX+AgDrsEQ35BYUJT4.MOcmrF4RAadpcL3p0ydXdhMJOhI.8qXg21xeDXzvWRX4zqjT.AadxMNWIWHfKlhkkuTvO0IRBYytLymep2vp2LSB6RvhvAFgF4dyTHcL850GlyuDUG.OonIhOJBOYXmoDQY4vHSg6su3cxElBO03Wyx7jSEmQrSXB2vYniziPVdZPFb.s5yrF.xWGuyIsiOeHjSG.woLneBIbGKKBqefsCZD6gu7vmAN.HnaV7MZkb5Hx2wfoSntP6bCF3yHdB0sy6xbIbSqOqtVLH9L9HF+fkHf+SeTKhEvV39unE+E7BO+z.xmj5wr5onK2AF3gvoJdafGQdsRsCoNc77sC61KfrA4.AoPcbHX.cDgC4rzD9iBVMxA.+PhutUBRSDBo5c8w6eAxefbD3Jt6n0z5F2ppCWW.k0.Jsp9FQe+VjgjOV7.36UGB+OiaWUGpC3FQw0hIbiZDw0JyFsvaqGYFoJdQy.nUbBTVSixa2zhyOFkvMguGMIEGuMqGi2F0HGELxrqG0zClNEzGitKaHUwK1l+.g+KFHX2slFS7foGwA1tUArdzCtsATURIjuwlmv6MqQZ40Vbs4zGUFqFc227GcY.dCfmYBOZZQ7sIox309qFwXYyZj6BZkavyMEXijJg0NEp2QT8TgjTQ4FI0M7u1HBQaUibePSYim3yuWe7bF450yFz1jvXWnAd3ymVlZCDA7AyM4HaSnl50ZznAuz1QndaXzDucg1XeutL7tAQVOZCxgO3ubv8z5is.BPWzhBIfONx9rvg0XpIVvtSMLxK9MPRVtLAirg8OIcFxYCiIgTAClXYc.p.7ptgNTRLFmnHsKnHY6NHvy1BHDLYcAh6RofjZmJ4MppNLBl50Qf1oGzagVpznXfn9oWwL3uAQ4gJmCS0K0AmN62kc5nftryRHZtYPCeKBWKgj3pYsDgpYbeZLaBzl2B0j1fz3VIrH37o0F7qcJqhF9BNgKFslUUkLFhkM3AMHFBIRDvozc7MASrN4TgqFeaWI7ARvqnLLk5fSQd6mjV1XDYUCfJ4dkvGAqkAG3iICvuDdaZ4ymlNiGJs+FT+IyliIMR9O70W.xoOGibQO1xResXAWTw0Vu7t9eP1PG+YWPz5OVpyhoX93R5epyWcvu38gnw8O0CV7D43HgdBmhN5NwLpzr4cLFCfCwuDVqVfM0U15oSTcy7fFNCVhVjrkz1olp3kbFFtXrM5ImEUwbXrVEvA20qdpTCb58PuNTd.FwZGEX5.JoWVd9v47SMmjMahHIv6mX+abrvAtyi99zNGivo2jbwZ.tCu2HXA6.SmdQwkcxMKwyOgBOewsMf.6SbkLbsjBaHoCanmcJH9EVWRzDxyB0EugjJyjc9lCZXlXYL.eoGO3TV.9amROl+F1tA8s8yFuQnTCtTDP8r45V0qs8ZXRHFhE1ndscRHqrq.GyoPT5DzRp5DQdORnm0IwK0GoLvUymjNKT0ShI50ibEKWSbfhRUk3pTpN4ntjpdbVM9SZPSRMOWzLYHiLQcHSMogCLUHNdddoFKM6qLfimoTV9L1LSROL67HoOnbZIq+XIPUj6zL7bN+fROKmWpogLj7tHAnLV94FJRL8jpOigPR8ki0OQJ+bUMLjTQEp4QITGs54G5SB9C4Des1YShRzBr0htFqNIZg1R59XyQ6Jnlj03WfEARzmyBOQrdx0HXMwdHfNCy8Jpfi8awqh7IeN4DMNg824bJtp598cFIkDId8QE4KmeHt327VpmLtk5mx6YLX2m5Xh6jArndXY5NAb9OQZvakk+nS3OLBIwK4V.Hj0heZJ4juUY4hTocljZX2lDkcBdySSbRaZzR7Edzjj1nirnzCnudJktFOjM4GkPlqE8SRVAjUbxNffoSIE7WgKX49zrDdBqGkkfXRa7DsTtSCYoUa6ZVlwH+Viw5qOYXLdm.d76ykez9oJ+bsK2j6sWXjv8LwUNVrJOvTImlUfDiMDheqHfpRdCFxoqdfnOfrJAyYPWTj5XdS5LBSPT.y+LdkBC6DzV0YchOeVOGXpN+0hC4x.MZb.CH4pxNjFYmy+kvDyzDmJBv6wNPb4Lh2r7rT0dfcBht7F88hLivVJL7EeKJomRN.DEky09E4hTlHhwUPLtPJJBYhuFmKTYzIJmIi64DD2iOBQveM3vQjGxZGd6mxSS03iIwRewnZh3nZOLUMYk98.oePFo+2+oJJ++9ZBELC
      
      const var pnlMidPreFFTDisplay = Content.getComponent("pnlMidPreFFTDisplay"); // 0
      const var pnlSidePreFFTDisplay = Content.getComponent("pnlSidePreFFTDisplay"); // 1
      const var pnlMidPostFFTDisplay = Content.getComponent("pnlMidPostFFTDisplay"); // 2
      const var pnlSidePostFFTDisplay = Content.getComponent("pnlSidePostFFTDisplay"); // 3
      
      //const var source = Synth.getDisplayBufferSource("HardcodedMasterFX1");
      const var source = Synth.getDisplayBufferSource("Script FX1");
      // Mid Pre Buffer
      pnlMidPreFFTDisplay.data.buffer0 = source.getDisplayBuffer(0);
      pnlMidPreFFTDisplay.data.path0 = Content.createPath();
      reg buff0 = Buffer.create(pnlMidPreFFTDisplay.data.buffer0.getReadBuffer().length);
      
      // Side Pre Buffer
      pnlSidePreFFTDisplay.data.buffer1 = source.getDisplayBuffer(1);
      pnlSidePreFFTDisplay.data.path1 = Content.createPath();
      reg buff1 = Buffer.create(pnlSidePreFFTDisplay.data.buffer1.getReadBuffer().length);
      
      // Mid Post Buffer
      pnlMidPostFFTDisplay.data.buffer2 = source.getDisplayBuffer(2);
      pnlMidPostFFTDisplay.data.path2 = Content.createPath();
      reg buff2 = Buffer.create(pnlMidPostFFTDisplay.data.buffer2.getReadBuffer().length);
      
      // Side Post Buffer
      pnlSidePostFFTDisplay.data.buffer3 = source.getDisplayBuffer(3);
      pnlSidePostFFTDisplay.data.path3 = Content.createPath();
      reg buff3 = Buffer.create(pnlSidePostFFTDisplay.data.buffer3.getReadBuffer().length);
      
      // ===== Mid Pre Paint Routine =====
      pnlMidPreFFTDisplay.setPaintRoutine(function(g)
      {
      	var a = this.getLocalBounds(0);
      	var w = a[2];
      	var h = a[3];
      	
      	g.setColour(Colours.withAlpha(Colours.white, 0.3));
      	g.drawPath(this.data.path0, [0, 0, this.getWidth(), this.getHeight()], 1.0);
      	
      	g.setGradientFill([Colours.withAlpha(Colours.red, 0.4), w/2, 0, Colours.withAlpha(Colours.darkred, 0.1), w/2, h]);
      	g.fillPath(this.data.path0, [0, 0, this.getWidth(), this.getHeight()]);
      });
      
      pnlMidPreFFTDisplay.setTimerCallback(function()
      {
      	this.data.buffer0.copyReadBuffer(buff0);	
      	this.data.path0 = this.data.buffer0.createPath(this.getLocalBounds(0), [0.0, 1.0, 0, -1], 0.0);	
      	this.repaint();
      });
      pnlMidPreFFTDisplay.startTimer(16);
      
      // ===== Side Pre Paint Routine =====
      pnlSidePreFFTDisplay.setPaintRoutine(function(g)
      {
      	var a = this.getLocalBounds(0);
      	var w = a[2];
      	var h = a[3];
      
      	g.setColour(Colours.withAlpha(Colours.white, 0.3));
      	g.drawPath(this.data.path1, [0, 0, this.getWidth(), this.getHeight()], 1.0);
      
      	g.setGradientFill([Colours.withAlpha(Colours.red, 0.4), w/2, 0, Colours.withAlpha(Colours.darkred, 0.1), w/2, h]); 
      	g.fillPath(this.data.path1, [0, 0, this.getWidth(), this.getHeight()]);
      });
      
      pnlSidePreFFTDisplay.setTimerCallback(function()
      {
      	this.data.buffer1.copyReadBuffer(buff1);	
      	this.data.path1 = this.data.buffer1.createPath(this.getLocalBounds(0), [0.0, 1.0, 0, -1], 0.0);	
      	this.repaint();
      });
      pnlSidePreFFTDisplay.startTimer(16);
      
      // ===== Mid Post Paint Routine =====
      pnlMidPostFFTDisplay.setPaintRoutine(function(g)
      {
      	var a = this.getLocalBounds(0);
      	var w = a[2];
      	var h = a[3];
      
      	g.setColour(Colours.withAlpha(Colours.white, 0.6));
      	g.drawPath(this.data.path2, [0, 0, this.getWidth(), this.getHeight()], 1.0);
      
      	// g.setGradientFill([Colours.withAlpha(Colours.limegreen, 0.4), w/2, 0, Colours.withAlpha(Colours.darkgreen, 0.1), w/2, h]); 
      	g.setGradientFill([Colours.withAlpha(Colours.grey, 0.0), w/2, 0, Colours.withAlpha(Colours.darkgrey, 0.0), w/2, h]); 
      	g.fillPath(this.data.path2, [0, 0, this.getWidth(), this.getHeight()]);
      });
      
      pnlMidPostFFTDisplay.setTimerCallback(function()
      {
      	this.data.buffer2.copyReadBuffer(buff2);	
      	this.data.path2 = this.data.buffer2.createPath(this.getLocalBounds(0), [0.0, 1.0, 0, -1], 0.0);	
      	this.repaint();
      });
      pnlMidPostFFTDisplay.startTimer(16);
      
      // ===== Side Post Paint Routine =====
      pnlSidePostFFTDisplay.setPaintRoutine(function(g)
      {
      	var a = this.getLocalBounds(0);
      	var w = a[2];
      	var h = a[3];
      
      	g.setColour(Colours.withAlpha(Colours.white, 0.6));
      	g.drawPath(this.data.path3, [0, 0, this.getWidth(), this.getHeight()], 1.0);
      
      	// g.setGradientFill([Colours.withAlpha(Colours.limegreen, 0.4), w/2, 0, Colours.withAlpha(Colours.darkgreen, 0.1), w/2, h]); 
      	g.setGradientFill([Colours.withAlpha(Colours.limegreen, 0.0), w/2, 0, Colours.withAlpha(Colours.darkgreen, 0.0), w/2, h]); 
      	g.fillPath(this.data.path3, [0, 0, this.getWidth(), this.getHeight()]);
      });
      
      pnlSidePostFFTDisplay.setTimerCallback(function()
      {
      	this.data.buffer3.copyReadBuffer(buff3);	
      	this.data.path3 = this.data.buffer3.createPath(this.getLocalBounds(0), [0.0, 1.0, 0, -1], 0.0);	
      	this.repaint();
      });
      pnlSidePostFFTDisplay.startTimer(16);
      
      posted in General Questions
      M
      Mighty23
    • RE: More Positive Posts?

      @mmprod said in More Positive Posts?:

      You should add a video with audio demos of how each one sounds

      Thanks, I really appreciate it!

      Let's just say I don't get along too well with visual arts. I'm looking for a way to create this kind of content too, but I think it's important not to spread myself too thin. From experience, I can tell you that you might end up working for the platform without getting any real benefits. Content creation efforts need to be planned carefully.

      posted in General Questions
      M
      Mighty23
    • RE: More Positive Posts?

      @Chazrox said in More Positive Posts?:

      I cant wait to release my stuff.

      @Chazrox said in More Positive Posts?:

      @Mighty23 share the link!

      Nothing to hide here :)

      The link is 23dsp.gumroad.com, and as I mentioned in my previous post, I was blown away by the number of downloads in just a few days.

      Here’s a chart from the analytics.
      3days.png

      This is a plugin I’ll be releasing next week—just to keep my subscribers on their toes! 😆
      The core logic in FAUST is already available on my GitHub.
      https://github.com/P23ASURE/waitingroom/blob/main/FAUST/GrainReverb

      The UI is inspired by the shooting game example from the HISE documentation:
      https://docs.hise.audio/tutorials/ui/index.html#a-ball-shooting-game

      thatexture.png

      posted in General Questions
      M
      Mighty23
    • RE: Why does it work like that?

      @Gab said in Why does it work like that?:

      But why when you manually link to a button to something (button2) the script stop working?

      15bdc26a-46fd-4445-8abb-4d4b1dffccc9-image.png

      You've assigned both a callback to Button2 and a processor ID in the property editor. HISE will prioritize the property editor assignment over the script. Use either a callback or the property editor, not both simultaneously

      posted in General Questions
      M
      Mighty23
    • RE: Sounds like Vangelis?

      I'm thrilled to see you turning your ideas into reality!

      posted in General Questions
      M
      Mighty23