#1 [FEATURE] Sustain pedal support

svn_trunk
closed
nobody
2013-04-08
2013-02-11
Karl Lindén
No

Feature request: Support for sustain pedal (cc#64)

Discussion

  • hi.

    as a matter of fact no, there's no sustain/damper pedal control support on any of the vee one instruments.

    another fact is that i fail to have a clue on how that switch should behave--i don't have, never used one, that's why :) can you believe it?

    anyway, all that to say, i wonder how should that be implemented though...

    (existential) questions: while pressed should all coming note-offs be ignored and/or should it command an immediate all(-voices)-note-off when sustain/damper pedal switches off (ie. cc#64 value goes 127 to 0) ?

    byee

    ps. your advice is most appreciated ntl.

     
    Last edit: Rui Nuno Capela 2013-02-13
  • Karl Lindén
    Karl Lindén
    2013-02-13

    Hi,

    when the value is switched to ON no note should be released (so, yes, all note-offs should be ignored or more correctly delayed until sustain pedal release). When the sustain pedal then is released all notes that are not held down (by hand) should be released. Releasing the sustain pedal does therefore release all notes that most were note-off'd but keep the notes that have not been note-off'd. So the sustain pedal does just delay all note-offs until it's released.

    Some example events in chronological order:
    NOTE-ON: C
    NOTE-ON: E
    NOTE-ON: G
    SUSTAIN ON (Make all NOTE-OFFs "pending")
    NOTE-OFF: C (Don't release now; wait until SUSTAIN OFF; make "pending")
    NOTE-OFF: G (Don't release now; wait until SUSTAIN OFF; make "pending")
    NOTE-ON: G (Remove the "pending" NOTE-OFF for the G)
    SUSTAIN OFF (Release C, but not E or G because they were active)

    This would play a C major chord, then retrigger the G. When the sustain pedal then is released the C will be released, resulting in just an E and a G sustained (by hand).

    Moreover, this is just a thought... I think all values from 0 to 63 should trigger SUSTAIN OFF and all values from 64 to 127 should trigger SUSTAIN ON, but I'm not sure that's the standard. This applies (of course) just to cc#64...

    I hope this was clear and that it helped. Please let me know if you have further questions.

    Regards,
    Karl

     
  • i shall rephrase my (not so existential anymore) question then:

    [sustain/dumper pedal switch] while pressed (->64-127) all incoming note-offs shall be ignored; when depressed (0-63<-) an immediate note-off should be on all running voices that aren't already in the release phase (and thus forcing into it).

    let me know if this makes any sense to (whom actually uses) the sustain/damper pedal switch (cc#64)

    and what about the sustenuto one (cc#66 iirc) ?

    cheers

     
    Last edit: Rui Nuno Capela 2013-02-14
  • Karl Lindén
    Karl Lindén
    2013-02-14

    As I understand you: All notes should be force released (even the ones being actively held down) when the sustain pedal is depressed, but I haven't seen this behaviour anywhere else...

    I think while the pedal is being pressed the note-offs should not be ignored but be postponed until the sustain pedal is released. (So that the release will be delayed.) This makes notes that are being actively held down to "survive" the sustain pedal.

    The sostenuto switch I unfortunately have no experience of (I don't have on actually), so maybe someone else might know?

    Regards,
    Karl

     
    • when i say 'ignorin note-offs' i mean that running voicings will keep playing ultimately through their sustain phase until the pedal (cc#64) switches off.

      so yes, i think we're on the same tune :)

      cheers

       
  • Karl Lindén
    Karl Lindén
    2013-02-15

    Splendid! :)

     
  • experimental support for sustain/damper pedal switch (midi cc#64) has been added to svn trunk rev.104+ (synthv1 0.3.1.3+).

    please test && tell
    cheers

     
    • status: open --> pending
     
  • Karl Lindén
    Karl Lindén
    2013-02-15

    Oh, thanks! It's working, partly. The thing is: I don't want notes that I hold down to disappear when I depress the sustain pedal. If I am holding down a for example a C (keeping the key pressed) and then depressing the pedal (still keeping the C key pressed) the C should remain (no release, because the key is being pressed).

    And one other minor thing which is a little related. If the sustain pedal is being pressed while playing the same note a number of times the program will eat more and more CPU. I believe new voices are constantly created, but actually the existing voice (sustained by the pedal) could be merged with the new one (triggered by pressing the key) and thus reducing the CPU usage. So the new voice should just trigger the attack and decay and then the old voice should merge into the newly created. Does it make sense?

    I hope it's not too much trouble and coding!

    Regards,
    Karl

     
    • re. don't want notes that I hold down to disappear when I depress the sustain pedal ...
      aha, so that makes it as new voice state i guess--all note-offs, and only those, that get ignored while the sustain pedal is being pressed are not to be ignored to oblivion but just postponed to when the pedal gets depressed later on. is that it?

      re. the other minor thing which is a little related ...
      might have been fixed on svn trunk rev.105+ (v0.3.1.3+)

      thanks.
      cheers

      ps. please take note that you're my ears and literally my feet on this--i have no experience on how all this might behave or sound. nor any pedal under my limbs for instance sake :)

       
      Last edit: Rui Nuno Capela 2013-02-15
  • Karl Lindén
    Karl Lindén
    2013-02-15

    re. aha, so that makes it as new voice ...
    Yes! That's exactly it! :)

    re. might have been fixed ...
    Awesome! Looks good! (and sounds good too!) :)

    re. ps. please ...
    Note taken. :)

     
  • re. don't want notes that I hold down to disappear when I depress the sustain pedal

    the new voice sustain state is now in effect on svn trunk rev.106+ (again as v0.3.1.3+ still)

    hope it works as it should
    cheers

     
  • Karl Lindén
    Karl Lindén
    2013-02-16

    Excellent! It works exactly as it should!

    Good job and thanks alot for your work! :)

    Regards,
    Karl

     
    • status: pending --> closed