Shorthand pedal notation - davidpanderson/Numula GitHub Wiki
Numula provides a shorthand notation for describing pedal changes over time.
As with Numula's other shorthand notations, you can use
iteration, substitution, and comments.
This shorthand is implemented by a function sh_pedal()
:
from numula.notate_nuance import *
sh_pedal(s:str) -> PFT
The string consists of various components:
1/1
The pedal is off for 1 measure.
(1/1)
The pedal is on for 1 measure; the segment is open at both ends.
(.5 1/1)
The pedal is half depressed for 1 measure.
(0.2 1/1 1.0)
The pedal varies linearly from 0.2 to 1.0 over 1 measure.
The order of values and durations doesn't matter. For example, the last example could be written
(1/1 0.2 1.0)
(0.2 1.0 1/1)
In all cases, square brackets indicate closed endpoints. For example,
[1/1)
denotes a segment of pedal down, closed at the start and open at the end.
For example,
from notate_nuance import *
pft = sh_pedal('1/4 (1/8) (1/4) 4/4')
returns a PFT representing a pedal that's off for 1 beat, on for half a beat, momentarily lifted, on for 1 beat, then off for 4 beats.
You can apply this PFT as a virtual sustain pedal using
ns.vsustain_pft(pft: PFT, t0: float, selector: Selector=None)
or as a MIDI pedal (soft, sostenuto, or sustain) using
ns.pedal_pft(pft: PFT, type: int = PEDAL_SUSTAIN, t0: float)