HISE Logo Forum
    • Categories
    • Register
    • Login

    Samplers as round robins?

    Scheduled Pinned Locked Moved General Questions
    29 Posts 4 Posters 1.8k 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
      last edited by

      Yeah, you're right, this won't work with MPE then, as it needs the channel info from the original event.

      However I just thought of a much more simple solution: just use the MidiMuter module:

      HiseSnippet 1154.3oc6Y01SiaDDdcBtsI8f1q8TU+nKpefHnnD35KRHDuDHmh5EHBycsRmNcZwdRxJr20c8ZJnS2+w9Sg+As650I1F7A4bKm3tl7AD6yNy5mY1YlGGk9blCDFx3HiZGeQ.fLdfo8ETwn1ivDJp6dHiEL6gCE.2RCs6EA3vPvEYXT8IJ.iZygh+b4V6h8vTGHEBgdNi3.Ok3SDon829WIddcvtvwD+LV+3s65vnsYdrHIepZ1DEfcNEODN.qLqhIx3S12kHXbaAV.gRa1k4dg8H1eR01+bRH4DOPsnExVdPZXT6QDO29ii0PDx3S6mF4U0Q9iL6QbISvSy.eY7FVodjMGXTIOklKGkZ81nTGlmq5.dKzyHC8lSSuGZZ6vIAhzcTb6qSPSYWqbzSuKpRmJlxbanv5LL2xORdeFZso0KhuqWcHHxE5KsnZYOkUsVrwJyW2pfO2pqqUdWWewFubih8c95bXnEm2k5BmKCglanQupcChnNBBiZwnGvDvgzkZT+0Zy7XNXOKxjCPiVu1.IG7k3I4mFZ7Wmd19qFBhcDBN4DoEK0bkI7361TedKubiMhM+MZuz+MwpkWdirnjAKMIL1L4YtpGPGJF0H8YlMRq+l5WKtFLPEX0qck8ZynBNyyC3EtspwieSNtDMx+DfuhrdwKBlXnrZLe4d8oqbWV6I.pHigLZWJQbX.jz5N9ZZLRKzj.LqQowUVz3vo.yRgtdOFpslSx+6Yc2CKvp1tDLocA.WPTQnwdvYxYX5lvZl6AgmJXAxoXWqCUNmf4F4gE4GdnlRlrgLEmq6rq5oERDWjcJ56vDklENQoUQQ6TR2GZ1mHbFULeqT.ekYs6Z9lLeddy8GL.bDojcNyN+dYGFWNprflJetoMgBwiwhIx2Du152vmAVOAn.WkTacCZk+0zpUFL0ZkG5HjO9i4XZX.KL2AaC9jiYTUFIE7YgPGN7GGotkyh2lg4Et0ka0QFjE5iMVDwiKW1wmEQE4JOp9uTfrn6Di4tqzuqNcz6VzrqNtNYhjVLSdP557UGWMIUZVjNUynRxPPoohX1rPx6JrajPHarItJHxPJiCIPwC6ydiilhy3KLGPN2VD4bpZdcXAGx6sQkUmt98a4xq1XNZS7C7f8omAdR8fXN9URAfA3HOwXz72i8XTVvHFk3jsE3HP9JCCGB7rbuv.R9xExW4ME4QaeD3A3rsye+1OU1Fh4x7DTxbw6Pg7Mce8slZ5ZoFMY8wgDW0+eJwcDKRPnC6gkEpmiLLOHx2Vpr3.RlPofm7AYZTQMdQutoZsVZg5Fu3ukeR1rkZsQxlsFuYYkQW6dhL5kaMSF89mL5ZyjQ+nPFcsYxnyjQmIid2Iit98kuM51eXKi179hLZy+KkQW+C.YzjialL5MHit9LYzYxnyjQmBYz2GOCerCm8JG8PKUs7mEiHiaZ7unYMydp0VsFOkxzr4pMQ9xoxuxwQkt+AY9oXeVqD9rdI74wkvmerD97SkvmetD97K2nOJAwchDLecqnDn+9w+1PFF6SwxJ43pdz+.fJy6PD
      

      You don't need to take care of the note off events here because that will be handled by the module itself (as long as you enable Fix Stuck Notes).

      1 Reply Last reply Reply Quote 0
      • T
        tomekslesicki
        last edited by

        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,Sampler18

        I 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 ;-)

        ustkU 1 Reply Last reply Reply Quote 0
        • ustkU
          ustk @tomekslesicki
          last edited by

          @tomekslesicki You can put them in 3 containers

          Can't help pressing F5 in the forum...

          1 Reply Last reply Reply Quote 0
          • T
            tomekslesicki
            last edited by

            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...

            1 Reply Last reply Reply Quote 0
            • T
              tomekslesicki
              last edited by

              This post is deleted!
              1 Reply Last reply Reply Quote 0
              • T
                tomekslesicki
                last edited by

                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==}
                
                1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart
                  last edited by

                  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
                                     ];
                  
                  1 Reply Last reply Reply Quote 0
                  • Christoph HartC
                    Christoph Hart
                    last edited by

                    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.

                    T 1 Reply Last reply Reply Quote 1
                    • T
                      tomekslesicki @Christoph Hart
                      last edited by

                      @Christoph-Hart I think I understood half of this sentence :D

                      1 Reply Last reply Reply Quote 0
                      • T
                        tomekslesicki
                        last edited by

                        If you had a bit of time to help me out so this, I'd be really grateful :-)

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

                          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...

                          1 Reply Last reply Reply Quote 0
                          • T
                            tomekslesicki
                            last edited by

                            Thanks! It adapted perfectly :-)

                            1 Reply Last reply Reply Quote 0
                            • T
                              tomekslesicki
                              last edited by

                              This post is deleted!
                              1 Reply Last reply Reply Quote 0
                              • T
                                tomekslesicki
                                last edited by

                                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?

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

                                  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?

                                  T 1 Reply Last reply Reply Quote 1
                                  • T
                                    tomekslesicki @Christoph Hart
                                    last edited by

                                    @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

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      tomekslesicki
                                      last edited by

                                      And I have fix stuck notes enabled

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

                                        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.

                                        1 Reply Last reply Reply Quote 0
                                        • GabG Gab referenced this topic on
                                        • First post
                                          Last post

                                        47

                                        Online

                                        1.7k

                                        Users

                                        11.7k

                                        Topics

                                        101.8k

                                        Posts