Notationsspezifisch > Noten für Gitarre

TextSpanner-Befehl für Barré-Angabe abkürzen

(1/4) > >>

Castor:
Wie kann ich diesen Befehl


--- Code: ---\override TextSpanner #'(bound-details left text) = \markup { \upright "X " }
--- Ende Code ---

so abkürzen, dass ich nur noch das, was in den Anführungszeichen steht, zu schreiben brauch? Also etwas wie:


--- Code: ---\barre "X "
--- Ende Code ---

Ist das möglich? Vielen Dank schonmal!

lg Castor

fugenkomponist:
Das ist möglich. Folgender Code ist ungetestet (mangels kompilierbarem Beispiel, bitte in Zukunft immer eins angeben):

--- Code: ---\version "2.18.0"
barre = #(define-music-function
          (parser location str)
          (string)
          #{
            \override TextSpanner.bound-details.left.text = \markup \upright #str
          #})
--- Ende Code ---

eluze:

--- Zitat von: Castor am Sonntag,  9. Februar 2014, 10:13 ---Wie kann ich diesen Befehl


--- Code: ---\override TextSpanner #'(bound-details left text) = \markup { \upright "X " }
--- Ende Code ---

so abkürzen, dass ich nur noch das, was in den Anführungszeichen steht, zu schreiben brauch? Also etwas wie:


--- Code: ---\barre "X "
--- Ende Code ---

--- Ende Zitat ---

hier wird das leerzeichen eingesetzt und der spanner gleich gestartet.
anführungszeichen sind bei einfachen zeichenfolgen nicht nötig.

--- Code: ---\version "2.19.2"
bx=#(define-music-function
     (parser location str)
     (string?)
     #{ \override TextSpanner.bound-details.left.text=\markup \upright \concat {$str " "}
        <> \startTextSpan
     #})
\relative c'{
  c d \bx IIX d c
  c c c \stopTextSpan f,
  c'1
}
--- Ende Code ---
Eluze

Castor:
Vielen Dank!

@ Eluze: ist es auch möglich, dass der \bx-befehl sich genauso verhält wie der \startTextSpanner-befehl, also der spanner an der note startet, an die der befehl hinten dran gesetzt ist, und nicht erst bei der nächsten? ist zwar nicht soooo wichtig, würde mir aber besser gefallen. das wäre lieb (:
denn z.b. bei folgendem code
--- Code: ---\version "2.18.0"

bx = #(define-music-function
  (parser location str)
  (string?)
    #{ \override TextSpanner.bound-details.left.text =
       \markup \upright \concat {$str " "}
        <> \startTextSpan
    #})

\relative c'' {

\bx III \acciaccatura f,8 g d' bes g' \acciaccatura { e16-4 d-1 }
<e-3>8 bes g' d\stopTextSpan | }
--- Ende Code ---

beginnt die röm III schon über dem acciaccatura-f und nicht über g danach und überhaupt wäre es so praktischer. denn einfach so:


--- Code: ---\acciaccatura \bx III f,8 g d' ... usw.
--- Ende Code ---

geht es leider nicht.


@ fugenkomponist: ich hatte nur nach so einem "barre = define blablabla" dingens gesucht, wie du und Eluze für mich gemacht habt, und deshalb nicht dran gedacht, dass ein beispiel vllt hilfreich wäre. aber hättest es ja einfach an .. was weiß ich ..


--- Code: ---\relative c' { c1 c c }
--- Ende Code ---

oder so ausprobieren können, was vllt sogar schneller gegangen wäre als es auf irgendein bsp von mir anzuwenden ..

lg Castor

eluze:

--- Zitat von: Castor am Sonntag,  9. Februar 2014, 13:22 ---Vielen Dank!

@ Eluze: ist es auch möglich, dass der \bx-befehl sich genauso verhält wie der \startTextSpanner-befehl, also der spanner an der note startet, an die der befehl hinten dran gesetzt ist, und nicht erst bei der nächsten? ist zwar nicht soooo wichtig, würde mir aber besser gefallen.
 
--- Ende Zitat ---

so geht es nicht: bx definiert sowohl den text wie auch den startpunkt.

du kannst aber bx so definieren, dass nur der text dort definiert wird und dann normal deinen \startTextSpan und \stopTextSpan setzen.


--- Code: ---bx = #(define-music-function
       (parser location str)
       (string?)
       #{ \override TextSpanner.bound-details.left.text=\markup \upright \concat {$str " "}
       #})

\relative c'' {
  \acciaccatura f,8 \bx III g \startTextSpan d' bes g' \acciaccatura { e16-4 d-1 } <e-3>8 bes g' d\stopTextSpan |
}
--- Ende Code ---

Eluze

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln