HISE Logo Forum
    • Categories
    • Register
    • Login

    Ring modulator below 20hz

    Scheduled Pinned Locked Moved ScriptNode
    16 Posts 2 Posters 480 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 @HISEnberg
      last edited by Morphoice

      @HISEnberg

      @HISEnberg said in Ring modulator below 20hz:

      process = ((1 - wet_dry)*,(*os.osc(freq))*wet_dry);

      how would I make this stereo?

      process = (_*os.osc(freq))*wet_dry,(_*os.osc(freq))*wet_dry);
      

      gives me a stereo ringmodulated signal but
      completely loses the dry signal. I don't fully get the syntax yet

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

      1 Reply Last reply Reply Quote 0
      • HISEnbergH
        HISEnberg @Morphoice
        last edited by

        @Morphoice Oh and I forgot to adjust it, but the hslider is presetned in this format: defaulValue, minValue, MaxValue, stepSize. So if you want to lower it all the way down to 1Hz just change the freq slider:

        freq = hslider("freq[name:Freq]", 240, 1, 1600, 0.5);
        
        MorphoiceM 1 Reply Last reply Reply Quote 0
        • MorphoiceM
          Morphoice @HISEnberg
          last edited by

          @HISEnberg that I got, just not how to make the signal stereo without losing the dry signal when dry/wet is turned down...

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

          HISEnbergH 1 Reply Last reply Reply Quote 0
          • HISEnbergH
            HISEnberg @Morphoice
            last edited by HISEnberg

            @Morphoice Yes sorry I am using my laptop speakers but I see how I messed that up, I think this should resolve it:

            declare id   "ring_modulator";
            declare name "Ring Modulator Stereo";
            declare shortname "Ring Modulator";
            declare category "Modulation";
            
            import("stdfaust.lib");
            
            // Parameters
            freq = hslider("freq[name:Freq]", 240, 1, 1600, 0.5);
            wet_dry = hslider("dry/wet[name:Mix]", 0.5, 0, 1, 0.05);
            
            // Ring mod function
            ring_modulate(input) = (1 - wet_dry) * input + wet_dry * (input * os.osc(freq));
            
            // Process stereo signal, the _, _ repersent the left and right input
            process = _, _ :> ring_modulate, ring_modulate;
            
            

            Also typically, I won't use the dry/wet within faust itself. Instead I would use the Scriptnode dry/wet template. It doesn't make it difference, but it could if you want to do further processing within Scriptnode. Either way works fine.

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

              @HISEnberg said in Ring modulator below 20hz:

              process = _, _ :> ring_modulate, ring_modulate;

              works perfect thanks.
              that process syntax is something I really have to look at.

              "_" is the original signal, that I got.
              "*" is self explanatory, but the rest... gotta binge some tutorials

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

              HISEnbergH 1 Reply Last reply Reply Quote 0
              • HISEnbergH
                HISEnberg @Morphoice
                last edited by

                @Morphoice This is how I got started with it, though I don't think it is the greatest tutorial series I have watched: https://www.kadenze.com/courses/real-time-audio-signal-processing-in-faust/info

                Romain Michon is the GOAT when it comes to Faust resources so just finding his course lectures and online material is good place to start.

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

                  @HISEnberg superb I'll work through that tonight.

                  I'm playing around with the examples

                  process =   dm.greyhole_demo;
                  

                  is a great one... How would I add a dry_wet slider to that?

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

                  HISEnbergH 1 Reply Last reply Reply Quote 0
                  • HISEnbergH
                    HISEnberg @Morphoice
                    last edited by

                    @Morphoice Scriptnode dry wet template is what I would do. If you want to edit source code in Faust, you need to look through their libraries (lib) online and in github:

                    Link Preview Image
                    faustlibraries/reverbs.lib at 3e74c39a9fc7c00c1b4caceff2731af643706181 · grame-cncm/faustlibraries

                    The Faust libraries. Contribute to grame-cncm/faustlibraries development by creating an account on GitHub.

                    favicon

                    GitHub (github.com)

                    MorphoiceM 2 Replies Last reply Reply Quote 0
                    • MorphoiceM
                      Morphoice @HISEnberg
                      last edited by

                      @HISEnberg scriptnode dry/wet. I feel stupid. ;)))))

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

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

                        @HISEnberg well the library looks easy enough.

                         greyhole(dt, damp, size, early_diff, feedback, mod_depth, mod_freq)
                                = (si.bus(4) :> seq(i,3,diffuser_nested(4,ma.PI/2,(-1^i)*diff,10+19*i,size))
                                    : par(i,2,si.smooth(damp_interp)))
                                ~((de.fdelay4(512, 10 + depth + depth*os.oscrc(freq)),de.fdelay4(512, 10 + depth + depth*os.oscrs(freq)))
                                    : (de.sdelay(65536,44100/2,floor(dt_constrained)),de.sdelay(65536,44100/2,floor(dt_constrained)))
                                    : par(i,2,*(fb)))
                                with {
                                    fb = feedback:linear_interp;
                                    depth = ((ma.SR/44100)*50*mod_depth):linear_interp;
                                    freq = mod_freq:linear_interp;
                                    diff = early_diff:linear_interp;
                                    dt_constrained = min(65533,ma.SR*dt);
                                    damp_interp = damp:linear_interp;
                                    linear_interp(x) = (x+x')/2;
                                };
                        

                        to design an entire reverb is wow. ofc the real magic happens in the diffusor and delay blocks but that needn't concern me

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

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

                          @HISEnberg said in Ring modulator below 20hz:

                          Romain Michon is the GOAT when it comes to Faust resources so just finding his course lectures and online material is good place to start.

                          funny enough I'm already subscribed to him on youtube lol

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

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

                          35

                          Online

                          1.7k

                          Users

                          11.8k

                          Topics

                          103.0k

                          Posts