lilypond-devel
[Top][All Lists]
Advanced

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

Re: Span_dynamic_performer


From: Stephen
Subject: Re: Span_dynamic_performer
Date: Sun, 10 Apr 2005 09:06:27 -0500

Searching for the performers and engravers works for learning how to insert usable scheme code in the lilypond files, but the code that actually decides which midi volume levels to set where is not in the performer. For instance, absolute-volume-alist:

#(set! absolute-volume-alist
     (append
     '(
("sf" . 1.00)
("fffff" . 0.95)
("ffff" . 0.90)
("fff" . 0.85)
("ff" . 0.80)
("f" . 0.75)
("mf" . 0.68)
("mp" . 0.61)
("p" . 0.55)
("pp" . 0.49)
("ppp" . 0.42)
("pppp" . 0.35)
("ppppp" . 0.28)
)
     absolute-volume-alist))

can be set to determine the relative values of the absolute dynamic marks, but midi volume levels do not range from 0 to 1. There must be a place where the values are converted to midi volume values, but it is more difficult to trace which function is using the info in the absolute-volume-alist than it is to search for the engravers and performers in the sources.

Stephen

----- Original Message ----- From: "Erik Sandberg" <address@hidden>
To: "Stephen" <address@hidden>
Cc: <address@hidden>; <address@hidden>
Sent: Sunday, April 10, 2005 3:19 AM
Subject: Re: Span_dynamic_performer


On Sunday 10 April 2005 05.18, Stephen wrote:
It has been my experience that visually it looks better to connect absolute
dynamics with a hairpin or to say it the other way around, to connect the
hairpin to an absolute dynamic. I am not trying to be difficult. If what
you say is true, what the hairpin engraver has been written to perform
optimally the hairpin performer has a bug in.

Yes, it is certainly a bug. midi-cresc-silence.ly in the bug repository.

Usually a hairpin dynamic is placed between one or two absolute dynamics so
that the performer of the music knows to gradually shift from one dynamic
to the other. Usually in printed music the dynamics and hairpins are lined
up with each other vertically in this case. I learned that an easy way to
make a hairpin line up with an absolute dynamic is attach the start or end
of the hairpin to the same note as the dynamic. So if this messes up the
midi, it is very unfortunate, 'cause it is more important to makr it look
good.

There is one possible workaround:

Create 2 scores, one for paper output and one for midi output. In the midi
score, add an extra s64\mf before the beginning of each voice. (it's dirty
but works)

I am not angry, it just takes a lot of words to make clear what I mean.
Often the purpose of a hairpin is to modulate the volume between two given dynamics. Clearly the problem is that the hairpin modulates the volume from
its start to its endpoint, but really, it should never modulate at its
endpoints anyway. When a performer sees a hairpin, he knows to bring it
from the dynamic he is already playing at the start of the hairpin to
another absolute dynamic at the end of the hairpin. So the modulation
should never include, say, the first note of a hairpin. If there are only
two notes, it should only change the dynamic of the second note. If the
hairpin is attached to only one note, it should only change the dynamics of
the notes following the hairpin. Etc.

Again, I am curious to know which file this code is in in the sources.

I am not a lilypond hacker (just an user, bug admin and hacker wannabe).
However, I could suggest you to start with a
grep Span_dynamic_performer ly/* scm/* lily/*

Erik





reply via email to

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