lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue 2232: fix MIDI output of abutting (de)crescendi (issue 3003000


From: nine . fierce . ballads
Subject: Re: Issue 2232: fix MIDI output of abutting (de)crescendi (issue 300300043 by address@hidden)
Date: Tue, 07 Jun 2016 14:41:13 -0700

Reviewers: ht,

Message:
On 2016/06/07 19:07:40, ht wrote:
Do I understand correctly that this change in effect automatically
replaces
every { ... CC ... DD ... } (where CC and DD can be either \< or \>,
with no
(de)crescendo events between them) with { ... CC ... \! DD ... }

That is my understanding.

With the patch I get an "Impossible or ambiguous (de)crescendo in
MIDI" warning
from this example, though

That probably falls under
https://sourceforge.net/p/testlilyissues/issues/4048/ .

Thanks for your review and the example.

Description:
Is it really this easy?

I checked the velocity of the output MIDI by inspecting the notes in
Aria Maestosa.

Please review this at https://codereview.appspot.com/300300043/

Affected files (+13, -2 lines):
  A input/regression/midi/crescendo-abutting.ly
  M lily/dynamic-performer.cc


Index: input/regression/midi/crescendo-abutting.ly
diff --git a/input/regression/midi/crescendo-abutting.ly b/input/regression/midi/crescendo-abutting.ly
new file mode 100644
index 0000000000000000000000000000000000000000..78cc1a3caed24aa6a600734c830673d604ea9e41
--- /dev/null
+++ b/input/regression/midi/crescendo-abutting.ly
@@ -0,0 +1,10 @@
+\version "2.19.43"
+
+\header {
+  texidoc="One (de)crescendo ends as the next begins."
+}
+
+\score {
+   { c\< c\> c\! }
+   \midi {}
+}
Index: lily/dynamic-performer.cc
diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc
index 567184412e97a83008144613a9b02e459189ced5..3f9b1a5fedee3660450dab41047d571ef24b324e 100644
--- a/lily/dynamic-performer.cc
+++ b/lily/dynamic-performer.cc
@@ -105,9 +105,10 @@ Dynamic_performer::equalize_volume (Real volume)
 void
 Dynamic_performer::process_music ()
 {
-  if (span_events_[STOP] || script_event_)
+  if (span_events_[START] || span_events_[STOP] || script_event_)
     {
-      // End of a dynamic spanner, or an explicit dynamic script event.
+ // End the previous spanner when a new one begins or at an explicit stop
+      // or absolute dynamic.
       finished_span_dynamic_ = span_dynamic_;
       span_dynamic_ = 0;
     }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]