HISE Logo Forum
    • Categories
    • Register
    • Login

    Ring modulator below 20hz

    Scheduled Pinned Locked Moved ScriptNode
    16 Posts 2 Posters 479 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

      How do I get the ring modulator to go to frequencies below 20 Hz? Please don't tell me this isn't possible :/ and if so, how can I create a signal from 0 to xxKHz to modulate a gain with in scriptnode?

      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 I never used the ring mod, I know one exists in Faust if you look into it.

        Generally you can right click on any parameter to change its minimum and maximum values, and double click on it to change its mid value. Check out the bipolar mod template in ScriptNode to see how to create modulations.

        HiseSnippet 1664.3oc2Y8zaaaCEmxNxoNMqncqEaG0gdHEnvvNsqa.6Pb9maCVchQTVZ2oLFIZaBKQpQQkDugcZW5sct21Ggcc25WfALf9EXeD58cX6QQYKIa2Dauj1s4.jX9dj78iu+SlVBtCILjKPFkOne.AYrrocelr6lcwTFZmsPF2vrINTRDVZRazO.GFRbQFFEerhfQ4EPwedyZaf8vLGRJID5PN0g7TpOUlRsU8uj540.6RNf5mY1Or9NNb1lbOdDfmhlUQAXmd3NjcwpoUvDYTZaWpjKrkXIIDlyFb291c4mxzy+PZH8XOhZPMjMrQZxnM6R8baM3rFhPFlsRO4E0m7aa1j5RGROUCbyXFVoqHqNvnv4AoZy.jLx.oEzP5Vl1NBZfLkiBOW2bGFXPZiAUcVnnmKx3UlaxgIvjU7w8HMDvfgKXkGUs58sfecuuncDyQR4LKNaWtjrGak6sz2uT4k9gkrFkU61SjmRLBtmGQLQ1Jqq37V3JrH+iIh6acB1KhLbhvwOuNszzoSczm5LSjy1gQk6EPRF2f64pzUpuOtE.kn1fu8U6rEVhUFkDZv7BHBIUAGisHm.d0ZSTYysHg8j7.vudL6G34vci7vx7tSp3lDFf9HmMTYnXgTY+rwUyfOV0y0GaZg3sLaQkNcmLFKLALBZpqBLlDY9Ala2tMwQlBvELa774MLr5LGFtTRXHHSkvWNYnUimWahAfuvL0YOPPBvBxA7Vd39qDh8C7H6CX79VG6wc5YS+Nx3QHAZHrgZFq3zEyXDuv4IPpzkTxIz97HIk0oIVJnmAoO2Mx2FRS6P1LAc.MiBpXH83ppwJ+BaByMdveAeRXVSM1HgYsALyD9sKQdJWzK1bj7cjwhJceYy8Uvf6hV2yie5lb+.ZhKJX.ho0h60OnKmQcTjzyX.LW2mGARHAqOAGd.l5o7osiBgrDt6wrgIGWCyn3gDQX7FunY0JvOfO9tbWfkYCrCnU62BK6pBVTId.OShnhyPOzTfl0CQs9AE3z5G.e9pCcb4shYRyn8DUif3rBZ+tcBOTw0A6gNTYoUHGo1S0zS.WIcQ6ioAbOr3HeNngyg2amAu.WMjUNEsvBnPKTnPkiqvr.6APnXh9QiVXyOJj1gAn8BTXC2s6Ztof.9pVXK8JsNFL+DBypZkJUpY0kHHWfBMEMF4PCOzA55PkmabzHHUxvddMXJVPz8YCJcrEML.B52HBRdoSsjihxpxbImMv+eaHD1EJOEu7AwDYrIfoc3H36MorDefzjvMwmMBsaV2VRBTYYxVPwtG4TsRHKUkdpjpb.AM1NiNeQ+l0FSzu30iJ5e9ku7WGWz0+Q+eaMcaMMDjuMBh95mS9O5AO3OWa1kOp5LdzWNV9V6qxlfFa+QyttGD1Lp6eL35ekIZHc6aUzKZ1pKNb1s6WFxtTb+PS5XOGICyFufxjPrrIjOYUHiT9f+aX5C+sxPdI8GBEJm9b.ExkCHW.qw6BKmdCF2xk4zWxLff6k+neccduXFS+oMUCYrPtycZuhGfEcHxvjlmYDGc043xS63p.SGk8dnpQSK1G3pNCZdqSgLVGyqVqSVUQX9npqHIqujXRa5iJ84rKijZoIFvI4M0YzmHX9icJlQGs335nu9Uiqi.8wzTw4Uc9k6T+sm4AgVORxg7B5a6L6Y.q+SSWkuu4i150I1JaeNW1EZXbTv7v5Wf7uLzCKatOIjHeaIRxEAsAm2yGG2a9+3aIeGMyqa9L7Ij3mcJt046DOtMW3a8XBzjnporZmyCO86S6COEL0O7zdNR.BGHvrv.dHoV1cdDdqlk2VDYDK+z0jxMK0wqAb7xLuqUe.wUyRrElkayfw41olpKiMX3er11LLbcNaBbZb2Ksg1LoFZE4ERdF0U1sV1ElRd0rjeBV3B1EmbWzuX96Ttvzcmx7u4Ql4OgqfW58viyc47vIuGeambObQ4AXzlpJntM6DhGDZFiwODhEaii7jCnlO1pImwGb84Tq99D3h+c5PxWmYRGn0kRrSuTJ2t99DOhp4xgjta8mBW9CKhupw7oKl82Rch1qOwTCWKUBAq+69lbE+e8axM8QeP9v+caE+XSHu7pVwlRq2O1x2EOk26BY3icD7ibzu.pJn+ZwTfyMK9+WTYylpwV0PmLZKM9PIiibbxuUisvUm2E9f4cgObdW3mNuK7Qy6B+r4cge9EuPUE8jdvUwFPaNs1VemNCcGNwgIn+FzkKLlH
        
        MorphoiceM 1 Reply Last reply Reply Quote 0
        • MorphoiceM
          Morphoice @HISEnberg
          last edited by

          @HISEnberg cool example. I learned a lot thanks. doesnt do the trick on higher frequencies though. I'll have to have a look at faust, I compiled it but will have to find some tutorials to make my first faust scriptnode.

          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 Just add a faust node inside of Scriptnode. Click the square box on the node which will open a scripting window.

            Put this in there:

            declare id   "ring_modulator";
            declare name "Ring Modulator Mono";
            declare shortname "Ring Modulator";
            declare category "Modulation";
            
            import("stdfaust.lib");
            
            freq = hslider("freq[name:Freq]", 240, 120, 1600, 0.5);
            wet_dry = hslider("dry/wet[name:Mix]", 0.5, 0, 1, 0.05);
            
            process = ((1 - wet_dry)*_,(_*os.osc(freq))*wet_dry);
            

            Now it should operate just like any other node in Scriptnode. I am not sure if this snippet will work but here you go:

            HiseSnippet 1303.3ocuVstaaTDEdVmroDS4RAd.V4e4DEbsyklVpPIMNwfEjTqtgnJg.qI6Na7Hu6LKyLtIFD+mWg9O9KuE7nviPeCfyYmcs23XBMV.NRal4bYNey45vtxvDgrv9ZAOMkYHDmk5ojALsVpHNUOcbJi3beW+wByf1CnbAo6gDm228Xp1vTdVRGLNkp0rPhiyReARvY0kIY+dydGPioh.1TRDxYRd.6q4IbyTp81+q3wwcngrS4Ikjd686FHEskwxQ.dVxsIIkFLjdA6DJJVEWxWR0CHNq69jc1oEMLZ2nVa05ImGFEv1Z2lOZ6c2jtyiih1sYqs2Jb2nsAPtxQgbiT4anFlFNzCjgi8GHuTXMvYbM+7XFtoEwGrrkLo8.db3DmiFbUKWxUsj0U8ItGyC4SnO0k8gYL7lpQYmlSkaCRstCPxoDjV1BoG35Gn3olobP77ttcEPDLhBwlxPwJKw42caKAADlFIzgrNJXyDEp+nlM2vC9r1SiFIBLbovSJNQZXOWTesp+T0Uq9yU8lkUTzb4glQIiiYp4xFSGT2lh0EiRNmo1v6Uz3QrIBBW+q6SW4symFXu0kDTJ5J3lmmxx22QFGh9Jb8Mi.jb2Fr5a5dH0PwfRNMPtTlxvQ33bH6UPYfMDsp6gL8PiLEJDtQ7CxbjgiholqmNgEZ4L.+w0hgXfRn4lwkKDuC4XMu0br2VH9.2dbSvf4iwJyAifm5+BLlWY9dtGEEwBLSA3xtcd4hVF17NWFVMuLDrIZ76mu0qyKaM2BvewcZxdphkRUrSk8hoiqqoIowrW.XbCuyikAC84+H6lUHoVHb.JQ8fATgfEqWjBoU9Wp4D4ExQFt3hioFE+Jhi6IiR7g95Ar14nCn4TAqgr6ah6w7BeXHU1l+D9kyrEt2ImYqBlkJ+NgYtTpFlENxWSbtG56+H2WfvPF1OOjbE4YwwxKaKSR444pPjHiVOY73zARAO.IYkn.uOKQNBLUNngAQmR4wXxs+HMztH74BeP3roeNKcFSoyN3641rA7GjrehLDXsRGZ.3dG2iZFfUMXGHHEkoZDLIUcNHtbNicX3bDBsPwvSqqDtAIn+AGclMqunijMoE2AkjUronc0mgbCnwjyvjB7tkclVmpE9nn2yMhNRaHW6pbe3pnXMrbtIbKz4NgwJyfwUcaGCma2vB.tZgSHqGPYQ+.LeqGUAFGlioKTvZRRIFnUJ1A2ui4hhydRipioWMCs2rmugkhUh4z90W+5eaO+grKs9jxRZAdnZ7CuDdx0LGzerG41s92u+Ms9q2eFqmcP+8VeE2HE6Gl0zh8I9Wh8rOkptfYzy3VHGHkCSnYkTK1vs+OZ.jPCTx9A1dZXv7cxn.IRhrztUg2tB68ZQd0rQ0D3EZ8CBt9QcCE2bQUbqEUwsWTE2YQU7QKph6tnJ93+YEwGP+rQFYhsCMTE16nrjPGmiDTXDTVyEBClhEBuPy1DDyUmPQvtpCzQNq6UDGmYUA+mEIersezCy6ezHTmV7ZPRktNtgrfXXHrGOzyyqlBjpeRwqdp8zpErwCyqFdHdSdTDrRHKIidfTYlmfkjI.l1dAzK0q1zWPArqxSRAkqWSaByvaiX940VCXfUzdet2.cLODdxbMb+2hF4y5.q9tZa3s41vy1asI9I6E7MarCnHzCpOzKprp4slrZeL+JTYPX3CnJtrIpX07WX.ZVudKuO0K+jVa89aTu+5RcCoNnNBi0Va8BdOkP9KFTBC5A
            
            MorphoiceM 2 Replies Last reply Reply Quote 1
            • MorphoiceM
              Morphoice @HISEnberg
              last edited by

              @HISEnberg bloody brilliant! I remember Christoph saying somewhere shippets wont have faust scripts in them so I didnt try the snippet way but I got faust working and played with some examples. Your Ringmodulator is perfect! Thank you so much! Exactly what I wanted.... Now I have faust to learn. lol this is like dark magic

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

              HISEnbergH 1 Reply Last reply Reply Quote 0
              • 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

                                    32

                                    Online

                                    1.7k

                                    Users

                                    11.8k

                                    Topics

                                    102.9k

                                    Posts