Autor Thema: Atemzeichen in Klammern  (Gelesen 3015 mal)

friedemann_bach

  • Member
Atemzeichen in Klammern
« am: Mittwoch, 14. September 2011, 23:57 »
Liebes Forum,

wer (außer mir) mal ein Atemzeichen in Klammern setzen wollte (mit \parenthesize \breathe), dem wird aufgefallen sein, dass die Klammer nicht richtig positioniert wird (siehe PDF im Anhang).

Da ich die Frage schon ans Forum geben wollte, jetzt aber doch selbst eine Lösung gefunden habe, möchte ich sie Euch nicht vorenthalten.

Die Klammer lässt sich mit #'extra-offset = #'(-2.4 . 0) gut positionieren. Das ganze kann man auch in eine Variable schreiben, falls man mehr davon braucht. Hier der Code:

\version "2.14.1"
\include "deutsch.ly"

breathePar = {
\parenthesize \breathe
\override ParenthesesItem #'extra-offset = #'(-2.4 . 0)
}

Melodie = \relative f' {
\key c \major
\time 2/2
% hier geht's schief
b4 des2 des4 c \parenthesize \breathe
as4 b2
\bar "||"
% aber so passt es wieder
b4 des2 des4 c \parenthesize \breathe
\override ParenthesesItem #'extra-offset = #'(-2.4 . 0)
as4 b2
\bar "||"
% und so geht's noch kürzer
b4 des2 des4 c \breathePar
as4 b2
}

\score {
<<
\new Staff {
\clef treble
\new Voice = "Voice1" \Melodie
}
>>
}

Es wunderte mich dabei ein wenig, dass die Klammer auf Anweisungen wie #'X-offset = #-10 nicht reagiert. Lässt sich das erklären?

Freue mich über Kommentare und Verbesserungen.

harm6

  • Member
Re: Atemzeichen in Klammern
« Antwort #1 am: Donnerstag, 15. September 2011, 00:29 »
Hallo friedemann,

Deine Methode funktioniert natürlich. Ich würde allerdings das BreathingSign selbst angehen. Das führt letztendlich zu einem übersichtlicheren Code für die eigentliche Musik:

\version "2.14.1"
\include "deutsch.ly"

bs = {
        \override Staff.BreathingSign #'text =
        \markup { \parenthesize \pad-to-box #'(-0.2 . 0.1) #'(0 . 0) \musicglyph #"scripts.rcomma" }
}

Melodie = \relative f' {
        \bs
\key c \major
\time 2/2
b4 des2 des4 c \breathe
as4 b2
\bar "||"
b4 des2 des4 c \breathe
as4 b2
\bar "||"
b4 des2 des4 c \breathe
as4 b2
}

\score {
<<
\new Staff {
\clef treble
\new Voice = "Voice1" \Melodie
}
>>
}

Warum das mit dem X-offset nicht funktioniert weiß ich nicht, kommt aber öfter vor.

Gruß,
  Harm

RobUr

  • Member
Re: Atemzeichen in Klammern
« Antwort #2 am: Donnerstag, 15. September 2011, 15:24 »
Hallo alle,

hier kommen noch Ergänzungen:

(1) \parenthesize innerhalb \markup funktioniert noch nicht in 2.12.3 (syntax error, unexpected MUSIC_FUNCTION). Anbei eine lauffähige Variante, die auch in 2.14.2 funktioniert.

(2) Das „Klammerverhalten“ gefällt mir nicht besonders. Gestaltungsvorschlag siehe Code (\bsIII).

(3) Ich würde die Overrides nicht auf den Staff-Context beschränken, da in polyphonen Passagen, z.B. zwei Tenöre in einer Zeile, Atemzeichen an verschiedenen Stellen auf Voice-Context-Ebene vorkommen können.

(4) Was noch fehlt: Rücksetzen des Atemzeichens (\bsNeutral).

%\version "2.12.3"
\version "2.14.2"

\include "deutsch.ly"

%% nicht in 2.12
bsI = \override BreathingSign #'text = \markup {
\parenthesize
%\pad-to-box #'(-0.2 . 0.1) #'(0 . 0)
\pad-to-box #'(-0.4 . 0.8) #'(0 . 0)
\musicglyph #"scripts.rcomma"
}

%% default
bsII = \override BreathingSign #'text = \markup {
\musicglyph #"accidentals.leftparen"
\musicglyph #"scripts.rcomma"
\musicglyph #"accidentals.rightparen"
}

%% schöner:
bsIII = \override BreathingSign #'text = \markup {
\concat {
\teeny \musicglyph #"accidentals.leftparen"
\hspace #0.4
\musicglyph #"scripts.rcomma"
\hspace #0.3
\teeny \musicglyph #"accidentals.rightparen"
}
}

bsNeutral = \revert BreathingSign #'text

Melodie = \relative f' {
\key c \major
\time 2/2
b4 des2 des4 c \bsI \breathe
as4 b2
\bar "||"
b4 des2 des4 c \bsII \breathe
as4 b2
\bar "||"
b4 des2 des4 c \bsIII \breathe
as4 b2 \bsNeutral \breathe
}

\score {
<<
\new Staff {
\clef treble
\new Voice = "Voice1" \Melodie
}
>>
}

Grüße, Robert

friedemann_bach

  • Member
Re: Atemzeichen in Klammern
« Antwort #3 am: Freitag, 16. September 2011, 22:28 »
Sehr schön, danke!

flashgordonx

  • Member
Re: Atemzeichen in Klammern
« Antwort #4 am: Donnerstag, 17. April 2014, 23:43 »
Liebe Besucher

Was soll ich machen, wenn ich nur eine Atemzeichen zwischen Klammern sehen möchte?  8)

fugenkomponist

  • Member
Re: Atemzeichen in Klammern
« Antwort #5 am: Donnerstag, 17. April 2014, 23:53 »
Ähm, was genau meinst du? Beantwortet dieser Thread nicht deine Frage? Falls nein, hast du eine genauere Beschreibung, was du tun willst oder (noch besser) ein Codebeispiel, an dem du das erklären kannst?

flashgordonx

  • Member
Re: Atemzeichen in Klammern
« Antwort #6 am: Freitag, 18. April 2014, 00:06 »
Ich habe die obenstehende Methode in meinem Note hinzugefügt, aber alle Atemzeichen haben Klammern. Ich möchte nur eine mit Klammern sehen.

trulli

  • Member
Re: Atemzeichen in Klammern
« Antwort #7 am: Freitag, 18. April 2014, 08:37 »
Bei Robs Code geht das am einfachsten: \bsNeutral

Rücksetzen des Atemzeichens (\bsNeutral).

Grüße

harm6

  • Member
Re: Atemzeichen in Klammern
« Antwort #8 am: Freitag, 18. April 2014, 14:23 »
Hallo,

dieser Thread ist ja schon ziemlich alt. Er bezog sich auf 2.14-code bzw sogar 2.12

Man sollte nach einiger Zeit (wir sind ja jetzt bei 2.18 bzw 2.19) überprüfen, ob es keinen Fix für das ursprungliche Problem gegeben hat, d.h. welchen output ergibt die ganz normale Eingabe von
\parenthesize \breathe

Und siehe da, es funktioniert.

Falls man mit dem Raum um das BreathingSign nicht zufrieden ist so kann man mit einem override für 'X-extent nachhelfen, der default-Wert ist '(-0.0 . 0.5)
(Dieser Raum wird erstmal durch die font-metrics des BreathingSign sowie dem default-'X-extent bestimmt.)

\version "2.18.0"

\relative c' {
c4
\parenthesize \breathe
c
\once \override BreathingSign.X-extent = #'(0 . 0.4)
\parenthesize \breathe
c
\breathe
c
}

HTH,
  Harm

flashgordonx

  • Member
Re: Atemzeichen in Klammern
« Antwort #9 am: Freitag, 18. April 2014, 14:58 »
Vielen Dank.  :)