Autor Thema: Gesucht: bessere Defaults fuer mehrstimmigen Satz  (Gelesen 326 mal)

asmodeus

  • Newbie
  • *
  • Beiträge: 8
Gesucht: bessere Defaults fuer mehrstimmigen Satz
« am: Sonntag, 14. März 2021, 12:59 »
Hallo,

ich setze gerade die Fuge BWV 998 von Bach und frage mich ob es bessere Einstellungen fuer mehrstimmigen Satz gibt, die mir die manuelle Nacharbeit reduzieren.

Ein Takt als Beispiel:

\version "2.22"
keytime = { \time 4/4 \key d \major }

melody = \absolute {
  \keytime
  d'8-2 e'-0 fis'-1 gis'-3 a'-2 e'-0 d'-4\3 cis'-2\3 | %7
}

upper =\absolute {
  \keytime
  s1 |
}

lower = \absolute {
  \keytime
  fis4-3 r4 r8 cis'-4\3 b-0 a-3\4 | % 7
}

bass = \absolute {
  \keytime
  r4 d-0 cis-1 d-1\5 | %7
}

\score {
  \new StaffGroup
  <<
    \new Staff = "guitar" <<
      \context Voice = "melody" { \clef "G_8" \voiceOne   \melody }
      \context Voice = "upper"  { \clef "G_8" \voiceThree \upper  }
      \context Voice = "lower"  { \clef "G_8" \voiceFour  \lower  }
      \context Voice = "bass"   { \clef "G_8" \voiceTwo   \bass   }
    >>
    \new TabStaff = "tab" <<
      \set Staff.stringTunings = #guitar-drop-d-tuning
      \context TabVoice = "melody tab " { \clef "moderntab" \voiceOne   \melody }
      \context TabVoice = "upper tab"   { \clef "moderntab" \voiceThree \upper  }
      \context TabVoice = "lower tab"   { \clef "moderntab" \voiceFour  \lower  }
      \context TabVoice = "bass tab"    { \clef "moderntab" \voiceTwo   \bass   }
    >>
  >>
  \layout {
    \context {
      \Staff
      \hide StringNumber     
    }}
  }
}

Vorschau siehe angehaengtes Bild.

Mir ist bewusst dass ich fuer jeden Takt einzeln tweaken kann, aber bevor ich das fuer alle 77 mache moechte ich gerne sicher sein dass es keine generische Loesung gibt  :)

Folgendes moechte ich generell verbessern:

  • Lange Notenhaelse in voice lower und Umschliessung der Viertel im voice bass vermeiden. Bisher loese ich das im Einzelfall mit \once \override Beam.positions = #'(-1 . -1) und angepassten Werten. Gibt es eine Einstellung die kuerzere Haelse favorisiert? Quasi so etwas wie \shiftOn fuer die Vertikale?
  • Bezug von Fingersaetzen zur Note verbessern. Im voice lower haengen die Fingerangaben unter den langen Achteln, dabei waere rechts von den Notenkoepfen Platz. Ich habe keinen override dazu gefunden. Angeschaut habe ich Fingering.direction, scheint aber nur oben/unten zu setzen und fingeringOrientations bzw. Fingering.staff-padding ist nur fuer Akkordkonstrukte in <>. Mit \override Fingering.add-stem-support = ##f wird es ganz wild, dann ueberlappen Notenkoepfe und Haelse sich mit den Angaben.
  • "Schichtung" der Pausen bei mehreren Stimmen. Die Pausen in den voices bass/lower sind vertikal kaum zu unterscheiden bzw suggerieren eine andere Stimmenschichtung. Dabei waere fuer den Satz der Pausen zwischen melody und bass Platz. Bisher loese ich das mit einem \override Rest.staff-position = -1. Koennte man die Position der Pausen dynamisch dem verfuegbaren Platz zwischen den Stimmen anpassen?

Freue mich auf eure Ideen!

VG,
Achim

harm6

  • Hero Member
  • *****
  • Beiträge: 912
Antw:Gesucht: bessere Defaults fuer mehrstimmigen Satz
« Antwort #1 am: Dienstag, 16. März 2021, 01:31 »
Zunächst einige Details:
Zitat
Bezug von Fingersaetzen zur Note verbessern. Im voice lower haengen die Fingerangaben unter den langen Achteln, dabei waere rechts von den Notenkoepfen Platz. Ich habe keinen override dazu gefunden. Angeschaut habe ich Fingering.direction, scheint aber nur oben/unten zu setzen und fingeringOrientations bzw. Fingering.staff-padding ist nur fuer Akkordkonstrukte in <>. Mit \override Fingering.add-stem-support = ##f wird es ganz wild, dann ueberlappen Notenkoepfe und Haelse sich mit den Angaben.

In LilyPond wird ein Akkord z.B. so geschrieben: <c e g>. Das ist ein event-chord mit drei note-events.
Du kannst genauso einen event-chord mit nur einem note-event schreiben. Dann klappt es auch mit fingeringOrientations

Zitat
"Schichtung" der Pausen bei mehreren Stimmen. Die Pausen in den voices bass/lower sind vertikal kaum zu unterscheiden bzw suggerieren eine andere Stimmenschichtung. Dabei waere fuer den Satz der Pausen zwischen melody und bass Platz. Bisher loese ich das mit einem \override Rest.staff-position = -1. Koennte man die Position der Pausen dynamisch dem verfuegbaren Platz zwischen den Stimmen anpassen?

Hier kenne ich keine vereinfachende Methode. Ich nehme auch immer Rest.staff-position

Zitat
Lange Notenhaelse in voice lower und Umschliessung der Viertel im voice bass vermeiden. Bisher loese ich das im Einzelfall mit \once \override Beam.positions = #'(-1 . -1) und angepassten Werten. Gibt es eine Einstellung die kuerzere Haelse favorisiert? Quasi so etwas wie \shiftOn fuer die Vertikale?

Du kannst Beam.collision-interfaces bzw Stem.details verändern. Beispiele siehe unten.


Ganz generell ist ein polyphones Werk wie diese Fuge sehr schwierig zu setzen.
Unten habe ich mal die Ausgaben von Ricordi bzw Universal Edition nachempfunden. Sie unterscheiden sich deutlich in der Behandlung des Balkens in der Mittelstimme. (Fingersätze entsprechen den genannten Ausgaben, rechte Hand und Saitenangaben habe ich weg gelassen)
Und hätte ich die anderen Ausgaben aus meinem Notenschrank durchgesehen wären bestimmt noch andere Ansätze zu finden gewesen.
Aber egal, an zahlreichen manuellen Eingriffen wird man nicht vorbei kommen ganz gleich welchen Ansatz man verfolgt. Wenn man genau hinschaut sieht man doch einige Sachen, die noch verbesserungsfähig sind, aber ich krieg ja kein Geld dafür lol...

Der Code braucht allerdings 2.23.0

\version "2.23.0"

%% RICORDI

beam-coll =
  \override Beam.collision-interfaces =
    #'(beam-interface
       clef-interface
       clef-modifier-interface
       flag-interface
       inline-accidental-interface
       key-signature-interface
       note-head-interface
       ;stem-interface
       time-signature-interface)

keytime = { \clef "G_8" \time 4/4 \key d \major }

melody = \absolute {
  \keytime
  <d'-2>8 <e'-0> <fis'-1> <gis'\glide-3> <a'-3>
  \once \override FingerGlideSpanner.rotation = #'(20 1 0)
  <e'-2-\glide-\tweak transparent ##t -4>
  <d'-4>8 <cis'-2> | %7
}

upper =\absolute {
  \keytime
  s1 |
}

lower = \absolute {
  \keytime
  \beam-coll
  <fis-3>4
  \override Rest.staff-position = -1
  r4
  \override Rest.staff-position = 0
  r8
  <cis'-4>
  \shiftOff
  <b-0> <a-3> | % 7
}

bass = \absolute {
  \keytime
  r4 <d> <cis\glide-1>
  \once \override NoteColumn.force-hshift = 1
  <d-\tweak padding #0.2 -1> | %7
}

\score {
  \new StaffGroup
  <<
    \new Staff = "guitar"
    \with { instrumentName = "RICORDI" }
    <<
      \context Voice = "melody" { \voiceOne   \melody }
      \context Voice = "upper"  { \voiceThree \upper  }
      \context Voice = "lower"  { \voiceFour  \lower  }
      \context Voice = "bass"   { \voiceTwo   \bass   }
    >>
  >>
  \layout {
  line-width = 90
  ragged-right = ##f
    \context {
      \Voice
      fingeringOrientations = #'(left)
      \override FingerGlideSpanner.style = #'stub-right
      \override FingerGlideSpanner.minimum-length = 5.5
    }
    \context {
      \Staff
      \hide StringNumber     
    }
  }
}

%% UE


keytime = { \clef "G_8" \time 4/4 \key d \major }

melody = \absolute {
  \keytime
  <d'>8 <e'> <fis'-1>
  \once \override FingerGlideSpanner.minimum-length = 5.5
  <gis'\glide-3> <a'-3>
 
  \once \override FingerGlideSpanner.minimum-length = 4
  <e'\glide-2>
  <d'-2>
  \set Staff.connectArpeggios = ##t
  \once \override Staff.Arpeggio.stencil = #ly:arpeggio::brew-chord-bracket
  <cis'>\arpeggio | %7
}

upper =\absolute {
  \keytime
  s1 |
}

lower = \absolute {
  \keytime
  <fis-3>4 
  \override Rest.staff-position = -1
  r4
  \override Rest.staff-position = 0
  r8
  \override Stem.details.beamed-extreme-minimum-free-lengths = #'(0.8)
  <cis'-4>
 
  \once \shiftOff
  <b-3> <a>\arpeggio | % 7
}

bass = \absolute {
  \keytime
  r4 <d> <cis-1> <d> | %7
}

\score {
  \new StaffGroup
  <<
    \new Staff = "guitar"
    \with { instrumentName = "UE" }
    <<
      \context Voice = "melody" { \voiceOne   \melody }
      \context Voice = "upper"  { \voiceThree \upper  }
      \context Voice = "lower"  { \voiceFour  \lower  }
      \context Voice = "bass"   { \voiceTwo   \bass   }
    >>
  >>
  \layout {
  \context {
    \Staff
      \consists "Span_arpeggio_engraver"
  }
    \context {
      \Voice
      fingeringOrientations = #'(left)
      \override FingerGlideSpanner.style = #'stub-right
    }
    \context {
      \Staff
      \hide StringNumber     
    }
  }
}



Gruß,
  Harm