HISE Logo Forum
    • Categories
    • Register
    • Login

    Scriptnode Synthesizer (how to :)

    Scheduled Pinned Locked Moved General Questions
    17 Posts 5 Posters 1.2k 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.
    • ulrikU
      ulrik @hisefilo
      last edited by ulrik

      @hisefilo crashed here as well.

      You have a strange connection here:

      imgur

      "saw_gain", you don't have any parameter with that name

      Hise Develop branch
      MacOs 15.3.1, Xcode 16.2
      http://musikboden.se

      hisefiloH 1 Reply Last reply Reply Quote 0
      • hisefiloH
        hisefilo @ulrik
        last edited by

        @ulrik thanks for confirming! yes I know about the parameter! But I think is the "Allow Compilation". Disabled that and I'm able to run the standalone compiled. But I get no sound from a Faust Oscillator once compiled (I do with the factory oscillator).
        Will continue investigating

        hisefiloH 1 Reply Last reply Reply Quote 0
        • hisefiloH
          hisefilo @hisefilo
          last edited by

          Confirmed. No sound out from Faust Nodes on Scriptnode Synthesizer Module once compiled. (allow compilation for nodes disabled)

          HiseSnippet 1188.3oc4W0raiTDDtG6zYiCAEVzdXO5CbHqTHxNrrfDGv4Gavh0dsxDh3VTmwssa4d5dnm1wwf3YfWCdL3Qfa7ZvavRUSOS7LgYCdMrKHvQJZ55md9lp9ppqdfQGvii0FhWsyWDwId6P8WnrSNYBSnHcOk38dTshe4H1rX6kwBEmb7hHVbLeHwyq5WfV4UaCRxue6yOlIYp.9RQDxEZQ.+4hPgcozAs9JgT1gMjetHLm0OsU2.s5DsTOCPTUZCRDKXJaLuOCMqBk3sY6gBq13aYVdLwaii0CW3OQOW4r+BQr3JIGWzj3CajSbGsbHhX7YxISDxgCx9xiIDO5fkwgpt3vin8DCE2JOe7.UTeoG4iGdUJBupEfWyWE7JARd4fzFNH8PpefQDYWpAwy6P6prbyHVPwTiyVh2OSOQCFnrGDxlx6XfE25vdOqQi8qC+6Ie1nYp.qPqpqU80V9KT68js+9sqs8Orc86pZznR0guFiVJ4lRUiYZy843dpYgWwM6W+ZlbF+VCgO+hwzMWsXZf6qNmgZUWkv9hHd55kjhlkjAHogM3out6oLKCSJox.6h3Fq.gi2o7qAFtKEUidJOdpUGkXaXDT5.6f2V1TNkKozQpYVgZ74B.1B.A6RyKpI4FfR5Ig27B7geZIXbuk2MgB5CEI.ZIWMNqfo1lfkuDKjDVdXAojhROLuXxejpAjb8vYRlsHyGK2SU.otBzMjSohE1E4aGb2xgMd0otFkVsVZhYEg6CoCD1fIki2JkfWHA+lFuUyRfsGMhGXWB1Mnc9l6sSxe6PoVFTbbxjt9IP4woRT5g75nXdrHlaZdOM9+kUswezJ23Oq809zWmVEatxAs7sJJRqyYeI8k27M0QEuUqM9qWJWc0f6exIa0xvnuHLRxaqtlKgVqIX78gdovXGRalzhLvdZkNZhVIBxS5NiaMhwi4l7XuzOnirVX1hkRdTqy3RNKNGq7CZ8bXfGlAhS70LV75eJeo4qGScvsNV1T++Fsfq9+9Vv2WnaKZ6arFVy+kmgSg4g+SAyyzyvwl5wfxdbpo9yBcyEAPTo3xXb.pJ3.Tt0Mv0Hf74pgIKdI7KUYSbsWpxlYJyMHXetct1LMoxM8Y3DALNrK8z3nTQ84yIGIk543DfhThODVRjMPKWj01xqhyhLvdTndFNtnCweIK9blPhlcA2DmrIOf13.3OnJoeROIZGV.DSWLfAGdCka3PuPpgaNH31TzcgV9LEtKYm55hK.hBSlYEurU0bC55ZVgqfzZEbi2g1M9BTa.SRt.OIFwJA2SWDxAQzzGPSt.Io.b2AfqgefSyZipJ2AU0nmHgcp6vLHQo53fDBcdy1EoJCXF3hkvkghu0XO2DwKUfe2YqfjcOgJ0zkytzicSQYQ+ZKeKOxW7cEN2veJetKBT3zI.MaRGY3eKo3tz5GaQ7miMPOmYFysw2AXji05ogrD93ZcGk2JUOgr.i9x.2faX3bqDIPZTkbo9Zzd355MIWmkuPFdHL4zkAAXa4ODp7K2mCWCe9n0vmmtF97wqgOOaM74SVCe9z60Gbn0ilY0gtNWffAsSHWddsULnGcRQJ42gxd18S
          
          hisefiloH 1 Reply Last reply Reply Quote 0
          • hisefiloH
            hisefilo @hisefilo
            last edited by

            @Christoph-Hart can you confirm this is the actual state of the Scriptnode Synth Module with Faust? Or it's just me pulling a boneheaded move?

            hisefiloH 1 Reply Last reply Reply Quote 0
            • hisefiloH
              hisefilo @hisefilo
              last edited by

              @Christoph-Hart I finally found the bastard! Parameters makes Scriptnode synth to crash. Is this a simple fix???

              Screenshot 2023-05-28 at 15.17.21.png

              hisefiloH 1 Reply Last reply Reply Quote 2
              • hisefiloH
                hisefilo @hisefilo
                last edited by

                @Christoph-Hart any way to get this sorted? :folded_hands: :folded_hands: :folded_hands: :folded_hands: :folded_hands: :folded_hands: :folded_hands: :folded_hands:

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

                  @hisefilo can you upload a patch that demonstrates this?

                  hisefiloH 1 Reply Last reply Reply Quote 1
                  • hisefiloH
                    hisefilo @Christoph Hart
                    last edited by hisefilo

                    @Christoph-Hart Sure.

                    1. Save this (or any other faust code) into [Project Folder]/DspNetworks/CodeLibrary/faust/
                    import("stdfaust.lib");
                    
                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    //
                    // Additive synthesizer, must be used with OSC message to program sound.
                    // It as 8 harmonics. Each have it's own volume envelop.
                    //
                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    //
                    // OSC messages (see BELA console for precise adress)
                    // For each harmonics (%rang indicate harmonic number, starting at 0) :
                    // vol%rang	: General Volume (vol0 control the volume of the fundamental)
                    // A%rang : Attack
                    // D%rang : Decay
                    // S%rang : Sustain
                    // R%rang : Release
                    //
                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                    
                    // GENERAL
                    midigate = button("gate");
                    midifreq = nentry("freq[unit:Hz]", 440, 20, 20000, 1);
                    midigain = nentry("gain", 0.5, 0, 10, 0.01);
                    
                    // pitchwheel
                    bend = ba.semi2ratio(hslider("bend [midi:pitchwheel]",0,-2,2,0.01));
                    
                    gFreq = midifreq * bend;
                    
                    partiel(rang) = os.oscrs(gFreq*(rang+1))*volume
                        with {
                            // UI
                            vol	= hslider("vol%rang", 1, 0, 1, 0.001);
                         
                            a = 0.01 * hslider("A%rang", 1, 0, 400, 0.001);
                            d = 0.01 * hslider("D%rang", 1, 0, 400, 0.001);
                            s = hslider("S%rang", 1, 0, 1, 0.001);
                            r = 0.01 * hslider("R%rang", 1, 0, 800, 0.001);
                    
                            volume = ((en.adsr(a,d,s,r,midigate))*vol) : max (0) : min (1);
                        };
                    
                    process = par(i, 8, partiel(i)) :> / (8) <: _,_;
                    
                    
                    1. Load this snippet
                    HiseSnippet 1564.3oc4Z8zSabDEeVaFRLk1jzFUki9POjnlf10dsATODCXn0JAhElhZOQGVO1LhcmY6tiAbppTOz68qP9lznp9EoeC5kdt8M6rq8ZpgPbgQIpFIDyedyueu27du44YncjviFGKhPVk1aXHEYsHtyPt7nMNhv3nVMQVygcrQqOLjDGS6hrrJ9kpQrJMGJ4ye9z0I9DtGcbWHz9BlG84r.lbbusa7Llu+Vjtz8XA4lsaiVdB9FBew.fEEw1nPh2wj9zcHpoU.irleytLoHpijHow.iVWzcXmiDmx0yeeVL6PeppgCpCrP5t2R32UwXUunMNh42scl1FiPV31i08hZc+93sYcYi5erM3tICTdrD4sGVEljdEmfdN4omcN5MEJYkiRyooz8vc7hXgxwin3yGfawkzndDvrmmJ54hrdMdCALAtbo.xwzshfFiD3g0ssebY3WO5K5Mf6IYBdYAeGgj9B9CezB+vBkV3GWn74GpWuoNlBlHguOMZpCq1oitLAeHePvgznGW9Dh+.5nIBp+j1T7EaSyuk6o05bSTvawYxWDR4Wji.J0Tor+orBlpLw5+QoV+N9rtzHDCLx2B+Lt3PGTBgS8h+te429qeE80sZRjjrkAVQ.kPZjjoT.qlzSfXB8lZIbSZ7wRQH3dugHHTvU3acaYpWnFzs7EDIi2eOFnnJnuCNeWNnyFED8Seaig4ajR.MZeXhyaGH7BzYzg8yB0VD6VY4UbV01dEaDSRCxGCNtckL20wDszaz5LlZuJLG0dkrQrjF1g8xLSWi+3k+7SCy1NZAKwCRWUtnKsrJWDMlESibfzBQPFAvKtUBPGR4c6hBHmkKwSif7olPuF8uCnfPYQ2A9D4jw2pjZoC.NnSDTohb3wL4v7I8t1B5upT7d31Lo2QSmiElBGAGwaBNVLyoZyd8ndx7mSr02byjWLO7kxfO00ScVUB7WnayEbzE3386W0itBuxGckk.9w32ljcW54aNy34ay+N24auGDMNwQvkx3XGVPnOcS9ITeHidBG+XHEdOx.eYVuS5nssfKBORvYd48s1kJiX86Sixy8opPqIkPQPi649M1k5SIw4b99rFOmwojHvNQmQagyac4HSc+5AXMcKqhNJ+9aVzh+uIK5kYhtMdyyjQDm2A28RoVESRscECTUbsMABcgRMv6LHPWJEPKNm5qJN0pfpLRcaaUaEI5.0mjz3ugOoC5nZakNnS1fiq.EsCUdpH53jnuz+FxjqzcL9.36gsluu3z1B+gYIWRTFZTrxUFJJxdI3G8rT0qwRcxAyjtYFqWKPLPUIml5eEIdOByWUHgUgcRxmL+VDOv9MrMANeEBaTUVCaCznk7Fscnoz38hDaIXiamUnVrlepUL6PRssAHSPRkjpucWQ03ZMNAZrZsuEFxtFKQSPiEAZDQWROxj39lvHWs3POos.WlBJvJg2vGVKntx80U0eWLoK3+vNgdPbREFnyIwcT9A4zyT4R7gx0Mx5yG0B301Ld5DwpcJz1jyRaeKrqspmNipN9SUyv1wV+wcY2UW1slSZNh0rQiVHmkxi40JJNFAkJFAkpFAE2KFk4t9Po1ME8qaDizxl.klFIDooQBQZZjPjlFIDooqQPolQPwHwKMm03kUdaPYWaifhiQPohQPopQPw0HnTyHnT2HnLawK5IeEwnisAvvw.XTw.XT0.X3Z.LpY.Lpa.LtZwGyieRkyARko.xp5OKubc2UpTakJIfLexsyiVafTD.eA7rKo7h.pxjZSInC6yEwqopds6EQ+dz3yRcsmcCU9ksOvTzDxc8a8mGehv+FO2QBJNFAkJFAkpFAEWifRMifRcifx4yjz4T0sqtGIpOUlbud4uJDq7bPeGO52v6+dNmzY+I.KRGywt1pUsqVU+ZrbZxSwDilnIReYW5mSTeoRsy+FioYwPSb2QVm6lfVD2Jde0ndD+LdXU.stPbb.I4l7loGF1H26X.wKRbfm90oTJ2sS5AxVyS9eunDdaU6xidsas+R.qK6.OO0YIOAxpOcYpLCxTcFjwcFjo1LHS8YPlkmAYV4RkQ8LcomppbfgNZuYhykk0lbxg95qDG8O+bH0QA
                    
                    1. Compile DspNetworks .dll
                    2. Compile a standalone app and run it (crash!)

                    I've tryied:
                    -Not allowing compilation on Dspnetwork once dll is already compiled, but parameters are not working
                    -Compiling .dlls on a ScriptFX and then load the same network on the ScriptNode Synth

                    hisefiloH 1 Reply Last reply Reply Quote 0
                    • hisefiloH
                      hisefilo @hisefilo
                      last edited by

                      @Christoph-Hart look at this analog beauty!!! Yep. faust analog synth!
                      Fingers crossed for parameter fix to start using this :folded_hands:

                      Screenshot 2023-05-31 at 11.50.02.png

                      Christoph HartC 1 Reply Last reply Reply Quote 3
                      • Christoph HartC
                        Christoph Hart @hisefilo
                        last edited by Christoph Hart

                        @hisefilo Alright, I've digged into it. First of all: don't use the scriptnode synthesizer after you've compiled a node. Just like with FX: once you've compiled them you should use the Hardcoded module to wrap the C++ class directly without going through scriptnode.

                        Now the problem is that there is no hardcoded synthesizer (yet), but that's where the mysterious "Silent Synth" comes in: you can use it in conjunction with a PolyphonicHardcodedFX module and (if the exported network has the HasTail flag enabled that suggests that it's ringing out), it will render a silent voice that then goes through the FX where you can add the synthesizer signal.

                        So after exporting the DLL you need this signal chain:

                        03166045-f5e0-4af4-9a54-3d89c6bf48e6-image.png

                        Be aware that in order to kill the voices after they ring off you need to add a voice management node to the network that sends a reset message. The best option is to connect a voice_manager to a envelope's CV output, but since you're in faust land, you can just use the node with the awesome name silent_killer, which checks the buffer and just sends a note off signal when the buffer gets silent (there's a slight CPU overhead, but it's negligible next to your sine wave oscillator madness).

                        340995e4-e00c-4d37-8210-2e19cc1669ef-image.png

                        Edit: oh and you need to pull the latest HISE build, I've fixed an issue in the silent killer node where it didn't generate the correct polyphonic version.

                        ustkU resonantR hisefiloH 3 Replies Last reply Reply Quote 4
                        • ustkU
                          ustk @Christoph Hart
                          last edited by

                          @Christoph-Hart

                          Can't help pressing F5 in the forum...

                          1 Reply Last reply Reply Quote 2
                          • resonantR
                            resonant @Christoph Hart
                            last edited by

                            @Christoph-Hart

                            Too many parameters are not supported in custom compiled dll nodes, right?

                            All custom nodes with more than 15 parameters crash here.

                            1 Reply Last reply Reply Quote 1
                            • hisefiloH
                              hisefilo @Christoph Hart
                              last edited by hisefilo

                              @Christoph-Hart Well. just 3 words! We Love You!!!!!!!!!!

                              You've just opened the pandora's box. I was toying around with the Polyphonic Hardcoded Module but never on the silent synth (dumb of me)

                              One important note: the silent_killer thing will only work if you have used the convention "gate" label for the Faust trigger. AHDSR with GT connected to a voice_killer worked for me as far as I'm not using that convention.

                              Also, Gain chain does not affect the synth (as far as it's placed on the FXs chain I guess). Is this ok? I need to do gain modulation directly on Faust code or adding extra nodes in Scriptnode. LFOs ADSRs, etc

                              @resonant I haven't reached the 15 parameters mark yet. but I will.

                              resonantR 1 Reply Last reply Reply Quote 1
                              • resonantR
                                resonant @hisefilo
                                last edited by

                                @hisefilo said in Scriptnode Synthesizer (how to :):

                                @resonant I haven't reached the 15 parameters mark yet. but I will.

                                This issue happens on effect plugins for me. But 15 or 16 is a low amount for advanced projects, it should be at least 32.

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

                                  @resonant I'm working on big projects and never hit that limitation. Try modularizing your effects or use a slider pack if you want to control a parameter set that is somehow connected (eg. filter bank).

                                  If you can't modularize for some reason you can raise the hardcoded limit here:

                                  Link Preview Image
                                  HISE/hi_dsp_library/node_api/nodes/OpaqueNode.h at 2d88ad47af71047dede7769b9794f0707aed83d4 · christophhart/HISE

                                  The open source framework for sample based instruments - HISE/hi_dsp_library/node_api/nodes/OpaqueNode.h at 2d88ad47af71047dede7769b9794f0707aed83d4 · christophhart/HISE

                                  favicon

                                  GitHub (github.com)

                                  hisefiloH 1 Reply Last reply Reply Quote 0
                                  • hisefiloH
                                    hisefilo @Christoph Hart
                                    last edited by hisefilo

                                    @Christoph-Hart I'm really stuck trying to implement sustain on Scriptnode Synthesizer and Faust.
                                    Is there any tip or advice? I get hanging notes if I use the silent_killer and I get no sustain if I use an AHDRS.... any clue??

                                    HiseSnippet 1350.3oc4X0sahbCE1CDSfroc6VU0tpWwkYkRhXH+V0K5l.jVTKDzRZzdWjyLFvhYroyXRBspua6iPeT5aP6wimgwSJvRHMq1pRjhvme74ym+7wzIP3PCCEAHqRWLYDEYsIt6DtbPsADFG0rNx5SwgiCkvpqjzPI5zIiHggTWjkU9uWIiUo0PQe9yu6ThGg6PSIgPWJXNzeh4yjoT675ej44cFwkdAy2P58ecSGAulvSLFvSdbEzHhyPReZahRrbXjUgFtLoHnqj.fAYs1oB2IcGHtkqk+RVH6ZOpZgMpKrQZxmI7bUHVQEUa.yysSx4NDgrvcR8B40dgu.2h4xlRO0a7YQLJmpgo+vJWV3kOC7rMgWEC3MCHYY.o0zP5E3tNArQxTNJ77LbStjFzi.tcSnnkEY8NbMAH.WtqOYH8r.XwTE15vJU1tL7uW8s8FycjLAurf2VHomy25Ua7aaTZieeix2mUudyjmxLABOOZvLYqhzAKRws3i8ulFrc4aHdioSEDN9Y8o346SMC4N5SsgfBdSNSd9HJedIBnXWE7setYchjnBDwz.4FQCjLEDrpSuAxp0gkR35zvgRwHHu9eDyfrEg6XOhLaJjptIlA3CxD2TAGdHSNwrt5es7pkEhu.2gIcFLaLlaFXD7TOEXLtZ7SvM50i5HSA3Z3yd6SSomo4KkXdc0TTiwHy+xXJbgKsrhLMjERCrWP2w+XY6NNZo6NlTiuM9gTOsvVn1qXKzBez0B8+.UiY5xWPiwuxHyJJ6PkLP085+ZyrtHlk0byl20RvEiFH3LGyTs2PkAr98oAlDermO6m9tM4+eS2lE4hJhabmLfX+Q3cEwPq5GRn8FwXIi2uEAxouClIn8X+tPaQGJ.KNm5olSvJm5Fc85Jp0JPzkxciV7WvmXl1p0VwLsSXZLLPap7VQvvnJ13uirVWc1+bb8vQwjhFOtJ5DOOwscDdSRJAiNYzfPUds053J6B+okplveDKNiG7Y5kIGgS7EiAqGeN9AR3EDlm512tiCgYXbOm2EDN59DU9Xanm.H7YDGvAOoCAtnBpqTSAAwIZvtNSiWy.yoQNk+VsUIWyn8Z.x7UthnQvyq3q7E4isoZSKg8gd5W43flABfai1Mg8CyTosDtfDzmJCimHiSczdsnycSWkisGAdlBpCI.dr.LfqhXojmtfRoGg7oq.y1hwuTcEI7UUvA0hbW750w16YCT5Joi5x90HITqUG3Mv0p0N5FVTrzEvGtOvDsb6sdml0N+LbCNAJCZ0oAJixl67ZuucV+xs5Tvq3I0bh4m1DEYLTKBYDMSblYhkaBwx.5tZNOrvnocrxEuBZMjSm5TyC1KHdECvmiCI2JEB4fqbo9hovLQgmqJ2MhmwpE0pHSXtvrCEEv6T8ddrpYhEeoxiV4azeN5nC2+3pGbb0HWZA70Ps27iKYLyAYCLEw6WoRkk0REwNikhd8PS01Vq8xatpO.yU.2Kf9KnoY96sHa89RlWnc5qpGM1nCd7kLpMURmeTovprooMOxn5IPTwGrVzKgPcuUM4xzlSlEQPZrpAs7pg5I3xTL8RLkeC0Cxq2MqTOnBqbYR2yM6SbQ7N1UueiscNrxba+bwf.Z3.Xd+62wn86LO74ezd3h3Sf132PmuCNe1VTlG2Lbhlj1rGwl3lgWp35P7R1dHbcpPLzmDcU9p8D+ODCd3SbBDWEewo5vULhBjQvi9cvJgaoVW1FcioeK4FVXZ0cf2nMacptB5r2Jny9qfNGrB5b3JnyQqfNGuPcTumMNsUMUBPnSinjKKK8c45b4+ltd4Jp
                                    
                                    declare options "[midi:on][nvoices:128]";
                                    import("stdfaust.lib");
                                    f = hslider("freq",300,50,2000,0.01);
                                    bend = ba.semi2ratio(hslider("bend[midi:pitchwheel]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1);
                                    gain = hslider("gain",0.5,0,1,0.01);
                                    s = hslider("sustain[midi:ctrl 64]",0,0,1,1);
                                    cutoff = hslider("cutoff[midi:ctrl 1]",1000,50,4000,0.01) : si.smoo;
                                    t = button("gate");
                                    freq = f*bend; 
                                    gate = t+s : min(1);
                                    envelope = en.adsr(0.01,0.01,0.8,0.1,gate)*gain;
                                    process = os.sawtooth(freq)*envelope : fi.lowpass(3,cutoff) <:_,_;
                                    effect = dm.zita_light;
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    15

                                    Online

                                    1.7k

                                    Users

                                    11.8k

                                    Topics

                                    102.7k

                                    Posts