PianoStaff und TabStaff funktioniert nicht gemeinsam

Begonnen von Tom, Freitag, 24. Januar 2025, 16:21

« vorheriges - nächstes »

Tom

Hallo zusammen,

ich bin hier zwar erst seit letzter Woche angemeldet, verwende lilypond aber schon
über 10 Jahre und habe eine dreistellige Anzahl von Partituren/Stimmen damit gesetzt.

Normalerweise bewege ich mich im Streicherumfeld. Aktuell arbeite ich jedoch an einem
Stück bei dem zwei Gitarren (mit Skordatur) besetzt sind. Eine Gitarre wird dabei
über zwei Systeme (Bass-Schlüssel/Violin-Schlüssel) hinweg gesetzt. Dazu verwende ich
einen PianoStaff mit zwei benannten paralellen Staffs (up, dn) und wechsle in der Stimme
entsprechende mit \change Staff ="up|dn" das System.

Das funktioniert soweit. Soblad ich nun ein TabStaff hinzufüge, gerät das Layout völlig
aus dem Ruder. Verwendet ich für die Gitarre einen normalen Staff, habe ich zwar zu
viele Hilfslinien, aber die Tabulatur ist korrekt. Gebe ich dem Staff dann einen Namen,
entgleist das Layout wieder.

Ich habe ein zweitaktiges Pattern isoliert und alle Varianten durchgespielt. Das Problem
scheint der benannte Staff zu sein ohne den ich aber nicht zwischen den System wechseln
kann.

Hat jemand eine Idee, wie ich hier weiter kommen könnte?

Danke und VG
Thomas


\version "2.24.1"
\language "deutsch"

global = {
  \key d \major
  \time 4/4
  \tempo 2=80
  \override MultiMeasureRest.expand-limit = #2
  %\compressFullBarRests
  \compressEmptyMeasures
  \set countPercentRepeats = ##t
}

oben = { \change Staff = "up" \stemDown }
unten = { \change Staff = "dn" \stemDown }

gitarreI_PI  = \relative c, { \unten c8 d \oben d' g \unten g, a \oben d c~ | c8 fis g d \unten h \oben e \unten g, a }

custom-tuning = \stringTuning < c, g, d g a d' >

% Ausgabe OK
\score {
   <<
      \new PianoStaff <<
        \new Staff = "up"  { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
        \new Staff = "dn" { \clef "bass_8" \transpose c c, s1*2 }
      >>
   >>
}
% Ausgabe Schrott
\score {
   <<
      \new PianoStaff <<
        \new Staff = "up"  { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
        \new Staff = "dn" { \clef "bass_8" \transpose c c, s1*2 }
      >>
      \new TabStaff { \set Staff.stringTunings = #custom-tuning \transpose c c, \global \gitarreI_PI }
   >>
}
% Ausgabe OK
\score {
   <<
      %\new PianoStaff <<
      %  \new Staff = "up"  { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
      %  \new Staff = "dn" { \clef "bass_8" \transpose c c, s1*2 }
      %>>
      \new Staff { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
      \new TabStaff { \set Staff.stringTunings = #custom-tuning \transpose c c, \global \gitarreI_PI }
   >>
}
% Ausgabe Schrott => offensichtlich ist der benannte Staff *DAS* Problem
\score {
   <<
      %\new PianoStaff <<
      %  \new Staff = "up"  { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
      %  \new Staff = "dn" { \clef "bass_8" \transpose c c, s1*2 }
      %>>
      \new Staff = "up" { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
      \new TabStaff { \set Staff.stringTunings = #custom-tuning \transpose c c, \global \gitarreI_PI }
   >>
}

Hier die zugehörige Ausgabe

Du darfst diesen Dateianhang nicht ansehen.


Malte

Hallo Tom,

willkommen im Forum! Ich würde mit Tags arbeiten: Die Staff-Wechsel mit einem Tag versehen und den aus der Verwendung im TabStaff per \removeWithTag streichen.
\version "2.24.1"
\language "deutsch"

global = {
  \key d \major
  \time 4/4
  \tempo 2=80
}

oben = \tag #'nurimStaff { \change Staff = "up" \stemDown }
unten = \tag #'nurimStaff { \change Staff = "dn" \stemDown }

gitarreI_PI  = \relative c, { \unten c8 d \oben d' g \unten g, a \oben d c~ | c8 fis g d \unten h \oben e \unten g, a }

custom-tuning = \stringTuning < c, g, d g a d' >

\score {
   <<
      \new PianoStaff <<
        \new Staff = "up"  { \clef "treble_8" \transpose c c, \global \gitarreI_PI }
        \new Staff = "dn" { \clef "bass_8" \transpose c c, s1*2 }
      >>
      \removeWithTag #'nurimStaff \new TabStaff { \set TabStaff.stringTunings = #custom-tuning \transpose c c, \global \gitarreI_PI }
   >>
}

Hilft dir das?

Viele Grüße
Malte

Edit: Ist es Absicht, dass du \global im unteren Staff nicht verwendest und damit keine Tonartvorzeichen setzt?

Tom

Hallo Malte,

vielen Dank! Das war die Lösung!

Ich hatte das Stück Anfang Dezember ohne Tabulatur gesetzt und erste gestern versucht,
die Tabulatur zu ergänzen. Ein Zusammenhang zwischen den absichtlichen Systemwechseln
und dem entgleisten Layout für die Tabulatur kam mir dabei nicht in den Sinn.
Ein "falscher" Name für den Staff, also ein nicht vorhandenes Ziel für den \changeStaff
hat schon ein korrektes Layout erzeugt.

Die Unstimmigkeiten im Beispiel sind beim Erstellen entstanden. Das Stück hat 18
Instrument (Einzelstimmen) und wird zu größten Teil mit Scheme-Funktionen erzeugt.
Soll heißen, der Originalcode sieht völlig anders aus und bedient sich heftig der
Tags. Das Konzept ist mir also geläufig.

Nochmal Danke
LG
Thomas