HISE Logo Forum
    • Categories
    • Register
    • Login

    Open-Source Faust Transient Shaper

    Scheduled Pinned Locked Moved Scripting
    11 Posts 5 Posters 831 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • clevername27C
      clevername27
      last edited by clevername27

      Screenshot 2024-03-15 at 18.26.22.png GITHUB Link

      U 1 Reply Last reply Reply Quote 5
      • U
        udalilprofile @clevername27
        last edited by

        @clevername27 hi)I can't load this into hise. I loaded the code into faust and got the dsp file. But when I load it into hise, nothing happens.

        M clevername27C 2 Replies Last reply Reply Quote 1
        • M
          Mighty23 @udalilprofile
          last edited by

          @udalilprofile
          I tried using this project in a VST and tested it in my DAW, I had no problems.

          There is also a scriptnode example called "transient designer" here, in the forum.
          Both examples are good starting points.
          https://forum.hise.audio/post/45656

          Without making any further changes, I think this FAUST version introduces too much distortion.
          (opinion of a newbie).

          Free Party, Free Tekno & Free Software too

          clevername27C 1 Reply Last reply Reply Quote 1
          • clevername27C
            clevername27 @udalilprofile
            last edited by

            @udalilprofile Can you post a code snippet?

            U 2 Replies Last reply Reply Quote 0
            • clevername27C
              clevername27 @Mighty23
              last edited by

              @Mighty23 Interesting…is it possible you're clipping, since TDs often raise the signal level?

              M 1 Reply Last reply Reply Quote 0
              • M
                Mighty23 @clevername27
                last edited by

                @clevername27 said in Open-Source Faust Transient Shaper:

                often raise the signal level?

                Yes, I think that's it. The signal increases and there is nothing to "shape" it. Many "commercial" transient shapers often do not disturb even at extreme values.

                Free Party, Free Tekno & Free Software too

                clevername27C 1 Reply Last reply Reply Quote 0
                • U
                  udalilprofile @clevername27
                  last edited by

                  @clevername27I copied the code from your link and placed it in Faust. Then I got the dsp and tried to create a node in hise. I can't load it.

                  1 Reply Last reply Reply Quote 0
                  • U
                    udalilprofile @clevername27
                    last edited by

                    @clevername27 Снимок экрана 2024-10-03 в 15.26.30.png

                    LindonL 1 Reply Last reply Reply Quote 0
                    • LindonL
                      Lindon @udalilprofile
                      last edited by

                      @udalilprofile show us your scriptNode implementation...

                      HISE Development for hire.
                      www.channelrobot.com

                      1 Reply Last reply Reply Quote 0
                      • clevername27C
                        clevername27 @Mighty23
                        last edited by

                        @Mighty23 Put gain nodes before and after the transient shaper, monitor the levels going in and coming out (and also as the might @Lindon suggests).

                        1 Reply Last reply Reply Quote 0
                        • orangeO
                          orange
                          last edited by

                          Does this code work for you?

                          When I load this, as soon as I tweak the Sustain knob, it breaks the sound and creates sound glitch.

                          declare name "Whetstone Transient Shaper";
                          declare author        "Evermind";
                          
                          import("stdfaust.lib");
                          
                          WINDOW = 30 / 1000;
                          
                          low_cutoff = hslider("v:Whetstone Transient Shaper/[2]Low Cutoff[unit:Hz]",10,10,20000,10);
                          high_cutoff = hslider("v:Whetstone Transient Shaper/[3]High Cutoff[unit:Hz]", 20000,20,20000,10);
                          do_monitor = button("v:Whetstone Transient Shaper/h:[4]Monitoring/[0]Monitor selected band") : ba.toggle : vbargraph("v:Whetstone Transient Shaper/h:[4]Monitoring/[1]ON[style:led]", 0, 1);
                          attack = hslider("v:Whetstone Transient Shaper/[0]Attack[unit:dB]",0,-12,+12,0.1) : ba.db2linear : si.smoo;
                          sustain = hslider("v:Whetstone Transient Shaper/[1]Sustain[unit:dB]",0,-12,+12,0.1) : ba.db2linear : si.smoo;
                          
                          process = sp.stereoize(split_shape_merge);
                          
                          split_shape_merge = _ : split_active_and_passive : (_ <: _ * get_gain(_ : change)), ba.bypass1(do_monitor != 1, *(0)) :> _;
                          
                          //split signal into two parts $active, $passive
                          //$active is resonant low- and high-passed between low_cutoff and high_cutoff respectively. This is fed directly to output if monitoring is on
                          //$passive is resonant high- and low-passed between low_cutoff and high-cutoff respectively
                          split_active_and_passive = _ <:     (fi.resonhp(low_cutoff, 1, 1) : fi.resonlp(high_cutoff, 1, 1)),
                                                              (fi.resonlp(low_cutoff, 1, 1) + fi.resonhp(high_cutoff, 1, 1));
                          
                          //$active is analyzed with RMS over N ms divided by a lag filter applied to the RMS to get a rise speed over time to get $change
                          change = ba.slidingRMS(ba.sec2samp(WINDOW)) <: _ - si.lag_ud(WINDOW, WINDOW);
                          
                          //If $change is positive, $gain is $attack
                          //If $change is negative, $gain is $sustain
                          //Smooth $gain
                          get_gain(x) = ba.if(x > 0, attack,sustain) : si.lag_ud(WINDOW,WINDOW);
                          

                          develop Branch / XCode 13.1
                          macOS Monterey / M1 Max

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          43

                          Online

                          1.7k

                          Users

                          11.7k

                          Topics

                          101.9k

                          Posts