Descriptionhttps://sourceforge.net/p/testlilyissues/issues/4048/
Although patch set 2 is a coherent partial implementation, I recommend skipping it and reviewing just the final version. The fundamental change is that there is always a current Audio_dynamic_spanner. If it is not a crescendo or decrescendo, then it is a span of unchanging volume.
In patch set 3, the performer works on passages containing of the longest string of consecutive crescendi followed by consecutive decrescendi (or vice versa) which are not interrupted by an absolute dynamic. For example, this passage has two crescendi and a decrescendo, as well as some spans of unchanging volume.
c\< c\! c c c\< c\! c c c\> c c c c c c c\! ...
The performer works it out so that at the end of the decrescendo, the volume has returned to the original volume before the first crescendo in the passage began. The maximum (or minimum) volume is chosen as it was before. The change in volume of a particular (de)crescendo is proportional to its duration.
When an absolute dynamic appears, the performer terminates the group and uses the specified dynamic as a target instead of the starting dynamic.
I believe I have covered the significant decisions in simple regression tests.
Patch Set 1 : Add some regression tests #Patch Set 2 : Represent dynamics as a piecewise linear function #Patch Set 3 : Handle multiple (de)crescendi in depart-return groups #
Total comments: 30
Patch Set 4 : review response #MessagesTotal messages: 8
|