Autor Thema: Text in der Wiederholungsvorgabe verändern  (Gelesen 2494 mal)

matrices

  • Member
Text in der Wiederholungsvorgabe verändern
« am: Montag, 29. August 2011, 20:05 »
Hallo,
ich habe Wiederholungsklammern gesetzt. Leider gefällt mir die Schriftart nicht und habe nicht herausfinden können, wie ich "1. Strophe" in italic und font-size 4 ändern kann.

folgende Syntax dazu:
\set Score.repeatCommands = #'((volta "1."))

"1." in (volta "1.") soll also verändert werden.

Grüße

harm6

  • Member
Re: Text in der Wiederholungsvorgabe verändern
« Antwort #1 am: Montag, 29. August 2011, 21:48 »
Hallo matrices,

so kanns gehen:

\version "2.14.2"

voltaItalicOne = \markup { \text \fontsize #4 \italic "1." }
voltaItalicTwo = \markup { \text \fontsize #4 \italic "2." }

\relative c'' {
  c1
  \set Score.repeatCommands = #(list (list 'volta voltaItalicOne) 'start-repeat)
  c4 b d e
   \set Score.repeatCommands = #(list (list 'volta #f) (list 'volta voltaItalicTwo) 'end-repeat)

  f1
  \set Score.repeatCommands = #'((volta #f))
}

Gruß,
  Harm


matrices

  • Member
Re: Text in der Wiederholungsvorgabe verändern
« Antwort #2 am: Dienstag, 30. August 2011, 11:30 »
Hallo Harm,
so steht es auch im Handbuch, doch leider kann ich es nicht umsetzen. Auch Deine Antwort konnte ich nicht auf meinen Bedarf zuschneidern. Vielleicht noch ein zweiter Versuch.
Ich gebe mal meine Syntax vor:

Melodie = {
  \clef treble
  \key c \major
  \time 3/4
    \override Voice.TextScript #'font-shape = #'italic
    \override Voice.TextScript #'font-size = #-4
   d''2.~ d''4 r4 r8 d''8 c''2 bes'4 a' r2
   gis'4 b' d'' e''2 r4 r4 f''2 e'' r4
   bes'2 r4 cis''2 r4 a'4^"1.Strophe"( d'')_"3. Strophe"_( r8 cis''8) d''2.
   r4 e''2 bes''4( a'') g'' r4 d''2_"3. Strophe"_\( e''8^"1. Strophe"( d'')\) e''2 r4 d''4( bes') a' r2
   g''4( fis'') b' c''2.
   \set Score.repeatCommands = #'((volta "1."))
                r2 a'4( cis'') g''2~ g'' cis''4 d''2.
   \set Score.repeatCommands = #'((volta #f) (volta "3.") end-repeat) 
                r2 a'4 cis'' d'' g''~ g'' g'' cis'' d''2.
   \set Score.repeatCommands = #'((volta #f))   
                \bar "|."   
}

Ein 'start-repeat  darf nicht verwendet werden, da sonst ein Wiederholungstaktstrich eingetragen wird, der an dieser Stelle falsch wäre. Meine Syntax funktioniert vollkommen. Ich hätte eben nur gern die Schrift und den Text innerhalb der Wiederholungsklammer verändert.
Grüße

harm6

  • Member
Re: Text in der Wiederholungsvorgabe verändern
« Antwort #3 am: Dienstag, 30. August 2011, 13:01 »
Hallo matrices,

ich vermute mal das Problem bei der Umsetzung liegt in der korrekten Angabe des Arguments von repeatCommands.

Zur Erklärung:

\set Score.repeatCommands erwartet eine Liste von Listen als Eingabe.

Dabei ist zu beachten, daß es zwei grundsätzliche Möglichkeiten gibt Listen in scheme anzugeben (alles was ein #-Zeichen zu Beginn aufweist ist ein scheme-Ausdruck).
1.  '(1 2 3 4) ist eine Liste, die wörtlich übernommen und benutzt wird. Das heißt aber auch, daß ein wie auch immer gearteter Prozeß innerhalb der Liste nicht ausgeführt wird. (Für pairs gilt das Gleiche: '(3 . 6)).
Beispiel: \override TextScript #'extra-offset = #'(3 . 6) funktioniert
             \override TextScript #'extra-offset = #'((+ 1 2)  . 6) funktioniert eben nicht.
2. (list 1 2 3 4) ist die zweite Möglichkeit. Hier sind Prozesse ausführbar. (pairs werden (cons 3 6) angegeben)
             \override TextScript #'extra-offset = #(cons (+ 1 2)   6) funktioniert.

Konkret hast Du hier: \set Score.repeatCommands = #'((volta #f) (volta "3.") end-repeat)  eine Liste mit
(volta #f)    (Liste!)
(volta "3.")  (Liste!)
end-repeat  (einzelner Ausdruck)
als Inhalt.
Diese Liste wird des ' wegen nur zitiert, eine Auswertung der einzelnen Inhaltspunkte findet erst mal nicht statt.
Um das zu ermöglichen muß man also zur anderen Darstellung einer Liste wechseln:
(list (list 'volta #f) (list 'volta "3.") 'end-repeat). Die '-Zeichen stehen jetzt bei den Ausdrücken, die nicht weiter ausgewertet werden sollen.
Der Befehl
\set Score.repeatCommands = #'((volta #f) (volta "3.") end-repeat)
kann also auch so geschrieben werden:
\set Score.repeatCommands = #(list (list 'volta #f) (list 'volta "3.") 'end-repeat).
Ist natürlich ein höherer Schreibaufwand, sodaß man in der Regel die andere Schreibweise verwendet, wenn man kann.

Ab jetzt kann man hingehen und zu berechnende Angaben einfügen.

Dein Beispiel sieht dann so aus:

\version "2.14.2"

voltaItalicOne = \markup { \text \fontsize #4 \italic "1." }
voltaItalicTwo = \markup { \text \fontsize #4 \italic "2." }
voltaItalicThree = \markup { \text \fontsize #4 \italic "3." }


Melodie = {
        %\override TextScript #'extra-offset = #(cons (+ 1 2)  6)
  \clef treble
  \key c \major
  \time 3/4
    \override Voice.TextScript #'font-shape = #'italic
    \override Voice.TextScript #'font-size = #-4
   d''2.~ d''4 r4 r8 d''8 c''2 bes'4 a' r2
   gis'4 b' d'' e''2 r4 r4 f''2 e'' r4
   bes'2 r4 cis''2 r4 a'4^"1.Strophe"( d'')_"3. Strophe"_( r8 cis''8) d''2.
   r4 e''2 bes''4( a'') g'' r4 d''2_"3. Strophe"_\( e''8^"1. Strophe"( d'')\) e''2 r4 d''4( bes') a' r2
   g''4( fis'') b' c''2.
   \set Score.repeatCommands = #(list (list 'volta voltaItalicOne))
                r2 a'4( cis'') g''2~ g'' cis''4 d''2.
   \set Score.repeatCommands = #(list (list 'volta #f) (list 'volta voltaItalicThree) 'end-repeat)
                r2 a'4 cis'' d'' g''~ g'' g'' cis'' d''2.
   \set Score.repeatCommands = #'((volta #f))   
                \bar "|."   
}

\new Voice \Melodie

HTH,
  Harm

P.S. Warum verwendest Du \relative eigentlich nicht?
 


RobUr

  • Member
Re: Text in der Wiederholungsvorgabe verändern
« Antwort #4 am: Dienstag, 30. August 2011, 15:18 »
Hallo matrices,

in Ergänzung zu Harms Beitrag:
(1) Bitte verwende verwende die Code-Funktion beim Angeben von Code (Button "#" bzw. [code]<snippet>[/code]).

(2) Warum setzt Du Wiederholungen nicht in die entsprechende \repeat-Umgebung? Dazu ist es ja gedacht.
\version "2.14.2"

voltaItalicOne = \markup { \text \fontsize #4 \italic "1.–2. Strophe" }
voltaItalicThree = \markup { \text \fontsize #4 \italic "3. Strophe" }

Melodie = {
%\clef treble
%\key c \major
\time 3/4
\override Voice.TextScript #'font-shape = #'italic
\override Voice.TextScript #'font-size = #-4
\repeat volta 3 {
d''2.~ d''4 r4 r8 d''8 c''2 bes'4 a' r2
gis'4 b' d'' e''2 r4 r4 f''2 e'' r4
bes'2 r4 cis''2 r4 a'4^"1.Strophe"( d'')_"3. Strophe"_( r8 cis''8) d''2.
r4 e''2 bes''4( a'') g'' r4 d''2_"3. Strophe"_\( e''8^"1. Strophe"( d'')\) e''2 r4 d''4( bes') a' r2
g''4( fis'') b' c''2.
}
\alternative {
{
\set Score.repeatCommands = #(list (list 'volta voltaItalicOne))
r2 a'4( cis'') g''2~ g'' cis''4 d''2.
}
{
\set Score.repeatCommands = #(list (list 'volta #f) (list 'volta voltaItalicThree) 'end-repeat)
r2 a'4 cis'' d'' g''~ g'' g'' cis'' d''2.
%\set Score.repeatCommands = #'((volta #f))
}
}
\bar "|."   
}

\score { \Melodie }

Grüße, Robert

matrices

  • Member
Re: Text in der Wiederholungsvorgabe verändern
« Antwort #5 am: Dienstag, 30. August 2011, 22:32 »
Allen einen herzlichen Dank. Es funktioniert jetzt ganz wunderbar.

Ich habe erst seit knapp zwei Wochen dieses herrliche Programm durch Zufall im Internet entdeckt und muss nun erst einmal die Denkweise der Programmierer erarbeiten. Mir scheint, dass hier teils html und excel als Sprache verwendet wurde.

Und natürlich führen meine Flüchtigkeitsfehler wie bspw. ein falsch gesetztes oder fehlendes Leerzeichen immer wieder zu kleinen Komplikationen.
Also nochmals vielen Dank.
Herzliche Grüße
matrices
« Letzte Änderung: Dienstag, 30. August 2011, 23:09 von matrices »