Autor Thema: Vertikale Abstände von Chordnames ändern  (Gelesen 3005 mal)

Manuela

  • Member
Vertikale Abstände von Chordnames ändern
« am: Samstag, 28. Mai 2016, 14:15 »
Harm, ich habe versucht, deine geniale Lösung aus diesem Thread https://liarchiv.joonet.de/index.php?topic=2274.0 abzuwandeln, bin jedoch grandios gescheitert, u.a. auch daran, dass ich 6 music-Variable brauche.

Daher habe ich es anders probiert. Grundsätzlich funktioniert es, allerdings kämpfe ich mit den vertikalen Abständen. Insbesonders die letzte Chordname-Zeile jeder 3er-Gruppe scheint irgendwie am darunter liegenden Notensystem zu hängen.

Warum ich alle Zeilen in eine StaffGroup zusammengefasst habe, ist leicht erklärt. Ich möchte, dass alle Takte ausgerichtet untereinander stehen, weil jede Zeile 7 Akkorde umfasst. Eine andere Möglichkeit dafür ist mir nicht eingefallen, vielleicht gibt es sie.

Ein weiteres Problem ist, dass \annotateKey eine Note verlangt. Füge ich bei den Akkorddefinitionen eine unsichtbare Note mit s1 hinzu, so entsteht ein unschöner Leerraum nach dem Notenschlüssel. Daher habe ich den Weg gewählt, die Beschriftung "Stufe I  II" für den 1. und 2. Akkord zusammenzufassen, an den 2. Akkord anzuhängen und mithilfe von Leerzeichen einigermaßen auszurichten, ganz ist es mir nicht gelungen.

In meinem Code sind sicher überflüssige und einander widersprechende Definitionen von offset, padding etc. enthalten. Das liegt daran, dass ich das ganze System noch immer nicht ganz durchblicke. Ich habe deswegen den ganzen Code mit neun Notenzeilen drinnen gelassen, damit man sieht, wie eine komplette Seite gestaltet wird.

Ich hoffe, anhand des Screenshots ist meine Absicht klar.

Hier der Code (auch als Anhang):

\version "2.19.37"

\language "deutsch"
\include "myScheme.ily"

\paper {
  left-margin = 25
  right-margin = 25
  indent = 0
}

\layout {
  \context {
    \Score
    \omit SystemStartBar
    \remove "Bar_number_engraver" % Taktnummerierung
    \override RehearsalMark.self-alignment-X = #LEFT
    \override NonMusicalPaperColumn.page-break-permission = ##f
    proportionalNotationDuration = #(ly:make-moment 1/1)
    \remove "Mark_engraver"
    \remove "Staff_collecting_engraver"
  }
  \context {
    \ChordNames
    chordNameLowercaseMinor = ##f
    \override ChordName.font-name = #"Monospac821 BT"
    \override ChordName.font-series = #'bold
  }
  \context {
    \Staff
    \remove "Time_signature_engraver"
    \remove "Bar_engraver"
    explicitKeySignatureVisibility = ##(#f #f #t)
    \consists "Mark_engraver"
    \consists "Staff_collecting_engraver"
    \override RehearsalMark.self-alignment-X = #LEFT
    \override RehearsalMark.padding = #1
    \override RehearsalMark.direction=#UP
    \override RehearsalMark.outside-staff-priority = ##f
    \override RehearsalMark.X-offset = #7
  }
  \context {
    \Voice
    \override TextScript.font-size = #3
    \override TextScript.font-series = #'bold
  }
  \context {
    \StaffGroup
    \override SystemStartBracket.stencil = ##f
  }
}

NewStaffWith=   {
  \override Clef.transparent=##t
  \override KeySignature.transparent=##t
  \override StaffSymbol.line-count=#1
  \override StaffSymbol.transparent=##t
}

NewVoiceWith={
  \override TextScript.direction = #DOWN
  \override TextScript.font-size = #3.5
  \override TextScript.font-series = #'bold
}

MeineFunktion=
#(define-music-function
  (dur3 dur4 dur5 moll3 moll4 moll5)
  (ly:music? ly:music? ly:music? ly:music? ly:music? ly:music?)
  #{
    \new StaffGroup
    <<
      \new Staff
      \with \NewStaffWith
      %% Staff mit Überschrift sowie Stufenbeschriftung
      <<
        \new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
        {
          \key c \major
          \annotateKey
          \markup #(format #f "Leitereigene Mehrklänge in " ) \markup "-Dur"
          s1
          \override TextScript.Y-offset = #-8
          \override TextScript.font-size=#2
          \override TextScript.self-alignment-X=#RIGHT
          \override TextScript.font-series = #'normal
           s1_"     Stufe: I        II"
          \override TextScript.self-alignment-X=#CENTER
          s1_"III"
          s1_"IV"
          s1_"V"
          s1_"VI"
          s1_"VII"
          \pageBreak
        }
      >>
      \new Staff
      <<
        \new Voice
        \mark \markup "Dreiklänge"
        $dur3
        \new ChordNames $dur3
      >>
      \new Staff
      <<
        \new Voice
        \mark \markup "Vierklänge"
        $dur4
        \new ChordNames $dur4
      >>
      \new Staff
      <<
        \new Voice
        \mark \markup "Fünfklänge"
        $dur5
        \new ChordNames $dur5
      >>
      \new Staff \with \NewStaffWith
      \new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
      {
        \key c \minor
        \annotateKey
        \markup #(format #f "Leitereigene Mehrklänge in " ) \markup "-Moll"
        s1
      }
      \new Staff
      <<
        \new Voice
        \key c \minor
        \mark \markup "Dreiklänge"
        $moll3
        \new ChordNames $moll3
      >>
      \new Staff
      <<
        \new Voice
        \key c \minor
        \mark \markup "Vierklänge"
        $moll4
        \new ChordNames $moll4
      >>
      \new Staff
      <<
        \new Voice
        \key c \minor
        \mark \markup "Fünfklänge"
        $moll5
        \new ChordNames $moll5
      >>
      \new Staff \with \NewStaffWith
      \new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
      {
        \key a \minor
        \annotateKey
        \markup #(format #f "Leitereigene Mehrklänge in " )\markup "-Moll"
        s1
      }
      \new Staff
      <<
        \new Voice
        \key a \minor
        \mark \markup "Dreiklänge"
        \transpose c a, $moll3
        \new ChordNames \transpose c a, $moll3
      >>
      \new Staff
      <<
        \new Voice
        \key a \minor
        \mark \markup "Vierklänge"
        \transpose c a, $moll4
        \new ChordNames \transpose c a, $moll4
      >>
      \new Staff
      <<
        \new Voice
        \key a \minor
        \mark \markup "Fünfklänge"
        $moll5
        \new ChordNames \transpose c a, $moll5
      >>

    >>
  #})

multipleTransposes =
#(define-music-function (m music)(ly:music? ly:music?)
   (music-clone m
     'elements
     (map (lambda (pitch)
            (ly:music-property #{ \transpose c $pitch $music #} 'element))
       (event-chord-pitches m))))

DurDrei = \chordmode { c1 d:m e:m f g a:m h:dim }
DurVier = \chordmode { c1:maj7 d:m7 e:m7 f:maj7 g:7 a:m7 h:dim7.7 }
DurFuenf = \chordmode { c1:maj9 d:m9 e:m9.9- f:maj9 g:9 a:m9 h:dim7.7.9- }

MollDrei = \chordmode { c1:m d:dim es:aug f:m g as h:dim  }
MollVier  = \chordmode { \set majorSevenSymbol = \markup { j7 }  c1:maj7.3- d:m7.5- es:maj7.5+ f:m7 g:7 as:maj7 h:dim7  }
MollFuenf  = \chordmode { \set majorSevenSymbol = \markup { j7 } c1:m9.7+ d:dim7.7.9- es:maj9.5+ f:m9 g:9.9- as:maj9.9+ h:dim9.9- }

\multipleTransposes { c g h, }
{
  \MeineFunktion \DurDrei \DurVier \DurFuenf \MollDrei \MollVier \MollFuenf
}

« Letzte Änderung: Samstag, 28. Mai 2016, 14:24 von Manuela »

harm6

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #1 am: Montag, 30. Mai 2016, 00:09 »
Hallo Manuela,
ich bin gerade mit einem anderen LilyPond-Problem schwer beschäftigt und hab praktisch kaum in Deinen Code gesehen. Aber schon bei flüchtigster Durchsicht schachtelst Du wieder Contexte. Kommentier die SystemStartBracket mal wieder ein ...

Wäre es nicht besser meinen schon erwähnten Code anzupassen?
Ich weiß allerdings nicht wann ich dazu komme es zu versuchen und Erfolg kann ich natürlich nicht garantieren.


Gruß,
  Harm

Manuela

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #2 am: Montag, 30. Mai 2016, 09:33 »
Wäre es nicht besser meinen schon erwähnten Code anzupassen?

Genau das habe ich versucht mit dem Erfolg wechselnder Fehlermeldungen...

Lass dir ruhig Zeit, es ist nicht dringend, ich habe auch noch eine Menge anderer Sachen zu tun  :)

Darf man fragen, um welches Lily-Problem es sich handelt, wäre es auch für die breitere Masse der Anwender (sprich: ich  ;) ) interessant?

harm6

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #3 am: Montag, 30. Mai 2016, 22:49 »
[OT]
Zitat
Darf man fragen, um welches Lily-Problem es sich handelt,

Momentan können diverse Entwickler, meine Wenigkeit eingeschlossen, keine Dokumentation aus dem source-code heraus compilieren.
Im wesentlichen bedeutet das, daß keine neuen patches mehr getestet werden können und somit die Entwiclung zum Stillstand kommt.

Es scheint sich um zwei Probleme zu handeln.
a) ein garbage-collection-Problem
b) ein font-Problem (vor allem bei neuen 64-bit-OS, wie bei mir)

Falls Du weiterlesen willst:
http://lilypond.1069038.n5.nabble.com/broken-doc-build-orchestra-ly-tt190785.html
http://lilypond.1069038.n5.nabble.com/OpenType-CFF-Collection-OTC-fonts-tt191129.html
besonders:
http://lilypond.1069038.n5.nabble.com/Still-cannot-make-doc-tt191053.html
sowie einige andere Threads auf der devel-mailing-list.

Gruß,
  Harm

Manuela

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #4 am: Montag, 6. Juni 2016, 09:39 »
Momentan können diverse Entwickler, meine Wenigkeit eingeschlossen, keine Dokumentation aus dem source-code heraus compilieren.
Im wesentlichen bedeutet das, daß keine neuen patches mehr getestet werden können und somit die Entwiclung zum Stillstand kommt.

Interessant, diese Lektüre.
Das scheint kein Lilypond Problem zu sein, sondern eines der Entwicklungsumgebung. Leider habe ich meine letzte Kompilation vor ca. 30 Jahren durchgeführt, und die damaligen Systeme hatten wirklich überhaupt keine Ähndlichkeit mit den heuten. Abgesehen davon, dass ich nicht mit Linux arbeite, sondern mit Windoofs.

Manuela

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #5 am: Montag, 6. Juni 2016, 09:39 »
Momentan können diverse Entwickler, meine Wenigkeit eingeschlossen, keine Dokumentation aus dem source-code heraus compilieren.
Im wesentlichen bedeutet das, daß keine neuen patches mehr getestet werden können und somit die Entwiclung zum Stillstand kommt.

Interessant, diese Lektüre.
Das scheint kein Lilypond Problem zu sein, sondern eines der Entwicklungsumgebung. Leider habe ich meine letzte Kompilation vor ca. 30 Jahren durchgeführt, und die damaligen Systeme hatten bestenfalls eine entfernte Ähndlichkeit mit den heuten. Abgesehen davon, dass ich nicht mit Linux arbeite, sondern mit Windoofs.

harm6

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #6 am: Montag, 6. Juni 2016, 10:09 »
Zitat
Das scheint kein Lilypond Problem zu sein, sondern eines der Entwicklungsumgebung.

Beide erwähnten Probleme sind vorerst (teilweise) gelöst.
Das garbage-collection-problem trat auf im Zuge der (andauernden) Neustrukturierung des C++ Codes und mit den neuesten patches von David Kastrup klapp es wieder, vorerst ...
Das font-Problem besteht darin, daß ghostscript manche japanischen fonts nicht verarbeiten kann, zumindest nicht mit den Optionen, die bislang für die Documentation verwendet wurden.
Siehe:
http://lilypond.1069038.n5.nabble.com/make-doc-still-fails-problem-with-lilypond-book-was-Still-cannot-make-doc-td191318.html
Ein patch ist auf dem Weg.

Zitat
Leider habe ich meine letzte Kompilation vor ca. 30 Jahren durchgeführt, und die damaligen Systeme hatten wirklich überhaupt keine Ähndlichkeit mit den heuten. Abgesehen davon, dass ich nicht mit Linux arbeite, sondern mit Windoofs.

Falls Du es probieren möchtest, so solltest Du LilyDev in einer VB versuchen.
http://lilypond.org/doc/v2.19/Documentation/contributor-big-page#quick-start

Gruß,
  Harm

Manuela

  • Member
Re: Vertikale Abstände von Chordnames ändern
« Antwort #7 am: Montag, 6. Juni 2016, 10:29 »
Beide erwähnten Probleme sind vorerst (teilweise) gelöst.

Freut mich zu hören.

Falls Du es probieren möchtest, so solltest Du LilyDev in einer VB versuchen.
http://lilypond.org/doc/v2.19/Documentation/contributor-big-page#quick-start


Danke für den Link.

Solche Dinge interessieren mich sehr, doch sie haben einen Nachteil: es braucht enorm viel Zeit, um sich einzuarbeiten und damit zu befassen.

Ich muss mir leider genau überlegen, wofür ich meine Zeit investiere (wer nicht! andererseits - wenn ich sehe, wie viel Zeit die Menschen vor dem Fernseher verbringen...). Entweder Lilypond-Code zu prodzuieren (Czerny Op.840) oder an meinen Scheme-Programmen weiter zu arbeiten oder an meinen Instrumenten zu üben (Klavier, Akkordeon) oder wenigstens ein bisschen Bewegung zu machen oder oder oder .... (mal abgesehen von Berufstätigkeit und Haushalt; die Liste lässt sich ziemlich weit fortsetzen).