Autor Thema: GELÖST: Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit  (Gelesen 2656 mal)

alegria

  • Newbie
  • *
  • Beiträge: 17
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!
« Letzte Änderung: Samstag, 15. Juni 2019, 13:10 von alegria »

Manuela

  • Hero Member
  • *****
  • Beiträge: 549
    • Manuelas Lilypond Wiki
Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
« Antwort #1 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 }
  >>
}
« Letzte Änderung: Donnerstag, 23. Mai 2019, 16:16 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

Schneider

  • Newbie
  • *
  • Beiträge: 11
Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
« Antwort #2 am: Donnerstag, 23. Mai 2019, 17:47 »
[...]
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


harm6

  • Hero Member
  • *****
  • Beiträge: 730
Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
« Antwort #3 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

alegria

  • Newbie
  • *
  • Beiträge: 17
Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
« Antwort #4 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:
Zitat
Du musst nicht jeden Takt eigens in die spitzen Klammern schreiben.

Aber alles andere klappt einwandfrei! :)

Manuela

  • Hero Member
  • *****
  • Beiträge: 549
    • Manuelas Lilypond Wiki
Antw:Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit
« Antwort #5 am: Samstag, 25. Mai 2019, 09:56 »
@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  :)
Danke für eure Hilfe
viele Grüße
-- Manuela