HISE Logo Forum
    • Categories
    • Register
    • Login

    How do I get started with Scriptnode and building synthesisers/samplers?

    Scheduled Pinned Locked Moved ScriptNode
    15 Posts 9 Posters 860 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.
    • O
      Orvillain
      last edited by

      So... this is all new to me, and the documentation is pretty scant unfortunately.

      So I was imagining the first thing I could do as a Hello World would be to throw in a sine-ton oscillator, and then an envelope, and I'd be able to get a polyphonic sine-tone synth that would let me set the attack and decay.

      So I did that, and I notice as soon as I release a midi key, the oscillator stops producing noise. Same story with using a file player.

      I kinda wasn't expecting that. A helping/guiding hand would be appreciated - are there any videos specifically targeted at building synths rather than effects?

      A clevername27C 2 Replies Last reply Reply Quote 1
      • A
        aaronventure @Orvillain
        last edited by

        @Orvillain You need an envelope node (or a table node with a ramp + midi node as trigger to create your own envelope).

        Things to keep in mind:

        • modulation node separates out the processing, it's like a little sandbox within your network
        • always set block size for your network. wrap things in blockx nodes or if you need per-sample processing, the framex node
        • some node react to MIDI. if you don't want that, wrap them into the No Midi node
        • If you need math operations, use the Math.expr or Cable_expr nodes. These support the Math class from the API, and all numbers must be float/double, so no integers (just add a dot for whole numbers).
        • there's no storage. you can have flow using tables which are manipulated with ramps or externally (the parameters you create can be manipulated from outside the network, either in the modulator code or from elsewhere by getting the modulator reference and calling .setAttribute()) but for anything more advanced where you need to remember data from within the network that was used in a previous block, use the SNEX node and do it in SNEX

        No other way other than to play with it. Pull up every node, try it out, see what happens.

        O A 2 Replies Last reply Reply Quote 1
        • O
          Orvillain @aaronventure
          last edited by

          @aaronventure Thanks for the tips!

          I figured it out. There's a workflow issue here I feel. @Christoph-Hart (I don't mean to criticise)

          Empty project.
          Add a ScriptNode Synthesiser to the master chain.
          Go into ScriptNode, create new network.
          Add file_player.
          Load sample.
          Play midi notes.

          file_player will fall silent on note offs.

          But I realised that when you add the ScriptNode Synthesiser, it also adds a basic envelope to the GainModulation source in the module window.

          I honestly wasn't expecting that. I was under the impression that if I add a ScriptNode, then I'm effectively telling HISE to stop holding my hand, and don't do automatic things for me, because I'm a big boy. :beaming_face_with_smiling_eyes:

          Soooooooo... it isn't immediately clear to me how I should be building amp envelopes. Use the modulation source in the main module listing... or attempt to replace it in the ScriptNode??

          A 1 Reply Last reply Reply Quote 0
          • A
            aaronventure @Orvillain
            last edited by

            @Orvillain said in How do I get started with Scriptnode and building synthesisers/samplers?:

            Soooooooo... it isn't immediately clear to me how I should be building amp envelopes. Use the modulation source in the main module listing... or attempt to replace it in the ScriptNode??

            I guess you can do both? They offer different things. If you want, you can do it entirely in scriptnode.

            You can use the module envelope as a "Global AHDSR" and do your per-sample envelopes in scriptnode. I think that should scale as intended i.e. the module will act as a multiplier on top of any signal coming out of scriptnode.

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

              This is not completely trivial because you somehow need to tell HISE at some point to stop rendering the voice so there has to be something that stops the voice. By default, it's simply the envelope that comes with the synthesiser by default. Another option is to render the envelope in scriptnode and then add a special node inside the scriptnode network and a special envelope module that picks up the voice kill message and tells HISE that the voice can be killed.

              I've added a snippet to the browser that demonstrates this (Scriptnode Voice Management).

              1 Reply Last reply Reply Quote 2
              • clevername27C
                clevername27 @Orvillain
                last edited by clevername27

                @Orvillain Subscribe to @d-healey's Patreon. Also, read @Christoph-Hart's introductions/explanations of HISE, scripting and ScriptNode in the documentation. Learning the right way to do things will save you much trouble later on. His discussion is concise and thorough. Lastly, look at the Snippets and tutorial projects.

                d.healeyD O 2 Replies Last reply Reply Quote 0
                • d.healeyD
                  d.healey @clevername27
                  last edited by

                  @clevername27 said in How do I get started with Scriptnode and building synthesisers/samplers?:

                  @Orvillain Subscribe to @d-healey's Patreon.

                  I agree :)

                  But note I haven't done very much with scriptnode and only have one video (I think) dealing with it.

                  Libre Wave - Freedom respecting instruments and effects
                  My Patreon - HISE tutorials
                  YouTube Channel - Public HISE tutorials

                  1 Reply Last reply Reply Quote 1
                  • O
                    Orvillain @clevername27
                    last edited by

                    @clevername27 said in How do I get started with Scriptnode and building synthesisers/samplers?:

                    @Orvillain Subscribe to @d-healey's Patreon. Also, read @Christoph-Hart's introductions/explanations of HISE, scripting and ScriptNode in the documentation. Learning the right way to do things will save you much trouble later on. His discussion is concise and thorough. Lastly, look at the Snippets and tutorial projects.

                    Yeah, have read all that. Been digging into the specifics in the documentation, but sometimes it is a little lacking. Have also dug out plenty of snippets and gone through the example projects too. HISE is pretty great!

                    FatMitchellF 1 Reply Last reply Reply Quote 1
                    • FatMitchellF
                      FatMitchell @Orvillain
                      last edited by

                      @Orvillain I agree with this the scriptnode documentation is slim in terms of descriptions, same with the manual. Let me know if you find any useful resources!

                      griffinboyG 1 Reply Last reply Reply Quote 1
                      • A
                        ally @aaronventure
                        last edited by

                        @aaronventure Sorry to necropost but i found what you had to say really helpful, so thank you! It did lead to one question however...

                        Would you happen to know when or why you'd want to use a specific block node (256 block, 128 block, etc.) vs blockx?

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          aaronventure @ally
                          last edited by

                          @ally said in How do I get started with Scriptnode and building synthesisers/samplers?:

                          Would you happen to know when or why you'd want to use a specific block node (256 block, 128 block, etc.) vs blockx?

                          Reply

                          No reason to do it, really.

                          Link Preview Image
                          HISE | Docs

                          favicon

                          (docs.hise.audio)

                          A 1 Reply Last reply Reply Quote 1
                          • A
                            ally @aaronventure
                            last edited by

                            @aaronventure thanks!

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

                              @FatMitchell

                              I'm writing one geared for beginners but I've been unsure where to put it : /

                              HISEnbergH A 2 Replies Last reply Reply Quote 0
                              • HISEnbergH
                                HISEnberg @griffinboy
                                last edited by

                                This post is deleted!
                                1 Reply Last reply Reply Quote 0
                                • A
                                  aaronventure @griffinboy
                                  last edited by

                                  @griffinboy open a new thread in the Documentation subforum

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

                                  36

                                  Online

                                  1.7k

                                  Users

                                  11.7k

                                  Topics

                                  102.0k

                                  Posts