DS al Coda mit Wechsel der Tonart zu C-Dur

Begonnen von DAccord, Montag, 24. Mai 2021, 12:32

« vorheriges - nächstes »

DAccord

Hallo,

aus dem LSR #190 (https://lsr.di.unimi.it/LSR/Item?id=190) habe ich mir für DS al Coda etwas Allgemeineres gebastelt, das bisher immer gut funktioniert hat. Meine Bastelei ist in einer extra Datei gespeichert, die ich dann bei Bedarf mit include in mein aktuelles Stück einbinde.

Jetzt habe ich allerdings einen Sonderfall, bei dem ich nicht weiter weiß. Das Stück startet in C-Dur, wechselt dann nach F-Dur und dann kommt das DS al Coda, mit dem Segno im C-Dur Teil. Mit meinem Code in DSAlCoda.ly macht Lilypond dann ein Auflösungszeichen in den freien Raum (siehe angehängter Screenshot).

Meine erste Frage ist, wie so etwas üblicherweise notiert wird. So wie es jetzt dargestellt ist, schaut es mMn komisch aus ... Ich habe in meinen Noten geblättert und ein einziges ähnliches Beispiel gefunden. Dort wird es so notiert wie ich in rot auf dem Screenshot ergänzt habe. Das Auflösungszeichen ganz zu entfernen ist glaube ich keine gute Idee (hätte ich schon geschafft mit \once \override Staff.KeyCancellation #'break-visibility = #'#(#f #f #f) .)
Gibt es noch andere Vorschläge zur Notation?
Und wie könnte ich das rot ergänzte (oder euren Vorschlag) in meinem Snippet umsetzen?

Vielen Dank für euren Input und die Hilfe.

Liebe Grüße,
DAccord

harm6

Hallo DAccord,

willkommen im Forum.

Eigentlich brauchts Du keine Lücke am Zeilenende zu lassen, wenn die Coda sowieso erst in der nächsten Zeile anfängt.

Das gesagt, würde ich so vorgehen:


\version "2.20.0"

%%%%% Definition eigentlich in Extra-Datei %%%%%
% reduced from https://lsr.di.unimi.it/LSR/Snippet?id=190
DSAlCoda = {
  \bar "||"
  \once \override Score.RehearsalMark.break-visibility = #begin-of-line-invisible
  \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
  \mark \markup { \fontsize #-1 { D.S. al Coda } }
   
  % Here begins the trickery!
  % \cadenzaOn will suppress the bar count and \stopStaff removes the staff lines.
  \cadenzaOn
    \stopStaff
     
     % Increasing the unfold counter will expand the staff-free space
      \repeat unfold 1 {
        s1
        \bar ""
      }
      % Resume bar count and show staff lines again
   \startStaff
\cadenzaOff

% \once \override Staff.KeyCancellation #'break-visibility = #'#(#f #f #f)

\break % begin coda on new line
       
% Show up, you clef and key!
\once \override Staff.KeySignature.break-visibility = #end-of-line-invisible
\once \override Staff.Clef.break-visibility = #end-of-line-invisible
\once \override Score.RehearsalMark.extra-offset = #'( -4.5 . 0 )
\once \override Score.RehearsalMark.font-size = #5
\mark \markup { \musicglyph #"scripts.coda" }
}

%%%%% Definition eigentlich in Extra-Datei %%%%%
% from https://lsr.di.unimi.it/LSR/Snippet?id=190
ToCoda = {
  \once \override Score.RehearsalMark.break-visibility = #begin-of-line-invisible
  \mark \markup { \fontsize #1 { \musicglyph #"scripts.coda" } }
}

%%%%% Definition eigentlich in Extra-Datei %%%%%
% from https://lsr.di.unimi.it/LSR/Snippet?id=190
SegnoMark = \mark \markup { \musicglyph #"scripts.segno" }


violin = \relative c' {
  \key c \major
  c4 c c c | \SegnoMark
  g g g g\ToCoda |
  c c c c |
  \key f \major
  f f f f |
  \once \override Staff.BarLine.X-extent = #'(0 . 2.7)
  \once \override Staff.BarLine.space-alist.key-cancellation = #'(extra-space . -1.2)
  \key c \major
  \DSAlCoda
  c1 |
}

\score {
  \new Staff \violin
  \layout { }
}


Die numerischen Werte mußt Du allerdings bei anderer KeySignature/KeyCancellation neu ausprobieren.

Gruß,
  Harm

DAccord

Guten Abend Harm,

danke für die Begrüßung.
Deine Lösung gefällt mir gut. Dass ich die Werte bei Bedarf immer ändern muss, ist kein Problem - ist ja außerhalb von meiner eigentlichen Definition/Variablen.

Zitat von: harm6 am Montag, 24. Mai 2021, 19:23
Eigentlich brauchts Du keine Lücke am Zeilenende zu lassen, wenn die Coda sowieso erst in der nächsten Zeile anfängt.

D.h. du würdest die erste Zeile bis an den rechten Rand gehen lassen? Ich habe das in meinem Code-Beispiel probiert, indem ich den Cadenza-Teil auskommentiert habe. Dann meckert aber lilypond wegen zwei gleichzeiter Mark-Ereignisse ... Könntest du mir hier noch helfen?

Liebe Grüße,
DAccord

harm6

Zitatdu würdest die erste Zeile bis an den rechten Rand gehen lassen?
Falls die Coda sowieso in einer neuen Zeile beginnt, ja, auf jeden Fall.

ZitatIch habe das in meinem Code-Beispiel probiert, indem ich den Cadenza-Teil auskommentiert habe. Dann meckert aber lilypond wegen zwei gleichzeiter Mark-Ereignisse
Ein bekanntes Problem...

Dazu gibt es diverse LSR-snippets, einen engraver und eine music-function:

Hier findest Du den engraver, sowie links zu den LSR-snippets:
http://lilypond.1069038.n5.nabble.com/Nice-workaround-for-simultaneous-rehearsal-marks-thanks-Neil-td3086.html

Und hier meinen eigenen Versuch zum Thema, die music-function:
https://codereview.appspot.com/577180043
Das hatte ich schon als patch vorgestellt, ist momentan noch zurück gestellt.

Gruß,
  Harm

DAccord

Danke nochmal für die schnelle Hilfe.
Ich werde mal probieren wie weit ich komme und melde mich bei Problemen nochmal.

Viele Grüße,
DAccord