issue 34

Begonnen von rgree, Samstag, 3. April 2021, 17:04

« vorheriges - nächstes »

rgree

Liebe Mitstreiter,

jeder hat wohl schon mal mit issue 34 zu tun gehabt (d.h. Vorschlagsnoten werden in mehrstimmigen Systemen nicht richtig synchronisiert).

An die Entwickler unter euch:

würde ein neuer Befehl

\beforeGrace { Vorschlagnote(n) } { Hauptnote(n) }

nicht weiterhelfen ?!

Er würde dafür sorgen, dass die Vorschlagsnoten eindeutig an die Hauptnoten gebunden würden.

Nichts anderes tut ja der Befehl
\afterGrace { Hauptnote(n) } { Nachschlagnote(n) },
der ja keine Probleme hat, dass der Nachschlag über eine Taktgrenze geschoben würde.

Aber vielleicht bin ich ja naiv ...  :)

Gruß,
Reinhard

harm6

Hallo Reinhard,

ich verstehe Deinen Vorschlag noch nicht, insbesondere
ZitatNichts anderes tut ja der Befehl
[ \afterGrace ]
, der ja keine Probleme hat, dass der Nachschlag über eine Taktgrenze geschoben würde.

{ \afterGrace b1 c'16 b1 }
ist ja (fast) dasselbe wie
\context Voice { << b1 { \skip 1*3/4 \grace c'16 } >> b1 }
(Die Unterschiede sind hier nicht weiter von belang.)

Ich sehe noch nicht wie Du hier weiterkommen willst.

Gruß,
  Harm


rgree

Ich bin nicht sicher, ob ich Deine Antwort verstehe.

Willst Du damit sagen, dass \afterGrace auch Probleme a la  issue 34 hat ?!
Sind bei mir noch nicht aufgetreten.

Aber was ist an meinem Vorschlag \beforeGrace nicht OK ?
Wäre das nicht eine eindeutige Anweisung, dass die Vorschlagsnoten bei der Synchronsiation zur Hauptnote gehören,
und nicht sonst irgendwohin ?

Aber vielleicht belassen wir es dabei, die inneren Feinheiten von Lilypond durchschaue ich eh nicht  :) 

Gruß,
Reinhard

harm6

\afterGrace ist eine music-function, die GraceMusic an eine bestimmte Stelle setzt. Diese Stelle ist durch das optionale functions-argument `fraction' bzw das fall-back `afterGraceFraction' (per default 3/4) bestimmt.

{ \afterGrace b1 c'16 b1 }

Defacto wird die Hauptnote gekürzt und die GraceMusic, i.e.
{ \skip 1*3/4 \grace c'16 }
kommt dazu, also
<< b1*3/4 { \skip 1*3/4 \grace c'16 } >>
Schließlich wird der Takt voll gemacht. Tatsächlich kann man im midi auch ein Loch nach c'16 hören.

Ich sehe weder bei \afterGrace noch bei \grace etc, daß die jeweilige GraceMusic zu irgendeiner Hauptnote "gehört".
Vielmehr gibt es neben dem normalen timing ein separates grace timing.

Kann man sich anzeigen lassen:

\score {
  { \afterGrace  b1 c'16 d' }
  \layout {
    \context {
      \Voice
      \consists
      #(lambda (ctx)
        (make-engraver
          (acknowledgers
            ((note-head-interface this grob source)
              (newline)
              (write
                (cons
                  (ly:prob-property (ly:grob-property grob 'cause) 'pitch)
                  (ly:context-current-moment ctx)))))))
    }
  }
}


->
(#<Pitch b > . #<Mom 0>)
(#<Pitch c' > . #<Mom 3/4G-1/16>)
(#<Pitch d' > . #<Mom 1>)

Mom 3/4G-1/16 kann man aufschlüsseln in:
Auf Zählzeit 3 des ersten 4/4-Taktes minus 1/16 fängt die GraceMusic an.


Dieses grace timing ist dasselbe Prinzip für \grace etc wie auch innerhalb \afterGrace.
Wenn man simultane Staffs mit und ohne \grace am Anfang hat fangen diese also zu unterschiedlichen Zeiten an.
Das ist das hauptsächliche Problem bei issue 34. Daraus resultieren zahlreiche weitere ...

ZitatWillst Du damit sagen, dass \afterGrace auch Probleme a la  issue 34 hat ?!
Prinzipiell kann man auch mit \afterGrace issue 34 triggern, allerdings ist das natürlich wenig sinnvoll:

<<
  { \afterGrace 1/1 b1 c'16 \repeat volta 2 { d'1 } }
  { b1 \repeat volta 2 { d'1 } }
>>


Insoweit sehe ich nicht wie die Methode mit der \afterGrace implementiert ist irgenwie geeignet ist issue 34 näher zu kommen.

ZitatAber was ist an meinem Vorschlag \beforeGrace nicht OK ?
Tatsächlich besteht Dein Vorschlag momentan nur aus einem Namen. ;)
Du müsstest etwas konkreter werden was Du Dir darunter vorstellst. Oben habe ich versucht mehr Einsichten über GraceMusic im allgemeinen und afterGrace im besonderen darzustellen.
Das ich nicht sehe wie man von dort zu einem sinnvollen \beforeGrace kommt, heißt ja nicht, daß jemand anders da nicht weiterkommt.

Gruß,
  Harm

rgree

Danke für die ausführliche Darstellung.

Gruß,
Reinhard

Arnold

Hallo rgree,

ja, ja, issue 34.

Aus meiner Sicht ist das gar kein einzelnes Issue, sondern eine ganze Gruppe von Issues.

Die wichtigste Unterscheidung: Synchronisation über zwei oder über drei Ebenen erforderlich?

Diese Synchronisation ist nur im Notensatz (nicht bei der MIDI-Ausgabe) erforderlich. In der MIDI-Ausgabe stört es eher.

Ich habe es in der Vergangenheit mit meinem »experimental-grace-syncer« probiert (und nutze ihn heute noch bei Bedarf) - wird ähnlich wie z. Bsp. \articulate der Musik-Partitur-Definition vorangestellt.
Damit die zwei-Ebenen-Situationen (Score und Staff) erfasst werden können, muß da jede Notenzeile explizit mit einem \new Staff deklariert sein, dann werden »zu verschiebende events« gesucht und in einer neuen Stimme innerhalb der Notenzeile positioniert, gegebenenfalls vor einem Grace-Skip der Maximaldauer aus der ganzen Partitur. Aber, bei Wiederholungen wird's schon problematisch, vom Staff-Wechsel in einer Klavierstimme ganz zu schweigen.
Eine Erweiterung, bei der dann auch noch definierte Stimmen (\new Voice, aber auch »<< ... \\ ... >>«) berücksichtigt werden, habe ich bisher nicht angegangen. Und ob dann auch alle drei-Ebenen-Situationen (Synchronisation zwischen Score, Staff und den Voices in einer Notenzeile) mit hoher Trefferrate automatisch abgedeckt werden können, wage ich ehrlicherweise zu bezweifeln.

Arnold