HISE Logo Forum
    • Categories
    • Register
    • Login

    Scriptnode: Granulator

    Scheduled Pinned Locked Moved General Questions
    63 Posts 12 Posters 5.1k 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.
    • Christoph HartC
      Christoph Hart @FatMitchell
      last edited by

      @FatMitchell Yes, just set the audio file slot to external, then hook it up to an AudioWaveform like you would do with a Looper or Convolution reverb.

      Then create parameters for the knobs you want to control and connect it to your UI knob:

      HiseSnippet 1416.3ocwX86baTDEdOYuN1NPlDlPunyYlfGIvIvLTX4eHkQjH6a7oXRCiy56VYsi1a2ataOao3IcT.UTPGUzPAMzRIL7mPXnmLCETB0T.uc2S2cJxwwQSHnBOZ28812298d62akcik9zjDYLxYotihnHm2.6MRn5uUeBSfZuMx4J3NjDEMtpcpMGEQRRnAHGm4tidBmklGY97mquIgSD9zhoPn8kLe58XgLUwrtMtKiyaQBncYgkrdsFs8khsjbYJfm4v0PQD+Ajin6PzlUAibVnY.SIi8TDEMA4L+lxfQd8kmHr1uOKgcHmpGTG4Aajc5VRdfFw5YQa0mwCbGetSPvt3VvByYYgqi6vBX4yWvFW0rP0BOJyGNUlDdyMA7p+7f2Y.ImRPZdKjtF1yOlEoJVQimKiaKfjSOBP6kgh0VjyOg2RBFHTqFRFPaECCxcXkaWq1MqB+4FeTuTguhIEUkhcjJ5thUtwxmt7RK+3kq9rK0q2YtlNLwRNmFelKqyzwmmiqHRCOjFeypGS3ozbCgi+jb5BWLN02dpKYnTzVvT6FQyFe9EEnLZCxEUxPHDakIS71YYhMRCXxOgbLsmLNDwBzUGSLWcj4vT99P.QQPNuC9T2818iatU2CZs681t4dOtKMQ0NLJkmPW8DxwnXh3HJbligbH1Q6oYllh.83ZdYHz.q4rv5JYvxiyBnwF7bI7cExCmDFO7K+4eccz8ausFIPoR1AEN7QzXESywNaSOFt1Zq6VBuMMYfRFYXhvHoPSKNK9RyECy4gFOrwnhAxFQiI91AFAHyNVs0CpiRHgQbZaQ.cnMudBKP0WSAeMPJ8ori5aHHAxPH4n6JuPJYn1suE7Zj9K+.raIpQ55nELFfBYAAbpqLgoqSKox8ifXXjG6QF97zq+824oO5yVOrrPHBERFVVWLIsWO1PiBVOFOLQAXpcHHrgbdK78SnUCn8HobU0jAv9vYhAzftRi8OepIhDCxhvUY8JKiyQJZZoCPzRFjxIpIUxzx2YKncrr7gViP.a3nxGiWB4sZmq71EEhWC6xT98OaLV4Lvn915+AXLqovaha1qG0WU.v4wsdvr1An1EuC.1F+kyR+PL0AehpgxfXmzPyUuVLtFCXGs9w3FBeNtP7MJlBUQztRWNYzJ16Z6A.+lUOjK8GnKxmVwNqhbSsEq32mHDTdxrHruvqnlkn8joJl3nND3dk9ZMb98fmP3S2JCcZNnhVfvNt1XIUOpHvL3efOYKVOmvfEqOdwh1AncnpSjwCL4nruCEB1DRhgjOn2v5nM3b4IZEIVVoKjXLy4J4ih5KELe8TVKFizMBkoB0X35TYGYfVQpEwGHpQtDsz20v5daPEHMdU+7JwIh8DECvVL9IU1SMDxPiHIHun4a2wBIZk+JNyUpSfsLTOBtjUwFm1I6qW0mvQ6aaq.fUGEKiXPL1Z5QPOK6cZzTGgX5pkV9hi3IwmQymSGNtYVo59xizIHaOD6F1DpHCft+F2xRwcXhryi0lNjg4iM8aKwSPNIeDzRov0BgnB2KDP8J04XrcdCnmXImxVp4uRZ546zuz4vq9fQOY8MRUxP3diQHDUBKKLMV9s0mFKnFWHr7MeUse2fkKYUhQScjdAwdsFSG6unwKGObY7chgxbiCOyV0swKH9uJxC5G.Y6yL0l+ZH5Kh8.YZRv+SAeapJUPOufaUIJAkmo18UOxxc8O96u6udxm9z0MOhUPMMdRxdSa1vLQT6qmJI3397d8zlR4fPhQeeldj7qktQgD+X4A91Fr5S7hlY.wQg4mJuD7a1gwUye4OFWa0Z52zxNv2W+tk2sNBc197dyfOu+L3yZyfO2ZF741yfOevL3yGdt9n+uFjIZaJyPcbaZ693zTPf24XZ8g9Wv+UzoM
      
      DanHD 1 Reply Last reply Reply Quote 1
      • DanHD
        DanH @Christoph Hart
        last edited by

        @Christoph-Hart How can we control the sample map selection in the granulator from the ui? I can't link a knob to the combo box in the granulator itself...

        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
        https://dhplugins.com/ | https://dcbreaks.com/
        London, UK

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

          1. Register it as external audio file
          2. Use the loadFile() method, but with the samplemap wildcard identifier:
          const var af = Engine.registerAudioFile(0);
          
          
          af.loadFile("{XYZ::SampleMap}MySampleMap");
          DanHD 1 Reply Last reply Reply Quote 0
          • DanHD
            DanH @Christoph Hart
            last edited by

            @Christoph-Hart should it be:

            const var af = Engine.createAndRegisterAudioFile(0);
            

            ?

            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
            https://dhplugins.com/ | https://dcbreaks.com/
            London, UK

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

              @DanH yes I just typed it out of my head...

              DanHD 1 Reply Last reply Reply Quote 1
              • DanHD
                DanH @Christoph Hart
                last edited by

                @Christoph-Hart Forgive the noob questions on this, I'm coming into it very cold.

                What does the XYZ::SampleMap part of the wildcard refer to?

                Essentially I'd like to select the sample maps in the Granulator with a combo box

                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                https://dhplugins.com/ | https://dcbreaks.com/
                London, UK

                1 Reply Last reply Reply Quote 0
                • M
                  mrfurniture5e
                  last edited by mrfurniture5e

                  just set the sound record opening to outer, then, at that point, connect it to an Audio Waveform like you would do with a Looper or Convolution reverb.

                  Then make boundaries for the handles you need to control and associate it to your UI handle.

                  Thanks

                  office furniture in Dubai

                  DanHD 1 Reply Last reply Reply Quote 0
                  • DanHD
                    DanH @mrfurniture5e
                    last edited by

                    @mrfurniture5e amazing.... 😆

                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                    https://dhplugins.com/ | https://dcbreaks.com/
                    London, UK

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

                      WTF? When a spam robot starts to post working answers to a super specific problem you know the uprising isn't far.

                      DanHD ? 2 Replies Last reply Reply Quote 7
                      • DanHD
                        DanH @Christoph Hart
                        last edited by

                        @Christoph-Hart any chance of an actual answer to the question though?! :face_with_tears_of_joy:

                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                        https://dhplugins.com/ | https://dcbreaks.com/
                        London, UK

                        Matt_SFM 1 Reply Last reply Reply Quote 1
                        • Matt_SFM
                          Matt_SF @DanH
                          last edited by

                          @DanH isn't it simply :

                          af.loadFile("{PROJECT_FOLDER}MySampleMap.xml");
                          

                          ?
                          https://docs.hise.audio/working-with-hise/project-management/projects-folders/sample-maps.html

                          Develop branch
                          Win10 & VS17 / Ventura & Xcode 14. 3

                          DanHD 2 Replies Last reply Reply Quote 0
                          • DanHD
                            DanH @Matt_SF
                            last edited by

                            @Matt_SF I hadn't tried it - I thought it was a different kind of wildcard :man_facepalming:

                            Thanks, will give it a go now :)

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

                            1 Reply Last reply Reply Quote 0
                            • DanHD
                              DanH @Matt_SF
                              last edited by

                              @Matt_SF Do you have any idea how I use this to select the sample map within the Granulator?

                              DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                              https://dhplugins.com/ | https://dcbreaks.com/
                              London, UK

                              Matt_SFM 1 Reply Last reply Reply Quote 0
                              • Matt_SFM
                                Matt_SF @DanH
                                last edited by Matt_SF

                                @DanH I didn't try it but I guess this should work (thanks Christoph!) :

                                const var g = Synth.getAudioSampleProcessor("ScriptGranulator");
                                
                                const var sMapSlot = g.getAudioFile(0);
                                
                                sMapSlot.loadFile("{PROJECT_FOLDER}MySampleMap.xml");
                                

                                Don't forget to setup your granulator node so it uses an external slot :

                                5f462d2b-7e86-44a7-97e6-c93c619e5410-image.png

                                For the loading of audio files, you can also take a look here, the process is similar :
                                Changing Impulses in Scriptnode.

                                Develop branch
                                Win10 & VS17 / Ventura & Xcode 14. 3

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

                                  Nononono, the {PROJECT_FOLDER} wildcard only works if you use it to load a sample map into a sampler. For audio files slots it's different:

                                  You can basically load three things into an AudioFile slot and it tries to figure out what you throw at it based on the wildcard (or other things).

                                  • a single audio file. This is where you can use the {PROJECT_FOLDER} wildcard to reference the embedded audio files (or the project's AudioFiles folder).
                                  • a SFZ file. Then you need an absolute path with the file extension .sfz
                                  • a samplemap. Then you need the wildcard {XYZ::SampleMap} - like, literally: XYZ::SampleMap) :)

                                  The XYZ in this wildcard means a 3-dimensional mapping (Notenumber, velocity and RRGroup) and is used in the HISE codebase whenever an audio file loads a sampleset with multiple samples.

                                  DanHD Matt_SFM ? 4 Replies Last reply Reply Quote 4
                                  • DanHD
                                    DanH @Christoph Hart
                                    last edited by

                                    @Christoph-Hart haha, I just figured you had written a generic example 😂.

                                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                    https://dhplugins.com/ | https://dcbreaks.com/
                                    London, UK

                                    1 Reply Last reply Reply Quote 0
                                    • Matt_SFM
                                      Matt_SF @Christoph Hart
                                      last edited by

                                      @Christoph-Hart OK thanks for the clarification! I referred to the [documentation] (https://docs.hise.audio/working-with-hise/project-management/projects-folders/sample-maps.html) but it is indeed for the usage in a sampler 👍

                                      Develop branch
                                      Win10 & VS17 / Ventura & Xcode 14. 3

                                      1 Reply Last reply Reply Quote 0
                                      • ?
                                        A Former User @Christoph Hart
                                        last edited by

                                        @Christoph-Hart Rather than a sample player, would you like to add a time stretch node with incoming audio process?

                                        1 Reply Last reply Reply Quote 0
                                        • DanHD
                                          DanH @Christoph Hart
                                          last edited by

                                          @Christoph-Hart ok so how do I load this into the actual granulator?

                                          I tried this (cobbled together via the convolution thread) but I assume it's meant for audio files rather than sample maps... I get an 'object' loaded into the single sample window as opposed to anything in the sample map one. Do I need '.xml' at the end of the loadFile string by the way? I assumed not...

                                          const var g1 = Synth.getAudioSampleProcessor("GRANULATOR1");
                                          
                                          const var af = Engine.createAndRegisterAudioFile(0);
                                          
                                          af.loadFile("{XYZ::SampleMap}AAB303-PROTON");
                                          
                                          inline function onComboBox1Control(component, value)
                                          {
                                          	g1.setFile(af);
                                          };
                                          
                                          Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);
                                          

                                          Screenshot 2022-06-15 at 22.06.13.png
                                          Thanks! :)

                                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                          https://dhplugins.com/ | https://dcbreaks.com/
                                          London, UK

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

                                            @DanH well, you pass in the object reference to g1, but I'm amazed that it actually worked and displays the object pointer :)

                                            You need something like this in the control callback:

                                            af.loadFile("{XYZ::SampleMap}" + component.getItemText());
                                            
                                            DanHD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            53

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.9k

                                            Posts