wie kann ich einen c7alt im \chordmode darstellen?

Begonnen von Markus W. Kropp, Mittwoch, 28. Juni 2017, 13:58

« vorheriges - nächstes »

Markus W. Kropp

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

Manuela

Mit \set chordNameExceptions kann man die Chordnamen ändern, weiter nach unten scrollen.

Displaying chords

Es empfiehlt sich, dies im Layout per \context \ChordNamens zu tun.
Danke für eure Hilfe
viele Grüße
-- Manuela

Markus W. Kropp

Danke, dann werde ich mit dem Code mal rumspielen!


LG Markus

Manuela

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 }
>>
}
Danke für eure Hilfe
viele Grüße
-- Manuela

Markus W. Kropp


iugin

#5
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

Markus W. Kropp

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

Manuela

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  ;)
Danke für eure Hilfe
viele Grüße
-- Manuela

Markus W. Kropp

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

iugin

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

Markus W. Kropp

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

harm6

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

Markus W. Kropp

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

Malte

#13
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.

Markus W. Kropp

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