Autor Thema: \alternative-Klammer schließen  (Gelesen 2321 mal)

Castor

  • Member
\alternative-Klammer schließen
« am: Samstag, 15. Februar 2014, 12:42 »
Hallo, ich schon wieder :D

ich möchte die 2. Klammer im folgenden Code gerne am Taktstrich geschlossen haben.
Ich dachte, es gibt da vllt einen einfachen Befehl für, aber die Suche in der Notationsreferenz ergab nix.

\version "2.18.0"

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }} \bar "||" \break 
  \key d \major 
  d' e fis g a b cis d cis b a g fis e d \bar "|." 
}

Danke schonmal ;)
« Letzte Änderung: Samstag, 15. Februar 2014, 12:44 von Castor »

trulli

  • Member
Re: \alternative-Klammer schließen
« Antwort #1 am: Samstag, 15. Februar 2014, 13:19 »
Vielleicht so?

\version "2.18.0"

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }} \bar "|." \break 
  \key d \major 
  d' e fis g a b cis d cis b a g fis e d
}

Gruß

harm6

  • Member
Re: \alternative-Klammer schließen
« Antwort #2 am: Samstag, 15. Februar 2014, 13:32 »
Hallo,

besser:

\version "2.18.0"

#(allow-volta-hook "||")

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }}  \bar "||" \break
  \key d \major 
  d' e fis g a b cis d cis b a g fis e d \bar "|." 
}

#(allow-volta-hook "||") gilt dann allerdings für das gesamte file.

Gruß,
  Harm

Castor

  • Member
Re: \alternative-Klammer schließen
« Antwort #3 am: Samstag, 15. Februar 2014, 13:39 »
Danke erstmal für die beiden Lösungen, aber mir gefällt beides noch nicht so ganz. Ich habe mal das betreffende Stück angehängt. An der Stelle in der Mitte des Stücks, wo es von D-Dur in G-Dur wechselt, soll die Klammer so bleiben. Nur ganz am Ende würde ich vor dem Coda die Klammer gerne schließen, ohne einen Schlussstrich setzen zu müssen (was trullis Notfall-Alternative wäre). Bei harms Lösung hätte ich - wenn ich das richtig verstehe - die erste Klammer auch geschlossen.

Weitere Vorschläge? :)

harm6

  • Member
Re: \alternative-Klammer schließen
« Antwort #4 am: Samstag, 15. Februar 2014, 17:45 »
Zitat von: Castor
An der Stelle in der Mitte des Stücks, wo es von D-Dur in G-Dur wechselt, soll die Klammer so bleiben. Nur ganz am Ende würde ich vor dem Coda die Klammer gerne schließen, ohne einen Schlussstrich setzen zu müssen (was trullis Notfall-Alternative wäre).

Das ist etwas trickreich.

Hintergrund
'allow-volta-hook' veranlaßt, daß ein senkrechter Abschlußstrich bei der VoltaBracket gesetzt wird, in Abhängigkeit vom angegebenen Taktstrich. Das gilt für das gesamte file.
Ein grob-property welches dieses macht existiert allerdings nicht.
Ein paar Taktstricharten bei denen dieser Strich gesetzt wird sind als Liste vordefiniert. siehe: bar-line.scm
Man kann mittels 'allow-volta-hook' auf top-level-niveau neue Einträge hinzufügen.
Desweiteren kann man eigene Taktstricharten recht einfach neu definieren.
c/p aus bar-line.scm:
;; definition of bar lines goes as follows:
;;
;; (define-bar-line "normal bar[-annotation]" "end of line" "start of line" "span bar")
(Es gibt auch die defineBarLine-funktion, die dasselbe macht. Mir ist der reine scheme-code aber lieber.)

Der Weg ist also:
1. definiere eine neue Taktstrichart, die dasselbe tut wie \bar "||" aber anders heißt.
2. füge diese neue Taktstrichart mittels 'allow-volta-hook' der Liste von Taktarten hinzu, bei denen der senkrechte Abschlußstrich geschrieben wird.

Ausführung:
ad 1.
#(define-bar-line "||-a" "||" #f "||")
Hier wird "||-a" definiert. Für den doppelten Taktstrich wird allerdings nach wie vor "||" benutzt, reicht also noch nicht, deshalb:
#(define-bar-line "||-b" "||-a" #f "||")
Jetzt wird für den doppelten Taktstrich "||-a" benutzt und nicht "||".

ad 2.
#(allow-volta-hook "||-a")
Hiermit wird erlaubt den senkrechten Voltastrich für "||-a" zu setzen und eben nicht für "||"

LilyPond überlistet. :D

Beispielcode:

\version "2.18.0"

#(define-bar-line "||-a" "||" #f "||")
#(define-bar-line "||-b" "||-a" #f "||")

#(allow-volta-hook "||-a")

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }}  \bar "||" \break
  \key d \major 
  d' e fis g a b cis d cis b a g fis e d cis \bar "|." \break
 
  \key c\major
  \repeat volta 2 { c,4 d e f g a b c }
  \alternative {{ b a g f } { e d c b }}  \bar "||-b" \break
  \key d \major 
  d' e fis g a b cis d cis b a g fis e d \bar "|." 
}

HTH,
  Harm

P.S.
Du solltest Deine LilyPonddateien mit der Endung .ly versehen. Ansonsten arbeiten bestimmte Funktionen nicht, z.B.: convert-ly
« Letzte Änderung: Samstag, 15. Februar 2014, 18:06 von harm6 »

trulli

  • Member
Re: \alternative-Klammer schließen
« Antwort #5 am: Samstag, 15. Februar 2014, 18:18 »
Nich möchlich...  :o

Kleine Ergänzung dazu:
mit #(allow-wäsche-waschen "60°") kann Lily deine Waschmaschine steuern und du hast mehr Zeit zum Notensetzen.  8)

Grüße

Castor

  • Member
Re: \alternative-Klammer schließen
« Antwort #6 am: Samstag, 15. Februar 2014, 19:46 »
Danke! Ich bin begeistert. Offensichtlich ist ja wirklich nichts unmöglich :)

In Verbindung mit diesem Thema ergab sich ein weiteres Problem, ich möchte aber nicht das dritte Taktstrich-Thema öffnen (dieses und https://liarchiv.joonet.de/index.php?topic=1666.0). Also würde ich gleich mal weiterfragen:

\version "2.18.0"

#(allow-volta-hook "||")

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }} \bar "||" }

\new Staff

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }} \bar "||"

  \stopStaff s1 \startStaff

  \mark \markup { \musicglyph #"scripts.coda" }
  \bar "||" c2 r4 r \bar "|." }

für das Coda am Ende des Stücks habe ich ein abgeschnittenes System-Stück mit "\stopStaff s1 \startStaff" gemacht (weiß nicht ob das die beste Lösung ist, aber es geht). Dadurch dass das System ja eigentlich noch weitergeht, wird der volta-hook auf den linken der beiden Striche von \bar "||" bezogen. Es ist vielleicht krümelkackerisch, aber gibt es eine Möglichkeit, einfach die Klammer noch ein Mü zu verlängern?

Ich hoffe ich verlange jetz nich zuviel auf einmal :/

lg Castor (:

p.s. @ trulli: wie wärs mit \override #'waschmaschine.wäsche #'wasch-mit = #60° :D
« Letzte Änderung: Samstag, 15. Februar 2014, 19:52 von Castor »

harm6

  • Member
Re: \alternative-Klammer schließen
« Antwort #7 am: Samstag, 15. Februar 2014, 20:27 »
Zitat von: trulli
Nich möchlich...  :o

Kleine Ergänzung dazu:
mit #(allow-wäsche-waschen "60°") kann Lily deine Waschmaschine steuern und du hast mehr Zeit zum Notensetzen.  8)

rofl

Zitat von: Castor
gibt es eine Möglichkeit, einfach die Klammer noch ein Mü zu verlängern?

Klar, dafür gibt es sogar ein property: shorten-pair

\version "2.18.0"


#(allow-volta-hook "||")

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {{ b a g f } { e d c b }} \bar "||" }

\new Staff

\relative c' { 
  \repeat volta 2 { c4 d e f g a b c } 
  \alternative {
    {
    b a g f
    }
    {
    %% default in this case: '(1.01 . -0.08)  
    \once \override Score.VoltaBracket.shorten-pair = #'(1.01 . -0.6)
    e d c b
    }
  }
  \bar "||"

  \stopStaff s1 \startStaff

  \mark \markup { \musicglyph #"scripts.coda" }
  \bar "||" c2 r4 r \bar "|." }

Gruß,
  Harm

Castor

  • Member
Re: \alternative-Klammer schließen
« Antwort #8 am: Sonntag, 16. Februar 2014, 11:54 »
Vielen Dank, harm! :D Jetzt sieht es einfach perfekt aus *-*