GELÖST: Legatobogen unten komplett über 2 Takte bei Mehrstimmigkeit

Begonnen von alegria, Mittwoch, 22. Mai 2019, 21:10

« vorheriges - nächstes »

alegria

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!

Manuela

#1
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 }
  >>
}
Danke für eure Hilfe
viele Grüße
-- Manuela

Schneider

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


harm6

\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

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! :)

Manuela

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  :)
Danke für eure Hilfe
viele Grüße
-- Manuela