Autor Thema: Verstehen von custom Chords  (Gelesen 2731 mal)

kilgore

  • Member
Verstehen von custom Chords
« am: Mittwoch, 14. September 2011, 15:52 »
Liebe Lilys,

Ich beschäftige mich jetzt zum ersten mal mit \chords und bin auf ein Problem gestoße, das ich irgendwie nicht lösen kann.

Zuerst finde ich es ziemlich komisch, wie man diese Chords baut.  Also die "chord exceptions" die in 2.7.2 vorkommen sind verwirrend.  Man muss also den gewünschten Akkord buchstabieren, aber transponiert in C, und dann modifiziert mit einem MarkUp.  Das funktioniert für mich eigentlich ok, aber einige Akkorde krieg ich einfach nicht hin.  Wer kennt sich aus?


Der erste Akkord geht gut.  Zweite ist aber schwer.  Erstens wird es auch mit gewöhnlich schreibweise nicht richtig dargestellt (es sollte sus2 UND "natural"2 sein).  Zweitens weiss ich nicht wie ich es dann buchstabieren soll in meiner "chord exception".  Ich habe mit einem \markup des Akkord richtig dargestellt unter dem zweiten Akkord, so möchte ich es am Ende haben.

Oder gibt es ein besseren Weg neue Akkorde zu definieren?  Ich finde diesen weg mit den "exceptions" sehr merkwürdig und unpraktisch....

Dank und Gruß!
kil


\version "2.12.3"





ExChords = {
<c e g a d'>1-\markup { \super \column { 9 6 } }
<c d dis g>1-\markup { \super \column { "sus2" \line { \natural 2 } } }
}
% Convert music to list and prepend to existing exceptions.
chExChords = #( append
( sequential-music-to-chord-exceptions ExChords #t)
ignatzekExceptions)

myChords = \chords {
  \set chordNameExceptions = #chExChords
  bes1:6.9
  as1:sus2.2+
}


up = \relative c' {
  <c d g>1
  <as bes es>
}

down = \relative c {
  \clef bass
  bes'1
  <as, b!>_\markup { A \flat \super \column {
      \line { sus2 }
      \line { \natural 2 }
    }
  }
}


<<
  << \myChords
  \new PianoStaff <<
    \new Staff { \up }
    \new Staff { \down }
  >>
>> >>

harm6

  • Member
Re: Verstehen von custom Chords
« Antwort #1 am: Donnerstag, 15. September 2011, 02:34 »
Hallo kil,

falls Du es nicht schon getan hast, so schau doch mal in die Gitarrenecke. Da gibts ganz oben ein paar Threads, die sich mit dem Verändern von Akkordschreibweisen befassen.

Zitat
Oder gibt es ein besseren Weg neue Akkorde zu definieren?  Ich finde diesen weg mit den "exceptions" sehr merkwürdig und unpraktisch....

Ich kenne keinen besseren Weg. Die einzige Alternative ist die Original-Datei zu verändern, wie ich hier an einem anderen Beispiel gezeigt habe.
Und ja es ist SEHR unpraktisch.

Zitat
Der erste Akkord geht gut.  Zweite ist aber schwer.  Erstens wird es auch mit gewöhnlich schreibweise nicht richtig dargestellt (es sollte sus2 UND "natural"2 sein).  Zweitens weiss ich nicht wie ich es dann buchstabieren soll in meiner "chord exception".

Ich fand es ebenfalls sehr schwierig eine Lösung für den zweiten Akkord zu finden. Aber hier mein Vorschlag:

\version "2.12.3"

chExceptionMusic = {
        <c d g dis'>1-\markup {
        \hspace #0.3
        \raise #3
        \fontsize #-3
        \override #'(baseline-skip . 0) 
        \column {
        "sus2"
        \line \vcenter { \natural \hspace #0.2 "2"
        } } }
        <c e g a d'>1-\markup { \super \column { 9 6 } }
}

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

%------------------------- Test ------------------------------------------------
 
Chords = \chords  {
   bes1:6.9 aes1:sus2.5.9+
}

upper = \relative c' {
  <c d g>1
  <as bes es>
}

lower = \relative c {
  \clef bass
  bes'1
  <as, b!>
}

\score {
  \new PianoStaff <<
    \Chords 
    \new Staff \upper
    \new Staff \lower
  >>
  \layout {
    ragged-right = ##t
      \context {
              \ChordNames
              chordNameExceptions = #chExceptions
      }
  }
}

Gruß,
  Harm

kilgore

  • Member
Re: Verstehen von custom Chords
« Antwort #2 am: Donnerstag, 15. September 2011, 23:43 »
Hey harm!

Danke für die Vorschläge!  Deine Lösung hat mir viel weiter geholfen für andere schwer-definierbare Akkorde!  Ich habe auch dann einen schnellen Weg gefunden, Akkorde zu schreiben wie ich möchte, in dem ich wilkürliche Akkorde schaffen aber dann mit dem gewünschten Resultat.  Die wilkürliche Akkorde  sind leichert zu buchstabieren, und kommen in dem Stück sonst nicht vor.

zum Beispiel:  as1:2.3.4+.5   ist einfach buschstabiert als <c d e fis g>  in meinem exceptions.  Dann kann ich alles drum und dran bauen.  Ist zwar ein Umweg, ist aber nicht so mühsam wenn es nur um ein paar Akkorde geht. 

Ich finde es aber trotzdem überraschend wie schwer die Akkord-Eingabe und Custom Chords sind bzw. sein können! 

harm6

  • Member
Re: Verstehen von custom Chords
« Antwort #3 am: Freitag, 16. September 2011, 00:00 »
Hi kil,

Zitat
as1:2.3.4+.5   ist einfach buschstabiert als <c d e fis g>  in meinem exceptions.  Dann kann ich alles drum und dran bauen.

Das geht natürlich, aber \chordmode kannst Du dann nicht mehr sinnvoll verwenden.

Gruß,
  Harm

kilgore

  • Member
Re: Verstehen von custom Chords
« Antwort #4 am: Freitag, 16. September 2011, 09:53 »
Ja das stimmt, aber ich nutze es sowieso nicht wirklich.  Und außerdem geht es nur um ein paar einzelne Akkorde, und die spezielle Eingabe ist dann völlig unabhängig von den Akkorden wie sie in den Noten dargestellt werden.  Diese unabhängigkeit ist nämlich was ich suche. 

Ich frage mich auch warum bestimmte Befehle nicht mit ChordName funktionieren.  Zum Beispiel

\once \override ChordName #'extra-offset = #'( 2 . 0 )

funktioniert.  Aber:

\once \override ChordName #'self-alignment-X = #CENTER

geht gar nicht.  Kann man die Ausrichtung überhaupt ändern? 

harm6

  • Member
Re: Verstehen von custom Chords
« Antwort #5 am: Freitag, 16. September 2011, 22:33 »
Hallo kil,

Zitat
Aber:
\once \override ChordName #'self-alignment-X = #CENTER
geht gar nicht.  Kann man die Ausrichtung überhaupt ändern? 

wenn ich IR 3.1.24 ChordName und 3.2.90 self-alignment-interface richtig verstehe, so ist das self-alignment-interface in ChordName nicht angelegt und deshalb klappt es nicht mit diesem Befehl.

Aber man kann entsprechendes natürlich definieren (Ich hab' den alten Code genommen und erweitert):

\version "2.14.2"

chExceptionMusic = {
        <c d g dis'>1-\markup {
        \hspace #0.3
        \raise #3
        \fontsize #-3
        \override #'(baseline-skip . 0) 
        \column {
        "sus2"
        \line \vcenter { \natural \hspace #0.2 "2"
        } } }
        <c e g a d'>1-\markup { \super \column { 9 6 } }
}

chExceptions = #( append
  (sequential-music-to-chord-exceptions chExceptionMusic #t)
  ignatzekExceptions)
 
chordAlign =
#(define-music-function (parser location dir)(number?)

#{
        #(define (chordNameCallback grob)
"
LEFT = -1
RIGHT = 1
CENTER = 0
"
          (let* ((ch (ly:text-interface::print grob)))
          (ly:stencil-aligned-to ch X $dir)))
   
        %\once
        \override ChordNames.ChordName #'stencil = #chordNameCallback
#})

%------------------------- Test ------------------------------------------------
 
Chords = \chords  {
        \chordAlign #-1

        bes1:6.9
        aes1:sus2.5.9+
}

upper = \relative c' {
  <c d g>1
  <as bes es>
}

lower = \relative c {
  \clef bass
  bes'1
  <as, b!>
}

\score {
  \new PianoStaff <<
    \Chords 
    \new Staff \upper
    \new Staff \lower
  >>
  \layout {
    ragged-right = ##t
      \context {
              \ChordNames
              chordNameExceptions = #chExceptions
      }
  }
}

Mein \chordAlign wirkt so wie das self-alignment-X. Die Definition erwartet allerdings eine Zahl als Eingabe. Im Moment habe ich \chordAlign #-1 benutzt. Das ist das default-Verhalten. Was Du letztendlich haben willst mußt dann selber einstellen. Genau wie die Entscheidung \once oder nicht (\once ist zur Zeit auskommentiert)

HTH,
  Harm

kilgore

  • Member
Re: Verstehen von custom Chords
« Antwort #6 am: Sonntag, 18. September 2011, 13:42 »
Wow cool Harm!  Vielen Dank!

  Irgendwann muss ich auch Scheme besser kennenlernen.  Scheint für Lilypond echt praktisch zu sein!