Deutschsprachiges LilyPond-Forum

Spezielle Notation => Instrumentenspezifisch => Klavier/Orgel/Harfe => Thema gestartet von: alegria am Mittwoch, 22. Mai 2019, 21:10

Titel: GELÖST: Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: alegria am Mittwoch, 22. Mai 2019, 21:10
Bilder sagen mehr als 1000 Worte.

Anbei mal wie es aussehen (1) soll und wie weit ich mit meinen Bemühungen bisher kam (2 und 3).


\version "2.18.2"
\relative c''

  << { a2 b } \\ { f2 e } >>  |
  << { a2 b4 c } \\ { f,1 } >>  |
}
% zweite takt nicht komplett
\relative c''

  << { a2 b } \\ { f2( e } >>  |
  << { a2 b4 c } \\ { f,1) } >>  |
}
% besser, aber unschöne überschneidungen
\relative c''

  << {\slurDown a2( b } \\ { f2 e } >>  |
  << { a2 b4 c) } \\ { f,1 } >>  |
}


Wie immer danke im Voraus!
Titel: Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: Manuela am Donnerstag, 23. Mai 2019, 16:09
Hallo Alegria,

willkommen im Forum und viel Spaß mit Lilypond.

Eine kleine Anmerkung: Du musst nicht jeden Takt eigens in die spitzen Klammern schreiben. Ich habe deinen Code ein wenig umformatiert.

Es gibt eine Funktion, die Bögen verschiebt.

\relative c''
{
  << {
    \shape #'((0 . -2)(0 . -2)(0 . -2)(0 . -2)) Slur
    \slurDown a2( b a2 b4 c)
     } \\ { f,2 e f1 } >>
}


Ich bevorzuge, die Musik in Variablen zu definieren und die Stimmen expliziet zu definieren. Bei kurzen Stücken schau es nach viel Aufwand aus, bei umfangreicheren Scores behält man dadurch viel besser den Überblick und erhält besser lesbare Noten.

Nachstehend wird das Verschieben von Bögen insofern automatisiert, dass man nur einen Wert angeben muss, um den der Bogen vertikal verschoben wird.

\version "2.18.2"

musi = \relative c'' {
  a2_( b a2 b4 c)
}

musii = \relative c' {
  f2 e f1
}

%% eine Funktion, um Bögen vertikal zu verschieben, es dürfen auch negative Werte angegeben werden
SlUp =
#(define-scheme-function (hoch) (number?)
   #{
     \shape #`((0 . ,hoch) (0 . ,hoch) (0 . ,hoch) (0 . ,hoch)) Slur
   #})

\score {
  \new Staff
  <<
    \new Voice { \voiceOne \SlUp #-2 \musi }
    \new Voice { \voiceTwo \musii }
  >>
}
Titel: Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: Schneider am Donnerstag, 23. Mai 2019, 17:47
Zitat von: Manuela am Donnerstag, 23. Mai 2019, 16:09[...]
Es gibt eine Funktion, die Bögen verschiebt.
[...]

Oder % besser, aber unschöne überschneidungen
\relative c''
{
  << {\slurDown a2-\tweak extra-offset #'(0 . -3) ( b } \\ { f2 e } >>  |
  << { a2 b4 c) } \\ { f,1 } >>  |
}


Gruß,
Pierre

Titel: Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: harm6 am Donnerstag, 23. Mai 2019, 20:32
\shape ist natürlich immer möglich. 'extra-offset hat die bekannten Nachteile.

Hier scheint mir 'positions geeigneter:


\relative c''
{
  << { a2-\tweak positions #'(-5 . -3)_( b } \\ { f2 e } >>  |
  << { a2 b4 c) } \\ { f,1 } >>  |
}


Gruß,
  Harm
Titel: Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: alegria am Freitag, 24. Mai 2019, 20:54
Vielen Dank für die Beispiele. Klappt super!

@Manuela: Der letzte komplette Codeschnipsel kompiliert bei mir nicht und gibt diese Fehlermeldung:
Starting lilypond 2.18.2 [Untitled]...
Processing `/tmp/frescobaldi-46k593da/tmpeq58gdks/document.ly'
Parsing.../usr/share/lilypond/2.18.2/scm/ly-syntax-constructors.scm:56:23: In expression (apply (ly:music-function-extract fun) parser ...):
/usr/share/lilypond/2.18.2/scm/ly-syntax-constructors.scm:56:23: Wrong number of arguments to #<procedure #f (hoch)>
Exited with return code 1.


Und was meinst Du mit:
ZitatDu musst nicht jeden Takt eigens in die spitzen Klammern schreiben.

Aber alles andere klappt einwandfrei! :)
Titel: Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
Beitrag von: Manuela am Samstag, 25. Mai 2019, 09:56
Zitat von: alegria am Freitag, 24. Mai 2019, 20:54
@Manuela: Der letzte komplette Codeschnipsel kompiliert bei mir nicht und gibt diese Fehlermeldung:

Das ist eine Frage der Version, vor 2.19 mussten Funktionen ein wenig anders definiert werden, dieser Code sollte kompilieren:

\version "2.18.2"

musi = \relative c'' {
  a2_( b a2 b4 c)
}

musii = \relative c' {
  f2 e f1
}

%% eine Funktion, um Bögen vertikal zu verschieben, es dürfen auch negative Werte angegeben werden
SlUp =
#(define-scheme-function (parser location hoch) (number?)
   #{
     \shape #`((0 . ,hoch) (0 . ,hoch) (0 . ,hoch) (0 . ,hoch)) Slur
   #})

\score {
  \new Staff
  <<
    \new Voice { \voiceOne \SlUp #-2 \musi }
    \new Voice { \voiceTwo \musii }
  >>
}


Wegen deiner anderen Frage schreibe ich ausführlicher, wenn ich mehr Zeit habe. Oder jemand anders erklärt es  :)