Autor Thema: ChordNames zentrieren (gelöst)  (Gelesen 3892 mal)

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
ChordNames zentrieren (gelöst)
« am: Donnerstag, 15. Juni 2017, 18:13 »
Hi,

normalerweise werden ChordNames nicht zentriert. Irgendwo habe ich eine Möglichkeit gefunden, dies zu erreichen.
Leider gibt es ein Problem, wenn z.B. im oberen Staff eine Sekund als Chord vorkommt. Ich vermute, dadurch verschiebt sich die Position von NoteColumn. Aus irgendeinem Grund wird der ChordName an der oberen NoteColumn ausgerichtet und nicht an der unteren. Wie erreichte ich, dass die Chords an den zugehörigen Noten ausgerichtet werden? Probeweise habe ich einen zweiten Context ChordNames unterhalb geschrieben, das hilft auch nichts.

Hier der Code:

\version "2.19.56"
\language "deutsch"

chExceptionMusic = {
  <c es g heses>1-\markup { "m" }
  <c es g b d'>1-\markup { "m" }
  <c es g b>1-\markup { "7" }
}

chExceptions = #(append
                 (sequential-music-to-chord-exceptions chExceptionMusic #t)
                 ignatzekExceptions)

\layout {
  \context {
    \RhythmicStaff
    fontSize = #-1
    \override StaffSymbol.staff-space = #(magstep -1)
  }
  \context {
    \ChordNames
    \override ChordName.X-offset =
    #ly:self-alignment-interface::aligned-on-x-parent
    \override ChordName.self-alignment-X = #CENTER
    chordNameLowercaseMinor = ##t
    chordNameExceptions = #chExceptions
    chordChanges = ##f
  }
}

firstNote =
#(define-music-function (music)
   (ly:music?)
   (event-chord-reduce music))

chordnotes = \chordmode {
  c4:m9 c4:m9
}
summe= {
  \once \override NoteHead.color = #red
  \firstNote \chordnotes
}

\score {
  \new GrandStaff
  <<
    \new Staff=melodie
    <<
      \new Voice \relative c'' { < c d >4 c }
    >>
    \new ChordNames \chordnotes
    \new RhythmicStaff
    <<
      \new Voice \summe
      \new ChordNames \chordnotes %% ist genau gleich ausgerichtet wie der obere ChordNames-context
    >>
  >>
}
« Letzte Änderung: Samstag, 17. Juni 2017, 08:40 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

  • Hero Member
  • *****
  • Beiträge: 774
Antw:ChordNames zentrieren
« Antwort #1 am: Donnerstag, 15. Juni 2017, 22:34 »
Hallo Manuela,

mir ist Dein Begehr nicht ganz klar.

Allerdings werden ChordNames nie an der NoteColumn ausgerichtet sondern an der PaperColumn. Deren X-extent wird score-weit bestimmt.

Hinzu kommt, daß die angegebene Version 2.19.56, dort auch nicht alles richtig macht.

Mit selbst kompilierter 2.19.63 ergibt sich das Bild im Anhang. (Sollte aber schon mit 2.19.61 so sein.)
Ich habe jede Menge debugging output dazugeschaltet, aber hoffentlich wird klar, daß LilyPond exakt richtig arbeitet, imho.

Wenn Du da irgendwas anders haben willst, poste bitte ein Bild. Man kann ja mit extra-offset faken wie mans haben will.

Gruß,
  Harm

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren
« Antwort #2 am: Freitag, 16. Juni 2017, 07:16 »
Danke für deine Antwort, Harm.

mir ist Dein Begehr nicht ganz klar.

Die Chordnamen sollen mittig an den Noten des unteren Rhythmic-Staffs ausgerichtet werden.

Allerdings werden ChordNames nie an der NoteColumn ausgerichtet sondern an der PaperColumn. Deren X-extent wird score-weit bestimmt.

Aha, das war mir nicht so klar, kann man das ändern, sodass sie sich an den Noten des Rhythmic-Staffs ausrichten? Indem man das X-Parent ändert?

Hinzu kommt, daß die angegebene Version 2.19.56, dort auch nicht alles richtig macht.

Ist wohl wieder ein Update fällig.

Wenn Du da irgendwas anders haben willst, poste bitte ein Bild.

Der rechte Chordname in meinem Beispiel ist so positioniert, wie ich es haben möchte.

Man kann ja mit extra-offset faken wie mans haben will.

Genau das wollte ich eigentlich vermeiden bei >60 Scores, wo dieser Fall durchschnittlich 2-3mal pro Score auftritt.
« Letzte Änderung: Freitag, 16. Juni 2017, 07:18 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

  • Hero Member
  • *****
  • Beiträge: 774
Antw:ChordNames zentrieren
« Antwort #3 am: Freitag, 16. Juni 2017, 11:25 »
Versuch mal:

  \context {
    \RhythmicStaff
    fontSize = #-1
    \override StaffSymbol.staff-space = #(magstep -1)
   
    \override NoteColumn.before-line-breaking =
      #(lambda (grob)
        (let* ((pap-col (ly:grob-parent grob X))
               (pap-col-elts (ly:grob-object pap-col 'elements))
               (chord-names
                 (if (ly:grob-array? pap-col-elts)
                     (filter
                       (lambda (elt)
                         (grob::has-interface elt 'chord-name-interface))
                       (ly:grob-array->list pap-col-elts))
                     '())))
          (for-each
            (lambda (chrd)
              (ly:grob-set-parent! chrd X grob))
            chord-names)))
  }

Musst Du aber noch testen.

Gruß,
  Harm


Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren
« Antwort #4 am: Freitag, 16. Juni 2017, 14:07 »
Musst Du aber noch testen.

Danke Harm, werde ich testen, sobald ich Lily 2.19.63 installiert habe.

Ich gebe dann Rückmeldung, sobald ich Ergebnisse habe.
« Letzte Änderung: Freitag, 16. Juni 2017, 14:13 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren
« Antwort #5 am: Freitag, 16. Juni 2017, 14:27 »
Soweit ich auf die Schnelle feststellen kann, funktioniert dein Code EINFACH GENIAL,

danke!!!!

Abgesehen davon dass Lilypond 2.19.62 bei der Installation einen Alarm bei meinem Virenscanner auslöst.
« Letzte Änderung: Freitag, 16. Juni 2017, 14:33 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

  • Hero Member
  • *****
  • Beiträge: 602
Antw:ChordNames zentrieren
« Antwort #6 am: Freitag, 16. Juni 2017, 17:21 »
Abgesehen davon dass Lilypond 2.19.62 bei der Installation einen Alarm bei meinem Virenscanner auslöst.
off-topic: Sagt der, warum er was gegen LilyPond hat? Nicht, daß es da aus Versehen tatsächlich ein Problem gibt …

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren
« Antwort #7 am: Freitag, 16. Juni 2017, 17:38 »
off-topic: Sagt der, warum er was gegen LilyPond hat? Nicht, daß es da aus Versehen tatsächlich ein Problem gibt …

Leider habe ich keinen Screenshot von der Meldung angefertigt. Ich habe jetzt sowohl das Programmverzeichnis als auch die Installationsdatei gescannt, kein Fund. Lilypond scheint auch ganz normal zu laufen.

Probehalber habe ich die Installation wiederholt, diesmal ohne Virenalarm.
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

  • Hero Member
  • *****
  • Beiträge: 602
Antw:ChordNames zentrieren
« Antwort #8 am: Freitag, 16. Juni 2017, 17:40 »
Hm, ok, dann wirds nicht so wild gewesen sein. Auch Virenprogramme machen mal Fehler ;) Wer weiß, vielleicht war der Grund einfach „extrem junge Software, könnte das ein ein bisher unbekannter Virus sein?“ … da kenn ich mich aber mit solchen Programmen nicht genug aus.

harm6

  • Hero Member
  • *****
  • Beiträge: 774
Antw:ChordNames zentrieren
« Antwort #9 am: Freitag, 16. Juni 2017, 23:31 »
Zitat von: Manuela
Soweit ich auf die Schnelle feststellen kann, funktioniert dein Code EINFACH GENIAL,
Schön das zu hören. :)

Zitat
danke!!!!
Gern geschehen.

Zitat
Abgesehen davon dass Lilypond 2.19.62 bei der Installation einen Alarm bei meinem Virenscanner auslöst.
Ich lass mich jetzt nicht über Linux vs MS oder Mac aus.
Denn natürlich gibt es unter anderem deshalb kaum Viren die Linux befallen können, weil es für die Autoren solcher Viren weniger attraktiv ist auf eine kleine User-Gemeinde zu zielen.

Aber das Problem eines falsch-positiven Alarms ist schon öfter aufgetaucht.
Manchmal habe ich den Eindruck, die Virenschutzprogramme bringen durchaus ihre eigenen Probleme mit.
Und nicht zu knapp ...


Gruß,
  Harm

Malte

  • Hero Member
  • *****
  • Beiträge: 602
Antw:ChordNames zentrieren
« Antwort #10 am: Samstag, 17. Juni 2017, 00:18 »
Manchmal habe ich den Eindruck, die Virenschutzprogramme bringen durchaus ihre eigenen Probleme mit.
Und nicht zu knapp ...
Die sind doch selbst anscheinend ein beliebtes Angriffsziel, weil sie als dauerhafter Prozess mit ziemlich hohen Rechten im System rumfuhrwerken …

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren
« Antwort #11 am: Samstag, 17. Juni 2017, 08:23 »
Die sind doch selbst anscheinend ein beliebtes Angriffsziel, weil sie als dauerhafter Prozess mit ziemlich hohen Rechten im System rumfuhrwerken …

Das wäre dann Computer-Aids  ;)

Ich konnte die Meldung bei der Installation auf einem anderen System (Windows 10) reproduzieren, hier die Meldung

Typ: Datei
Quelle: C:\Program Files (x86)\LilyPond\usr\bin\_hotshot.dll
Status: Infiziert
Quarantäne-Objekt: 0b24767e.qua
Wiederhergestellt: NEIN
Zu Avira hochgeladen: NEIN
Betriebssystem: Windows XP/VISTA Workstation/Windows 7
Suchengine: 8.03.44.66
Virendefinitionsdatei: 8.14.08.102
Gefunden: TR/Crypt.XPACK.Gen
Datum/Uhrzeit: 17.06.2017, 08:15

Typ: Datei
Quelle: C:\Program Files (x86)\LilyPond\usr\bin\_multibytecodec.dll
Status: Infiziert
Quarantäne-Objekt: 00023d98.qua
Wiederhergestellt: NEIN
Zu Avira hochgeladen: NEIN
Betriebssystem: Windows XP/VISTA Workstation/Windows 7
Suchengine: 8.03.44.66
Virendefinitionsdatei: 8.14.08.102
Gefunden: TR/Crypt.XPACK.Gen
Datum/Uhrzeit: 17.06.2017, 08:15

Update: ich habe einen neuen Thread zu diesem Thema eröffnet:

Viren(fehl)alarm bei Installation von 2.19.62 auf Windows 8/10
« Letzte Änderung: Samstag, 17. Juni 2017, 08:46 von Manuela »
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

  • Hero Member
  • *****
  • Beiträge: 584
    • Manuelas Lilypond Wiki
Antw:ChordNames zentrieren (gelöst)
« Antwort #12 am: Samstag, 17. Juni 2017, 19:24 »
So, nochmals eine Rückmeldung zum Code.

Ich bin noch immer begeistert, nach Durchsicht meines PDFs (über 106 Seiten) konnte ich keinen Fehler feststellen  :)
Danke für eure Hilfe
viele Grüße
-- Manuela