Verschiedene Versionen in verschiedenen Taktarten - Notation der Pausen?

Begonnen von ingmar, Samstag, 14. April 2018, 23:56

« vorheriges - nächstes »

ingmar

Wie werden Pausen in Lilypond angegeben?

Das Konzept unterscheidet streng zwischen r und R.

Kleingeschrieben (also "r") bedeutet das Pausenzeichen:
* Die Pause ist Teil eines Takts. Diese Pausenzeichen werden im Takt dort angezeigt, wo die entsprechende Note stehen würde.
* Beispiel: In einem Viervierteltakt wird r1 also ziemlich links im Takt stehen.

Großgeschrieben ("R") bedeuten die Pausenzeichen:
* Ganztaktpause. Diese Pausenzeichen stehen immer in der Mitte des entsprechenden Takts.
* In einem Viervierteltalkt wird R1 zentriert angezeigt.

Das ist alles klar, wenn man Lilypond als ein System ansieht, das einen eindeutigen Notentext festlegen soll. Schwieriger wird es in historischer Notation (etwa Musik der Renaissance oder des Frühbarock), wo der gleiche Text in verschiedener Interpretation für verschiedene Versionen (Editionen) verwendet werden soll. Die erhaltenen Einzelstimmen enthalten hier keine Taktstriche, die heutige Spieler aber brauchen - zumindest zur Probe. Daher sollen mehrere Versionen des Notentexts erzeugt werden, beispielsweise eine für erfahrene Spieler im 4/2-Takt, eine andere in 2/2 oder 4/4. Oder es sollen an manchen Stellen unregelmäßige Taktarten notiert werden, um eine Binnenkadenz auf einer "Eins" enden zu lassen (etwa einmalig eingeschobener 2/2 zwischen 4/2-Takten); in einer zweiten Version soll auf solche Eingriffe verzichtet werden.

Das ist offenbar in LilyPond heute nicht möglich, da der zugrundeliegende Notentext sich leider zwischen r und R entscheiden muss:

\version "2.19.64"

text = \relative {
c'2 d4 e
f1
r1
r4 e f g
a2 f
R1
f4 e8 d e2
c1
}

\score { \new Part {
\time 4/4 \text
}}

\score { \new Part {
\time 4/2 \text
}}


Im ersten Beispiel steht in Takt 3 die ganze Pause zu weit links, im zweiten Beispiel herrscht in Takt 3 heilloses Chaos.

Gibt es einen einfachen Weg, in derartigen Fällen aus einem identischen Notentext trotzdem zwei orthografisch richtige Notentexte zu gewinnen?


Danke und ein kleiner Gruß in die Runde...
--ingmar

harm6

Vielleicht:


\version "2.18.2"

mutabor =
#(define-music-function (parser location mus)(ly:music?)
"Changes Rest to MultiMeasureRest, if length of the Rest lasts one bar.
Changes MultiMeasureRest to Rest, if length of MultiMeasureRest is not equal to
the length of a bar.
Tries to take changing TimeSignatures into account.
Needs thorough testings.
"
  (let* ((time-sig-length (ly:make-moment 1)))
    (music-map
      (lambda (m)
        (cond ((music-is-of-type? m 'time-signature-music)
                 (set! time-sig-length
                       (ly:make-moment
                         (/
                           (ly:music-property m 'numerator)
                           (ly:music-property m 'denominator))))
                 m)
              ((music-is-of-type? m 'rest-event)
                (if (equal? (ly:music-length m) time-sig-length)
                    (make-music
                      'MultiMeasureRestMusic
                      'duration
                      (ly:music-property m 'duration)
                      'articulations
                      (ly:music-property m 'articulations))
                    m))
              ((music-is-of-type? m 'multi-measure-rest)
                (if (not (equal? (ly:music-length m) time-sig-length))
                    (make-music
                      'RestEvent
                      'duration
                      (ly:music-property m 'duration)
                      'articulations
                      (ly:music-property m 'articulations))
                    m))
              (else m)))
      mus)
      (set! time-sig-length (ly:make-moment 1))
      mus))

     
\version "2.19.64"

tst = \relative {
c'2 d4 e
f1
r1
r4 e f g
a2 f
R1
f4 e8 d e2
c1
}

\score {
  \mutabor
  \new Staff {
  \time 4/4
  \tst
  }
}

\score {
  \mutabor
  \new Staff {
\time 4/2
\tst
  }
}


Gruß,
  Harm

ingmar

Super, vielen Dank!

ZitatNeeds thorough testings.

Auf den ersten Blick scheint alles gut zu funktionieren. Eine Stelle "R\breve *2" wurde allerdings nicht richtig aufgelöst. Ich hab im Moment aber leider keine Möglichkeit, das im Detail durchzutesten. Ich melde mich nochmal.

Gruß,
--ingmar