Autor Thema: Timing/baseMoment/subdivideBeams  (Gelesen 1599 mal)

Manuela

  • Member
Timing/baseMoment/subdivideBeams
« am: Donnerstag, 18. August 2016, 13:54 »
Immer wenn ich gedacht habe, jetzt habe ich es endlich kapiert, passiert etwas Unerwartetes.  :(

Wie verhindere ich, dass sich \set Timing.baseMoment auf einen anderen Staff auswirkt?

Wenn man folgenden Code anschaut

\version "2.19.37"

\layout {
  \context {
    \Score
    \override Timing.beamExceptions = #'()
    subdivideBeams = ##t
  }
}

\score {
  <<
    \new Staff \relative c'' {
      \set Timing.baseMoment = #(ly:make-moment 1/8)
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )
      \set Timing.baseMoment = #(ly:make-moment 1/2)
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )

    }
    \new Staff \relative c {
      \clef bass
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )
    }
  >>
}

so ändert sich im zweiten Takt im unteren Staff das Bebalkungsverhalten durch die Änderung des Moments im ersten Staff. Ist dieses Verhalten wirklich erwünscht? Mich verwirrt es, wenn sich in einem Staff plötzlich die Bebalkung ändert, weil ich in einem anderen Staff das Moment geändert habe.
Außerdem funktioniert die Einstellung des Moments im Score-Context nicht, zumindest nicht so
\override Timing.baseMoment = #(ly:make-moment 1/8)

Update: so geht's im Context

beamExceptions = #'()
baseMoment = #(ly:make-moment 1/8)
« Letzte Änderung: Donnerstag, 18. August 2016, 14:03 von Manuela »

harm6

  • Member
Re: Timing/baseMoment/subdivideBeams
« Antwort #1 am: Donnerstag, 18. August 2016, 16:09 »
Zitat
Wie verhindere ich, dass sich \set Timing.baseMoment auf einen anderen Staff auswirkt?
[...]
Ist dieses Verhalten wirklich erwünscht? Mich verwirrt es, wenn sich in einem Staff plötzlich die Bebalkung ändert, weil ich in einem anderen Staff das Moment geändert habe.

Es ist das was Du durch Deinen Code eingefordert hast. ;)

"Timing" ist ein alias für "Score", also wirkt sich jede Setzung für "Timing" auf alles in diesem score aus.

Probiers mal mit
\set Staff.baseMoment = ..

HTH,
  Harm

Manuela

  • Member
Re: Timing/baseMoment/subdivideBeams
« Antwort #2 am: Donnerstag, 18. August 2016, 17:01 »
Danke, Harm. Ich dachte, baseMoment geht nur für den ganzen Score, habe ich immer mit "Timing" verbunden.

harm6

  • Member
Re: Timing/baseMoment/subdivideBeams
« Antwort #3 am: Donnerstag, 18. August 2016, 17:53 »
Geht auch mit Voice:

\version "2.19.37"

\layout {
  \context {
    \Score
    subdivideBeams = ##t
  }
}

vI = \relative c'' {
      \set Voice.baseMoment = #(ly:make-moment 1/8)
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )
}

vII = \relative c'' {
      f2~ ( f8 f-- ) \tuplet 3/2 { f16 ( ges f } e  f )
}
     
\new Staff << \vI \\ \vII >>

;)


Gruß,
  Harm

Manuela

  • Member
Re: Timing/baseMoment/subdivideBeams
« Antwort #4 am: Donnerstag, 18. August 2016, 18:17 »
Danke Harm, das hatte ich inzwischen beinahe vermutet ;)

Update: Und wieder ist der Effekt eingetreten, dass unerwartete Dinge passiert sind. Diesmal habe ich mit einem Minimalbeispiel experimentiert und bin auf folgende Erkenntnis gestoßen: setzt man baseMoment und beatStructure auf Voice-Ebene, muss man auch beamExceptions = #'() auf Voice-Ebene eingeben, am besten gleich im Layout-Context, damit man es nicht vergisst. subdivideBeams = ##t kann man im Score-Context setzen,
beamExceptions und baseMoment müssen in den Voice-Context. Korrigiere mich bitte, wenn ich falsch liege (was ja auch nicht sooo ausgeschlossen ist  ;) )
« Letzte Änderung: Freitag, 19. August 2016, 10:32 von Manuela »