Still having some unresolved trouble with stems for my public domain hymnal project.
I've attached an excerpt to show you what I'm doing. The problem is that, in hymnals, notes from different parts share the same stem (and hence the same stem direction) in most cases, except when the note durations are different or the notes are in unison or only a second apart. The sample below uses stem direction to seperate the parts. This works properly, and makes for a reasonably readable score, except that it isn't what's expected for a hymnal. Any suggestions? I'm producing the lilypond input programmatically and could set the stem direction for individual notes in my software, but my experimenting with that (using \voiceOne and \voiceTwo to set stem direction) hasn't worked because the stems aren't combined properly, so beams and flags are misplaced. Steve ------- upperOne = { \voiceOne \time 4/4 \key g \major r2.^\markup "Angel's Story 76.76D, Arthur Henry Mann, 1881 (O Jesus I Have Promised)" b'4 b'4. b'8 a'4 g' g'2 fis'4 d' c''4. c''8 b'4 a' b'2. b'4 d''4. d''8 c''4 b' b'2 c''4 b' a'4. g'8 fis'4 g' a'2. ais'4 b'4. b'8 a'4 g' g'2 fis'4 d' c''4. c''8 b'4 a' b'2. b'4 e''4. d''8 c''4 b' d''2 c''4 e' g'4. fis'8 e'4 fis' g'2. s4 \bar "|." \time 4/4 \key d \major fis'4^\markup "Bradbury 87.87D, William B. Bradbury, 1859 (Savior Like a Shepherd Lead Us)" fis' fis'8 e' fis' g' a'4 ( d'' ) a' ( fis' ) e' fis' g'8 b' a' g' fis'1 fis'4 fis' fis'8 e' fis' g' a'4 ( d'' ) a' ( fis' ) e' fis' g'8 b' a' g' fis'1 a'8 a' b'4 d''2 cis''8 b' a'4 fis'2 fis'8 fis' e'4 b' a' g' fis'2. a'8 a' b'4 d''2 cis''8 b' a'4 d''2 d'8 e' fis'4 a' g' e' d'2. \bar "|." \time 6/4 \key f \major a'2^\markup "Martyn , Simeon B. Marsh, 1834 (??)" a'4 a'2 f'4 g'2 g'4 g'2. a'2 a'4 c''2 bes'4 a'2. g' f'1. a'2 a'4 a'2 f'4 g'2 g'4 g'2. a'2 a'4 c''2 bes'4 a'2. g' f'1. c''2 c''4 c''2 c''4 d''2. d'' c''1. c''2 c''4 c''2 c''4 d''2. d'' c''1. a'2 a'4 a'2 f'4 g'2 g'4 g'2. a'2 a'4 c''2 bes'4 a'2. g' f'1. \bar "|." \time 3/4 \key g \major r2^\markup "New Britain CM, Virginia Harmony, 1831; Harmization: Edwin Othello Excell, 1900 (Amazing Grace)" d'4 g'2 b'8 g' b'2 a'4 g'2 e'4 d'2 d'4 g'2 b'8 g' b'2 a'4 d''2. b'4 d''4. b'8 d'' b' g'2 d'4 e'4. g'8 g' e' d'2 d'4 g'2 b'8 g' b'2 a'4 g'2 ( g' ) s4 \bar "|." \time 3/4 \key ees \major ees'4^\markup "Slane 10.10.10.10, Ancient Irish melody (Be Thou My Vision)" ees' f'8 ees' c'4 bes4. c'8 ees'4 ees' f' g'2. f'4 f' f' f' g' bes' c'' bes' g' bes'2. c''4. d''8 ees'' d'' c''4 bes' g' bes' ees' d' c'2 bes4 ees' g' bes' c''8 bes' g'4 ees'8 g' f'4 ees' ees' ees'2. \bar "|." \time 3/4 \key bes \major r2^\markup "Toplady 7.7.7.7.7.7, Thomas Hastings, 1830 (Rock of Ages)" f'8. g'16 f'4 d' bes'8. g'16 f'2 bes'8 c'' d''4. c''8 bes' a' bes'2 a'8. bes'16 c''4. c''8 a' f' bes'2 a'8. bes'16 c''4. c''8 a' f' bes'2 f'8. g'16 f'4 d' bes'8. g'16 f'2 bes'8 c'' d''4. c''8 bes' a' bes'2 s4 \bar "|." \time 4/4 \key des \major r2.^\markup "Ville de Havre , Philip Paul Bliss, 1876 (...)" aes'4 aes'2 ges'4 f' f'2 ees'4 f' ( ges' bes' ) aes' ges' f'2. aes'4 des''2 c''4 bes' bes'2 aes'4 g' aes'2. aes'4 des''2 des''4 c'' bes'2 bes'4 bes' ees''2 ees''4 des'' c''2 bes'4 aes' des''2 des''4 des'' des''2 c''4 des'' des''2. aes'4 aes' aes'1 ( aes'2 ) aes'4 aes' aes'1 ( aes'2 ) f'4 aes' bes'2 bes'4 des'' des''2 c''4 des'' des''2 s4 \bar "|." } upperTwo = { \voiceTwo \key g \major r2. d'4 d'4. d'8 c'4 b8 d' d'2 d'4 d' d' fis'8 fis' g'4 d' d'2. g'4 gis'4. gis'8 a'4 e' e'2 e'4 e' e'4. cis'8 cis'4 cis' d'2. c'4 b d'8 d' c'4 b8 d' d'2 d'4 d' d' fis'8 fis' g'4 d' d'2. g'4 gis'4. gis'8 a'4 e' e'2 e'4 c' d'4. c'8 c'4 c' b2. s4 \bar "|." \key d \major d'4 d' d'8 cis' d' e' fis'2 fis'4 ( d' ) cis' d' e'8 g' fis' e' d'1 d'4 d' d'8 cis' d' e' fis'2 fis'4 ( d' ) cis' d' e'8 g' fis' e' d'1 fis'8 fis' g'4 b'2 a'8 g' fis'4 d'2 d'8 d' cis'4 g' fis' e' d'2. fis'8 fis' g'4 b'2 a'8 g' fis'4 fis'2 d'8 d' d'4 fis' e' cis' d'2. \bar "|." \key f \major f'2 f'4 f'2 f'4 e'2 e'4 e'2. f'2 f'4 f'2 g'4 f'2. e' f'1. f'2 f'4 f'2 f'4 e'2 e'4 e'2. f'2 f'4 f'2 g'4 f'2. e' f'1. f'2 e'4 f'2 f'4 f'2. f' f'1. f'2 e'4 f'2 f'4 f'2. f' e'1. f'2 f'4 f'2 f'4 e'2 e'4 e'2. f'2 f'4 f'2 f'4 f'2. f'2 e'4 f'1. \bar "|." \key g \major r2 b4 b2 d'4 d'2 c'4 b2 c'4 b2 b4 b2 b4 d'2 d'4 d'2. d'4 d'2 d''8 b' d'2 d'4 c'4. d'8 c'4 b2 d'4 b2 d'4 d'2 c'4 b2 ( b ) s4 \bar "|." \key ees \major ees'4 ees' f'8 ees' c'4 bes4. c'8 c'2 ees'4 ees'2. bes4 <<ees' a >><<d' bes >>c' d' g'8 f' g'4 f' ees' <<f'2 ees' >>ees'4 ees' aes' g' g'2 d'4 f' ees' d' c'2 bes4 c' <<ees' c' >>d' ees'2. c' bes \bar "|." \key bes \major r2 d'8. ees'16 d'4 bes f'8. ees'16 d'2 f'8 f' f'4. g'8 f' ees' d'2 c'8. d'16 ees'4. ees'8 ees' ees' d'2 c'8. d'16 ees'4. ees'8 ees' ees' d'2 d'8. ees'16 d'4 bes f'8. ees'16 d'2 d'8 ees' f'4. g'8 f' ees' d'2 s4 \bar "|." \key des \major r2. f'4 f'2 ees'4 des' des'2 c'4 des' c'2 c'4 ees' des'2. f'4 f'2 ees'4 des' f'2 ees'4 ees' ees'2. ges'4 f'2 f'4 aes' ges'2 bes'4 aes' ges'2 ges'4 g' aes'2 aes'4 aes' aes'2 des'4 ees' f'2 ees'4 f' f'2. r1 f'4 f' ees'2 r1 ees'4 ges' f'2 des'4 f' ges'2 ges'4 ges' f'2 ees'4 f' f'2 s4 \bar "|." } lowerOne = { \voiceOne \key g \major r2. g4 d e fis g b2 a4 fis fis a8 a g4 c' b2. b4 b4. b8 e'4 d' d'2 c'4 d' cis'4. b8 a4 g g2 fis4 fis g d8 e fis4 fis b2 a4 fis fis a8 a g4 c' b2. b4 b4. b8 e'4 d' b2 c'4 a b4. a8 g4 a g2. s4 \bar "|." \key d \major a4 a a8 a a a a2 d'4 ( a ) a a a8 a a a a1 a4 a a8 a a a a2 d'4 ( a ) a a a8 a a a a1 d'8 d' d'4 d'2 d'8 d' d'4 a2 a8 a a4 a a a a2. d'8 d' d'4 d'2 d'8 d' d'4 a2 fis8 g a4 a a g fis2. \bar "|." \key f \major c'2 c'4 c'2 a4 c'2 c'4 c'2. c'2 c'4 c'2 d'4 c'2. bes a1. c'2 c'4 c'2 a4 c'2 c'4 c'2. c'2 c'4 c'2 d'4 c'2. bes a1. a2 bes4 c'2 a4 bes2. bes a1. a2 bes4 c'2 a4 a2. b c'1. c'2 c'4 c'2 b4 c'2 c'4 c'2. c'2 c'4 ees'2 d'4 c'2. bes a1. \bar "|." \key g \major r2 g4 d2 g4 g2 fis4 g2 g4 g2 g4 d2 g4 g2 fis4 g2. g4 b2 b4 g2 g4 g2 e8 g g2 g4 g2 g8 b g2 fis4 g2 ( g ) s4 \bar "|." \key ees \major bes4 c' bes aes8 g f4 g g2 c'4 bes2. f f4 bes bes ees' bes bes bes2. aes4 c' c'8 f' ees'4 d' bes bes2 aes4 g aes8 g f4 <<ees2 g >>g4 g bes2 aes8 <<g4. aes >>f4 g2. \bar "|." \key bes \major r2 bes8. bes16 bes4 f bes8. bes16 bes2 bes8 a bes4. ees'8 d' c' bes2 f4 f4. a8 c' a bes2 f8. bes16 a4. a8 c' a bes2 bes8. bes16 bes4 f bes8. bes16 bes2 bes8 a bes4. ees'8 d' c' bes2 s4 \bar "|." \key des \major r2. aes4 aes2 aes4 aes aes2 aes4 aes aes2 aes4 aes aes2. aes4 bes2 a4 bes des'2 c'4 bes c'2. c'4 des'2 des'4 des' des'2 des'4 d' ees'2 ees'4 ees' ees'2 des'4 c' des'2 aes4 bes aes2 aes4 aes aes2. r1 aes4 des' c'2 r1 c'4 ees' des'2 aes4 des' des'2 des'4 bes aes2 aes4 aes aes2 s4 \bar "|." } lowerTwo = { \voiceTwo \key g \major r2. g,4 g, g, g, g,8 b, d2 d4 d d4. d8 e4 fis g2. g4 e4. e8 fis4 gis gis2 a4 a a,4. a,8 a,4 a, d2. d4 g, g, g, g,8 b, d2 d4 d d4. d8 e4 fis g2. g4 e4. e8 fis4 gis gis2 a4 a, d4. d8 d4 d g,2. s4 \bar "|." \key d \major d4 d d8 g fis e d2 d a,4 a, a,8 a, a, a, fis1 d4 d d8 g fis e d2 d a,4 a, a,8 a, a, a, a1 d8 d g4 g2 g8 g d4 d2 d8 d a,4 a, a, a, d2. d8 d g4 g2 g8 g d4 d2 d8 d d4 d a, a, d2. \bar "|." \key f \major f2 f4 f2 f4 c2 c4 c2. f2 f4 a,2 bes,4 c2. c f1. f2 f4 f2 f4 c2 c4 c2. f2 f4 a,2 bes,4 c2. c f1. f2 g4 a2 f4 bes,2. bes,2 d4 f1. f2 g4 a2 f4 d2. g c1. f2 f4 f2 d4 c2 c4 c2. f2 f4 a2 bes4 c'2. c f1. \bar "|." \key g \major r2 g,4 g,2 g,8 b, d2 d4 e2 c4 g,2 g,4 g,2 g,8 b, d2 c4 b,2. g,4 g2 g4 b,2 b,4 c4. b,8 c4 g,2 b,4 e2 d4 d2 d4 g,2 ( g, ) s4 \bar "|." \key ees \major g4 aes g f8 ees d4 ees c bes, aes, ees, bes, ees d c bes, bes,8 a, g, f ees d c4 d ees bes, bes ( g ) aes f c8 d ees f g a bes g d4 g f ees f8 ees d4 c2 bes,8 aes, g,4 ees, g, aes,8 bes, c4 aes, ees,2. \bar "|." \key bes \major r2 bes,8. bes,16 bes,4 bes, d8. ees16 bes,2 d8 f bes4. ees8 f f bes,2 f4 f4. f8 f f bes,2 f8. f16 f4. f8 f f bes,2 bes,8. bes,16 bes,4 bes, d8. ees16 bes,2 g8 f bes4. ees8 f f bes,2 s4 \bar "|." \key des \major r2. des4 des2 des4 des8 f aes2 ges4 f ees2 aes,4 aes, des2. des4 bes,2 c4 des des2 ees4 ees aes,2. aes4 des2 des4 f ges2 ges4 f ees2 ees4 ees aes2 aes4 aes8 ges f2 f4 ges aes2 aes,4 aes, des2. r1 des4 f aes2 r1 aes,4 aes, des2 des4 des ges2 ges4 ges aes2 aes,4 aes, des2 s4 \bar "|." } \score { \context PianoStaff \with { \override VerticalAlignment #'forced-distance = #11 % default is 12, 11 gives us slightly tighter spacing between bass and treble stafs } << \context Staff = upper << \override Score.BarNumber #'break-visibility = #all-invisible \break \context Voice = one { \upperOne } \context Voice = two \upperTwo >> \context Staff = lower << \clef bass \context Voice = three \lowerOne \context Voice = four \lowerTwo >> >> } \layout { betweensystemspace = 0 \context { \Score % defaults % (shortest-duration-space . 2.0) % (spacing-increment . 1.2) % (base-shortest-duration . ,(ly:make-moment 1 8)) % tighter spacing \override SpacingSpanner #'shortest-duration-space = #2.4 \override SpacingSpanner #'spacing-increment = #0.6 \override SpacingSpanner #'base-shortest-duration = #(ly:make-moment 1 8) } } _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user