Autor Thema: Suffix bei Chordnames einstellen  (Gelesen 4357 mal)

hosios

  • Gast
Suffix bei Chordnames einstellen
« am: Mittwoch, 17. August 2011, 07:00 »
Hallo, ich mal wieder,

komm mich schon ganz dumm vor immer wieder mal einfache Fragen zu stellen. Ich versuche lange selber auf Antowrten und Lösungen zu kommen, aber ich sizte wieder fest.

Ich möchte diesmal die zahlen, (z.B - 4, 6, 7, etc) in einem Chordname etwas vergrössern und etwas niedriger stellen. Harm und trulli haben mir schon bei den sharps und flats geholfen, siehe https://archiv.lilypondforum.de/index.php?topic=918.0. Jetzt ist mir die 7 aber etwas zu hoch. Sieht so aus als ob die noch fürs Vorzeichen "geraised" ist.

Folgend ein Beispiel:
die erste Zeile ist wie Lilypond die Griffe jetzt kompiliert, und
die zweite Zeile ist wie ich die haben möchte (mit Gimp verändert)

harm6

  • Gast
Re: Suffix bei Chordnames einstellen
« Antwort #1 am: Mittwoch, 17. August 2011, 14:31 »
Hallo Paul,

das ganze funktioniert wie bei der Änderung in diesem Thread.

In chExceptionMusic müssen die Akkorde aufgeführt werden mit dem neuen Erscheinungsbild ( -\markup ... ). Allerdings nur dem Prinzip nach: mit <c ees g> ist jeder moll-Akkord gemeint, etc . Jedes Akkord-Prinzip muß einzeln benannt werden! Das können natürlich sehr viele sein. (Ich habe mich jetzt auf ein paar wenige beschränkt)

Das Ganze wird mittels
chExceptions = #( append (sequential-music-to-chord-exceptions chExceptionMusic #t) ignatzekExceptions)
zugänglich gemacht.

Um die Änderung grundsätzlich, d.h. Für den gesamten score aufzurufen:

  \layout {
      \context {
              \ChordNames
              chordNameExceptions = #chExceptions
      }
  }

Fallweise mit: newChords = { \set chordNameExceptions = #chExceptions } in den Akkorden.

Die Änderungen des Erscheinungsbildes erfolgen mittels \raise und \fontsize. Ich habe noch ein neues markup-command chChange dazu geschrieben. Dieses setzt die entsprechenden Werte auf \raise #'1 und \fontsize #'-0.5. (Du kannst diese Werte natürlich noch anpassen. Sie sind dann aber festgelegt.) Falls Du flexibler sein möchtest benutze chChange-flex mit einsetzbaren Werten oder gehe zurück auf das ursprüngliche \raise und \fontsize. Im Code und im Bild habe ich alles mal benutzt. (Manche Setzungen habe ich aber nur des Effektes wegen benutzt, in einem realen Musikstück sollte man schon was anderes nehmen.)
Ansonsten habe ich die Änderungen des chordRootNamer aus diesem Thread gleich mitintegriert.

\version "2.14.1"

% chordRootNamer

#(define (myChordNames pitch computer-sind-blöd)

   (define (pitch-alteration-semitones pitch)
     (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
     
   (define (conditional-kern-before markup bool amount)
     (if bool
         (make-line-markup
          (list (make-hspace-markup amount)
          markup))
         markup))
     
   (define (accidental->markup alteration)
     (if (= alteration 0)
         (make-line-markup (list empty-markup))
         (conditional-kern-before
          (alteration->text-accidental-markup alteration)
          (= alteration FLAT) 0.2)))
     
   (let* ((name (ly:pitch-notename pitch))
          (alt-semitones  (pitch-alteration-semitones pitch))
          (n-a (cons name alt-semitones)))
     (make-line-markup
      (list
       (make-simple-markup
         (vector-ref #("C" "D" "E" "F" "G" "A" "B") (car n-a)))
       (make-fontsize-markup -2.5
        (make-raise-markup 1.2
         (accidental->markup (/ (cdr n-a) 2))))))))
         
% chordNameExceptions
         
#(define-markup-command (chChange layout props arg)(markup?)
(interpret-markup layout props
  (make-raise-markup 1
    (make-fontsize-markup -0.5
     arg))))
     
#(define-markup-command (chChange-flex layout props flex arg)(pair? markup?)
(interpret-markup layout props
  (make-raise-markup (car flex)
    (make-fontsize-markup (cdr flex)
     arg))))

chExceptionMusic = {
  <c f g>1-\markup \raise #'1 \fontsize #'-0.5 { "4" }
  <c ees g>1-\markup \chChange-flex #'(0 . -2) { "m" }
  <c e g a>-\markup \chChange { "6" }
  <c e g bes>1-\markup \chChange-flex #'(1 . -0.5)  { "7" }
  <c ees g bes>1-\markup { \chChange-flex #'(0 . -2) "m" \chChange-flex #'(1 . -0.5)"7" }
  <c e g d'>1-\markup  { \chChange { "add" \chChange "9" } }
  <c ees g d'>1-\markup  { \chChange-flex #'(0 . -2) "m" \chChange  "add" \chChange-flex #'(1 . 1) "9" }
}

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

%------------------------- Test ------------------------------------------------

newChords = { \set chordNameExceptions = #chExceptions }
 
theMusic = \chordmode { %\newChords
  c1:sus4 cis1:m d:6 dis:7 e:m7 f:5.9 fis:m5.9
}

\markup \column {\fontsize #'2 \bold "DEFAULT" \vspace #'2 }

\score {
        << \context ChordNames
           \theMusic
           %\context Voice \theMusic
        >>
}

\markup \column {\fontsize #'2 \bold "NEW" \vspace #'2 }

\score {
        << \context ChordNames
           \theMusic
           %\context Voice \theMusic
        >>
  \layout {
    ragged-right = ##t
      \context {
              \ChordNames
              chordNameExceptions = #chExceptions
              chordRootNamer = #myChordNames
      }
  }
}

Gruß,
  Harm
« Letzte Änderung: Mittwoch, 17. August 2011, 14:50 von harm6 »

harm6

  • Gast
Re: Suffix bei Chordnames einstellen
« Antwort #2 am: Mittwoch, 17. August 2011, 16:27 »
Nachtrag:

Das oben beschriebene Verfahren ist leider sehr aufwendig.

Ich habe zwar versucht die Definition für ignatzek-chord-names aus chord-ignatzek-names.scm herauszukopieren und zu modifizieren, aber es funktioniert nicht. Dieses file wird intern aufgerufen z.B.: durch lily.ly und weiter verarbeitet. Egal wie ich das also in einer eigenen Datei verändere, lilypond benutzt immer die internen files! Das zu ändern ist ein Riesenaufwand, falls überhaupt möglich.

Wenn man unbedingt will kann man allerdings die Original-Datei verändern:

- chord-ignatzek-names.scm  aufrufen
- Die Zeile mit (make-super-markup to-be-raised-stuff)) finden (ist bei mir Zeile 196)
- Diese Zeile löschen und mit:
   (make-raise-markup 1
           (make-fontsize-markup -0.5
                 to-be-raised-stuff)))
  ersetzen. Die Werte kann man natürlich noch nach persönlichen Vorlieben einstellen.

Ich selber würde aber davon abraten!!! Nicht nur wird die Datei bei jedem update überschrieben, sondern es ist auch so, daß ich nach einiger Zeit vergessen habe, was ich wie geändert habe. Die relevante Zeile dann wieder zu finden, erfüllt das Kriterium des maximalen Nervfaktors.

Aber wer will ...

Gruß,
  Harm

hosios

  • Gast
Re: Suffix bei Chordnames einstellen
« Antwort #3 am: Mittwoch, 17. August 2011, 23:48 »
Hallo Harm

Danke für deine Mühe. Ich hatte es schon selber festegestellt, dass die Lösung nicht so einfach war. Hatte auch schon die originale Dateien angeschaut, aber wie du sagtest, wollte ich auch nichts darin ändern.
Ich werde deine erste Lösung später ausporbieren, denn ich habe nicht so viel ausnahmen. Es ist ja schliesslich ein Buch mit Lieder für den Gitarrenunterricht für Anfänger, also nichts mit add9, dis, maj7, etc. Eigentlich nur die 7 und die 4, die ich am häufigsten brauche.

Danke nochmal

Gruß Paul

hosios

  • Gast
Re: Suffix bei Chordnames einstellen
« Antwort #4 am: Donnerstag, 18. August 2011, 07:02 »
haha  :D

hast das "lowercase" doch änder können?

sehr witzig :)

hosios

  • Gast
Re: Suffix bei Chordnames einstellen
« Antwort #5 am: Donnerstag, 18. August 2011, 07:12 »
Nochmal vielen Dank für deine Mühe.
Habe eben alles etwas getestet. Die chChange Variante ist für dieses Projekt ausreichend. Aber mir gefällt die flexibelität auch. Werde diese Informationen gut aufbewahren.