Bug?: Taktart in der falschen Zeile

Begonnen von C_E, Donnerstag, 16. Juli 2020, 10:29

« vorheriges - nächstes »

C_E

Hallo alle, aber vor allem die, die in der Entwicklung beteiligt sind vermute ich:

Ich habe möglicherweise einen Bug entdeckt:

\version "2.20.0"

EinStaff = \relative c' {
  \repeat unfold 4 { c4 }
  \set Staff.timeSignatureFraction = 4/4
  \repeat unfold 4 { c4 }
}

ZweiStaff = \relative c' {
  \repeat unfold 8 { c4 }
}

Drei = \relative c' {
  c4 c c c
  \set Staff.timeSignatureFraction = 12/8
  c c c c
}
DreiDyn = {
  s1
%   \set Staff.timeSignatureFraction = 12/8
  s1 \bar "||"
}


\score {
  <<
    \new Staff {\EinStaff }
    \new Staff {\ZweiStaff}
    \new Staff {
      <<
      \new Voice {\Drei}
      \new Dynamics {\DreiDyn}
      >>
    }
  >>
}



Es geht um die Anzeige des 12/8-Taktes. Eigentlich soll er in der dritten Zeile stehen, und das tut er auch, wenn ihr das Beispiel so übernehmt. Wenn man die Taktart aber in die Dynamics schreibt (also einfach die auskommentierte Zeile entkommentieren), dann taucht die Taktart in der ersten Zeile auf.

Das geschieht unabhängig von den Angaben in \Drei. Und es überschreibt eventuelle Angaben in \EinsStaff. Es wird keine Fehlermeldung oder Warnung rausgegeben.

Mir ist bewusst, dass eine Taktart keine Dynamik ist. Ich benutze \new Dynamic nicht nur für Dynamiken, sondern auch für Text und anderes, damit die Noten zumindest etwas aufgeräumter sind. Wenn ihr der Meinung seid, dass Taktarten in den Noten stehen sollten, verstehe ich es auch und es ist kein Problem, aber ich denke dann wäre eine Warnung toll:) Bis dahin lasse ich die Taktart mal einfach in den Noten


Liebe Grüße,
caspar

harm6

Hallo,

der Dynamics-context wird per default nur von anderen "Container"-contexts (Score, StaffGroup, ChoirStaff, GrandStaff, PianoStaff) akzeptiert.
In Deinem Beispiel initiierst Du einen Dynamic-context aus einem bereits begonnenen Staff-context heraus. Der neue context wird dann wie üblich unten eingefügt. Eventuelle \set Staff ... -Befehle suchen aber den ersten verfügbaren Staff-context im Container-context (hier Score) und finden in Deinem Beispiel den obersten Staff.
Insoweit handelt es sich nicht um einen bug sondern um zu erwartendes Verhalten.
Da der Staff Dynamics nicht akzeptiert, halte ich die ganze Planung für konzeptionell bezweifelbar.
Du kannst Sie eventuell fixen mit:

\layout {
  \context {
     \Staff
     \accepts "Dynamics"
  }
}

Aber das hat auch gravierende Nachteile, z.B. erscheint DynamicText jetzt im Staff.

Ich sehe aber keinen Grind warum Du statt Dynamics nicht einfach Voice nehmen solltest.
Das wäre meine Empfehlung.


Gruß,
  Harm

C_E

ah, danke für die Ausführung, das finde ich ja fast schon schade:)

Das heißt Dynamics immer nur für Dynamiken, die für mehr als eine Zeile gelten, oder?

harm6

Du kannst Dynamics auch für einen Staff nehmen:

<<
  \new Staff { b1 b }
  \new Dynamics { s1\f s\p }
>>

Für das was Du zu wollen scheinst ist er aber nicht das richtige tool.

Ich schrieb "was Du zu wollen scheinst", denn momentan haben wir nur beschränkte Informationen über Dein volles Begehr.
Warum keine Voice, warum unbedingt Dynamics?

Gruß,
  Harm

C_E

Das mit dem Dynamics-Staff war vor allem ein kleiner Zwang zur Ordnung...
Dann sind Noten und anderes nicht nur durch unterschiedliche Variablen voneinander zu unterscheiden, sondern auch durch unterschiedliche Aufrufe.
Vielleicht war es auch einfach ein Versuch, möglichst korrekt zu sein.

Da es mir vor allem um das richtige Konzept ging und ich jetzt verstanden habe, dass ich genau das falsch gemacht hab, habe ich für die Dynamiken jetzt auch einen Voice-Kontext genommen.