Hallo Harm,
vielen Dank für deine Arbeit!
Das im Post von gestern erwähnte Problem tritt für mich in deinem eigenen Beispiel auf - in dem Code, wie du ihn gepostet hast.
Hab mal unter Zeitdruck deinen neuen Code auf ein längeres Stück Musik losgelassen. Dort kommen Ganze, Halbe und Viertel vor. Es funktioniert grundsätzlich gut; ich bin aber auf folgende Problemen gestoßen:
- Versetzungszeichen werden nicht mitgenommen (das hattest du, glaub ich, schon angedeutet)
- Die Note scheint nicht ganz mittig zu sitzen; es sieht aus, als sitze sie ein Pixel zu weit links. Möglicherweise hat die Öffnung der "weißen" Noten eine ungerade Anzahl von Pixeln, so dass das ziemlich unvermeidlich ist, aber es fällt IMHO schon auf. Man würde sich wünschen, rechts noch ein Pixel zuzugeben.
- Immer wieder werden einzelne Noten nicht vorwärts, zum nächsten Taktstrich, sondern zurück, zum vorhergehenden, geschoben. Eine Regel ist erstmal nicht erkennbar.
- Einen Fall habe ich gefunden, wo die Note gar nicht verschoben wird, sondern an der alten Stelle bleibt.
Die beiden letzten Probleme sind die interessantesten, und ich habe gleich versucht, sie per Minimalbeispiel zu isolieren. Leider ist mir das aber nicht gelungen; im kleinen Beispiel verhalten sich die Snippets dann goldrichtig.
Ich werde erst in eine paar Tagen wieder dazu kommen und hoffe, dann Minimalbeispiele bauen zu können, die die Fehler deutlich exponieren. Bis dahin wollte ich dir aber einen Zwischenstand geben...
Ich habe ein paar Screenshots angehängt. Im letzten siehst du meinen Quellcode, zwei Takte vor dem im vorletzten Takt gezeigten Ausschnitt beginnen; die Funktion hab ich \HEADXBAR genannt. Es gibt auch \DOTXBAR, die den Verlängerungspunkt verschieben soll, hier aber als { } definiert ist. Der Quellcode soll beweisen, dass hier eigentlich schon verschoben werden müsste, was aber eben zweimal hintereinander nicht geschieht... Ich weiß, Quellcode per Screenshot ist wenig hilfreich - soll ja auch nur illustrieren.
Ich werde in ein paar Tagen versuchen, kurze Beispiele für die Issue 3. und Issue 4 zu finden - also zu isolieren, unter welchen Umständen der Code sich da nicht richtig verhält.
Nochmal: Danke für Deine Arbeit. Abgesehen von diesen Bugs sieht es, wie gesagt, sehr gut aus.
Gruß, : - )
--ingmar