Forum
    • Categories
    • Register
    • Login

    Making a basic 2-op FM synth in ScriptNode

    Scheduled Pinned Locked Moved ScriptNode
    5 Posts 2 Posters 75 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.
    • dannytaurusD
      dannytaurus
      last edited by dannytaurus

      I'm a total noob at ScriptNpode and I'm trying to make a basic 2-operator FM synth.

      How close am I?

      HiseSnippet 2021.3oc6Z07aabbEeWQMRlRJtNezzza7PN3TXHPJyXagdPThRxQnlxDdkUaND3LZ2gjSztyvN6tRhon.AHWxsdpE0mZ+Sn8XQuXfhdn.s.EM+CjSE8n9OH8MyrK4theHZJRZHaRCXn4Me89986QNUEbahuOWXXtzAsZRLLWAY0hEznbCLkYr21Fl2DUA6GPD4zj1pUSruOwwvzLyCkDLyNug5y4arE1EyrIcHYXbHmZSdD0iFzgZ0R+Lpq6tXGxATuDqtXo8r4rxbWdHvOYP4MZhsOFWmrOVtr4PFeB1ugg4OAUf7fh224n0sO5dEKT7t1qW7tqm24A3hjZ1j7EbVu3QEW2N+8MLWXGGZ.WXEfCH9FlyuE2okUC9oL8EbH0mdjKQNnfgEbyZx6xccjhnjpQ4FTWmpwJJeC3Pq1QskQq1dOTEpCsM8NpuaolHWmcjTAZNWZ1KSJ1qPR1KeB1qGrjYBVZdMK81HKaAsYPmYj7yxn8Xf0rFFrSIYE8ZMLeApLGV.KXUO7wjcEvf1a312Ke96jC9uO5mVKjYGP4rbb197.xiY29iV5WsT1k90Kk6hSUqVOmSdMBtqKQzyoktFhAswayB8NhHtStSvtgj1KDD+z5TT+0oIM41ZoNwB4r8XzfG2jv5mifQjpB9qmt213.rzPDQCVWShHfJYAysIm.gAZyRVz1D+iC3Mg.gtrYf2B2IzEGj1ERFnEMAnCRY2jFGlOMnUx.wwle0vxhuMpJMvtQu4w45AOBZpIAOFEM9VncpUiXGzgAmGs6uXxD5k75yFe85nIUlT00+iinv3NjbJxDepOQTX.4S+2Ca9zlCc9z3f76fdYBnFXNzBu1jC8ZP3Xpz7Yi4QKpWSWxNrSHtPNGEO9NPRlZ3P2fXpoczpvY7lM3LpcReqmPBDz50Ihj7dOEnMCBfJycn7dkdBwkf8S378gkdDkQvBPOQFQcQgW5Rd8zd8AHM6lSFcj65aZzLuwjFcPpnaf14r.AtvkUf4Uf0Kh0VaZxZOgGFPY0qfgP2y.vN6G5YAo6sI.awXDWI.Hy4jPUziyKGKYBKByQM36gOQSVPN1LZxBwSl.ky9jfS4hiUQeQ+MH15Bb9sKv8L+jE31z0keZYtWSZjKM30nnUk61JNIj4b5UDy1a5wCgaLh26DOrkK29XK5WRhECnifCvTW4IXE5CX0bdLyBNGUYSyLGRD9p6bQT9Ug+AgK6qRHsvtXav.zpJFpPCwcR3efcjHV0ts8r+xTxH.cyI8esx6KtFrlmAQ0SpOkczXlIAPQcNM4HvaYNIKrBZO+CkyZicMNTVWVJopyTt7aDILxktHB2vwWXjRvtEhDU.XU8rcy42DsoWybsqdbIrKZfr6OP5+UEKfCFZYvOli0VQCqSkI2N.KpSBj6dtjDhfNyHJTI9oGFY11CX6EPdgfiZ6KQRaQj9hLFkCDgp4cgyaAnBe.QI4Pg0yhQ1uM0uoKt0VgPRQcEnTTj5.lC4r33lc.zTN.DH01kJOiDZFHaP6QPu2UnrHcUmL6Uvmkl1272JYEPZpc+Uz9iO+4+kMrNlbp1nGQsz9U9GanSHEUn9.xYAGvUmFnCNArXxacAjBuXUnCaE+YEdzCE7vlpAIuZjrbdDfhKvleXIiWZ4.R.dA4P8oK4Pi+XaYcHsb7HB3j1Gg48Q6yEdXW3PcpRfDfP7b8gQ3T2RuEty2vXxajV.8I.R4qpIR8o2RQwRSAoXQ.voMt0jSLdgXZ3okEAUQjEBlhdYe2zvKKKJFg9UxB8U0+O+yu32UZ74nMx4BJGJNgLArRe2XzJ0Sg67M5uvsLpSOX8VzVF8TnFSM.ohyUKqfgQR4Y4Ii7DUHchKJaFFv8faRAqIAbw1XMLR.T5FZfREFAjRvIe8AoDRhTZLCTZsY.klATZFPoW4.k9y+gm+Y+9RulBTpe1mqS.kL9Rjw+62NCnzLfRWKAJsnjozE7SgRJKxlKHqVyqevizemn41sxk.OJ9WGR9MHmDnT5R+yOXMewRcGu+sCY79W68uh7j1UP9kgDlcqwk5uXeC6Sq9m74.VtiIY5FlzC447M5VdtcoWtvjaoLVUfam1zkNFi8KML3ZV45Pre+gnkz4C.fqtAsiXhlizMMjJleIDrqFqJo2cPud8WRqPCHB2b7neGTPPbSOWYEbsZ0Nr1e8ueUUvxut4gNo5JnxXg.b0u7TpyRjdMIQ5ckeJ+e230vDoCWChuIjHM52oZ3yjFsg2LRkNVTwuExiy3qIebpDdZM86nSolb9t03o2+Hq3Sa0qK6INEurrlWpewWOarYWMwna1yL3rEe5K51rCl3gI09Kp+m9gkhCr5am9x2ynM8Hh6DF+XO7eK8aFtZTe96t82FkF2xiyCZPY0GCeUeEG016GG1jUfNf8IACJdbBXYjdeaw4G6gUuBjq7yd8l5IA6Bj0nyyk78Uiy8ywmPx8PBiHjEdS+jel3uUxGaG.W+ABLyuI2Oskh3QOfyjxXGhO0mHqo9DY+zIoWliE8bpy2XWPH64drvAgBUi4wODlDO3qLShmiIZ1ywbZ9bLWa1ywb1yw70gmi4OB0IW0qHi4z3IPNMtCOrsf+La8iwW859TT.4loPJlEUQNNWAiStXAZOHe7yrsSeTcsw0F0Md2QciEG0M9wi5Fu2ntw6Opa7AW9FkkKi5nQFa.HYqti9G61bGFF7x0s17+AHBsvQM
      

      I can hear the familiar FM twang but why aren't my envelopes working properly? I don't understand how to get them to trigger properly, rather than being gated.

      CleanShot 2026-01-20 at 20.47.11@2x.png

      Meat Beats: https://meatbeats.com
      Klippr Video: https://klippr.video

      Christoph HartC 1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart @dannytaurus
        last edited by

        @dannytaurus the fm node takes the input signal as modulator - the modulator parameter is just an additional gain that is applied before the FM.

        The most basic routing is:

        oscillator -> ahdsr1 -> fm -> ahdsr2
        

        A 3-op FM would then be:

        oscillator -> ahdsr1 -> fm -> ahdsr2 -> fm -> ahdsr3
        

        and so on.

        Note that you can insert an ahdsr anyway in the signal path and it will be applied on the signal - no need to modulate a mul parameter (this would also just create a once-per block modulation which is way to coarse for a gain mod).

        dannytaurusD 1 Reply Last reply Reply Quote 1
        • dannytaurusD
          dannytaurus @Christoph Hart
          last edited by

          @Christoph-Hart Ah, makes sene now! Is it possible to achieve feedback on one of the fm nodes?

          Meat Beats: https://meatbeats.com
          Klippr Video: https://klippr.video

          Christoph HartC 1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart @dannytaurus
            last edited by

            @dannytaurus sure, just route the signal back before the fm node.

            HiseSnippet 1597.3oc4Y07aaTDEeWmLo0toUsUUnBm7ANjhpB1oIooBghyG1gHpSshSi5snI6Na7Hu6LK6NaRbAjPhK7uPOARbmSbgKHtxAjPhCblSbBo7e.7lc10d2r1I1tIsT0DoHOu4qeuu98lmSCOtAw2m6ooWXmNtDM8oQM6vDsVqElxz1bcM8afpi8EDuhJQq1wE66SL0z0mXCo.87SpE9yIKuJ1FyLH8DoosKmZPdL0gJ5IsQkOkZaWCaR1g5jX0yWYSCNaMtMO.vyDnRZtXi13CHagkKKGR6Sv9szz+.z7OxZAyEJ8HKCKqEWxBW9gFkW7AKXhsdzRkK8.ikv6agmC+PM8opZREbulBrf3CG5pbyNMawOhotfco9z8sIxAk0ZB2rRr1Zsn1lMhMN9ZZ5nF8LUSnLU2AUmZR6JumI6lgSTr2NRZzzycVPp7H.I8DPZREjtEpogG0UzaFIdtFZSF3AsvfuIITTqUS+WPqwgEvDy5faSp4AC5tgYVrTo6WD9y89Hq.lgfxYE4rs3BxSXybuBedg7E9xBEO8TVV8cN403wssId8cZY3f2YswYXAN6S7tewCw1AjtKDT+z1zoFNapgRqSrPNaSFU7DWRz3ZbaSosR94rd.sHyF7omt45XAV5ThjAqyk3InR3nuN4PHMP4hxiVm32VvcgDgL9OHxgaFXiEoCmjIZQS.1iT9Poih4SEcRlHNBwXkNyXrgEh2B0fJLZ0eLlqOXDrTWFXLJy75npVVDCQO.NIp1yF2zvg+5yGe8pLqPlzvq+cijv3ljhghI9TehW4yfO82GV9T2glOMNg+9nQI45TbnSNbIWoiYSr99vjM0qAx0Kl.+Wi4lo3+yGiwlTGWaRU1gDaf.JDi2FXbrvA1hXooi5pyYb2VbF0HYf11DgG8fCHdIwdeUnUDBnLcOI2ox1DaB1OQj36W4wTFA6A1IxXZKF8Zg80ecWjBtEkoJEeykSch2Z3TOKSzUQUOV3gKedUadM38hf1buJg117.AkcPcLj5dL7j0sBbZBb+FD.VLFwFNbjdN46VTiKIGKAQSByLbv+B+DMYY4X8nIKGOYhm7rEQbD2qcX1WzmA0VUsyua0t87SVsaEaa9QqwcboQgzPTSnrFb6NwjP54TqHF1q3vCfaLB68xGV0laztI84jX0.ZOXGL0VdBMC7gGwY9DVS3bBqgpOwtDO+v67JnRyB+BoKaERHMUMrA3.5z.Ckqg7N46BA+HwaVit9yAqSIy.TcpL30Juu3BxJLCppizdJauQehDuZTwoIGAQK4jPXZzl96Jm0.aqsqrHsTSCOSkSPoLpl1r7.nL2d6KsQZozu6lP+RsprJxoNlKSziRf9oQbeC3IMxLJsL9FOxrIlNKnSs6QAxxofZmGG+R90o9t13NqF.7dphLojH0KlI433TipvqmLgtEB2db5RCrz.JHQOyIdDztccJKxJzi+tN93SI6lUZJHtpf7dTFMaSNRYWRUcFLcSgBqwtC4XwN7vyBRXODzP4cdMzSA.aAddS.XGn5otYv9a3wCbCGjAQQubHibsyVUluRFU4a9iSqJe2KdwOkUUp70N+1xptVq4Q9r.H6sy.0mdqXXzmupck9pOf7yQeNY4rtlRinqY5PzVbaI20EkC5jk6uC5jk0F8XM.7iXr1FPEq2XTEnR1.UkqfZzR9h09qKuCPN44fsgiyrAApmBzmfFc4lBcQnVSE1cxKuGpve98tebg+dvdnDj24QdDCB8PxoYt8TuNY13oyxb2aqmCsctTz1o3X0u7spEP0HDy8kM8bQFu7E24G13ud9Ot7.iWRXjmDY4j19lWUYDDm0tFt5w2jN4+O35GQ9j46OWOH+UPh2050RvKu97qG9ye668g+yxiIQR+pcMyHV65lg9m5vsScsoDuKJmzUq71P8qDItWG4vY74j+CUH7zYv2VkAmb9roxo2+XmSmDRSg7gNkRikazksNbtr3HZSiB.5SGAf8lQB+ZH6ZM6VBHMdG7fU471N3v9PGuuE9WEcM6fM736Yn9hVk1hqFJAZ.gEU4qtbbwxZGd53bGpIcOCizGUlMN23twGLtab9wciKLtabwwciObb23Rm+FkeYzqDH3NpuOCfWpQUUGf5UY38sUIMZ+G8Qo1VC
            

            Note the frame_block that brings the latency of the feedback path down to one sample. You'll need to compile this for a competitive CPU performance.

            dannytaurusD 1 Reply Last reply Reply Quote 1
            • dannytaurusD
              dannytaurus @Christoph Hart
              last edited by

              @Christoph-Hart Clicking and dragging a connection between routing.send and routing.receive doesn't draw a cable like other connections.

              Is this a bug or intended behaviour?

              CleanShot 2026-01-21 at 12.24.03.gif

              Meat Beats: https://meatbeats.com
              Klippr Video: https://klippr.video

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

              27

              Online

              2.1k

              Users

              13.3k

              Topics

              115.1k

              Posts