Scriptnode: Granulator
-
@Christoph-Hart Rather than a sample player, would you like to add a time stretch node with incoming audio process?
-
@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);
Thanks! :) -
@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());
-
@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...
-
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);
-
@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.
-
@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?
-
@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
-
@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 :)
-
@Christoph-Hart pretty impressive! The spambots answer I mean…
-
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?!
-
@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
-
@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 :)
-
@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
-
@Matt_SF yeah same behaviour with the scriptnode synth. Can you get a combo box to load sample maps in the granulator successfully?
-
@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
-
@Matt_SF Thanks :folded_hands:
-
@DanH There you go :
HiseSnippet 1560.3oc4X07aaTDEeV6roMtEoVnGpDbXkEGbDAK61RA0JTrShcwh5Tq3PTAgTYxtisGxtyrZ2wMwT0S8TOyEPbobj+A3.m4BhKUbfybfdBIDndED7lY1ubiqqqgFPvVolYl26MueyadeMtS.2lDFxCPFKs8HeBx3jlcGwDCVe.lxPs1.Y77lWI.yF5hE7.KEMzZi7wggDGjgQ9qH4yXoEPpueY00vtXlMIcIDZGN0lbUpGUjtZmZuM00sI1grM0KC2WnVKaNactKeHfo7lUP9X68v8IahkrkyDYrXCGJfktBrfDhLVXMtyntC36yz7uCMjtqKQNoJpKrQ5kaxccjHVNFs9.pqSm3ydHBYX1I0RjWaINiYapCMY8TKxoTDrRkHq8vH23vK+Xvq5iCdS.RFYfjoFRm1rqc.0WjRQhmSX1hIHA8vfYOKT1bnW8gNTdSpqDIlFFfAVuAnbeUNy04fXLQYO7djlAvjjsozEqTYEK3+V9xEJ.2GgBKrbmrdSqFr9TForc.ANe0YNaQ5SCAwRzTIoPZYtINvJT5w.xo7bJ2mHTL1E646RRNFkJpgEi6PTbRBogjfpES0uG1OTtMJACjajdXar+UA.TJkyPWt.3LbLElfrLPact2t703GTE3N1V.7CK6yYvjRES3PBjjIkCI.Mpf3EVbEqhSglDzk+PNkUp36yJtrT8TlKX+r5MjYKnblkzYORVIFB3tkriAvJ.LcGRVtvsJrj7TU1kicTmjh255u66coKkXBtcQqWwJQN4onE.gsIG.FFPq2FT7XPLRUqicc2EhuJcXTr7ky.wM4Bx0XkT.ovsKX8nj50ahzh1J39ZhjkQ9ASSvRrgd6RBxZFjLBw7iGis3rEiYquiyvHm0hQEWymDMOMIQ0IDQhhbRjwlQHDXUnhLOUTjYrYDQcjAlIVUj5HjMQI5cZsAVfi2LXeAc4SBDT4QxXCxMgrl5v9kL2fDtmf6q3M5RFN1ynpOPF6eGPoijCF.C7vp0xCCUtpHiWzzkfc.OoBdDWvZJGA1VA7WHYcZhnE1NRms4N5ZBYyKJKFDQ.tHGKYjL2BKjJFk0F7nIKW3weQVYh4xm30zLB2Sa1gJrGLY7laB3EtpdVi2nROOmYid8H1hTvtfYyqO05L+sCkBwPQ6coq7KgxYMmbx5ozVv8m01B7m41BlVwMiULeZxlr3LaIylMYbe8L7OgR4K9rp6hiz.l+5w24mM39DZFZoXL1kJK+0fcSHkErhta0MH8vCcEwqNtaYaNi6Ofyn1Y8D2hHBn86SBxh8IdfpKDP4xzUNSssHPhyvLtpubsqBE3wAfchLm1hmhFCm180YM0v0RFKY8ei7x4+eed4oY5NtYiCDA3p+K+FNBlm6eJXtEenfx52FCg8xFgfZIcgBK1D.hLFwUUOImrgO87Jx4R.0kvbTS9C3KhX0jhO.wpwDS6UDsIQrOOXOUjazXnhfN.MLoR5MByTIstqKeeYmdznH.v9nVqC2cTb9KibZNhQccO9PYagZn+V3vswTWIa6PBBUaxwLqTF9GDtroJ4jYSrMXbG0ACk1g3NYCxvcD77J6LIQdLXbrWZBDiKNqsT.z7TMoJewd9Lc1pSeImAWz4jZ3jlsB2QR0F6h1Q2lLbDj6o1lowpl09I+VDnCA9.R4LjmW7IIAUUNHt47LcYjcF3K1h4PNHdCa.8V3.NcJwhbBZSYQmGMOswGL1bTGb.1i.udV2jP7LXbpnoY4REOM.oqf32k9QiwW28H6qMNiUOCreEL6vgPLoyPxN8sediu7g+9WuJZ5p+GV8vpGUalT+893J+nR8GSmYOU2+byW56evm7vmjtuPsCq66V6o6neB4OiEkoDHYqNu76EtSMzydSu7Mb5zaIazm8oxuuY0i.sebyt9AvC7RU9cq+AO39E+oiFkuAQLjkwt+aewu9cs28dqNV..ZMNeOOrJS4b833ij75dX6.9Mr0OoPF1db0JPRDl5WnbIy1x4VIu32TlzE4A8zeCaaYCCuZUDZxxbt4PlyOGxbg4PlWaNj4hygLu9bHyaLUYjOmp9PA2SWJEVnSCcVZiFLLz8fpDA5OQSlAzq
Thanks now I have to spend time using this :)
Actually the scriptFX Granulator doesn't produce any sound... (seems logical since you have to load samples in it... It doesn't process incoming signals)
-
@Matt_SF well done!
-
Hi mates. following this post for a while. Anyone can tell me how to make the granulator polyphonic? If I use it on a Scriptnode Synthesizer and play more than one note it turns into the Glitchfest 2022 ... any help?