Notationsspezifisch > Noten für Gitarre

Vorzeichen in Chordnames ändern

<< < (2/3) > >>

harm6:
Hallo Paul,

wie trulli schon sagte:


--- Zitat ---In Lily kann man eigentlich alles ändern  - man muss nur wissen wie....
--- Ende Zitat ---

manchmal ist es aber etwas aufwendiger:


--- Code: ---\version "2.14.1"

#(define (pitch-alteration-semitones pitch)
  (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
 
#(define (conditional-string-downcase str condition)
  (if condition
      (string-downcase str)
      str))
 
#(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)))

#(define ((chord-name->germanMarkup B-instead-of-Bb)
     pitch lowercase?)
  (let* ((name (ly:pitch-notename pitch))
         (alt-semitones  (pitch-alteration-semitones pitch))
(n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
  (cons 6 (+ (if B-instead-of-Bb 1 0) alt-semitones))
  (cons name alt-semitones))))
    (make-line-markup
     (list
      (make-simple-markup
       (conditional-string-downcase
(vector-ref #("C" "D" "E" "F" "G" "A" "B") (car n-a))
lowercase?))
      (markup #:fontsize -3 #:raise 1.5
       (accidental->markup (/ (cdr n-a) 2)))))))

myChords = {
  \set chordRootNamer = #(chord-name->germanMarkup #f)
}

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

\paper {
indent = 20
short-indent = 20
}

\chords {
       
\mark \markup  { \null \raise #5 \bold "myChords" }
       
        \myChords
           
        c cis d dis e f fis g gis a ais b c
     \break
        c b bes a aes g ges f e ees d des c
     \break
     
\mark\markup { \vspace #4 \raise #5 \bold "normal    " }

     \unset chordRootNamer
        c cis d dis e f fis g gis a ais b c
     \break
        c b bes a aes g ges f e ees d des c
     \break
}

--- Ende Code ---

Den Code habe ich aus den internen lilypond-Dateien (chord-name.scm etc) entnommen und modifiziert. Das ganze ist jetzt nicht besonders elegant und im Code gibts noch einiges was man bestimmt rausnehmen könnte, aber es funktioniert.
Wenn Dir das Erscheinungsbild noch nicht zusagt kannst Du in dieser Code-Zeile aus der obigen Definition

(markup #:fontsize -3 #:raise 1.5

die Werte noch anpassen.

Gruß,
  Harm

P.S. Das LSR-Snippet funktioniert unter 2.14.1 nicht mehr (und ich habe bislang nicht erforscht warum nicht). Das LSR benutzt noch 2.12.2 und da funktioniert so einiges nicht mehr mit der neuen stable.
@trulli:
Deinen obigen Vorschlag habe ich ebenfalls nicht ans laufen bekommen.

hosios:
Wow! Ihr seid wirklich gut.

Auf so einen Code würde ich noch lange nicht gekommen sein.

Das ist genau was ich wollte. Perfekt!

Ich habe die werte auf size -2.5 und raise 1.2 gestellt. und das sieht super aus. :D

Vielen, vielen Dank.


PS.: Ich werde bestimmt auch noch mehr Fragen haben. Werde mich jetzt mal wieder etwas mit Lieder reintippen beschäftigen.

trulli:

--- Zitat von: harm6 am Samstag, 16. Juli 2011, 02:41 ---@trulli:
Deinen obigen Vorschlag habe ich ebenfalls nicht ans laufen bekommen.

--- Ende Zitat ---

Hallo harm6,

ich deinen auch nicht.  :D

Da wurde doch einiges in 2.14. verändert. Und ich hänge noch so an meinem 2.12.  ::)

Gruß

harm6:
Hallo zusammen,

hier noch eine vereinfachte Fassung:


--- Code: ---#(define (myChordNames  pitch lowercase?)

   (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 -3
        (make-raise-markup 1.5
         (accidental->markup (/ (cdr n-a) 2))))))))   
         
myChords = {
  \set chordRootNamer = #myChordNames
}

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

\paper {
indent = 20
short-indent = 20
}

\chords {
       
\mark \markup  { \null \raise #5 \bold "myChords" }
       
        \myChords
           
        c cis d dis e f fis g gis a ais b c
     \break
        c b bes a aes g ges f e ees d des c
     \break
     
\mark\markup { \vspace #4 \raise #5 \bold "normal    " }

     \unset chordRootNamer
        c cis d dis e f fis g gis a ais b c
     \break
        c b bes a aes g ges f e ees d des c
     \break
}
--- Ende Code ---

Ich habe allerdings keine Ahnung warum ich lowercase? nicht aus der Definition löschen kann, denn es erfüllt keine Funktion mehr. Tatsächlich kann man auch bla-blub oder ??? hinschreiben, ohne daß sich irgendwas ändert!! Ich habe dazu mal eine Frage im englischen Forum gestellt. Mal sehen was dabei herauskommt.

@trulli:
Wenn ich bla-blub oder irgenwas anderes reinschreibe bekomme ich sowohl das LSR-Snippet als auch Deinen obigen Vorschlag ans laufen. Insofern interessiert es mich ob die myChordNames-Definition in 2.12.3 kompiliert, wenn man lowercase? einfach löscht. Ich wäre Dir dankbar, wenn Du das mal testen könntest, da ich nur noch 2.14.1 auf dem Rechner habe.

Gruß,
  Harm

trulli:

--- Zitat von: harm6 am Sonntag, 17. Juli 2011, 00:50 --- Ich wäre Dir dankbar, wenn Du das mal testen könntest, da ich nur noch 2.14.1 auf dem Rechner habe.
--- Ende Zitat ---

Kein Problem. Erstmal kennt 2.12.3 gar kein \vspace. Wenn ich das durch \hspace ersetze bekomme ich diese Fehlerausgabe:

--- Code: ---Wrong number of arguments to #<procedure myChordNames (pitch lowercase?)>
--- Ende Code ---

Auch bla-blub oder blu-blab funktioniert nicht.  ;D

Ich weiß zu wenig vom Definieren als dass ich da weiterhelfen könnte...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln