Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Markus W. Kropp am Mittwoch, 28. Juni 2017, 13:58

Titel: wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Mittwoch, 28. Juni 2017, 13:58
Hallo Leute,

ich hoffe, die Frage ist präzise genug und beschreibe mal das Problem:

wenn ich im \chordmode folgendes eingebe:

g:7.9-.10--11+.13-

dann bekomme ich ein Galt

Okay, schön und gut. Hier fehlt meine "7" vor dem "alt". Ich will als Ergebnis haben:

G7 alt

Auch hier finde ich keine Lösung, wie ich eine 7 im \chordmode zusätzlich zum "alt" einfügen kann. Das hier:

g: 7.     7.9-.10--11+.13-
   =7           =alt

wäre zwar logisch, schluckt Lily aber nicht. Meine Frickellösung bisher ist, dass ich es so mache:

g:7

im \chordmode und dann mit \markup { ... } das Wort "alt" reinfummeln, was ich dann noch mit extra-offset ausrichten muss.

Ich weiß, dass man es eventuell so lösen könnte (hier kommt ein "add" dazu, könnte man übertragen auf die "7", die ich zusätzlich für das "alt" bräuchte, vom Sinn her übertragen):

\new ChordNames {
  <c e g d'>    % add9
  \set additionalPitchPrefix = #"add"
  <c e g d'>    % add9
}


Nur steht nirgendwo, in welchen Kontext das \new ChordNames rein muss. Funktioniert das dann auch, wenn ich mit \chordmode arbeite oder wie müsste ich das machen? *grübel*

Ein g:sus4.7 erzeugt ja ein

G7sus4

warum erzeugt ein g:alt.7 kein

G7alt

von der Logik her?

Puh, so viele Fragen.


Musikalische Grüße

Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Manuela am Mittwoch, 28. Juni 2017, 14:27
Mit \set chordNameExceptions kann man die Chordnamen ändern, weiter nach unten scrollen.

Displaying chords (http://lilypond.org/doc/v2.19/Documentation/notation/displaying-chords#customizing-chord-names)

Es empfiehlt sich, dies im Layout per \context \ChordNamens zu tun.
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Mittwoch, 28. Juni 2017, 14:33
Danke, dann werde ich mit dem Code mal rumspielen!


LG Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Manuela am Mittwoch, 28. Juni 2017, 14:40
Nur mal schnell quick & dirty ein Beispiel von meinem Code mit ein paar extra Sachen, die vll. nützlich sein könnten:

\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" }
  <c es g b d' f'>1-\markup { \fontsize #-0.5 "(7)" }
}

chUpperExMu =
{
  <c g>1-\markup { "" }
}

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


\layout {
\context {
    \ChordNames
    chordNameLowercaseMinor = ##t
    chordNameExceptions = #chExceptions
    chordChanges = ##f
    chordRootNamer = #germanChords
    \override ChordName.X-offset =
    #ly:self-alignment-interface::aligned-on-x-parent
    \override ChordName.self-alignment-X = #CENTER
    \override ChordName.font-size = #0
    \override ChordName.font-name = #"Arial Narrow"
    \override ChordName.layer = #2
     \override ChordName.extra-spacing-width = #'(-0.07 . 0.07)
    noChordSymbol = ##f
  }
  }

{
<<
\new ChordNames \chordmode { c c:m c:m9 }
\chordmode { c c:m c:m9 }
>>
}
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Mittwoch, 28. Juni 2017, 14:45
cool, danke!
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: iugin am Mittwoch, 28. Juni 2017, 19:52
Hallo Markus

ich mische mich kurz ein...
ZitatEin g:sus4.7 erzeugt ja ein
G7sus4
warum erzeugt ein g:alt.7 kein
G7alt
Der Grund könnte sein, dass ein Gsus4 die Noten g c d enthält, aber nicht die Sept. Gsus4 und G7sus4 sind zwei verschiedene Akkorde, und im zweiten Fall wird eben die Sept extra geschrieben.
Galt ist ein Dominant-Septakkord... einfach mit vielen Alterationen. Bleibt aber ein Septakkord. Die Zahl 7 ist also quasi inbegriffen. G7alt ist irgendwie redundant (obwohl ich es schon gesehen habe).

Dasselbe wäre mit z.B. C9. C9 hat die Sept schon drin, deswegen wird nicht als C79 notiert (auch hier, es gibt, aber selten). Lilypond macht es auch nicht.

{
\new ChordNames \chordmode { g:9 }
\new ChordNames \chordmode { g:7.9 }
}


Ich hoffe, es hilft.

Lieber Gruss

Eugenio
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Donnerstag, 29. Juni 2017, 09:04
Hallo Eugenio,

tja, das ist im Jazz so eine Sache. Da gibt es keine einheitliche Nomenklatur wie beim Generalbass oder in der Klassik. Für meinen Jazzer ist ein

A7alt

eben ein A-Dur-Septakkord mit einer Alterierung und etwas völlig (!) anderes als ein

Aalt

und von daher aus dessen Sicht NICHT redundant.

Der Mann ist Profi und einer der meist spielenden Pianisten deutschlandweit und komponiert selbst. Von daher kein Laie, der es eventuell noch nicht wissen könnte. Von daher halte ich mich natürlich an seine Aussagen, wie wo warum welche Akkorde im Jazz so oder so gelesen oder interpretiert werden (ich selbst bin kein Jazzer sondern "Klassiker" und das ist alles Neuland für mich).

Letztlich ist aus meiner Sicht das Problem, dass man im Jazz ein und denselben Akkord so, so oder so schreiben kann (inklusive irritierender Überschneidungen). Ich persönlich finde das sehr umständlich, aber die Jazzer scheinen das so haben zu wollen.



Musikalische Grüße

Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Manuela am Donnerstag, 29. Juni 2017, 09:31
Zitat von: Markus W. Kropp am Donnerstag, 29. Juni 2017, 09:04tja, das ist im Jazz so eine Sache. Da gibt es keine einheitliche Nomenklatur wie beim Generalbass oder in der Klassik.

Ich denke, genau deswegen gibt es in Lilypond die Möglichkeit, eine eigene Nomenklatur zu definieren. Was mit meinem Codebeispiel hoffentlich nicht allzu schwer fallen sollte  ;)
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Donnerstag, 29. Juni 2017, 09:34
Hi Manuela,

ja, wenn ich doch mehr Zeit hätte. Werde ich noch machen und auch hinbekommen. Beispielcode finde ich immer extrem hilfreich! Momentan muss ich es hinbekommen, den Font lilyJazz zu installieren. Raubt auch wieder viel Zeit, wenn man das noch nie gemacht hat ... dafür wird es am Schluss am geilsten sein!


LG Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: iugin am Donnerstag, 29. Juni 2017, 17:22
Hallo Markus

es würde mich interessieren, was der Unterschied zwischen den beiden Akkorden ist. Kannst du bitte deinen Kollegen fragen?
Ich kenne es so: ein alterierter Akkord ist ein Dominant-Akkord und enthält 1 - 3 - b5 - #5 - b7 - b9 - #9. Von dem her sind für mich Calt und C7alt gleich.
Aber es nimmt mich wunder, ob ich falsch liege.

Für den Forum: ich wollte mit PN fragen, damit ich nicht Off-Topic werde und nicht vom Forum gebannt werde  ;D aber vielleicht interessiert die Diskussion jemanden, und frage öffentlich. Sie mir bitte nicht böse...

Lieber Gruss

Eugenio
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Donnerstag, 29. Juni 2017, 23:41
Och, ich finde, das passt hier rein. Es behandelt schließlich den Hintergrund, warum Lilypond das so macht wie es es macht. Da sage ich zum Schluss was zu ...

Meine Antwort wäre (ohne den Herrn Jazzer gefragt zu haben): Lilypond sieht in einem Calt den Akkord C7b9b10#11b13 und von daher keinen Septakkord, der einfach "nur" alteriert ist. Von daher ist ein C7 alt (der als Septakkord tatsächlich "nur" alteriert wäre) etwas anderes als ein Calt.

Ich denke auch, dass es nicht eindeutig ist, dass ein C9 mit oder ohne Sept ist. Das finde ich zu uneindeutig. Und da ist wieder das Problem der nicht-eindeutigen Nomenklatur, die mir, mit Verlaub, ziemlich auf den Kartoffelsack geht. Aber ich kann's nicht ändern. Wie soll man denn z.B. einen "reinen" Nonakkord ohne Sept dann aufschreiben? Ich denke mittlerweile, je länger ich mich mit Jazzakkordnotation auseinandersetze, dass Lilypond bei Akkorden nicht zuviel mitdenken sollte. Wenn man ein c:alt.7 schreibt sollte einfach ein C7 alt rauskommen. Wenn man ein c.blödsinn.7.9+ schreibt, dann sollte ein C7#9 blödsinn rauskommen. Das würde das Schreiben von Akkorden für mich erheblich erleichtern. Ich denke mittlerweile nicht nur für mich. Denn was man hochgestellt am Buchstaben (Akkord) braucht sind die Zahlen + Vorzeichen und ein Wort hinten dran. Ganz einfach. Vielleicht auch mal ein Kreis als Sonderzeichen, okay. Das sollte man dann aber einfach als Kreis malen können und nicht so sehr von Lilypond interpretiert werden, das wäre einfacher.

Was spräche dagegen (evtl. neuen Thread eröffnen?!) ?


Musikalische Grüße

Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: harm6 am Freitag, 30. Juni 2017, 00:54
Hallo,

es scheint es bestehen eine ganze Reihe von Unklarheiten ...

Man sollte sich immer wieder klar machen, daß LilyPond die Akkordnamen aus den EventChords ableitet, die sie zu lesen bekommt.
Ein EventChord ist ein container der eine Liste von Tonhöhen (pitches) mit Dauern enthält.

Die beiden folgenden Eingaben führen also zum selben Ergebnis, wie man am output von \displayMusic sehen kann.

\chordmode { \displayMusic c }
{ \displayMusic <c' e' g'> }


Die erste Eingabe erfolgt via \chordmode, die zweite via \notemode (da das der default ist braucht man \notemode idR nicht anzugeben)
Die Ausgabe ist identisch, da mangels anderer Angaben alles in einen Staff gepackt wird (ist ebenfalls ein default)

Um Akkordnamen als Ausgabe zu bekommen muß man ChordNames als Context angeben:

\new ChordNames \chordmode { c }
\new ChordNames { <c' e' g'> }


Nun ist der chordmode konzipiert als eine Kurzschreibweise. Sieht man ja schon an obigen Beispielen.
Die simpelste Eingabe ist ein Dur-Akkord mittels \chordmode { c }. Als Ausgabe erhält man jedoch einen vollständigen Akkord mit Grundton, Terz und Quinte. \chordmode { c } ist tatsächlich eine Kurzschreibweise für \chordmode { c:1.3.5 }.
Tatsächlich versteht LilyPond jede Eingabe einer einzelnen Zahl als: Baue eine Terzschichtung bis zum angebenen n-ten pitch.
c:9 ist also c:1.3.5.7.9
Es gibt Ausnahmen, sowie die Möglichkeit pitches zu alterieren, auszulassen und hinzuzufügen.
Aber nochmal es geht hier immer um die Eingabe nicht um die Ausgabe
Zum Beispiel kann man moll-Akkord eingeben als: \chordmode { c:1.3-.5 } aber auch als \chordmode { c:m c:min }

Das Beispiel mit c:min und c:m ist besonders interessant, denn "m" und "min" sind per se keine Alterationen oder pitches oder Alterationen von pitches, sondern Schreibweisen, die der parser als "hier bitte kleine Terz nehmen" versteht. In gewissen Sinne sind es Ausnahmen von der fundamentalen Eingabe mittels einer durch Punkte getrennten Zahlenliste wie 1.3.5

Ähnliches gilt auch für sus, wobei sus eine weiter Zahl als Eingabe braucht, also sus2 oder sus4 (ansonsten wird gar keine Terz ersetzt/geschrieben aber eine doppelte Quinte geschrieben.)
Ob es noch weitere dieser Ausnahmeschreibweisen gibt hab ich jetzt nicht nachgeforscht...

Denn diese Schreibweisen sind Anwendervorschlägen geschuldet, die es gerne sähen wenn das was nachher als Ausgabe gedruckt wird, größere Ähnlichkeiten hat mit dem was sie eingeben.

Ich habe den Eindruck gewonnen, daß LilyPond den Anwendern nicht unbedingt einen Gefallen getan hat, als es diesen Forderungen nachkam.
Es führt zu einer Unmenge von Mißverständnissen.
Auch eine der Fragen diese threads (frei paraphrasiert), warum funktioniert c:sus4.7 aber nicht c:alt.7 könnte dann gar nicht aufkommen.


Die Eingabe erfolgt also indem man einen EventChord eingibt, der Tonhöhen enthält, die Ausgabe erfolgt indem man einen bestimmten Context wählt. Dort wird dann die entsprechende Funktion aufgerufen, die diesen EventChord in eine Darstellung umwandelt die dem gewählten Context als Ausgabe angemessen ist, z.B.:

m = \chordmode { g,:sus4.7 }
<<
  \new ChordNames \m
  \new FretBoards \m
  \new Staff { \clef "G_8" \m }
  \new TabStaff \m
>>


Nun hat der chordmode als Kurzschreibweise zur Eingabe durchaus Beschränkungen und gegenüber dem notemode nur wenige features.
Auch die printing-Funktion für ChordNames, ignatzek-chord-names, hat ihre Probleme. Und dann gibt es noch allgemein etablierte Akkordschreibweisen, die von ignatzek-chord-names nicht umgesetzt werden können.
Deshalb wurden exceptions definiert sowie Methoden wie der Anwender diese selbst definieren kann.

Um auf die titelgebende Frage dieses threads zu kommen, falls
\new ChordNames \chordmode { g:7.9-.10-.11+.13- }
nicht das gewünschte Ergebnis liefert (welches im übrigen selbst schon via exceptions erreicht wurde), so definiere Deine eigene Ausnahme und füge sie der exception-list hinzu, führt zu:

chExceptionMusic = {
  <c e g bes des' ees' fis' aes'>1-\markup { \super "7alt" }
}


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

\new ChordNames
\chordmode {
\set chordNameExceptions = #chExceptions
g:7.9-.10-.11+.13-
}



Während ich obiges schrieb hatte Markus noch mal gepostet:
Zitat
Ich denke mittlerweile, je länger ich mich mit Jazzakkordnotation auseinandersetze, dass Lilypond bei Akkorden nicht zuviel mitdenken sollte. Wenn man ein c:alt.7 schreibt sollte einfach ein C7 alt rauskommen. Wenn man ein c.blödsinn.7.9+ schreibt, dann sollte ein C7#9 blödsinn rauskommen. Das würde das Schreiben von Akkorden für mich erheblich erleichtern. Ich denke mittlerweile nicht nur für mich. Denn was man hochgestellt am Buchstaben (Akkord) braucht sind die Zahlen + Vorzeichen und ein Wort hinten dran. Ganz einfach. Vielleicht auch mal ein Kreis als Sonderzeichen, okay. Das sollte man dann aber einfach als Kreis malen können und nicht so sehr von Lilypond interpretiert werden, das wäre einfacher.

Diese Ansicht wird des öfteren vertreten, zuletzt ziemlich vehement auf der internationalen mailing-list  (und sie hat ja auch etwas für sich).
Wenn man das so machen möchte empfiehlt sich der \lyricmode in Lyrics. Um sich das Leben dann nicht allzu schwer zu machen brächte man dann allerdings noch eine fundierte printing-procedure)
Allerdings erkauft mn sich die Eingabe mittels lyricmode mit gravierenden Nachteilen.
Diese Eingabe kann man nicht im Staff verwenden, man kann sie nicht im TabStaff verwenden, man kann sie nicht für FretBoards verwenden und sie gibt kein midi aus.


Zitat
Ich denke auch, dass es nicht eindeutig ist, dass ein C9 mit oder ohne Sept ist. Das finde ich zu uneindeutig.
Seh ich genauso, die Eingabe \chordmode { c:1.3.5.7.9 c:1.3.5.9 } (andere Eingaben um die 7 auszuschliessen sind möglich) sollte zwei verschieden Akkordnamen ausgeben. Der zweite als Cadd9, imho.

Zitat
Und da ist wieder das Problem der nicht-eindeutigen Nomenklatur, die mir, mit Verlaub, ziemlich auf den Kartoffelsack geht.
Wessen Nomenklatur? LilyPonds?
Das Problem ist doch, daß es zahlreiche Systeme gibt, die mitunter doch recht unsystematisch daherkommen, wie man Akkordnamen aufschreiben sollte.
LilyPond ist da in der Tat viel zu unflexibel. Aber welchem System, welcher Ansicht soll man denn folgen? Irgendeinen default sollte man schon etablieren...


Wie ich neulich schon schrieb gib es ein GSoC-Projekt zu ChordNames, vielleicht kommt ja was schönes dabei raus.


Gruß,
  Harm
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Freitag, 30. Juni 2017, 09:02
Moin harm,

puh, danke für die vielen Erklärungen. Das werde ich mir mal sehr konzentriert zu Gemüte führen. Deshalb jetzt erst einmal kurz, um Deine Frage

Zitat von: harm6 am Freitag, 30. Juni 2017, 00:54
Wessen Nomenklatur? LilyPonds?
Das Problem ist doch, daß es zahlreiche Systeme gibt, die mitunter doch recht unsystematisch daherkommen, wie man Akkordnamen aufschreiben sollte.
LilyPond ist da in der Tat viel zu unflexibel. Aber welchem System, welcher Ansicht soll man denn folgen? Irgendeinen default sollte man schon etablieren...

zu beantworten.

Ich habe mich nicht eindeutig ausgedrückt, sorry. Ich meinte die Nomenklatur im Jazz, nicht die von Lilypond. Die Jazzer haben eben keine einheitliche Nomenklatur Ihrer Akkorde. Deshalb gibt es gar kein System, welchem man folgen könnte. Deswegen die Idee, dass Lilypond weniger interpretiert sondern tatsächlich die Eingabe = Ausgabe ist, ohne dass Lilypond "mitdenkt". Das wäre für den "Programmierer" des Notentextes einfacher, denke ich. Und zwar, wenn es innerhalb des \chordmode geschähe und nicht im \lyricmode.

Oder man macht einfach einen \chordmode2 auf, der das macht wie von mir vorgeschlagen (C1:blödsinn.7.9+ = C7#9 blödsinn). Interessant, dass es in der Malingliste schon diskutiert wird.

Dann hätte man zwei standards – den jetzigen unter \chordmode, den ich prinzipiell nicht schlecht finde und eben einen zweiten \chordmode2. Also zwei Standards parallel. Ich denke auch, dass es einen Standard braucht. Oder eben zwei. Oder wäre das zu verwirrend?


Nachdenkliche Grüße

Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Malte am Freitag, 30. Juni 2017, 09:26
Zitat von: Markus W. Kropp am Donnerstag, 29. Juni 2017, 23:41
Meine Antwort wäre (ohne den Herrn Jazzer gefragt zu haben): Lilypond sieht in einem Calt den Akkord C7b9b10#11b13 und von daher keinen Septakkord, der einfach "nur" alteriert ist. Von daher ist ein C7 alt (der als Septakkord tatsächlich "nur" alteriert wäre) etwas anderes als ein Calt.
Calt enthält also 1, 3, 7, ♭9, ♯9, ♯11, ♭13. Und C7 alt doch auch 1, 3, 7, ♭9, ♯9, ♯11, ♭13, oder? Sehe grad keinen Unterschied, weil die 7 doch in Calt auch schon drin ist. Vermutlich verstehe ich nicht, was du mit ,,,nur' alteriert" meinst. Nur die Septim alteriert? dann hieße der aber Cmaj7 oder Cj7 oder CM7 oder CΔ.

Oder ging es darum, daß man Calt auch als 1, 3, ♭5, ♯5, 7, ♭9, ♯9 denken kann? Aber ♭5=♯11 und ♯5=♭13, also gibts da eigentlich keinen Unterschied. Ebenso ♯9=♭10.

Zitat
Ich denke auch, dass es nicht eindeutig ist, dass ein C9 mit oder ohne Sept ist. Das finde ich zu uneindeutig. Und da ist wieder das Problem der nicht-eindeutigen Nomenklatur, die mir, mit Verlaub, ziemlich auf den Kartoffelsack geht. Aber ich kann's nicht ändern. Wie soll man denn z.B. einen "reinen" Nonakkord ohne Sept dann aufschreiben?
Für ,,Nonakkord mit Septim" gibts die Variante C7 9, für ,,Nonakkord ohne Septim" Cadd9 oder, v. a. im Pop, wo eher 2 als 9 gedacht wird, Cadd2. C9 ist für mich eigentlich immer einer mit 7 gewesen, aber in den meisten Fällen läßt sich für den Interpreten auch aus dem Kontext lesen, ob eine 7 dabei sein soll: Wenn es sich um eine Dominante handelt, z. B. ,,C9 Fm6" oder ,,C9 BΔ", dann ist die 7 dabei, wenn es eher eine Tonika oder Subdominante ist, z. B. ,,Dm7 G7 C9" oder ,,G C9 GΔ", dann bleibt die 7 entweder ganz raus oder ist ne ♯7.
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Freitag, 30. Juni 2017, 10:25
Hi Malte,

wegen Calt müsste ich wirklich nachfragen, so tief stecke ich da nicht drin. Mache ich noch.

Und zum anderen Thema: Du schreibst "ist für mich eigentlich immer" oder "für den Interpreten auch aus dem Kontext lesen". Das zeigt unter anderem: die Jazzer haben keine absolute, eindeutige Nomenklatur Ihrer Akkorde. Ich persönlich finde das stressig. Ich will nichts aus dem Kontext lesen müssen auch wenn ein klar definierter Akkord gemeint ist. Aber, wie gesagt, ich kann's nicht ändern. So what!


Grüße

Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Freitag, 30. Juni 2017, 15:41
... und hier die Antwort von meinem (studierten! plus praktizierender Profi mit verdammt vielen Konzerten!) Jazzer:

C alt gibt es nicht!

C7 sind die Töne: C E G Bb

C7 alt. lässt sich nicht in einem Vierklang darstellen, da sich die Alterationen auf die Oberstruktur des Akkords bezieht, also auf 9, 11 und 13.


So. Und nun? Wie gesagt, es gibt kein eindeutiges System auf dem man einen eindeutigen Standard mit Lilypond aufbauen könnte. Der Jazzer sagt Calt gibt es nicht. Lilypond stellt es aber dar. Deshalb meine (und auf der englischen Mailingliste) Überlegungen (s.o. in diesem Thread).


LG Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: iugin am Freitag, 30. Juni 2017, 16:58
Hallo Markus

Zitatdie Jazzer haben keine absolute, eindeutige Nomenklatur Ihrer Akkorde
Jazz ist Freiheit!
Anders als in der Klassik,wo alles ziemlich genau geschrieben ist, ist das Leadsheet pauschal notiert. Das gibt dem Musiker die komplette Freiheit.
So mit den Akkorden: in der Klassik heisst C7 (also, in der Klassik gibt so eine Notation nicht, aber nehmen wir an) C E G Bb. Nichts anderes.
Im Jazz heisst C7 auch C E G Bb. Aber vielmehr: spiel ein C-Akkord, der die Funktion von einem Septakkord hat. Du kannst dann C7, C9, C#11, C13, Calt, usw. spielen. Du kannst auch den Akkord ersetzen mit einer verwandten Funktion (zB. F# der Tritonus vom C), oder mit was anderes. Bin ich faul, schreibe ich C7. Bin ich pingelig, schreibe ich C7 9 #11. Schliesslich machst du, als Musiker, was du willst. Du musst nur verstehen "Bitte, da irgendwas, das nach Septakkord riecht".
Weil diese Musik entsteht in dem Moment. Und nur dieses Moment ist wichtig.

Lieber Gruss

Eugenio
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Freitag, 30. Juni 2017, 17:13
Ein Interpret in der Klassik hat auch komplette Freiheit. Nur auf eine andere Art. Gib 10 Interpreten das gleiche Stück von Bach und Du wirst 10 verschiedene Stücke hören.

Ich werde das Thema mal mit meinem Jazzer anschneiden, wenn ich Ihn sehe (kann dauern). Bin gespannt, wie er das sieht. Ich denke, dass es dazu viele verschiedene Sichtweisen gibt. Wie gesagt, der Jazz ist neu für mich (und es ist äußerst spannend).


LG Markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: harm6 am Samstag, 1. Juli 2017, 01:47
Zitat von: MarkusOder man macht einfach einen \chordmode2 auf, der das macht wie von mir vorgeschlagen (C1:blödsinn.7.9+ = C7#9 blödsinn). Interessant, dass es in der Malingliste schon diskutiert wird.

Ein erster Entwurf mit printing-procedure, engraver und neuem context. Allein einen neuen inputmode kann ich nicht adhoc erzeugen. Der parser müsste ihn ja dann auch verstehen. Dazu müßte man den parser patchen und neu LilyPond kompilieren. (Und von parser-code lass ich tunlichst meine Finger.)
Es gibt ohnehin bestimmt noch jede Menge Haken und Ösen ...


\version "2.19.62"
     
#(define (markup-concat-join markups sep)
  "Return concat-markup of @var{markups}, joining them with markup @var{sep}"
  (if (pair? markups)
      (make-concat-markup (list-insert-separator markups sep))
      empty-markup))

#(define (root-list root-strg)
  (cond
    ((string-contains root-strg "is")
     (list (string-capitalize (string-take root-strg 1))
           (make-raise-markup 0.6
             (make-smaller-markup
               (make-musicglyph-markup "accidentals.sharp")))))
    ((or (string-contains root-strg "s")
         (string-ci=? (string-take root-strg 1) "B"))
     (list (string-capitalize (string-take root-strg 1))
           (make-raise-markup 0.3
             (make-smaller-markup
               (make-musicglyph-markup "accidentals.flat")))))
    (else (list root-strg))))

#(define chords->lyrics
  (lambda (grob)
    (let* ((txt-prop (ly:grob-property grob 'text))
           (text-string
             (if (string? txt-prop)
                 txt-prop
                 (markup->string txt-prop)))
           (chrd&bass (string-split text-string #\/))
           (chrd (car chrd&bass))
           (root&adds (string-split chrd #\:))
           (bass
             (if (pair? (cdr chrd&bass))
                 (cadr chrd&bass)
                 ""))
           (slash-bass
             (if (string-null? bass)
                 ""
                 (make-concat-markup
                   (cons "/" (root-list bass)))
               
               ))
           (root (car root&adds))
           (root
             (make-concat-markup (root-list root)))
           (adds
             (if (null? (cdr root&adds))
                 ""
                 (cadr root&adds)))
           (adds-list                                                     
             (string-split adds #\.))
           (adds&alts
             (map
               (lambda (add)
                 (cond
                   ((string-contains add "+")
                    (make-concat-markup
                      (list
                        (make-raise-markup 0.6
                          (make-musicglyph-markup "accidentals.sharp"))
                        (string-delete add #\+))))
                   ((string-contains add "-")
                    (make-concat-markup
                      (list
                        (make-raise-markup 0.3
                          (make-musicglyph-markup "accidentals.flat"))
                        (string-delete add #\-))))
                   (else add)))
               adds-list)))
  (ly:grob-set-property! grob 'text
    (make-concat-markup
      (list
        root
        (make-super-markup
          (markup-concat-join adds&alts (make-hspace-markup 0.5)))
        slash-bass))))))

#(define (Chords_lyrics_engraver context)
   (make-engraver
     (acknowledgers
       ((lyric-syllable-interface engraver grob source-engraver)
        (chords->lyrics grob)))))


\layout {
  \context {
    \Lyrics
    \name "ChordMarkup"
    \consists \Chords_lyrics_engraver
    \override LyricText.font-family = #'sans
    \override LyricText.self-alignment-X = #LEFT
  }
  \context {
    \Score
    \accepts "ChordMarkup"
  }
  %% same for other contexts like StaffGroup, ChoirStaff etc
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXAMPLE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\paper { indent = 40 }

\layout {
  \context {
    \ChordNames
    \consists "Instrument_name_engraver"
  }
}

<<
\new ChordMarkup \with { instrumentName = \markup \fontsize #-2 "ChordMarkup" }
  \lyricmode {
  %% NB
  %% Chords with numbers need to be strings in lyricmode, otherwise they are
  %% taken as durations
  %% Durations need to be written after the string
  "Ces:7.9+.11-.13"2
  %% NB
  %% The position of the minor-modifier is changed !!
  "Cm:add9"
  "Cm:7/es"
  C:o
  C:ø
  %% TODO
  %% what to do with H/B/Bes ?
  H B Bes
  "C:7.9+.blödsinn.LOL"
  }

\new ChordNames \with { instrumentName = "ChordNames" }
  \chordmode { ces:7.9+.11-.13 c:m9^7 c:m7/ees c:m5- c:m5-.7 b bes }
\new Staff \with { instrumentName = "Staff" }
  { c''1 c'' c'' c'' c'' }
>>


Wenn man genau hinschaut so gibts schon ein paar Unterschiede im Druckbild, ich hab nicht alles gaaaanz genau gespiegelt:

(http://i.imgur.com/aI9aFm9.png)


Gruß,
  Harm

Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Samstag, 1. Juli 2017, 12:38
bin Grad nur zwischendurch am Handy. du bist echt crazy, harm! geilste Arbeit! ich kann zwar nicht so programmieren wie du aber ich Versuche Mal den Code nach zu vollziehen. sehr geil!

LG markus
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: harm6 am Mittwoch, 5. Juli 2017, 10:12
Zitat von: harm6 am Samstag,  1. Juli 2017, 01:47
Zitat von: MarkusOder man macht einfach einen \chordmode2 auf, der das macht wie von mir vorgeschlagen (C1:blödsinn.7.9+ = C7#9 blödsinn). Interessant, dass es in der Malingliste schon diskutiert wird.

Ein erster Entwurf mit printing-procedure, engraver und neuem context. [...]

Ein weiter entwickelter Code hier:
http://lists.gnu.org/archive/html/lilypond-user/2017-07/msg00018.html (http://lists.gnu.org/archive/html/lilypond-user/2017-07/msg00018.html)

Gruß,
  Harm
Titel: Antw:wie kann ich einen c7alt im \chordmode darstellen?
Beitrag von: Markus W. Kropp am Mittwoch, 5. Juli 2017, 11:52
Tausend Dank, harm!!! Ich werde allerdings erst in den nächsten Tagen dazu kommen da mal vertieft rein zu schauen. Zuviel Arbeit ... ist aber gespeichert. Bin gespannt!


LG Markus