HISE Logo Forum
    • Categories
    • Register
    • Login

    Arp Sustain with Sustain Pedal

    Scheduled Pinned Locked Moved Scripting
    40 Posts 4 Posters 1.7k 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.
    • Casey KolbC
      Casey Kolb
      last edited by

      Is there an easy way to have the built-in arpeggiator keep playing the arp with the sustain pedal active? Or does this require editing the cpp file?

      Casey Kolb
      Founder & CEO of Lunacy Audio
      Composer | Producer | Software Developer

      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @Casey Kolb
        last edited by

        @Lunacy-Audio

        Add a script before the arp that ignores note-offs if the sustain pedal is down.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        1 Reply Last reply Reply Quote 0
        • Casey KolbC
          Casey Kolb
          last edited by

          Easy! Thanks 👌

          Casey Kolb
          Founder & CEO of Lunacy Audio
          Composer | Producer | Software Developer

          LindonL 1 Reply Last reply Reply Quote 0
          • LindonL
            Lindon @Casey Kolb
            last edited by

            @Lunacy-Audio NO!!!!!!!!!!!!!!! - honestly I've spent hours and hours and hours on this - and the Arp is NOT consistent... I have come ot the conclusion that the only REAL way to do this is to build your own arp...

            HISE Development for hire.
            www.channelrobot.com

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

              Ignoring the note offs will result in the arp playing forever, but it‘s a legit request to make the sustain pedal hold the sequence (at least as an option)

              LindonL 1 Reply Last reply Reply Quote 0
              • LindonL
                Lindon @Christoph Hart
                last edited by

                @Christoph-Hart said in Arp Sustain with Sustain Pedal:

                Ignoring the note offs will result in the arp playing forever, but it‘s a legit request to make the sustain pedal hold the sequence (at least as an option)

                • yes it is - but if you have a Hold Button in your UI - to offer the same approach but not use the sustain pedal then it gets very messy- very quickly.

                HISE Development for hire.
                www.channelrobot.com

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

                  Alright, I've committed a few changes to the arpeggiator:

                  1. Cleaned up the UI and added labels to the dreaded MIDI filter boxes on the bottom
                  2. Added a Sus button that will hold the arp sequence if you press down the pedal
                  3. Removed the inconsistencies with the MIDI filtering.

                  This should fix every issue so far.

                  but if you have a Hold Button in your UI - to offer the same approach but not use the sustain pedal then it gets very messy- very quickly.

                  Just send out artificial sustain pedal commands in the UI callback then...

                  LindonL 1 Reply Last reply Reply Quote 2
                  • LindonL
                    Lindon @Christoph Hart
                    last edited by Lindon

                    @Christoph-Hart said in Arp Sustain with Sustain Pedal:

                    This should fix every issue so far.

                    Nearly------ I just need a way to have MIDI Thru implemented: by this I mean a way to have the original notes either play or not AND for them to behave as they would when the arp is off so;

                    Where arp is on and sus is on, and Thru is on.

                    User presses a chord - the chord sounds normally - and the arp starts to play the chord.
                    User release the chord - chord stops playing - but the arp keeps playing (until sus is released)

                    Where arp is on and sus is on and thru is OFF

                    User presses a chord - the arp starts playing - but nothing else
                    User releases the chord - arp keeps playing until sus is released.

                    HISE Development for hire.
                    www.channelrobot.com

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

                      Yes, that can be done using the MIDI filtering: if the input and output MIDI channel is equal, it will not play the actual notes the user pressed. If you select another MIDI channel for output than input, it will play both notes (the user pressed ones and the arpeggiated notes).

                      HiseSnippet 1045.3oc4W0rbaaCDFzRnSzjZGaGOscldQ2aqFol+OY8ikx3ZqDVQU2byCL4JILlDfADzM5VeD6w9NzK9MHAfTThThUCMqa6Ls7DwBre6GVrX2ElBtMDDvEHiZim6CHiOGaMmIm0aFgxPmdBxXO7PRfDD0iE0ctOIH.bPFFUdsVfQspnnuaOtKwkvrgUhPnK3Ta3bpGUtRpY6ynttCHNvXpWpU+z1mZyY83t7PEepfah7I1WSlBugnW1NXjwm02gJ4BKIQBAHipc4Nyslw+EV75ufFPuxEzCZgrT.EKd.20QyX8+ndyntNlI66.Dx.atxKTI1KbDdH0gtT9Juw9QSTekFo8GF6rM50pjzyXS5sKtivGlNkRTVawoTJIsxxpJYYUkhwpMYBpGmIAlTwoGq+UvcUKUFwn8vV1BpuranTxYHpiVTLKVH5FhaXlPCTAvXW7HH.jYg.arU0sboNfHR8GgeSnmkD7WHaI.UKH.ODq0NhC2gMPJ.1OB.qqoaPAiB5BTHvExyf42cGY1MhO.Nmw3WsN.ea6M.X+E.zi6cEuK+CQPbH1BdeHntfuT7ZHcT6hPkcwu0VRtAFQXSg0g3AEBhZXqYgSl3BkKp5g39LhJjeLE9yNOpFq7gYrsoJcTD.GobEdzwbFjZhkHUQAjCQRPFeMt0yaj+2cvVW.tbapb9l1Z01Ni8l7Mc6znwqN6jFMdRnY73BauCwmCroxYE2ZWqs1E+fxZuiaFOFUrPpCvpLqLF3ZAtfsNW1Zl51iKFPeI9sgR+P48DbGfGZ1WkuTj.3pC2cxKFKWPdjFj9LmMfX+BFlhwVgA4DgmpdP0wKr+PtSnqN2e5RU55yKlfxyV59Tcl7.UPUZmycn9Uybqe0JupFEjtGfMoR6Y4y2cxgupxP+cy2kka6OYhJfZEYqhG7txV5ubTYuXpnxiSUYczsnEQjuHZb8eVkOs9qAFH1r9e1tz9sh1kleg6RKNc9XAgE3yCx.bRZxfzB+o.Xf.d+H8obZ483DQtSc6wCTaxb0whHCEQgKc73grD9+q+wO96GudiOErcrr2ZRs9b5Mq5+BsNd+e06udlhR2SYltaqkvQKpmuKzmcipxmRhliGhOAlPBckIRyFjOjy39y3Lpc5niQfTPmNEDo4dtanNRotR2JcaORUCgjNZ9x1mqhBIBkeB1VVn6Gew1Nu9JbLcqquYV++FY3q7+yL7i3gRJa5PhJP8CpR952qnRrp5wNtqgfjdNVLtYxyer.lSzfOp9VLYqj9X0S1JYx+QrgGwVvuzNtoFcr7Chjn12rnGuWCOTOtdqksAga1nIxSkQ7Raas696T9m7046KgNOoD57zRnyyJgNOuD57hRnyK2pN5hQcBkbu3qhJAl8OIpudi3WGEE0i9Diukuv.
                      

                      Swap the output channel to "Use input channel" or "Channel 2" to hear the effect.

                      LindonL 1 Reply Last reply Reply Quote 0
                      • LindonL
                        Lindon @Christoph Hart
                        last edited by

                        @Christoph-Hart ok going away to give it a try...

                        HISE Development for hire.
                        www.channelrobot.com

                        LindonL 1 Reply Last reply Reply Quote 0
                        • LindonL
                          Lindon @Lindon
                          last edited by Lindon

                          @Christoph-Hart - nope that makes absolutely no difference here.

                          Set the input channel = 1 and the output channel = 1

                          • play a chord - and it sounds and the arp runs

                          Set the input channel = 1 and the output channel = 2

                          • play a chord - and it sounds and the arp runs

                          Pehaps I'm missing which combo box I should be setting to what...

                          But even your snippet doesnt work properly - when I press a chord it sounds on the first step.

                          Yeah its a mess here.... it works 1 time in 10...

                          HISE Development for hire.
                          www.channelrobot.com

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

                            Please check that you're using the new version. The arp should look like this:

                            de83809c-2746-42b1-b022-6efa22e72c21-image.png

                            The old version does exactly what you describe, but the new one works as it should.

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

                              Just FYI, I've committed another fix to the hold behaviour: the hold is now activated as soon as you press the hold button. This is indeed a bit cleaner (it can now be connected to a UI button or something else without messing around with an artificial sustain pedal message (which might interfere with other things).

                              If you want the "original" sustain pedal behaviour, just set the Arpeggiator.Hold attribute in the onController callback of any script:

                              function onController()
                              {
                                  if(Message.getControllerNumber() == 64)
                                      Arpeggiator1.setAttribute(Arpeggiator1.Hold, Message.getControllerValue() > 64);
                              }
                              
                              LindonL 1 Reply Last reply Reply Quote 2
                              • LindonL
                                Lindon @Christoph Hart
                                last edited by

                                @Christoph-Hart -- oh no and I just downloaded and installed the latest version to get to this point ---dman... ok doing it again.

                                HISE Development for hire.
                                www.channelrobot.com

                                1 Reply Last reply Reply Quote 0
                                • Casey KolbC
                                  Casey Kolb
                                  last edited by

                                  Nice one! Thanks Christoph.

                                  Casey Kolb
                                  Founder & CEO of Lunacy Audio
                                  Composer | Producer | Software Developer

                                  1 Reply Last reply Reply Quote 0
                                  • Casey KolbC
                                    Casey Kolb
                                    last edited by

                                    @Christoph-Hart While we're in Arp land, is there any chance we could add two simple things? If it's too tricky, don't sweat it.

                                    1. Chord pattern – All held notes play every timer cycle (this is super useful, people love this). I have my own separate iteration but it'd be nice if it were just part of the arp.

                                    2. Instant release – rather than playing the full duration of the arp rate, the note would immediately tail off with a NoteOff. At the moment, the note will continue playing which can feel a bit awkward with slower arp rates. Perhaps there's a way to achieve this without changing the arp?

                                    Casey Kolb
                                    Founder & CEO of Lunacy Audio
                                    Composer | Producer | Software Developer

                                    LindonL 1 Reply Last reply Reply Quote 0
                                    • LindonL
                                      Lindon @Casey Kolb
                                      last edited by

                                      @Lunacy-Audio - well if we are asking for additional features (Lindon pushes his luck..)

                                      It would be nice if there was an option to reset(clear) hold mode on a non-legato note...so:

                                      • Turn on hold
                                      • play a chord (arp starts to play)
                                      • release chord (arp still plays - hold mode working correctly)
                                      • press another chord (arp stops playing the first chord and starts playing the second chord)
                                      • release the 2nd chord (arp keeps playing)
                                      • rinse and repeat...

                                      HISE Development for hire.
                                      www.channelrobot.com

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

                                        It would be nice if there was an option to reset(clear) hold mode on a non-legato note...so:

                                        You can script that already:

                                        HiseSnippet 1333.3oc4X8taaaCDWJ1rXNYIMIMXa.6KZECEoXsFVqccanXqIwwoKK+yvJIqeqfQ5rMQjIUknxZPQeG2iRe.Fv1QJYKoXs.EutMfNBCXyi7t62c73cGc2PgKDEIBMLab7kAfg4GSbtjKG1dHkwM1caCykHGPijPnUBostLfFEAdFll0dthfYi5F5w6d1VTeJ2ExHYXbpf4B6yFwjYT6twdLe+cndvwrQ418i2XWWAusvWDi3oFokQ.08b5.3PpZayQLLuUGOlTD5HoRHxvr9VBuKcFJ9Udx9OkEwNyGTSrMbPAkPdGgumBwpeazdHy2q6X6NxvvjzMyKTKwKrF4.lGaB8Luwx5Erx3Hu+vbtqCd1yH7lKG7pm.uUHNtgr.Y1JJrcmTpYnyt.7RV0Xte2jXgN5Ho0EzPqMCCfACXTD21V+fk9zu4.PVvAr9cyus6d+mt37V3mPXfkOFcbnPBG0uOxdqm1Ol6JYBtkfqIyW+9y+l4a3Kbo9VxgrH0gNtyN7ALNnzzIARjz5Jg1.+v5uddY9EnPst28xX8gET4OZ0po88Qrfi2j7kZjGtMi.4lRYH6rXIrdgU9Iz0+.qVZ6Icn+wam+syacUKoe+TSofEWtcbizuslkqnx1BtLT36CgIZ8JKqbEkuRJiqyiGcFD9.7P1OFlrQLFpXP57UKHECXj.WlaiB9tbl7n.H8x23y6wTrMl32xuoL6JOUs4Tx1xHM8MCi1IXB+0I6tMURwKKlozv8E.gRlxBM2Ft.yBkb0oAYaH5boH.yCM009EI4NcRy9k+7p3s8ZEcj0pli75rCy6jZ13VkZDsT5c5shkRA2f4oHkfhTR5i27obMpfLVjzCvnxhhfXdsr63y7fPM62lbX7HGIDjRah.pWQAr.QwsFC2.CHm.VVK.myYSAAyJ5BPIHBk6AWdycjEMj..71iKNKCBKTFyKmxbawnyDaIdsl8UINvqhArn4DxUyPxAgEIG4JoW.8n7AvM+rrAwYXb+99vrEIs.oCmhg4Gyf+JnWOg4UKn6tXocs.VCcAiXGK3PtElBJdpq2leNw9IMKebCz2o.VLhIurx5q+Ws0lMa986scylOJtax7JquUI6C7AxgUWamqz1o+LpsWH5lLuhgSqPvNU3bv2A7AWUNrqOZpTg7ojihkAwx2ChZExAc6f4GCGKrLgLWkExsUBoC2aJQrbECQuEQUlsjv6oarBauS3E6qR1mumOUitoKf0XKTEXWUp6HLZJeiv2fFAaUZif1kUlnhvcERWlzcX43ctRvqpGy+gw6j5qc52Gilx.acxNuXV6gd1fxRIPASbisso61UCjOQO25WvDoVOG3P3zE7K9bmeqpO2InxO2IIO9wgTdTfHpffGmiLJOwShfcBgW0ScJmmdaAMrzkd2y1AMxR4wgJiC0gKaNRDykEBOpMSuqo3slb6ujG4T++f2f89+p2e+LE0pFbKwCZ1cp2xioSYiB7gN7KvRdHEEFWEa.tOM1WNlZwf7CDbQvPAm4lOBnGfOeYv.HLO1K0fvG5nJwMgxZazCKfPyGM+karOFERCQ+DLi9B6p6KttyqOij.WK8CK+vHCes+elgumHVx3CNfhApuF6NP8.ELwJ1XcRaCQia5Hcdqw8H6.bO8j+.GoKZOtMG0h1iW7eEcLh5FJdoaRWMpX4ORSAsat9eAqA4.0bK6I8AQZ0rkwHLi3KccUt6Gh9mx44qmAddzLvyimAd9lYfmmLC77sy.Oe20xipXzlwRwnjqhHgtcz+aDllIOMRG0a7m.HbUuP.
                                        

                                        However you need to think about how to stop that thingie because it will go on forever now (all you need to do is to call Arpeggiator.1.setAttribute(Arpeggiator1.Hold, false) at some point.

                                        LindonL 1 Reply Last reply Reply Quote 0
                                        • LindonL
                                          Lindon @Christoph Hart
                                          last edited by

                                          @Christoph-Hart - strange I was trying to script it and toggling the hold in the same call back - and it fails - you just get clicks - but I think thats because I wasnt testing

                                          thisTime - lastNoteOff > 0.1

                                          still - thanks for this...

                                          HISE Development for hire.
                                          www.channelrobot.com

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

                                            Breaking news from ARP Land:

                                            • added chord mode
                                            • send note off when sequence is stopped

                                            The last one actually required a minor change to the event ID system, which might have some use cases apart from this: Before the change, as soon as you called Synth.noteOffByEventId(), the event ID is popped from the active note stack and a note-off is inserted into the temporary buffer of that MIDI processor waiting to be processed according to its timestamp (after each buffer the buffer size is being subtracted from the time stamp as as soon the timestamp is in the range 0-buffersize it will be processed). However there was no possibility of changing the length of a note once it has been terminated with this API call (which is why the notes keep playing in their original length in the arp).

                                            The change I did is rather subtle and it can't break existing behaviour, but now you can just call Synth.noteOffByEventId() again and if it can't find the note on (because it was already popped from the note stack), it will search in the temporary buffer of that same MIDI processor and if there is a note-off waiting to happen there, it just modifies the timestamp and thus changing the length of the note.

                                            Note that if you called the noteOffByEventID() method before this change on a already killed note, it will fire the NoteOff with event ID X not found error, which is still the case, but only if there is no note off in the temporary buffer.

                                            Casey KolbC 1 Reply Last reply Reply Quote 3
                                            • First post
                                              Last post

                                            62

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            102.2k

                                            Posts