Tonartwechsel am Ende der ersten Volte

Begonnen von Arnold, Montag, 9. Oktober 2017, 13:15

« vorheriges - nächstes »

Arnold

Hallo,

ich habe wieder ein Problem (oder eine Herausforderung) mit der Position von Schlüssel, Tonart und Takt bei Wiederholungen.

Am Ende der ersten Volte springt man zurück an eine Stelle, wo eine andere Tonart gültig ist. Aussehen lassen möchte ich es etwa so wie im Beispiel 2b im angehängen JPG (aus 'Elaine Gould'): Tonartwechsel direkt vor dem Wiederholungszeichen und eingeklammerter Tonartwechsel direkt nach dem Wiederholungszeichen.

Als Codebeispiel habe ich bereits folgendes erstellt:
\version "2.18.2"
#(set-global-staff-size 14.0)

M = {
  \key bes \major
  \repeat volta 2 { R1 }
  \repeat volta 2 {
    bes'1
    \key d \major
    d''1
    \key f \major
    f'1
  } \alternative { {
    <a' f'' c'''>2.
    r4*3/4
    s32 % ein wenig mehr Luft zur vorausgehenden Pause als { \key ... s16 }
    \key bes \major
    s32
  } {
    \once \set Staff.printKeyCancellation = ##f
    \once \override Staff.ParenthesesItem.font-size = #7
    % \once \override Staff.ParenthesesItem.padding = #2 %%% Verschlimmerung
    % \once \override Staff.KeySignature.padding = #2 %%% Ganz daneben
    \parenthesize \key f \major
    <a' fis'' cis'''>2. r4
  } }
  f'1
  \bar "|."
}


\score {
  \M
  \layout {
    indent = 0
  }
  \header { piece = "»Original abgeschreiben«" }
}

\score {
  \transpose f as \M
  \layout {
    indent = 0
  }
  \header { piece = "»Transkription (für anderes Instrument)«" }
}

\score {
  \M
  \layout {
    indent = 0
    ragged-right = ##f
  }
  \header { piece = "»Original abgeschreiben«, gedehnt durch Randausgleich" }
}

\score {
  \transpose f as \M
  \layout {
    indent = 0
    ragged-right = ##f
  }
  \header { piece = "»Transkription (für anderes Instrument)«, gedehnt durch Randausgleich" }
}


Der Verbesserungsbedarf besteht ...

... in der 2. Volte:
a) Abstand des Tonartwechsels zum Wiederholungszeichen vergrößern (Spalt zum Wiederholungszeichen, Klammer soll nicht mehr in den Taktstrichbalken hineinragen)
   - Vielleicht mit einer alternativen Stencil-Funktion beim \parenthesize, welche das 'padding' an der Klammer hinzufügt?
     Unterschiedliche Stencil-Funktionen könnten dann vielleicht das Problem beheben, wenn außer dem Vorzeichen sich auch der Takt ändert, und diese gemeinsam eingeklammert werden sollen.
b) Abstand zu den Noten (Vorzeichen des Akkords) vergößern
   - genauso?

... in der 1. Volte:
Als Workaround habe ich die Viertelpause skaliert und zwischen zwei Skips den Tonartwechsel eingefügt.
\cadenzaOn und \cadenzaOff wären als Alternative denkbar - in anderern Situationen eventuell erforderlich.
a) Abstand des Tonartwechsels zum Wiederholungszeichen verringern
   - Als "\breathe" unterschieben?
     Dann muß sich das Vorzeichen-Bild abhängig von der Transposition auch noch mitändern
   - Die "Federn" zwischen den Grobs (key - skip - barline) mit einer before-linebreaking-Prozedur versteifen?
b) Dehnung dieses Abstands durch den Randausgleich verhindern
   - implizit mit dem zweiten Lösungsansatz von (a), dem Versteifen der Federn?

Oder gibt es noch ganz andere, bessere und einfachere Methoden?

Arnold

Malte

Hallo Arnold,

probier mal mit folgenden Dingen rum:
Zitat von: Arnold am Montag,  9. Oktober 2017, 13:15
a) Abstand des Tonartwechsels zum Wiederholungszeichen vergrößern (Spalt zum Wiederholungszeichen, Klammer soll nicht mehr in den Taktstrichbalken hineinragen)
   - Vielleicht mit einer alternativen Stencil-Funktion beim \parenthesize, welche das 'padding' an der Klammer hinzufügt?

    \once \override Staff.BarLine.X-extent = #'(0 . 2)
    \once \override Staff.ParenthesesItem.padding = -0.5


Zitat
b) Abstand zu den Noten (Vorzeichen des Akkords) vergößern
   - genauso?
Ich find, mit dem negativen padding siehts schon ganz gut aus, ansonsten:\once \override NoteColumn.X-offset = 5mit kleinerem Wert als 5.
Zitat
... in der 1. Volte:
Als Workaround habe ich die Viertelpause skaliert und zwischen zwei Skips den Tonartwechsel eingefügt.
\cadenzaOn und \cadenzaOff wären als Alternative denkbar - in anderern Situationen eventuell erforderlich.
Das wird vermutlich schwierig in den Griff zu kriegen sein. Problem dabei: Du willst ja im Prinzip am selben Taktstrich zwei Tonartwechsel, nämlich einen davor, einen dahinter.
Zitat
a) Abstand des Tonartwechsels zum Wiederholungszeichen verringern
   - Als "\breathe" unterschieben?
Das geht schon, ist aber ein ganz ganz böser Hack:
      \once \override BreathingSign.Y-offset = 0
      \once \override BreathingSign.stencil = #ly:text-interface::print
      \once \override BreathingSign.text =
      \markup \score {
        {
          \omit Staff.TimeSignature
          \omit Staff.Clef
          \key bes \major
          \override Staff.KeySignature.X-extent = #'(0 . 3)
          \omit Staff.StaffSymbol
        }
      }
      \breathe

Du müßtest hier mit \tag arbeiten, weil der \score im \markup nicht mit transponiert wird ;) Aber vermutlich ist das noch die einfachste Lösung.