[prev in list] [next in list] [prev in thread] [next in thread]
List: lilypond-user
Subject: Re: Aligning articulations/pedal marks vertically
From: Jakob Pedersen via LilyPond user discussion <lilypond-user () gnu ! org>
Date: 2023-04-23 6:42:53
Message-ID: 6c2a743c-ed6e-d31d-feec-16f18c30ab57 () vivaldi ! net
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Thank you.
This works perfectly. I had a feeling it would be a rather involved
solution that I would never have been able to figure out myself. I had
to tweak a fermata that got moved, but a single tweak certainly beats
tweaking each pedal mark!
I suppose it's one of those time when insisting on something that goes
against LilyPond's standards and "best practice" becomes rather
complicated. I'm sure I'm not the first to discover that leaning back
and just accepting what is produced (unless it's plain erroneous
obviously) is by far the easiest.
I have attached the score in case anyone would like to see a chorale
from the Danish hymnal with pedal marks for a struggling organ student.
Best wishes,
Jakob
On 22.04.2023 00.21, Jean Abou Samra wrote:
>
> Le vendredi 21 avril 2023 à 20:27 +0200, Jakob Pedersen a écrit :
>
>> Greetings!
>>
>> First time poster, long time (basic) lilypond user.
>>
>> I'm writing a hymn/chorale setting for organ. It's a basic piano
>> staff with two voice for each staff, and lyrics above system aligned
>> with the soprano line.
>>
>> I've added pedal marks, which looks something like this:
>>
>> I think that's a little clumsy looking. I would prefer the pedal
>> marks to be aligned, like this:
>>
>> (I aligned these by editing the PDF in Inkscape, which is entirely
>> unsatisfactory of course!)
>>
>> I've tried aligning them with tweaks, but that a bit fiddly and not
>> particularly accurate.
>>
>> Is there a more elegant solution to aligning the pedal marks?
>>
> Perhaps try a callback like this:
>
> |\version "2.24.1" \language "deutsch" \score { \new PianoStaff <<
> \new Staff = "venstre" << \clef bass \new Voice = "tenor" { \voiceOne
> << \relative c' { \key d \major \time 4/4 a h e, a } >> } \new Voice =
> "bas" { \voiceTwo << \relative c { \key d \major \time 4/4 \override
> Script.Y-offset = #(lambda (grob) (+ -6.0
> (ly:self-alignment-interface::y-aligned-on-self grob))) \override
> Script.self-alignment-Y = #CENTER d\rtoe h\lheel a\ltoe a } >> } >> >> } |
>
> Y-offset sets the absolute position relative to the staff, and the
> self-alignment-interface correction is to align the centers of the
> scripts together (otherwise it aligns their reference points).
>
> You will need to adjust the 6.0 value to your liking.
>
> Best,
>
> Jean
>
[Attachment #5 (text/html)]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Thank you.<br>
<br>
This works perfectly. I had a feeling it would be a rather involved
solution that I would never have been able to figure out myself. I
had to tweak a fermata that got moved, but a single tweak certainly
beats tweaking each pedal mark!<br>
<br>
I suppose it's one of those time when insisting on something that
goes against LilyPond's standards and "best practice" becomes rather
complicated. I'm sure I'm not the first to discover that leaning
back and just accepting what is produced (unless it's plain
erroneous obviously) is by far the easiest.<br>
<br>
I have attached the score in case anyone would like to see a chorale
from the Danish hymnal with pedal marks for a struggling organ
student.<br>
<br>
Best wishes,<br>
Jakob<br>
<br>
<div class="moz-cite-prefix">On 22.04.2023 00.21, Jean Abou Samra
wrote:<br>
</div>
<blockquote type="cite" cite="mid:c3c2be305bded215f6bd1f652da59a99dbe8a807.camel@abou-samra.fr">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<p>Le vendredi 21 avril 2023 Ã 20:27 +0200, Jakob Pedersen a
écrit :</p>
<blockquote type="cite">
<p>Greetings!</p>
<p>First time poster, long time (basic) lilypond user.</p>
<p>I'm writing a hymn/chorale setting for organ. It's a basic
piano staff with two voice for each staff, and lyrics above
system aligned with the soprano line.</p>
<p>I've added pedal marks, which looks something like this:</p>
<p>I think that's a little clumsy looking. I would prefer the
pedal marks to be aligned, like this:</p>
<p>(I aligned these by editing the PDF in Inkscape, which is
entirely unsatisfactory of course!)</p>
<p>I've tried aligning them with tweaks, but that a bit fiddly
and not particularly accurate.</p>
<p>Is there a more elegant solution to aligning the pedal marks?</p>
</blockquote>
<p>Perhaps try a callback like this:</p>
<pre><code>
\version "2.24.1"
\language "deutsch"
\score {
\new PianoStaff <<
\new Staff = "venstre" <<
\clef bass
\new Voice = "tenor" {
\voiceOne << \relative c' {
\key d \major \time 4/4 a h e, a } >>
}
\new Voice = "bas" {
\voiceTwo << \relative c {
\key d \major \time 4/4
\override Script.Y-offset =
#(lambda (grob)
(+ -6.0 (ly:self-alignment-interface::y-aligned-on-self grob)))
\override Script.self-alignment-Y = #CENTER
d\rtoe h\lheel a\ltoe a
} >> }
>>
>>
}
</code></pre>
<p>Y-offset sets the absolute position relative to the staff, and
the self-alignment-interface correction is to align the centers
of the scripts together (otherwise it aligns their reference
points).</p>
<p>You will need to adjust the 6.0 value to your liking.</p>
<p>Best,</p>
<p>Jean</p>
</blockquote>
<br>
</body>
</html>
["=?UTF-8?Q?Op-min-sj=c3=a6l-thi-sol-er-oppe=2ely?=" (text/x-lilypond)]
\version "2.24.1"
\language "deutsch"
\header {
title = "442. Op, min sjæl, thi sol er oppe"
composer = \markup { \vspace #1.3 Freylinghausen 1704 }
tagline = ##f
}
\paper {
#(set-paper-size "a4landscape")
top-margin = 1.5\cm
left-margin = 1\cm
right-margin = 1\cm
system-system-spacing.basic-distance = #18
markup-system-spacing.basic-distance = #20
markup-markup-spacing.basic-distance = #12
}
\layout {
\context {
\Voice
\consists "Melody_engraver"
\override Stem.neutral-direction = #'()
}
}
global = {
\key d \major
\time 4/4
}
tekst = \lyricmode {
\override LyricText.font-size = #-0.5 Op, min sjæl, thi sol er op -- "pe, /" strå \
-- ler -- ne på hu -- set "ler! /"
}
linjeto = \lyricmode {
\override LyricText.font-size = #-0.5 Tænk, at du på Zi -- ons top -- "pe /" Her \
-- rens nå -- de -- strå -- ler "ser, /" som dit hjer -- te skal op -- ly -- "se, \
/" kla -- re op for -- nuf -- tens "mørk, /" al -- le sor -- te trol -- de ky -- \
"se /" til den fæ -- le Hel -- veds -- ørk! }
rightOne = \relative c' {
\global
% Music follows here.
\repeat volta 2 { d4 e fis e | fis g a a | d d cis cis | h h a2 } d4 a h h | a4. g8 \
fis4 d | fis g a a | g fis e2 | a4 a g4. fis8 | g4 a fis d | e fis g fis | e e \
d2\fermata \bar "|." }
rightTwo = \relative c' {
\global
% Music follows here.
a4 a d cis | d d~ d cis | d fis e e | e e cis2 | d4 d d e | e cis a a | d d cis d | \
d d cis2 | e4 d h d | d cis a a | c c d d~ | d cis a2
}
leftOne = \relative c {
\global
% Music follows here.
fis4 a a a | a h e, a | fis h h a~ | a gis e2 | a4 fis g g | e e d fis | a d, e a \
| h a a2 | e4 fis g a | h e, d fis | g a h a | a a fis2
}
leftTwo = \relative c {
\global \voiceTwo
\override Script.Y-offset =
#(lambda (grob)
(+ -6.5 (ly:self-alignment-interface::y-aligned-on-self grob)))
\override Script.self-alignment-Y = #CENTER
d4 cis d a | d\rtoe h\lheel a\ltoe a | h\ltoe h cis4.\rtoe d8\ltoe | e4\rtoe e a,2 \
| fis'4 d g\rtoe e\ltoe | cis\rtoe a\ltoe d d | d\rtoe h\ltoe a\rtoe fis\ltoe | \
g\lheel d' a2 | cis4\ltoe d\lheel e\rtoe d\rheel | h\lheel a\ltoe d d | c\rtoe \
a\lheel g\ltoe d' | a a\rtoe d,2 \tweak Y-offset #-7.3 \fermata }
\score {
\new PianoStaff <<
\new Lyrics = "melodi" \with {
\override VerticalAxisGroup.staff-affinity = #DOWN
}
\new Lyrics = "melodi2" \with {
\override VerticalAxisGroup.staff-affinity = #DOWN
}
\new Staff = "højre" <<
\new Voice = "sopran" {
\voiceOne
<< \rightOne >>
}
\new Voice = "alt" {
\voiceTwo
<< \rightTwo >>
}
>>
\new Staff = "venstre" <<
\clef bass
\new Voice = "tenor" {
\voiceOne
<< \leftOne >>
}
\new Voice = "basses" {
\voiceTwo << \leftTwo >>
}
>>
\context Lyrics = "melodi" \lyricsto "sopran" \tekst
\context Lyrics = "melodi2" \lyricsto "sopran" \linjeto
>>
\layout { indent = 0.0
\context {
\Score \remove "Bar_number_engraver"
}
#(layout-set-staff-size 22)
}
\midi {
\tempo 4=90
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic