Connect Waveform to Sampler with Scripting
-
Hey, I am currently building a plugin with 16 Samplers each one just containing one sample. I got a Waveform component to connect to the Sampler via the processorId in the property editor and it shows up.
However I would like to connect it to a different sampler using scripting.I would like to avoid adding 16 Waveforms each connected to their own sampler. What I tried:
samplerIndex = 'Sampler8'; Waveform.set('processorId', samplerIndex;
The samplerIndex will be a string ranging from Sampler1 -> Sampler16
The docs say there are these 2 function which might help:Waveform.updateValueFromProcessorConnection();
Waveform.sendRepaintMessage();
However these do not update the Waveform.
Is there a way that I can have 1 Waveform that based on the selected Sampler shows the correct Waveform? Is it actually possible at all to assign a new processorId to a Waveform?
-
@oskarsh Why are you only loading one sample into each?
-
@d-healey I am building a drumpad and want to assign a FX chain to each Sample individually. Is there a simpler way? FX chain includes, simple gain, panning, send effects and the faust transposer.
-
@oskarsh In that case I think one sample per sampler is correct
-
I would use AudioLoopers (or even a custom scriptnode synthesiser with a file player) for this.
-
@Christoph-Hart thanks!
What is the best way to trigger a audio loop player when a specific key is pressed? By default it plays on every key.
Should I use a midi channel filter for this?
-
@oskarsh Yes a MIDI channel filter or just create your own key filtering if you just want to filter keys in each Audio Loop Player
A way to do it can be detecting the key in a general script and change its channel to route it to the player you want, where you previously placed a channel filterHiseSnippet 1080.3oc6X00iaSDEcbRlxlTXosTg3Q+.HkHUVEGJsHUU1ra9nJhlciVmV3spo1SRFs1yXFOdgHT+uwS7L+T5+.3N1NqcJdCAC6Vnr9gHO26bsO2OlywJSjBGZXnPhLpOcY.EY79X6kb0hdKHLNZTejwt3wjPEUZlX5vkAjvPpKxvn5SzFLpWCAW9e8ur+gDOB2gtxj954BlC8oLelJy5jteCyyaHwkNk4ma22u6HGAumvSDA3oJtMJf3bJYN8HhdaUvHiaLvkoDRaEQQCQF0NT3tzdg3G3I6+4rP1K8n5EVHa3AkXdnvyUiX88ndKXdtSVk2gH3gNIqJTMoJbW7XlK6b6YUiaE6vLKh70CiJaBdVkDdUxAuZIv61XaGIKPk4QisahGwgF0LBzBxCqj8hL9YbOArAtZOexozgRXw4Az7AsaeOS3mVOZVD2QwDbSA+HghdLuYqF+Ti5MdUCy2z0rYE5S+ZjBOOprP25ttbSA1jG4+Rp7dlmQ7hnmuQH8Wu9disq95jj041nfOhyTGGPSWm0ArJnCfRKavcOaTehh.MEiTav9BnRESCGi9zyfo8jVTcbeZ3oJQ.Luuk8uOJ0Z1zkUQ8wJSMvlWPShMyr4XHT3PydyoJsqihqkMaY9YlcLe7iMa2pQ85q1SHUAy1bN0qoUqG0nN0KjVr6Nf6WcQ8+K4W6akgK7+TCWWECT.sjvMxinVmqRSPm5.pAqMLoO4yCYpkY7uud++BDXsKj.qvrcKg6swSXJmEEi2JEfWM23kLdSkC9.7fYynNpLvVCO76JK2e4fxtIP4lXaFmFqQGCjONds42RNiZ9DJmJ0EUqKTlFg90sUlNXqkoO1QAu9oRBOLPDt1C1l5ylJ35JRlwmEBpOzu+DcWNu8dBhrPWud+gPRVXL1DUjLdb4.eQDWs13Q0RoGu9olb6u.w4Z+69aGL9iv6CwobqCYdf3e5Pz3Q8GYl5vLwy5CQuYsr51guMQ9YTMkRFtSEiscSU.s8Xt.zXtZ35jfpDAETLqc9lLZKdHMv9AT.4RU4heGc7C3tqhFabKD5JjGt51Ql7mL.TeEFsY9AdP9bF0CDahw3c.0kYjHO0Jqq28GK3hfEBNyIeo6DpRxlOmJyi8BSnCTJ3S4yrb2tmP8nj7bEeZ2mBmwIRnNQKYsvZ6qEape8I3D3Zp48Le2P+r5+O0OOQDoX74iIvf5OBmaARDaP1xglR0o+NOiJZRfj0s0qSzs3twK9M3J0okdsQpSqUNymt6jjtuG9HAKb0Aq36eqoMesF3eGMvN+mPCr60ZfWJZfctVC7cIMvJWqAdYoAdU7N7INRwKbRXpzyx6DaAxad7+Obc7X8ZSqyYnvs2qMxGzadgiitb+4P8o3X5ThX9hRDy8KQLeYIh4AkHlGVhX9pMFiVp+fHkvO4nHXXxf3+tKCiAbBLIGO0i9cPeKMoL
-
Add one of these to each loop player. No need for channel filtering.
https://codeberg.org/LibreWave/RhapsodyBoilerplate/src/branch/main/modules/NoteRangeFilter.js
-
This post is deleted! -
-
@oskarsh Looks good but put the const in
on init
. -
@oskarsh ..and dont forget to do the same in the onNoteOff()
-
And since this is running 16 times for each note event in the audio thread, it might make sense to further optimize this, remove the conditional and variable storage:
Message.ignoreEvent(Message.getNoteNumber() != ON_NOTE);
-
@Christoph-Hart Clever!
-
Hello everyone
I am also trying to connect 1 waveform with 1 sampler, but no result. It actually crashes just after some seconds.I tried by connecting the Waveform to the sampler in the waveform properties, but nothing shows when I trigger the sample.
I also tried using scripting, but no result.
My goal is to create a simple sampler that offers the possibility to trigger different transient of the samples by dragging inside the waveform. Just like inside the Default Hise sample Editor.
Is this achievable with the waveform?
Which part of the implementation am I doing wrong?HiseSnippet 1214.3oc4W0raaaDDdok2TKYm1lfbnWJ.gQO3.3DH433TzdHx1xNUn9GAI2jbKXM4HoElbWhkKssZP.5iTO2S4QJuAoyRRItTQ0vQ0Isnkm3L6LK+1uYmeXGkzChikJhS0SFEADmUn8FIzC2cHiKHsaQbtK8Eryg9RUXOAOJBzMH6LJhEGC9DGmJOyXmS0EIoOu6o6vBXBOnPEg7bI2CNfGx0EZ6z7m4AA6y7gS3gVVuYy1dRwtx.YBhoJz5jHl2YrAvQLiYKPIN2ZOetVp5oYZHl3r3NR+Q8FJuPjY+y4w7SC.iPCRObixTuuLv2fXy6jcGxC76L9rGSHNzNELQkLl3dzC497I5KXjuNcA2BOr4CmEJCuJkfWCa3U2Bdy.RNVPZwLHcGZOOEORWrhAOKSaKzfpOCocanjYKw4szcknAB8CCYmA6qPgINr1V0qut6F0qe+erehvSykBWo3HoFNVr18q85ZUq8lZtSuT+9ybMymQICB.0LW1DoUWkiqIRBOETq6dNKHAlXHd7Kyoz+ZN0Nj6kcpsLTJZK35iifb4Oj0I4TE91uztESyLAhbcncQfRyMPvoEbNdqNKrTk1BhOSKivKn6JCijByN3rhN+dTVfX+.ISyECNgiPkiQnuhZqpA4R6jlQEBsadA2WODO2NubABYHvGLTaj7KvaFPpMIWkb5fwIQUu0xK+Gu2rQbMDVn883SYsajq92Lp0vk5BiGCqTJwoE800bcWcBw01e0evc0UW2nrsvGtDEePiTQLuKPdwKjpyhwLY.WnOKHFp8FCzmPUzLp514T0ArSgfTNZIZ56kHGQSKx46ZZ.pgkGezcagwa2eBT.Vl4CRgvjWoeR.SWNi1TFKeA7JYozHSthHlqGYWla5z7Eudo4EUgl4kuqIbuCsCW6Mb13cgYfW7R7mZ7lWz71z852G7zEfcQ59u7JqPdiCkuMCJ2k1Sq.VHle0iEFgUkRwSMZtzMRernqcerNJ.y186w+UKydaycRP9RUV6u2L8SscnLQT5aki7tPDvzX32xmkZ1s6yTxjno85cOM8xxIJrOJRE1Kbr.PdWaeF2UIii6iGmz8J1doNIpAFtpPSW3bPEWV2QIgXrWHf.SgZGGSgzXvDq4dGxzJdopboek5mvRi2Xy8T4FSIuwTxOZJ4MmR9wSIu0TxOoPNiPOjEYtYXFtXpNMew0qSCtAcX3Q1xxc3Clr4YZJWhwxzIbdJtrFkYFCEbqOUyo7Ys.1e+5s2LiUUcLF6wMgp8Dmi4nnlr4daA8YIA5wZKWu3PoPFMTJ3dkyHva3CF.JarOyCz1ZMlPVn4dM6BA.KFrasc.W.LU4D8OJtnwG8HlyLd8MzL35ZJx49ei9jU9eeexqh59x7tjt3WWo+WdbdEZZccWSa3+ofZWYhYR9ws3nXevdXueOvta3BlNrYx0MxF.0CD9oBl4wyWrw3VmlEaLdQh23sBOa4umMOdEPXZcjN9W.1TNv9JcLNggARX6sOKnLj4ojuxK6W5LXcoTMHJEo+CeU5gFY2FjzeyC8iV+g0IgXupW44YRDd.xvy1mMlCedzb3ylygOOdN7Yq4vmmLG978WoOlwD1NQKCyJRhJ5rW1EKm8lbwpB4OcLdHKE
-
@Sawer You haven't set the processor ID