Samplers as round robins?
-
Nice! Now one last thing - what if I want to have 6 samplers playing in each RR cycle?
So:
RR1: Sampler1, Sampler2, Sampler3,Sampler4,Sampler5,Sampler6
RR2: Sampler7,Sampler8,Sampler9,Sampler10,Sampler11,Sampler12
RR3: Sampler13,Sampler14,Sampler15,Sampler16,Sampler17,Sampler18I was able to achieve that with the filters and I'm sure it's doable with the logic here but I always sucked at maths ;-)
-
@tomekslesicki You can put them in 3 containers
-
Nice idea! Can I put the samplers into containers without copy-paste? It changes names of the modulators and I have quite a few of them...
-
This post is deleted! -
Ok, I've tried to make this like that:
On init:
const var muters_a = [ Synth.getMidiProcessor("MidiMuter1"),Synth.getMidiProcessor("MidiMuter2"),Synth.getMidiProcessor("MidiMuter3"),Synth.getMidiProcessor("MidiMuter4"),Synth.getMidiProcessor("MidiMuter5"),Synth.getMidiProcessor("MidiMuter6") ]; const var muters_b = [ Synth.getMidiProcessor("MidiMuter7"),Synth.getMidiProcessor("MidiMuter8"),Synth.getMidiProcessor("MidiMuter9"),Synth.getMidiProcessor("MidiMuter10"),Synth.getMidiProcessor("MidiMuter11"),Synth.getMidiProcessor("MidiMuter12") ]; const var muters_c = [ Synth.getMidiProcessor("MidiMuter13"),Synth.getMidiProcessor("MidiMuter14"),Synth.getMidiProcessor("MidiMuter15"),Synth.getMidiProcessor("MidiMuter16"),Synth.getMidiProcessor("MidiMuter17"),Synth.getMidiProcessor("MidiMuter18") ]; const var muters = [ [muters_a], [muters_b], [muters_c] ]; reg rrIndex = 0;
And note on:
function onNoteOn() { local index = 0; for(m in muters) { m.setAttribute(0, rrIndex != index++); } rrIndex++; if(rrIndex == muters.length) rrIndex = 0; }
But I'm getting this error:
onNoteOn() - Line 7, column 26: Unknown function 'setAttribute' {Q3ljbGVTY3JpcHR8b25Ob3RlT24oKXwxMDN8N3wyNg==}
-
You're wrapping the muterX arrays into an array again, so it doesn't reach the actual modules.
Try
const var muters = [ muters_a, muters_b, muters_c ];
-
Oh and the onNoteOn callback is also wrong. You need a nested for loop (and make sure you don't increment the index in the most inner loop, but in the outer loop so it reflects the actual RR index.
-
@Christoph-Hart I think I understood half of this sentence :D
-
If you had a bit of time to help me out so this, I'd be really grateful :-)
-
HiseSnippet 1326.3oc6a99SabCFG+tDtokrBacqZZuzCsWPTYzDHjMoJD+H.UQqAhHz1IUUUYtyIwh6ry74ieHT+eb+ov+AaO9tK4t.GPVZSEk47hn3G+X6u9w1Oe7cBZI31Deetvvrvgm2mXX9Hq1myj8p2CSYFM11vbNqlXeIQfhLs048w99DGCSy7uPYvrvLFgetb8svtXlMIwjgwq4TaxKodTYh0Va7GTW2cwNjCodo7t5FMr4r5bWd.nm7VkM5isOF2krGV4VNKCyuZGGpjKZKwRhug4LawcNucO9orH+eM0mdjKQUnhQanihLuK20QoXkUi58ntNsFLu8MLLK1JIJjOJJ7DqlTG5P6IQiuKrBTRKRGOLycaxqRZ4UNS4UNK4YlRdyDIuGa01VP6KSpQoseH1Zh5pLh7hp0HWm7VPb1WhNAKPdAvZqOZMzaea3B+RcIxQl6KLupXSkaUluzhn6zqpyW5cKNaQTFet6gX4wZHV8iYHVYrFhZvP7trGhYKJHcQBQClC4LHxU94QVupecBX1RJmg3r83Rx9rEJU7hH2b41XWDcXGDYsXgNfF5ioBnp3UlRQUcQR2q7wS4fxwRI1uXTE3sjOQtoTJnGAczBkWbnh+40hF4ROeXC9PRaS90ydFpI+DBR1i.MvVP7HLXmsZF0iHHHNHSI5T3rL5nTdPbP0PR3jsOXCxbfcP7NH4o7jdNb3e5Sim1wCdz2whbXkQeS6rvv38ZwQlkbIrtxdoh.oWRJ9ghWaAnSG0JPwBWot5blTvccIhLqVkjRbaMbAVf2QDwhv4I2.xPGgSqilNn3MmNHc1J3roDBiobjyZvnx86SFVNZ+z.KkMFNASaJYdk1Z3zIC2RLc8bPF0izD7qW0XarDqRKEaC7qOQHopYn41jSf78QIoJXsMw+XIuOjw+ZYvf7nbm.WrbzjqJhRbEPHdjrWMTilOUddZhyGcF2r.BiqberUKpztW15MWF5EhZSa8Fyul0ZmNcH1xDwNi0t+4mVX0cIk4hjx2X0lxHg4aCExOFVF8FLjY4EDFQnBpUtk6U72i68J5O12qXeaIL7GJvL+9b+Q531DO5gblJhjX7U9jcEj+5.0pbZ604XQlUc456BSxLaSarLPDtcYSOd.SNx1i7i8Zx+g62Lyz59M4GusL2wcZxOXexP1anRdTR4Q2cb0fT9wKHcaY0LyEmDDbUFpl4huK0VARIbvl5nLQ6x3BRrovj8oW7LFi93as5POqsLv9XU9Z+q1IWt9muTkeZV7JLPisod8cI6vNg3B7fPM98..nCNvUNv5nqiM4Ld+dbF0NcT7.BbiktcIhzZOyIDb2F3wCRr7jMNf3RvoON+Ka7R3XHV.wIxDFKpL9whaa85mrhjKRkZB8v.wk++mHtC3ARJqaSLrQ8LCSq8B7ZCjEaBnDFi3BCjkYNU9fnxkUkiPKLmvB+C7ItxJpxlwUVYPkSJFc46IXzKWWiQu+gQW9K.LJP.0Xz6.itrFipwnZL5zCitx8kmFcCMF89GFcEMF8AAFcEMFUiQ0XzoGFsp9k5pwn2HFsp9k59f.iVUiQ0XTMFc5gQWU+Rc0XzaDitp9oQePfQWUiQ0XTMFc5gQqoeotYgQm7i2ewiNqoQmOHPm0znSM5TiNGCz4miwvCaK3u2NJokZu7WGZAl2rv+MdJX0TUFUYPVJKqxKU1vCxJ+daaU39Wg3S1sY4InMqLAso5DzlUmf1TaBZyuMAs42u01n.haFH4dQGEACs1I7OxeSycXXXmb3tdi+EfGr3z6
Interesting part:
const var muters = [[Synth.getMidiProcessor("MidiMuter1"), Synth.getMidiProcessor("MidiMuter4")], [Synth.getMidiProcessor("MidiMuter2"), Synth.getMidiProcessor("MidiMuter5")], [Synth.getMidiProcessor("MidiMuter3"), Synth.getMidiProcessor("MidiMuter6")]] reg rrIndex = 0; function onNoteOn() { local index = 0; for(pair in muters) { for(m in pair) { m.setAttribute(0, rrIndex != index); } // Move the incrementation here or it will be incremented 6 times instead of three index++; } rrIndex++; if(rrIndex == muters.length) rrIndex = 0; }
This should be adaptable to your setup without too many hurdles...
-
Thanks! It adapted perfectly :-)
-
This post is deleted! -
Ok, just a quick follow up - the solution that @Christoph-Hart posted works great most of the time but I’m getting occasional stuck notes. Any way to remedy that?
-
Do the stuck notes occur with MPE or with normal keyboards too? And does it happen with the sine example that I posted or is it just with samplers?
-
@Christoph-Hart said in Samplers as round robins?:
Do the stuck notes occur with MPE or with normal keyboards too? And does it happen with the sine example that I posted or is it just with samplers?
Only with the Samplers, and with normal keyboards too
-
And I have fix stuck notes enabled
-
Hmm, maybe you need to send me the project so I can debug it. Not sure why this happens, but there might be a few edge cases that cause these issues.
-