Autor Thema: Mein LilyPond denkt...  (Gelesen 21628 mal)

trulli

  • Member
Re:Mein LilyPond denkt...
« Antwort #15 am: Donnerstag, 7. Januar 2010, 22:28 »
Das ist wirklich sehr komisch - irgendetwas macht Fresco mit dem Code, bevor er an Lily geht. Wenn ich über den Terminal den Code an Lily gebe, passiert es nicht.

Auf welche Weise hast du 1.0. installiert?

Genau, über die Prioritäten (\override Script#'script-priority) kann man die Zeichen näher oder weiter weg von der Note setzen.

Grüße


kilgore

  • Member
Re:Mein LilyPond denkt...
« Antwort #16 am: Freitag, 8. Januar 2010, 11:06 »
1.0 habe ich installiert, wie es im INSTALL datei vorgeschrieben ist.   cmake, make, make install.  Ich musste aber "sudo make install" machen damit es wirklich alles installiert wird.  Jetzt funktioniert es :)

Hast du den Fehler an die Frescobaldi Team weiter geleitet?

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #17 am: Freitag, 8. Januar 2010, 18:35 »
Hallo alle,

das merkwürdige Frescobaldi-Verhalten kann ich leider nicht nachstellen, aber der gepostete Code setzt bei mir lediglich die letzte Lagenangabe wie gewünscht (und das unverändert, auch nach dem x-ten Durchlauf)! Fehlersuche und Analyse ergibt folgendes:

(1) Es sind an zu vielen verschiedenen Stellen Overrides der gleichen Sorte definiert, die die Fehlersuche extrem erschweren. Ich habe erstmal alle auskommentiert, um dann gezielt an einer Problemstelle arbeiten zu können.

(2) \override Script #'padding = #X setzt nicht nur Fermaten höher, sondern auch alle anderen Script-Objekte, wie z.B. Akzente! In den meisten Fällen werden solche Scripte ganz gut platziert, sodass einzelne Overrides (\once \override ...) genügen.

(3) Ein einfaches X-/Y-offset lässt Objekte nicht einfach frei in der Gegend rumschieben. Dies funktioniert erst richtig mit den Overrides für padding und vor allem X-/Y-extent.

(4) Nun ist es knifflig herauszufinden, welches Objekt sich am meisten sträubt und welches sich am besten beeinflussen lässt. Bei der Suche hilft es sehr, sich Spacing und Skylines anzeigen zu lassen. Dabei erkennt man gut, dass der Akzent unter dem E in T.12 (letzte Achtel) ziemlich auf das Script in T.15 (erste Sechzehntel) drückt, was durch between-system-space und between-system-padding im Ernstfall verschlimmert wird.

(5) "script-priority" rückt das Zeichen nicht näher oder weiter an die Note, sondern reguliert die vertikale Anordnung, wenn mehrere Objekte übereinander zusammentreffen. Dies funktioniert am unproblematischsten, wenn die Objekte gemeinsam an einer Note verankert werden, also nicht gerade in verschiedenen Stimmen.

Ich habe deinen Code mal aufgeräumt. Bei mir funktioniert es ohne Tweaks/Overrides. Jetzt interessiert mich, ob es auch bei dir klappt.

Grüße,
Robert

kilgore

  • Member
Re:Mein LilyPond denkt...
« Antwort #18 am: Freitag, 8. Januar 2010, 18:59 »
ROFL!

Rob, bei deiner Version macht es bei mir am letzten Akkord der Fehler!  Also zuerst war es der dritt letzte, dann nach mein Fresco-Update der Vorletzte, und jetzt der letzte.  Ganz seltsam!  Ich habe keine Ahnung!    :D

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #19 am: Freitag, 8. Januar 2010, 20:39 »
Ach, es ist zum junge Hunde kriegen …

Wenn ich die Skylines und die Spacinganzeige zuschalte, verrutschen mir die Dinger auch! Ich hatte das irgendwann schonmal. Werde wohl mit der Brechstange ranmüssen.

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #20 am: Freitag, 8. Januar 2010, 21:37 »
JETZT sollte es aber funktionieren …

kilgore

  • Member
Re:Mein LilyPond denkt...
« Antwort #21 am: Freitag, 8. Januar 2010, 21:47 »
omg it works!   ;D

trulli

  • Member
Re:Mein LilyPond denkt...
« Antwort #22 am: Freitag, 8. Januar 2010, 22:45 »
Ja, Rob, jetzt klappt es - vielen Dank!!

Ich habe jetzt nach langem Gefummel beim Deinstallieren und Kompilieren auch endlich Fresco 1.0.0. und Lily 2.12.3. Mit dem alten Code gibt es genau dieselben Probleme wie in meiner Fresco-Version davor.
Unerklärlich ist mir immer noch, wie ein Computer-Programm bei ein und demselben Code zwei verschiedene Ergebnise produzieren kann. Na ja...

Deine Codes gefallen mir ausgesprochen gut: sehr übersichtlich und aufgeräumt. Von meinen 10000 Fragen dazu mal eine kleine Auswahl:
- \halgin habe ich noch nie gesehen, ist das eine Randeinstellung?
- womit machst du die gleichmäßigen Leerabstände (sieht aus wie ein Tab, geht aber bei mir nicht mit Tab)?
- warum ist \numericTimeSignature besser als \override Staff.TimeSignature #'style = #'() oder ist das egal?
- hätte ich mit den extra-offset Einstellungen der Strokes (die du vorgenommen hast) dasgleiche erreichen können oder kollidieren da noch andere Befehle?
- wo findet der LilyPond-Kurs statt, den du besucht hast?
- wie bekommt man die letzte Zeile noch näher an die vorletzte?
- vielleicht Geschmacksache, aber die Betonungszeichen und Fermaten sind mir in Lily immer zu nah an der Note, vielleicht ist 1.5 ein bisschen zu viel, aber 1 sollte es für mich mindestens sein. Erscheint dir nicht auch die normale Einstellung als zu gedrängt?
- hätte man die Sache auch mit script-priority lösen können?

Sollten wir uns mal persönlich treffen, gehen die ersten Runden auf mich.  ;D

Grüße von Matthias

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #23 am: Samstag, 9. Januar 2010, 03:07 »
Hallo Mat,

ich wäre auch ziemlich sauer auf Lily gewesen, wenn es jetzt nicht geklappt hätte ;)
Ich kann nur vermuten, dass in diesem seltenen Fall die zu platzierenden GROBs an der Grenze ihrer Ausdehnung sind und zu gleichen Teilen Platz beanspruchen. Das kann dann mal zu Inkonsistenzen führen. Es würde auch erklären, warum beim Anzeigen der Skylines (die ja ebenfalls mindestens Linienbreite beanspruchen) die Objekte wieder verrutschen. Wir kennen das doch aus der "Matrix": das Problem ist die Entscheidung …
Es könnte aber auch am Caching liegen, wodurch bestimmte un-/veränderte Codefragmente anders oder auch gar nicht berücksichtigt werden. Ich habe auch nicht schlecht geguckt, als ich ein \override kommentiert hatte, mit dem Ergebnis zufrieden war, daraufhin die kommentierte Zeile gänzlich gelöscht und beim anschließenden Durchlauf ein anderes Ergebnis erhalten habe! Dann die (kommentierte) Zeile, die ja eigentlich nicht geparst werden dürfte, wieder eingefügt – altes Ergebnis! Also wieder ganz von vorn anfangen …

Ich gebe mir immer Mühe, die Codebestandteile möglichst weit zu abstrahieren: Einstellungen, die für alles gelten sollen, muss man nicht doppelt notieren; also wird das ganze in eine separate Variable verpackt und eingebunden. Dazu zählen vor allem Tonart, Takt, Taktwechsel, Taktstriche, Vortragsbezeichnungen, Tempoangaben usw. – und eben auch bestimmte Tweaks/Overrides, die für jede Zeile/Stimme benötigt werden. Außerdem hilft es, die Vollständigkeit der Stimmen zu überschauen (ein häufiges Problem, wenn irgendwo mal ein Spacer zu wenig oder ein Akkord zu lang ist). Die gleiche Vorgehensweise findet auch bei Musik und Gesangstext, wenn nötig separatem Markup (Dynamik & Co.), Anwendung. Insbesondere bei umfangreichen und komplexen Partituren mit verschiedenen Staff-Typen behält man eher den Überblick, wenn die Score-Definition nicht mit 100-zeiligen Musikausdrücken vermischt ist.

Zu deinen Fragen:
  • \halign (h[orizontal] align) funktioniert innerhalb \markup und beeinflusst die horizontale Ausrichtung in Spalten. Siehe NR B.8.2 Align.
  • Es sind Tabs. Macht Frescobaldi das nicht?
  • \numericTimeSignature ist nicht besser, aber kürzer. Genau wie \mergeDifferentlyHeaded[Dotted]On/Off kürzer ist als \override NoteCollision #'merge-differently-headed[dotted] = ##t/##f
  • Ich weiß nicht, was genau du meinst, aber extra-offset schiebt das Objekt aus seiner Box heraus, die an Ort und Stelle bleibt. Vielleicht könnte es damit auch funktionieren, aber zuerst wird die Position der Box festgelegt, nach der sich die anderen Objekte richten.
  • ::) Es ist mein eigener Kurs. Die Unterlagen dazu gibt’s überall im Netz, und die Übungsbeispiele brauche ich jede Woche für mein Ensemble.
  • Du kannst noch folgendes im \paper-Block notieren:
    between-system-padding = #0.1
    between-system-space = #0.1
    after-title-space = #0.1
    Zusätzlich kannst du noch die vertikale Ausdehnung des Akzents nach unten und der Lagenziffern nach oben verringern. Dann müssen aber auch die Stroke-Positionen korrigiert werden, damit sie auf der gleichen Höhe sind. Ich hänge die Datei nochmal an.
  • Ja, mir gefällt das häufig auch nicht. Allerdings tweake ich die manuell und im Einzelfall, dann aber per Y-offset: \tweak #'Y-offset #X, wobei 0 die Position auf der mittleren Linie ist. #2 ist somit auf der obersten Linie und #-4 auf der (gedachten) zweiten Hilfslinie unter der Zeile.
    Viel schlimmer finde ich die Voreinstellung für Taktzahlen: sobald Balkenklammern für Systeme hinzukommen, berühren die Taktzahlen die Klammer. Hier kann ich regelmäßig das Padding auf 2 erhöhen.
  • Mit script-priority hatte ich es zunächst versucht, bin aber nicht gut vorangekommen. Es liegt wohl daran, dass verschiedene Script-Typen (Script und TextScript) benötigt werden (andere Möglichkeiten sind in der NR auch nicht beschrieben). In deinem speziellen Fall stehen zwei TextScripts übereinander, die nur gemeinsam angesprochen werden können.

Die Runden nehme ich gern an :) Falls du mal ’ne Mugge in Leipzig hast, schick mir ’ne PN!

Grüße,
Robert

comper

  • Member
Re:Mein LilyPond denkt...
« Antwort #24 am: Samstag, 9. Januar 2010, 11:17 »
Zitat von: RobUr link=topic=467.msg2780#msg2780
Mit script-priority hatte ich es zunächst versucht, bin aber nicht gut vorangekommen.

Wenn bei etwas wie
   <a,, e' ais-4 cis e a>16 ^\pUp  ^\markup { \halign #-0.75 \smaller "V" }
die Reihenfolge nicht gehorchen will, bringt Folgendes eventuell Abhilfe:
   \override TextScript #'outside-staff-priority = ##f

Wenn ja, dann handelt es sich um den kürzlich korrigierten Fehler Issue 787.

Gruss

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #25 am: Samstag, 9. Januar 2010, 12:41 »
Sagenhaft! Wieder ein paar Zeilen gespart :)

Die kommende stable sieht nach einem Riesenfortschritt aus.

trulli

  • Member
Re:Mein LilyPond denkt...
« Antwort #26 am: Samstag, 9. Januar 2010, 16:54 »


@comper
Danke, was macht dieser Befehl?

Edit: schon gut, ich habe damit herumprobiert und sehe, dass man dann eine genaue Reihenfolge angeben kann. Praktisch.

@Rob
Tabs gehen in Fresco tatsächlich nicht... keine Ahnung warum (oder ich habe den Shortcut noch nicht gefunden). Dein Layout wird aber richtig angezeigt. Danke für die Tipps - das muss ich erstmal alles ausprobieren und notieren...

Grüße
« Letzte Änderung: Samstag, 9. Januar 2010, 17:29 von trulli »

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #27 am: Montag, 11. Januar 2010, 16:25 »
Hi Mat,

und sie [die Tabs] gehen doch … ;)

Hinter Frescobaldi arbeitet KWrite mit der Kate-Editorkomponente. Diese kannst du konfigurieren:
Settings > Configure Frescobaldi > Editor-Komponente > Open/Save > Tab: "Modes & Filetypes" > Filetype: "Other/Lilypond". Im Feld "Variables" änderst du die Werte in "kate: indent-mode Lilypond; indent-width 2; space-indent off; tab-indent on; replace-tabs off; replace-tabs-save off;"
Abspeichern und Frescobaldi neustarten. Die Einzugsbreite kannst du normal unter "Editor-Komponente > Editing > Tab: General [Tabulators]" konfigurieren. Dies hat allerdings nichts mit Indendation (Einrückung) zu tun!

Grüße, Robert

trulli

  • Member
Re:Mein LilyPond denkt...
« Antwort #28 am: Montag, 11. Januar 2010, 21:47 »
Verdammte Naht - woher weißt du denn DAS jetzt wieder? :o  :o  :o

Die Einstellung klappt bei mir trotzdem nicht - ich kann alles so einstellen, aber wenn ich gespeichert habe und das Einstellungsmenü geschlossen habe, vergisst Fresco wieder alles...

Grüße von Mat

EDIT: für solche Probleme könnte ein Fresco 1.0.0. Thread gut sein....
« Letzte Änderung: Montag, 11. Januar 2010, 23:02 von trulli »

RobUr

  • Member
Re:Mein LilyPond denkt...
« Antwort #29 am: Montag, 11. Januar 2010, 23:43 »
Ich habe Ubuntu 9.10 in einer virtuellen Box laufen. Ich konnte mir einfach nicht vorstellen, dass ein Editor keine Tabs akzeptieren will. Die Option "tab-indent on" ist nicht dokumentiert, aber ich hab’s einfach ausprobiert, da es ja auch "space-indent" gibt.

Hast du denn Frescobaldi neu gestartet? Es genügt nicht, nur das Einstellungsmenü zu schließen. Die entsprechende Konfigurationsseite siehe Anhang.

Grüße, Robert