HISE Logo Forum
    • Categories
    • Register
    • Login

    Gated Reverb

    Scheduled Pinned Locked Moved General Questions
    12 Posts 2 Posters 170 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.
    • MorphoiceM
      Morphoice
      last edited by

      Ahoi! Did anyone ever come across algorithms for a gated/nonlin reverb, preferably like the AMS RMX one? ChatGPT is really no help, especially with faust...

      https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

      griffinboyG 1 Reply Last reply Reply Quote 0
      • griffinboyG
        griffinboy @Morphoice
        last edited by griffinboy

        @Morphoice

        I was making one a while ago.
        There is a great forum / blog where the programmers from quantec, bricasti and Valhalla were discussing early digital designs from the 70's 80's.
        Lemme find it for you.

        If you want help with reverb programming, I know some stuff. I made a modular reverb c++ node where you can define all passes and fdns and filters in a matrix array and it will generate a c++ node for it.

        Edit:

        Just a moment...

        favicon

        (gearspace.com)

        MorphoiceM 2 Replies Last reply Reply Quote 1
        • MorphoiceM
          Morphoice @griffinboy
          last edited by

          @griffinboy I was playing around with faust and came up with this simple chain of allpass comb filters but it's hardly a good sounding end result

          import("stdfaust.lib");
          
          // Modulation parameters
          modFreq1 = 0.1;  // Slow modulation frequency (Hz)
          modFreq2 = 0.15;
          modFreq3 = 0.2;
          modFreq4 = 0.55;
          
          modDepth1 = 5;   // Small modulation depth (samples)
          modDepth2 = 7;
          modDepth3 = 10;
          modDepth4 = 13;
          
          // Modulated delay lengths
          modDelay1 = 350 + (os.osc(modFreq1) * modDepth1);
          modDelay2 = 490 + (os.osc(modFreq2) * modDepth2);
          modDelay3 = 633 + (os.osc(modFreq3) * modDepth3);
          modDelay4 = 877 + (os.osc(modFreq4) * modDepth4);
          
          process = _ : fi.allpass_fcomb(2048, modDelay1, 0.7) 
                   : fi.allpass_fcomb(2048, modDelay2, 0.6) 
                   : fi.allpass_fcomb(2048, modDelay3, 0.6)
                   : fi.allpass_fcomb(2048, modDelay4, 0.6) <: _,_;
          

          https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

          griffinboyG 1 Reply Last reply Reply Quote 0
          • MorphoiceM
            Morphoice @griffinboy
            last edited by

            @griffinboy jesus, seeing Casey discuss in a forum has me awestruck. The M7 is my life elixir from album one.

            https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

            1 Reply Last reply Reply Quote 1
            • griffinboyG
              griffinboy @Morphoice
              last edited by griffinboy

              @Morphoice

              Ah yeah that's a naive design indeed!
              A real reverb is more complex.

              You might want to start by recreating some basic classic designs before you dive into making your final thing. There are a few things to learn and experiment with. Open up some of the Faust reverbs and get an idea of the architecture. There are a few different ways to design them. Usually you have a diffusion stage (series all passes, combs) and then a reverb tank (modulated all passes, or delay lines matrixed together so that they all feed each other and crisscross, or multi tap delays with a bunch of taps) and then a completely separate early reflections stage usually made from a multi tap delay. You also have filters inside these stages to shape the decay, as well as feedback around certain parts.

              Getting rid of resonant buildups is the tricky thing. I use AI to calculate the ideal coeffs. But the traditional approach is a TON of math, plus a TON of typing in different numbers and seeing what sticks...

              The forum link I posted has a great discussion that details one of the early quantec designs. I can't recommend enough that you go through all the pages on that forum. Especially paying attention to the discussion being had by the bricasti engineer.

              Happy reading.

              MorphoiceM 1 Reply Last reply Reply Quote 0
              • MorphoiceM
                Morphoice @griffinboy
                last edited by

                @griffinboy yes I need to design this from scratch and experiment with it to get a hang of it, the allpass filter thing was just a first attempt at not modifying an existing algorithm... I understand there is a stage of parallel comb filters, serial allpass filters and a need for prime numbers.
                sadly there are no diagrams of the AMS algorithms, though I could find some of the lexicon architecture in the past...

                https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                griffinboyG 1 Reply Last reply Reply Quote 1
                • griffinboyG
                  griffinboy @Morphoice
                  last edited by

                  @Morphoice

                  Reverbs are secret.
                  Soooo much work is put into the algo. There is no way in heck anyone would ever share it once they've created a musical algorithm, because it was likely the cumulation of years of research and iteration.

                  But I wish you luck. I've taken a break from reverb, maybe to return in the future once AI can train on all passes properly (I've been asking the FLAMO researchers to help me out with that...)

                  MorphoiceM 1 Reply Last reply Reply Quote 1
                  • MorphoiceM
                    Morphoice @griffinboy
                    last edited by

                    @griffinboy this doesnt sound half bad lol

                    import("stdfaust.lib");
                    
                    // Modulation parameters
                    modFreq1 = 0.1;  // Slow modulation frequency (Hz)
                    modFreq2 = 0.15;
                    modFreq3 = 0.2;
                    modFreq4 = 0.55;
                    
                    modDepth1 = 5;   // Small modulation depth (samples)
                    modDepth2 = 7;
                    modDepth3 = 10;
                    modDepth4 = 13;
                    
                    // Modulated delay lengths
                    modDelay1 = 113 + (os.osc(modFreq1) * modDepth1);
                    modDelay2 = 229 + (os.osc(modFreq2) * modDepth2);
                    modDelay3 = 359 + (os.osc(modFreq3) * modDepth3);
                    modDelay4 = 691 + (os.osc(modFreq4) * modDepth4);
                    
                    predelay = (
                        fi.allpass_fcomb(128, 13, 0.7),
                        fi.allpass_fcomb(128, 29, 0.6),
                        fi.allpass_fcomb(128, 47, 0.6),
                        fi.allpass_fcomb(128, 71, 0.6)
                    ) :> _,_;
                    
                    diffusion = 
                        (fi.allpass_fcomb(2048, modDelay1, 0.6),
                        fi.allpass_fcomb(2048, modDelay1+13, 0.6)) 
                        : (fi.allpass_fcomb(2048, modDelay2, 0.6),
                        fi.allpass_fcomb(2048, modDelay2+23, 0.6))
                        : (fi.allpass_fcomb(2048, modDelay3, 0.6),
                        fi.allpass_fcomb(2048, modDelay3+47, 0.6))
                        : (fi.allpass_fcomb(2048, modDelay4, 0.6),
                        fi.allpass_fcomb(2048, modDelay4+71, 0.6));
                    
                    process = _ <: predelay : diffusion;
                    
                    

                    https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                    griffinboyG 1 Reply Last reply Reply Quote 1
                    • griffinboyG
                      griffinboy @Morphoice
                      last edited by griffinboy

                      @Morphoice

                      An important test for reverb is to pass pink noise into it and see whether any resonances build up.

                      Certain signals will cause nasty resonances. One of the hard things about reverb design is making it sound pleasant on any signal.

                      Also be sure to wrap that in feedback. Then you can create a more sustained decay by adjusting both the feedback amount and the delay coefficients.

                      MorphoiceM 2 Replies Last reply Reply Quote 1
                      • MorphoiceM
                        Morphoice @griffinboy
                        last edited by

                        @griffinboy I have yet to learn how feedback works in faust...

                        https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                        1 Reply Last reply Reply Quote 0
                        • MorphoiceM
                          Morphoice @griffinboy
                          last edited by

                          @griffinboy stupid question, but are there all the building blocks in scriptnode to create a reverb algorithm? I see an allpass or a thieran interpolation delay but I'm not sure those are the right ingredients

                          https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                          griffinboyG 1 Reply Last reply Reply Quote 0
                          • griffinboyG
                            griffinboy @Morphoice
                            last edited by

                            @Morphoice

                            Well maybe. But it'll be so cpu hungry. And fiddly because the routing of a real reverb is a complex matrix with taps coming in and out of all kinds of places

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

                            19

                            Online

                            1.7k

                            Users

                            11.8k

                            Topics

                            102.5k

                            Posts