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 @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
                • DanHD
                  DanH @Christoph Hart
                  last edited by

                  @Christoph-Hart thanks :) Getting closer.

                  This loads the correct map into the Granulator Sample Map box on compile, and plays the correct map (combobox still shows 'no choices', I haven't populated it with anything).

                  const var g1 = Synth.getAudioSampleProcessor("GRANULATOR1");
                  
                  inline function onGRANBOX1Control(component, value)
                  {
                  	g1.setFile("{XYZ::SampleMap}AAB303-PROTON" + component.getItemText());
                  };
                  
                  Content.getComponent("GRANBOX1").setControlCallback(onGRANBOX1Control);
                  

                  This does not work (using the Engine.createAndRegister method...)

                  I get the error: '+' is not allowed on the Object type

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

                  So then I tried the below, which populates the combo box with my sampleMaps, and loads the correct names into the Granulator's Single Sample window, but doesn't load the sample map into the Granulator.

                  const var g1 = Synth.getAudioSampleProcessor("GRANULATOR1");
                  var sampleMaps = Sampler.getSampleMapList();
                  
                  GRANBOX1.set("items", "");
                  GRANBOX1.set("items", sampleMaps.join("\n"));
                  
                  inline function onGRANBOX1Control(component, value)
                  {
                  	g1.setFile((sampleMaps[value-1]));
                  };
                  
                  Content.getComponent("GRANBOX1").setControlCallback(onGRANBOX1Control);
                  

                  Am I on the wrong path?! Feels like I need a way to combine the {XYZ} string with the sampleMap array...

                  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

                    Stop passing the af object into the method!!! :)

                    const var g1 = Synth.getAudioSampleProcessor("GRANULATOR1");
                    const var af = Engine.createAndRegisterAudioFile(0);
                    
                    inline function onGRANBOX1Control(component, value)
                    {
                    	af.loadFile("{XYZ::SampleMap}" + component.getItemText());
                    };
                    
                    Content.getComponent("GRANBOX1").setControlCallback(onGRANBOX1Control);
                    
                    DanHD 1 Reply Last reply Reply Quote 0
                    • DanHD
                      DanH @Christoph Hart
                      last edited by DanH

                      @Christoph-Hart I tried that first but it doesn't do anything. But I have managed to get it to work... Thanks so much for the help! :)

                      inline function onGRANBOX1Control(component, value)
                      {
                      	g1.setFile("{XYZ::SampleMap}" + component.getItemText());
                      };
                      
                      Content.getComponent("GRANBOX1").setControlCallback(onGRANBOX1Control);
                      

                      EDIT - It's a bit crashy when switching maps in the combo box... Perhaps my method isn't right after all πŸ˜† The maps do change, but it crashes randomly

                      EDIT 2: Some maps definitely make it crash actually... Any idea if there any some parameters in the sample maps that don't play nice with the Granulator? They're pretty basic maps. Looping on some, no rr's.

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

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

                        @Christoph-Hart so there were 6 maps that crashed HISE every time with the Granulator. This was the commit from yesterday.

                        Just tried commit from today and those maps are largely ok but others are now crashing which weren't before πŸ˜†

                        Is my method correct or is it responsible for the crashing do you think?

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

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

                          @Christoph-Hart One other thing, does the Granulator let through the original signal? I have it in an fx chain and I can't get rid of the original signal coming from the sampler / synth.

                          Actually possibly it's the midi chain container?

                          EDIT - Wasn't using Math.clear properly

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

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

                            @DanH said in Scriptnode: Granulator:

                            @Christoph-Hart I tried that first but it doesn't do anything.

                            I take it back, it does do something and the crashing has gone :)

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

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

                              @Christoph-Hart pretty impressive! The spambots answer I mean…

                              DanHD 1 Reply Last reply Reply Quote 0
                              • DanHD
                                DanH @A Former User
                                last edited by DanH

                                So I've got the Granulator working nicely in my project. I've just been playing with voice modes and the granulator seems to flip between notes when playing a chord - I've no idea what to expect really so I'm just asking if this is expected behaviour. I'd also like to use glide - would that be possible too?!

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

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

                                  @Christoph-Hart So it was working, and then I had to move the Granulator Script FX to somewhere else in the chain and it stopped working, so I tested a minimal project and it doesn't seem to work there either.. Am I going mad?! Would really appreciate it if you could have a quick peek :)

                                  HiseSnippet 2457.3oc6Z0saaibElxNzIVa11rK1BzaJ.gQuPAMxV+YK4cQwJJIJIVKQQPR4jzeP5DpQxbMEGARpD6tH.8xdYeD5iPeD1Go8hde6YlgTjTV1wwa1fcKhLfgNmYly7c9YlybN159DabP.wWH2tVWt.Kj6ghlW5EdV6yPNdBpcDx8oh8Lj0jrTLsjJKz5xEnf.7Dgb41tGcJ418dBrOe+W2B4h7rwIrDDNk3XiG3L2ILgqdySbbc6hlfsblmZ10ZpZS7ZSbIKA3rsXIgEH6yQyvZH5z1RTH2NJSbBI9lgnPbfPt60hL4RyyHu1iO+ScBbdoKlRTVvDDDmcWh6DJhobEZeli6D8X0NPPHmndhQXatQ3KDG5LwYE+DiwiXCHkrhz1ibakEdamAdkSCuRof2FfTtTPRjCoOSzz12YQXxHT77IhpdgX+oHvrmFJZKmKubhCoqiKEIh41BLvbAHr0+4dhsIvx7B2eN5bbWefXkXJbToROQB90i+p74A+QPnzqP9Rln4Kbw9kk98Rr3i8mgCY3lQUXu3w2itrCNPhFyLdfr0HizRgxs0nmQkRLBnxgLeAwCHJrW7Dnh4fCRV3rLaLS0363JyAes7srnYWtHxSWa.ahCQKBnxfiSpTLi4OvIHr.L6rStmOx6srf7wvc+.L.dmP77f8dhzdzsdyCkH98+FhiWg89yd683rVZzTXWU7l43g221GCgRxdSLvyf8D6uxoVf4eb7bgoIMcomcnCwSh3EusTyqOwsfcrs8IfvcWheb9uM+tno66RPSXxYuu8YO+O9ke4Jc6M6I86jVsJpZqBX2BeAnwvVt6AGLioS2kE+F.xuM+NU1QfuMx08kvU.EthZEEjYJOTefhzPYco1iF1ZjDLEoxYBaYy3FC4RlBKhIgbCN0qavq0sdUGThHtQWT74o8QAQesviYNsU15BIa5ehsthk+KTGT5.uSo7KvkZ5grOC4MCOovM5SRaX1rW4J5xi+pTZpFIDOxq.Scx+l7RqOzzoabrHQwz3MLLMmg+MsvBdKm+RreZiIchP1hr2NKd82NmN4gM21jZhDOUOmvQKvdWWJEgHCJbS91QnB9VH6d7GEcONXneIoE4BAmIrjtqLkBLbuJs3euaSgakLxKF6duIIrCWB+pHIvtO4onWgmR7myDyiDyvacgAelfBQB4jDW+rurbqp0qWbfZu9Vi0E7ogXfw1Ojl+gtPFGEuIwzBiU6PkEjvJxfAFwEX+PGp+IWG7qfGOvy9sqXGbv4gjELKZTH5Js4saSuHwZ7hlWth3eFzbN5BJdN.nXmlE1pv1hfpTtbshcZ2pXe4AiZIaZlmw6PFOS4mpK2gy4nhCKWriptUeEC0wCYLqbLkYqQcZI2SiypZYJq18kU0ZYnHeBmYEFyAiMsTL3bplUbZ7coZMJakmoNPIVdGR4zq+nwCL6BI8XLOrNCdcLTOMRd0qUzrrTa4ApcGYnEiu5Gx312P0rqbaENu5TdcTMrdtghBmYkRknLMjOMhrLijNbrIoR4Jz8TpiEXTXLpTongxPkgsTLfqeeJWCp.hW2PoiokgpVONmio1w18GYzYn7e3JrT0XrZTqnthlhkgrEGCM.raIaLPMl9nhFi0z35akFMJZ0Ws8IJQLpVpJruirFowo.eppY6QVJs6yXT93hFiZexntcYj.16Yn1MxaTsRshsGaAth18UTLY6W0pGCgDsOIRaqVqB3+Tj0LVMg5kKRcdCUGoo1lyoRw9JfMjig5UK1cr1IOmSTq3SgQhHNrXKPzx8jUil5Q.bjOU0JZ7UGt3jMJNT0RsWjkoJ058bHRZHywTsA36zUL45YCHnBB6FFoXMf.uQZmn77noBPZT6wQDPHSeYXkbJvbOVyrupFeS.yMDDOTYfxHM58b2pihotZJ4f324m5f3e8iGD+3AwOdP783Aw2gL7ImI+WnTmIa9MMWD+nF0IzJPWqBKA9KPU8lfuHpT1T0sdOqnKDFRlrzEElsLZZuChF.d8VlZWokh5E3DdY5dK7dq15aKD+LQcmP6y1LF2ZCXDdFyOFXLpiDepnxzoX6vD.dOwtO6Gm1Ojd6+M7s+yEMCgZQm63MKpbDFFxKFWmx6iFCs3V2XHceLqVHm+Vpo8cMasDrQ9Y49uax1J44jkdY1qHjafW.0XCt4Tq4AMML54SVtX8U88eMKnvxGp+ALEoGXjGFr0go0w19jffof5vjUP5gzW5OiZqR3XfeE1OHKOskyA+smG1k0CG5ilGGPeScni8PTnuyEomMaWJYgX93sD4zkWitxZzUWit1ZzGtF8QqQWOgdUk.zHieoXlqvtR0W6b6p9BjlNBz+TyrkyrU6Dmyao+d67St968yfqIyzBxciwnoC0vq38J33GvghwOGpLaJZoaXL2rWELj3QVbFwywNavND7NaF1OM12nBIGFBm0R37EMMvtXTPpSq+1lCb7vH+rmgemrEku81haxe8qE4vUhd+kzOeSus8+WmdaScWOezqkf8jacV+oN21lqm6eHlzSpE93EHerEQ2EcYT+5L.z+DoW5RrOmln5pMxJ5MWsnynfcz0+2k9csy6oveACxxPHaWbFGQP+MgTw13zImn1fH5RwM3wD6MgQ7egOQCVNNSFcvxwClzwLAMb3qI9mybTQeGzEtWYlOxiGI+hfoW.5.jxjF6l69hk1G9QP10k7Z5igchhpA2EimNw8x36g3sPBbdQPJNKOWI5iBrPNtzW4kaKM1cJhcQ1vddoNJ7LJLn8DDhSw9zFot5.05fKIjgZWoRJ9ILbqC.h4rWrS+KasMcbtNy2RpLeXJYJbEL3i2O0vua6F0.3huHt8aoBmSSIPuIX0i6G53cJuWf7LyWjhRPG4iliCwQYbiofywIKSj5jRsPQwx.M+cj5D35FpCKybERIHwrB5vLBpBLYyywulajnI3Ks+QUKcbkiqeTiRMNrV8iqy1o6yu2SHCDD1Ld2QrRV.eewFkJEA4OQrmO36YO1b07aT55k10q8zlaxus8ZU9akbdfnIbiCZxOXwzAGtzCutXR5MaV2clQXWtRofTGawigUCNkNpMxMVhv4rVDx4yQri42o1.eayy8KhpPQh2I5e5kH9ghr2QKQK64CI79Pbodb1KpqM56LOctswdzxFXkR6BE93l9cFAPUbTHAWT8AAkyQ19jWXyylRw5CXb.T5w9GOXWwgTZoU+oP3GHlCEJ7Baa5KUJB0cr40T4Nrlp2g0T6NrlCuCq4n6vZpeGVSiabMzZzjWFRlyywCLzU3AV4TVEXssv+C.f+OUs
                                  

                                  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

                                    @DanH You did manage to use the granulator as a FX ?
                                    AFAIK the granulator produces sound - that's why it needs a sample or a sampleMap - but doesn't process incoming signals (or am I missing something ?), thus getting no granulated sound is expected.

                                    Into a scriptnode synth, the granulator works well :)

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

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

                                      @Matt_SF yeah I'm using it as an FX at the moment, maybe I should do it as a synth instead. But as an FX it was working fine, I was able to load the same sample map as my sampler and blend the two sounds together. But then it stopped working, no idea why! Will try the synth

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

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

                                        @Matt_SF yeah same behaviour with the scriptnode synth. Can you get a combo box to load sample maps in the granulator successfully?

                                        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 @DanH
                                          last edited by

                                          @DanH said in Scriptnode: Granulator:

                                          @Matt_SF yeah I'm using it as an FX at the moment, maybe I should do it as a synth instead. But as an FX it was working fine, I was able to load the same sample map as my sampler and blend the two sounds together. But then it stopped working, no idea why! Will try the synth

                                          I'll try today πŸ‘

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

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

                                            @Matt_SF Thanks :folded_hands:

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

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

                                            27

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            102.0k

                                            Posts