So wenig Noten, so viele Bögen (und Begrenzungsstriche)

Begonnen von marrier, Freitag, 8. September 2017, 19:26

« vorheriges - nächstes »

marrier

Hallo zusammen, ich habe ein Problem beim Satz eines Kirchenliedes und zwar bekomme ich die Bögen sowie die Begrenzungsstriche nicht hin. Die letzten Noten sollen wie folgt aussehen:


Allerdings bekomme ich es mit folgendem Beispiel:
\score
{
<<
\new Staff
{
\set Staff.midiInstrument = #"church organ"
<<
\new Voice = "first"
{
\relative
{
\key g \major
\voiceOne
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
\override Score.BarNumber.break-visibility = #'#(#f #f #f)
\override Score.Clef.break-visibility = #'#(#f #f #f)
\time 3/4
#(define afterGraceFraction (cons 2 4))
e''8 e4 d8 b4 (\afterGrace b1
{
\override Stem #'stencil = ##f
b4 a g
\override Stem #'stencil = ##t
\set Timing.defaultBarType = "!"
}
a2)
\bar ":|."
}
}
\new Voice = "second"
\relative
{
\voiceTwo
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
\override Score.BarNumber.break-visibility = #'#(#f #f #f)
\override Score.Clef.break-visibility = #'#(#f #f #f)
e'8 <e g>4 <d fis>8 <d g>4 \( (<d g>1) (<d fis>2)\)
\bar ":|."
}
>>
}
\new Staff
{
\set Staff.midiInstrument = #"trumpet"
<<
\new Voice = "third"
{
\relative
{
\clef bass
\key g \major
\voiceOne
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
\override Score.BarNumber.break-visibility = #'#(#f #f #f)
\override Score.Clef.break-visibility = #'#(#f #f #f)
\time 3/4
c'8 b4 a8 <b g>4 (\(<b g>1\) a2)
\bar ":|."
}
}
\new Voice = "fourth"
\relative
{
\voiceTwo
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
\override Score.BarNumber.break-visibility = #'#(#f #f #f)
\override Score.Clef.break-visibility = #'#(#f #f #f)
c8 c4 d8 g,4 (\(g1\) d'2)
\bar ":|."
}
>>
}
\new Lyrics \lyricsto "first"
{
e -- lé -- i -- son. __
}
>>
\layout
{
}
}


nur zu folgendem Ergebnis:


Sobald ich versuche, mehr Bögen zu ergänzen, kommt es eigtl. immer zu einer Fehlermeldung. Ich wäre dankbar für Lösungsansätze, damit die Bögen oben und unten korrekt gesetzt werden können und auch für eine Idee, wie man die Begrenzungssymbole um die ganze Note hinbekommt.

ingmar

"Begrenzungssymbole um die ganze Note"?

Ich glaube, was du meinst, sind breves: { c'\breve }

Die dauern doppelt so lang wie eine Ganze; entsprechend solltest du den Takt verlängern.

--ingmar

marrier

Zitat von: ingmar am Freitag,  8. September 2017, 19:55
"Begrenzungssymbole um die ganze Note"?

Ich glaube, was du meinst, sind breves: { c'\breve }
Danke Ingmar, das ist tatsächlich das gesuchte Zeichen. Nun ist mein Problem, egal wie ich \breve anbringe, es führt zu einem Fehler, Beispiele:
\( (<d g>1)\breve (<d fis>2)\)
c8 c4 d8 g,4 (\(g1\breve \) d'2)


Ergibt immer Fehler: syntax error, unexpected DURATION_IDENTIFIER

Vielleicht ist auch hier mein Problem bei den Bögen begraben?

ingmar

wie wärs damit:

\version "2.19.64"
\score { <<
\new Staff <<
\set Staff.midiInstrument = #"church organ"
\new Voice = "first" \relative {
\key g \major
\voiceOne
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
% \override Score.BarNumber.break-visibility = #'#(#f #f #f)
% \override Score.Clef.break-visibility = #'#(#f #f #f)
\time 3/4
#(define afterGraceFraction (cons 2 4))
e''8 e4 d8 b4(
\override Staff.TimeSignature.stencil = ##f
\afterGrace b\breve {
\override Stem #'stencil = ##f
b4 a g
\override Stem #'stencil = ##t
\set Timing.defaultBarType = "!"
}
a2)
\bar ":|."
}
\new Voice = "second" \relative {
\voiceTwo
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
% \override Score.BarNumber.break-visibility = #'#(#f #f #f)
% \override Score.Clef.break-visibility = #'#(#f #f #f)
e'8 <e g>4 <d fis>8 <d g>4 \( ~ <d g>\breve (<d fis>2)\)
\bar ":|."
}
>>
\new Staff <<
\set Staff.midiInstrument = #"trumpet"
\new Voice = "third" \relative {
\clef bass
\key g \major
\voiceOne
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
% \override Score.BarNumber.break-visibility = #'#(#f #f #f)
% \override Score.Clef.break-visibility = #'#(#f #f #f)
\time 3/4
c'8 b4 a8 <b g>4\(  ~ <b g>\breve a2 \)
\bar ":|."
}
\new Voice = "fourth" \relative {
\voiceTwo
\autoBeamOff
\override BreathingSign #'text = \markup { \musicglyph #"scripts.rvarcomma" }
% \override Score.BarNumber.break-visibility = #'#(#f #f #f)
% \override Score.Clef.break-visibility = #'#(#f #f #f)
c8 c4 d8 g,4 (\( g\breve \) d'2)
\bar ":|."
}
>>
\new Lyrics \lyricsto "first" {
e -- lé -- i -- son. __
}
>> }

ingmar

...ich muss dir allerdings sagen, es ist nicht ganz einfach, sich in dieser unübersichtlichen Struktur zurechtzufinden.

Darum hab ich erstmal die überflüssigen Einrückungen und Zeilenumbrüche beseitigt, die nach meiner Meinung nicht helfen. Für ein "Minimalbeispiel" würde ich dir auch empfehlen, den MIDI-Kram und die (eh leere) Layout-Anweisung wegzulassen. Ich hab auch ein paar Zeilen auskommentiert, deren Effekt mir nicht klar war. Vielleicht haben sie trotzdem einen Sinn...

Grundsätzlich würde ich dir vor allem raten, den eigentlichen Notentext (mit Bindebögen natürlich) immer in Variablen zu verpacken und diese dann in der \score-Struktur einzusetzen; damit gewinnst du sehr viel Übersicht.

Nach meiner Meinung bestand ein Teil deines Problems darin, dass du statt Binde- Legatobögen verwendet hast (http://lilypond.org/doc/v2.18/Documentation/learning/ties-and-slurs.de.html).

--ingmar

ingmar

Du schlägst vor:

\( (<d g>1)\breve (<d fis>2)\)
c8 c4 d8 g,4 (\(g1\breve \) d'2)


Da gehen gleich zwei Sachen durcheinander:

  • Du glaubst offenbar, das, was du binden willst, mit Klammern einkreisen zu müssen. Das ist falsch! Die öffnende Klammer (beginnender Bogen) muss an das erste Event angehängt werden, daher empfiehlt es sich auch immer, dies unmittelbar zu tun und anschließend dann ein Leerzeichen zu setzen. Schau dir die Beispiele auf der von mir verlinkten Seite einmal genau (!) an.
  • Die Längenangabe der ersten Note ist \breve, also hier <d g>\breve, nicht "1\breve"!

Beides ist am Anfang jedem hier hundertmal passiert, also keine Panik.

--ingmar


harm6

#7
Hallo zusammen,

ich bin mal von Ingmars Vorarbeit ausgegangen und habe es dann nach meinem Gutdünken gesetzt.


\version "2.19.64"

\layout {
  \context {
    \Voice
% \autoBeamOff
% \override BreathingSign.text =
%   \markup { \musicglyph #"scripts.rvarcomma" }
  }
  \context {
  \Score
%% \override BarNumber.break-visibility = ##(#f #f #f)
%% \override Clef.break-visibility = ##(#f #f #f)
  }
}

oneUp =
  \relative {
    \key g \major
    \voiceOne
    \time 3/4
    e''8 e4 d8 b4(
    \cadenzaOn
    b\breve \grace { \omit Stem b4 a g \undo \omit Stem \bar "!" }
    a2)
    \cadenzaOff
    \bar ":|."
  }
 
oneDown =
  \relative {
    \voiceTwo
    e'8 <e g>4 <d fis>8 <d g>4(~
    <d g>\breve~
    <d fis>2)
  }
 
twoUp =
  \relative {
    \clef bass
    \key g \major
    \voiceOne
    \time 3/4
    c'8 b4 a8 <b g>4(~
    <b g>\breve
    a2)
  } 
 
twoDown =
  \relative {
    \voiceTwo
    c8 c4 d8 g,4~(
    g\breve
    d'2)
  }
 
lyr =
  \lyricmode {
    e -- lé -- i -- son. __
  }

\score {
  <<
\new Staff \with { midiInstrument = #"church organ" }
  <<
\new Voice = "first" \oneUp                     
\new Voice = "second" \oneDown
  >>

\new Lyrics \lyricsto "first" \lyr

\new Staff \with { midiInstrument = #"trumpet" }
  <<
\new Voice = "third" \twoUp
\new Voice = "fourth" \twoDown
  >>
  >>
}


Die Kritikpunkte, die Ingmar schon ansprach kann ich nur unterstreichen.
Auch scheint Dir, Marrier, nicht klar zu sein das es Haltebögen, Bindebögen (legato) und Phrasierungsbögen gibt. Als ausführender Musiker weiß jeder, daß ein Haltebogen etwas anderes ist als ein legato. LilyPond reflektiert das sehr genau.
Das Erscheinungsbild von Haltebögen und Bindebogen ist deshalb ein anderes.
Sobald Gesangstext ins Spiel kommt sind auch Binde- und Phrasierungsbögen verschieden, nicht sosehr in ihrem Erscheinungsbild als vielmehr in ihrer Bedeutung für Melismen.

In Deinem Beispiel braucht man nur Halte- und Bindebögen und schon trift das Endergebnis die Vorlage sehr viel genauer ohne einen einzigen Bogen zurecht zu "tweaken".

Ich rate dazu das learning-manual noch mal genau zu studieren. Eine Menge dessen was ich oben nicht thematisiert aber doch verändert habe ist dort erklärt.
Der einzige Punkt bei dem ich nicht sicher bin, ob es in den docs zu finden ist:
Angaben wie instrumentName oder midiInstrument gehören in einen with-Block, ansonsten gibts manchmal Probleme mit Seiteneffekten von issue 34.


Gruß,
  Harm

EDIT
Fehler im layout korrigiert, sowie dort neuere Syntax

marrier

Zitat von: ingmar am Freitag,  8. September 2017, 20:46
...ich muss dir allerdings sagen, es ist nicht ganz einfach, sich in dieser unübersichtlichen Struktur zurechtzufinden.
Danke dir dann trotzdem fürs durchsteigen. Das Problem beim Lernen jeder neuen Programmiersprache ist es eben erstmal die Syntax zu durchdringen. Ich persönlich finde z.B. durchaus Klammerung in Einrückungsebenen wichtig um den Überblick zu behalten. Ein Problem ist dann das basteln der Konstrukte geworden, deshalb sieht dieses Beispiel so wirr aus.

Zitat von: ingmar am Freitag,  8. September 2017, 20:46
Darum hab ich erstmal die überflüssigen Einrückungen und Zeilenumbrüche beseitigt, die nach meiner Meinung nicht helfen. Für ein "Minimalbeispiel" würde ich dir auch empfehlen, den MIDI-Kram und die (eh leere) Layout-Anweisung wegzulassen. Ich hab auch ein paar Zeilen auskommentiert, deren Effekt mir nicht klar war. Vielleicht haben sie trotzdem einen Sinn...
Ich habe hier die unangenehme Erfahrung gemacht, dass je nach Kontext auch diese leere Anweisung einen Unterschied macht. Ich erinnere mich nicht mehr genau, aber als ich begonnen habe gab es teils interessante Effekte zwischen lilypond und lilypond-book, weshalb ich mir jetzt eine Standardstruktur angewöhnt habe. Hätte ich vorher nochmal probieren müssen, was man fürs Minimalbeispiel wirklich braucht. Der Effekt der auskommentierten Zeilen wird teilweise erst sichtbar, wenn man einen Zeilenumbruch hat. Der eine Befehl nimmt die Taktnummern raus, der andere lässt Notenschlüssel nur in der ersen Zeile erscheinen.

Zitat von: ingmar am Freitag,  8. September 2017, 20:46
Grundsätzlich würde ich dir vor allem raten, den eigentlichen Notentext (mit Bindebögen natürlich) immer in Variablen zu verpacken und diese dann in der \score-Struktur einzusetzen; damit gewinnst du sehr viel Übersicht.
Um ehrlich zu sein habe ich hier den Sinn noch nicht verstanden. Da schreibe ich irgendwo oben die gesamten Noten in eine Variable, damit ich diese unten wieder einbinde? Wenn man häufig die selben Motive hat, leuchtet mir das ein, aber so habe ich da bislang keinen großen Nutzen gesehen. Ich lerne aber gerne dazu!

Zitat von: ingmar am Freitag,  8. September 2017, 20:46
Nach meiner Meinung bestand ein Teil deines Problems darin, dass du statt Binde- Legatobögen verwendet hast (http://lilypond.org/doc/v2.18/Documentation/learning/ties-and-slurs.de.html).
Ja das war auch schon eine Notlösung, da ich es weder geschafft habe Binde- noch Legatobögen mehrfahc zu verwenden und entsprechend zu verschachteln. Deswegen habe ich mich einfach bei beiden bedient.

marrier

Zitat von: ingmar am Freitag,  8. September 2017, 21:06
Du schlägst vor:

\( (<d g>1)\breve (<d fis>2)\)
c8 c4 d8 g,4 (\(g1\breve \) d'2)


Da gehen gleich zwei Sachen durcheinander:

  • Du glaubst offenbar, das, was du binden willst, mit Klammern einkreisen zu müssen. Das ist falsch! Die öffnende Klammer (beginnender Bogen) muss an das erste Event angehängt werden, daher empfiehlt es sich auch immer, dies unmittelbar zu tun und anschließend dann ein Leerzeichen zu setzen. Schau dir die Beispiele auf der von mir verlinkten Seite einmal genau (!) an.
  • Die Längenangabe der ersten Note ist \breve, also hier <d g>\breve, nicht "1\breve"!
Korrekt, genau das ist das Problem in der Denkweise gewesen. Für mich ergab eine öffnende Klammer am Ende keinen Sinn, ich hatte mich schon immer gewundert, dass man nur die zweite Note "einkklammern" muss, was aber gar kein Einklammern ist.

Zitat von: ingmar am Freitag,  8. September 2017, 21:06
Beides ist am Anfang jedem hier hundertmal passiert, also keine Panik.
Ist bei dem Funktionsumfang von Lilypond auch kein Wunder, ist einfach gigantisch, was man hier alles machen kann. Da fehlt einem dann teilweise der Überblick als Einsteiger.

marrier

Hallo Harm,
Zitat von: harm6 am Freitag,  8. September 2017, 22:50
ich bin mal von Ingmars Vorarbeit ausgegangen und habe es dann nach meinem Gutdünken gesetzt.
vielen Dank, das sieht aus meiner Sicht genau so aus, wie es soll!

Zitat von: harm6 am Freitag,  8. September 2017, 22:50
Die Kritikpunkte, die Ingmar schon ansprach kann ich nur unterstreichen.
Wie gesagt, bei manchen Punkten steige ich nicht mehr in die Kriege ein, die hier geführt werden (https://de.wikipedia.org/wiki/Einr%C3%BCckungsstil) sondern eigne mir den Stil an, mit dem ich am besten klar komme. Ich habe deshalb zu Beginn der Notenerstellung den Vorteil von Variablen eher für wiederkehrende und große Stücke gesehen, nicht für Stücke mit 7 Takten. An manchen Dingen bin ich auch schlicht gescheitert, zum Beispiel gefällt mir deine Layout-Kontext-Auslagerung sehr gut, diese konnte ich aber mit vielen Anläufen nicht herstellen. Deshalb diese Wiederholungen. Kann man den Layout-Kontext-Block auch komplett auslagern in eine inkludierte Datei? Denn das habe ich in meinem echten Projekt so gelöst, allerdings bin ich auch dort verzweifelt, was man auslagern kann und was nicht.

Zitat von: harm6 am Freitag,  8. September 2017, 22:50
Auch scheint Dir, Marrier, nicht klar zu sein das es Haltebögen, Bindebögen (legato) und Phrasierungsbögen gibt. Als ausführender Musiker weiß jeder, daß ein Haltebogen etwas anderes ist als ein legato. LilyPond reflektiert das sehr genau.
Das Erscheinungsbild von Haltebögen und Bindebogen ist deshalb ein anderes.
Sobald Gesangstext ins Spiel kommt sind auch Binde- und Phrasierungsbögen verschieden, nicht sosehr in ihrem Erscheinungsbild als vielmehr in ihrer Bedeutung für Melismen.
Doch, wie schon geschrieben habe ich die Bedeutung der verschiedenen Bögen mehrfach nachgelesen, als ich eingestiegen bin. Hier ging es aber irgendwann nur noch ums funktionieren, nicht mehr darum ob es technisch korrekt umgesetzt ist. Mein Denkfehler war der von Ingmar skizzierte, ich habe die öffnende Klammer falsch zugeordnet und mich damit der Funktionen beraubt, due lilybond eigtl. bereitsstellt. Und dann fing der Missbrauch der falschen Bögen an.

Zitat von: harm6 am Freitag,  8. September 2017, 22:50
In Deinem Beispiel braucht man nur Halte- und Bindebögen und schon trift das Endergebnis die Vorlage sehr viel genauer ohne einen einzigen Bogen zurecht zu "tweaken".
Das ist der Hammer und sieht aus meiner Sicht so aus, wie im Original, danke!

Zitat von: harm6 am Freitag,  8. September 2017, 22:50
Ich rate dazu das learning-manual noch mal genau zu studieren. Eine Menge dessen was ich oben nicht thematisiert aber doch verändert habe ist dort erklärt.
Der einzige Punkt bei dem ich nicht sicher bin, ob es in den docs zu finden ist:
Angaben wie instrumentName oder midiInstrument gehören in einen with-Block, ansonsten gibts manchmal Probleme mit Seiteneffekten von issue 34.
Danke für die Tipps, ich sehe mich mal weiter um und melde mich wenn ich wieder mit dem Kopf vor der Wand hänge.

harm6

Zitat von: marrier
[Ich] eigne mir den Stil an, mit dem ich am besten klar komme. Ich habe deshalb zu Beginn der Notenerstellung den Vorteil von Variablen eher für wiederkehrende und große Stücke gesehen, nicht für Stücke mit 7 Takten.

Selbst für kleine Sachen empfiehlt es sich, da dadurch die Struktur des finalen score-Block schon auf den ersten Blick eingängig ist.

Zitat von: marrier
An manchen Dingen bin ich auch schlicht gescheitert, zum Beispiel gefällt mir deine Layout-Kontext-Auslagerung sehr gut, diese konnte ich aber mit vielen Anläufen nicht herstellen. Deshalb diese Wiederholungen. Kann man den Layout-Kontext-Block auch komplett auslagern in eine inkludierte Datei? Denn das habe ich in meinem echten Projekt so gelöst, allerdings bin ich auch dort verzweifelt, was man auslagern kann und was nicht.

Man kann seeeehr viel auslagern, ein layout kann ebenfalls in eine Variable gepackt und somit in eine separate Datei ausgelagert werden.
Das Problem ist häufig, daß diese Datei dann ungünstig bis falsch inkludiert wird oder der Inhalt der inkludierten Datei schlecht bis falsch aufgerufen wird.
Aber da kommt es auf denn konkreten Fall an. Im Zweifel frag halt hier im Forum. ;)

Gruß,
  Harm

harm6

Noch zwei Anmerkungen:

Zitat von: marrier
Zitat von: harmAuch scheint Dir, Marrier, nicht klar zu sein das es Haltebögen, Bindebögen (legato) und Phrasierungsbögen gibt. Als ausführender Musiker weiß jeder, daß ein Haltebogen etwas anderes ist als ein legato. LilyPond reflektiert das sehr genau.
Das Erscheinungsbild von Haltebögen und Bindebogen ist deshalb ein anderes.
Sobald Gesangstext ins Spiel kommt sind auch Binde- und Phrasierungsbögen verschieden, nicht sosehr in ihrem Erscheinungsbild als vielmehr in ihrer Bedeutung für Melismen.
Doch, wie schon geschrieben habe ich die Bedeutung der verschiedenen Bögen mehrfach nachgelesen, als ich eingestiegen bin. Hier ging es aber irgendwann nur noch ums funktionieren, nicht mehr darum ob es technisch korrekt umgesetzt ist. Mein Denkfehler war der von Ingmar skizzierte, ich habe die öffnende Klammer falsch zugeordnet und mich damit der Funktionen beraubt, due lilybond eigtl. bereitsstellt. Und dann fing der Missbrauch der falschen Bögen an.

Ok.
Aber bitte schreibe demnächst eine Anmerkung, daß der gepostete Code bereits ein Versuch ist ein Problem zu umgehen. Oder besser beschreib nur das Problem. ;)
Hier wäre das etwas wie:
"Wie kann ich das gepostete Bild coden"
Dazu dann ein Code Beispiel ohne jegliche Bögen, etc

Zitat von: marrier
Das Problem beim Lernen jeder neuen Programmiersprache ist es eben erstmal die Syntax zu durchdringen.
[pedantenModusAn]
Eigentlich verwendet LilyPond eine Eingabesprache, es ist keine Programmiersprache. Dafür ist scheme, genauer guile, da.
[/pedantenModusAus]
;)


Gruß,
  Harm

Hilflos-im-Code

Ich sage jetzt mal was zu denen, die sich zu diesen Fragestellungskritiken hinreißen lassen. Die Leute stellen ein Problem ein, wenn Sie nicht mehr weiter wissen. Wären Sie so weit, dass sie das tun, was euch nötig erscheint, hätten Sie das Problem wahrscheinlich nicht mehr. Und Lilypond hat das Problem, dass es wirren Code regelrecht herausfordert. Wenn ich an einer Note etwas dranschreiben will, dann kommt ein ellenlanger Befehl, zum Teil vor und hinter der Note wenn dann noch an der nächsten Note etwas gemacht wird, dann fängt schon das Chaos an.

Das ein Minimalbeispiel hilfreich ist, ist ein Hinweis darauf, wie undurchsichtig so ein Lilypondcode ist. Das die Leute es nicht von selber tun, bedeutet, dass der Code so unübersichtlich ist, sodass es ihnen schwer fällt, das Problem einzugrenzen.

ingmar

#14
hallo,

Einrückungsstile, Minimalbeispiele, die Komplexität der LilyPond-Syntax und die Schwierigkeiten beim Einstieg sind wichtige und interessante Themen, die ich gerne diskutieren möchte - am liebsten aber in eigenen Threads. Bitte nicht falsch verstehen, ich will niemanden abwürgen, möchte aber solche Diskussionen in einem halben Jahr noch wiederfinden können.

Gruß,
--ingmar