Thema "Unterlegnoten für Akkordzither"

Begonnen von Mikey70, Mittwoch, 15. Juni 2022, 20:38

« vorheriges - nächstes »

harm6

ZitatWeiß nicht, ob das jetzt wichtig ist.
Deine Kremser-Ausflug.ly läuft nicht durch.

Hast Du die include-Pfade angepasst?
Wenn die allererste Nachricht "Ungültige Fluchtsequenz: »\ZitherStaff«" lautet, dann stimmt höchstwahrscheinlich dort etwas nicht.

Ich sehe, daß Du jetzt 2.23.9 verwendest.
Sehr schön :)
Ich werde dann ab jetzt den support für 2.22. beenden, es gibt inzwischen einfach zu viele interne Änderungen, die mir das Coden schwer machen und nur Zeit kosten...

Gruß,
  Harm

Mikey70

Die Pfade hatte ich schon angepasst, aber läuft jetzt.
Nur die Akkorde sind nicht die, die ich auf der Zither habe...  Es gibt keinen Am Akkord   :'(
Ich muss noch rauskriegen, wie die Akkorde richtig sein müssen.

Hättest du eigentlich auch Interesse, Zither zu spielen?

harm6

#62
ZitatNur die Akkorde sind nicht die, die ich auf der Zither habe...  Es gibt keinen Am Akkord

Zur Erklärung:
Lilypond sieht Akkorde nie in ihrem tonalen Zusammenhang, sondern immer nur die jeweilige Struktur des einzelnen Akkordes.

Bei einem Am, eingegeben als <a' c'' e''> haben wir also
a' als tiefsten Ton,
  das ist für LilyPond der Grundton. Der Akkord wird also A<irgenwas> heißen.
c'' als nächst höheren Ton,
    für LilyPond die moll-Terz. Der Akkord wird also Am<irgenwas> heißen.
e'' als nächst höheren Ton,
    für LilyPond die reine Quinte. Der default für moll/Dur, es bleibt also bei Am.

Bei der Eingabe von <a' c'' f''> ist nur das f'' anders.
Die ersten beiden Töne führen also bereits dazu, daß der Akkord Am<irgenwas> heißen wird. Jetzt kommt f'' noch dazu, die kleine Sexte, also wird der Akkord Amb6 genannt.

Soweit die Erklärung.
Wir wollen natürlich keinen Amb6, sondern einen F-Dur (als Sextakkord) gedruckt sehen.
Das ist bei der Eingabe von Akkorden mittels der <...>-Syntax nicht möglich.
Ist auch irgendwo in der NR so beschrieben.

Lösung:
Statt <...> verwende Akkordschreibweise und nutze das feature andere Basstöne anzugeben:
\chordmode { f'/a }
Per default wird dann F/A gedruckt, also der Sextakkord mit den Tönen: a' c'' f''
Den /A Teil der Akkordbezeichnung brauchen wir nicht, das können wir aber ausschließen.

Hier zur Verdeutlichung in drei Schritten:

chrds =
\chordmode {
  <a' c'' f''> %% nicht was wir wollen
  f'/a  %% /A ist überflüssig, deshalb:
  \set slashChordSeparator = ""
  \set chordNoteNamer = #(lambda (x y) "")
  f'/a
  %% genauso:
  f'/c
}

<<
  \new ChordNames \chrds
  \new Staff \chrds
>>

ZitatIch muss noch rauskriegen, wie die Akkorde richtig sein müssen.

Alles oben gesagte gilt für default LilyPond. Du kannst das wahrscheinlich bereits jetzt auch für den Zithercode hin bekommen.
Ich bitte Dich aber zu warten bis ich das etwas benutzerfreundlicher implementiert habe.

ZitatHättest du eigentlich auch Interesse, Zither zu spielen?
Nö. ;)
Bin von Haus aus Gitarrist, das reicht mir.
Aber ich habe nicht nur ebenfalls ein Faible für ausgefallene Notationsformen, sondern ganz generell für schwierige Codings :D

Gruß,
  Harm


harm6

ZitatIch bitte Dich aber zu warten bis ich das etwas benutzerfreundlicher implementiert habe.

Eine neue Version ist hochgeladen.
Schau mal ins angehängte file, wie man jetzt vorgehen sollte.

Gruß,
  Harm

Du darfst diesen Dateianhang nicht ansehen.

Mikey70

So, hatte heute den ganzen Tag zu tun. Werde mir jetzt alles soweit es mir noch möglich ist, ansehen und mich dann, spätestens morgen Vormittag melden.
Bin schon gespannt.  ;)

Mikey70

#65
So, jetzt kann ich mich endlich melden.
Hatte gestern nämlich den ganzen Tag mit dem Notebook zu tun. Fresobaldi hatte in regelmäßigen Abständen beim Offnen des Programmes eine Fehlermeldung fabriziert:

Ein interner Fehler ist aufgetreten

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/frescobaldi_app/view.py", line 107, in event
    if ev.type() == QEvent.KeyPress:
AttributeError: 'QEnterEvent' object has no attribute 'type'

Weil du aber eh gesagt hattest, eine neuere Version wäre besser, hatte ich auf dem Versuchs-PC Fedora installiert, da wird standardmäßig die Version 2.23.9 installiert. Das war, als du das bemerkt und mir geschrieben hast.
Weil alles gut geklappt hat, wollte ich gestern nun Fedora auch auf mein reguläres Notebook bringen, da gab es aber mehr Probleme als ich dachte (WLAN Karte etc.)
Jetzt läuft es aber und heute morgen wurde über Updates gar die Version 2.23.10 installiert (hoffentlich testen die das auch richtig, bevor die Ausliefern)
Wie dem auch sei...

Zuallererst: Vom Optischen her bin ich total begeistert, die Zitherblattnoten selbst sehen perfekt aus und das normale Notenblatt ist auch geeignet, danach zu spielen, so man mag. So hatte ich es mir auch vorgestellt.

Wie du ja auch geschrieben hast, ist es nun v.a die Bedienbarkeit und das eine oder andere Layout Problem, an der noch gebastelt werden muss.

Bedienbarkeit: Ich hatte ja mich schon an die Eingabe mit den Buchstaben b(Bass) c(Akkord) und a (beides zusammen) gewöhnt.
Nun ist es wohl die default Eingabe, und damit komme ich noch nicht klar.

c,4:1 c/e q q
  c,4:1 c/e q q
  c,4:1 c/e q q
       .
   f,,:1 f, q q
       .
  c,4:1 c/e g,,:1 g,
  c,4:1 c/e q q
  c/e/+c r4 r2

Ich muss erst mal das Handbuch durchblättern, wo das genau erklärt wird. Eine Kapitelzahl weißt du auch nicht?
c/e sind die beiden ersten Töne im Akkord, wobei der erste Ton ja ein e ist? Was bedeutet das c?  Und das andere, :1 z.B. und q ist Wiederholung? Mit +c wird wohl angezeigt, dass der Akkord mit der C- Basssaite zusammen gespielt wird. Wie gesagt, ich steige da noch nicht durch. Würde mir das gerne im Handbuch mal in Ruhe durcharbeiten.

Layout: Problematisch ist wie schon mal erwähnt, nach wie vor, der Ausdruck. 100% Druck geht garnicht mehr. Da wird zuviel weggeschnitten. Also drucke ich jetzt mit der (normalen) Option "Auf Druckbereich verkleinern"  aus.
Das bedeutet aber, ich muss inzwischen eingeben: \override StaffSymbol.staff-space = 5.35
Irgendwie wird das ganze immer größer in den Ausmaßen.
Wenn du dafür wärst, randlos also 100% zu drucken, müsste auf jeden Fall oben und unten mehr Rand her.

Und die "Kremserfahrt" hat gezeigt, dass der große Abschnitt doch problematisch werden kann, in dem Fall werden 2 Noten weggeschnitten, Freilich könnte man jetzt transponieren, aber andererseits, ist auf dem Blatt ja genug Platz, zum einen könnten die Noten enger zusammen stehen und auch noch weiter nach unten verschoben werden.
Könnte das nicht automatisch gehen, wenn das Programm merkt, dass Noten auf dem Abschnitt liegen?
Ob der Abschnitt passt, konnte ich noch nicht testen, weil wir uns erst noch auf eine Druckart festlegen müssen.

Zu den Akkorden: Wenn ich davon ausgehe, dass die Noten der Akkorde, so wie ich sie dir gegeben habe, doch stimmen (darauf lässt sich schließen) und aus irgend einem Grund (nämlich weil es wohl eigentlich Akkordeonnoten sind)  im Notenheft andere Akkorde stehen, die praktisch so nicht spielbar sind sondern durch andere ersetzt werden müssen, dann muss aber auf dem Zitherblatt trotzdem der spielbare Akkord stehen. Wenn also auf dem Notenblatt Am steht muss dann auf dem Zithernotenblatt der entsprechende spielbare Akkord stehen. Habe ich das richtig verstanden, dass du das so gemacht hast? Aber wie funktioniert das? Wenn ich jetzt einen Akkord vorfinde, den ich nicht auf der Zither habe, kann dann das Programm den in einen spielbaren umwandeln?
Oder bin ich jetzt total irre und nehme das zu genau?

Du merkst sicher, mit Notenlehre muss ich mich auch noch intensiv beschäftigen. Mache ich aber gern, sofern die Zeit da ist. Im Moment bin ich aber schon froh, dass ich nach den Unterlegnoten ohne tiefere Kenntnisse der Materie spielen kann.

Jetzt habe ich viel geschrieben, bin gespannt, was davon umsetzbar ist.

Mikey70

#66
P.S.: Bin noch am Probieren, kannst du mir mal alle 6 Akkorde in der Schreibweise als code aufschreiben? Ich brauch was vor Augen...

Und die Noten, wie ich sie dir gegeben habe für die Akkorde stimmen definitiv, im Heft wurden Akkordeonnoten verwendet

harm6

ZitatWie du ja auch geschrieben hast, ist es nun v.a die Bedienbarkeit und das eine oder andere Layout Problem, an der noch gebastelt werden muss.

Sicher, ich bin aber immer noch dabei Funktionalität zu programmieren.
Schau mal in den snippets-Ordner, dort findest Du so allerlei.

ZitatIch hatte ja mich schon an die Eingabe mit den Buchstaben b(Bass) c(Akkord) und a (beides zusammen) gewöhnt.
Nun ist es wohl die default Eingabe, und damit komme ich noch nicht klar.
[...]
Ich muss erst mal das Handbuch durchblättern, wo das genau erklärt wird. Eine Kapitelzahl weißt du auch nicht?

http://lilypond.org/doc/v2.23/Documentation/notation/chord-mode#extended-and-altered-chords
sollte helfen, falls nicht hinreichend, öffne bitte einen neuen thread in 'Fragen und Probleme aller Art'. Es handelt sich hier ja nicht im spezielle Zitherfragen sondern um default-Funktionalität. Dieser thread ist sowieso schon der längste des gesamten Forums.
Tatsächlich könntest Du "b(Bass) c(Akkord) und a(beides zusammen)" auch wieder haben, aber um den Preis einer geringeren Variabilität, gerade im Hinblick auf die Kontrollausgabe in traditioneller Notation.

ZitatProblematisch ist wie schon mal erwähnt, nach wie vor, der Ausdruck. 100% Druck geht garnicht mehr. Da wird zuviel weggeschnitten. ...

Also...hier kann ich eigentlich kaum etwas sagen. Schließlich kann ich nicht unveränderbar vorgeben welches Papierformat Du wählst und welche Druckoption.
Ich persönlich würde eher auf A3 gehen, auch wenn ich dann damit in den Copy-shop gehen muß.
Und überflüssiges dann wegschneiden.

ZitatUnd die "Kremserfahrt" hat gezeigt, dass der große Abschnitt doch problematisch werden kann, in dem Fall werden 2 Noten weggeschnitten, Freilich könnte man jetzt transponieren, aber andererseits, ist auf dem Blatt ja genug Platz, zum einen könnten die Noten enger zusammen stehen und auch noch weiter nach unten verschoben werden.
Könnte das nicht automatisch gehen, wenn das Programm merkt, dass Noten auf dem Abschnitt liegen?

Ich sehe keine Möglichkeit das zu automatisieren: Das StaffSymbol darf von den Linien geschnitten werden, Noten etc aber nicht. Wie soll das automatisch gehen?
Ich kann das so machen, daß der ZitherStaff immer unterhalb dieser Linien anfängt. In den allerallermeisten Fällen wäre das aber eine grandiose Platzverschwendung.
Stattdessen nehme im \header ein in Moment nicht genutztes aber unter dem sonstigen Text liegendes Feld und schreibe dort \markup \vspace #8 (wobei Du ausprobieren mußt welche Zahl am besten passt). Dadurch wird der eigentliche ZitherStaff nach unten gedrückt.[1]

Z.B. sähe der \header dann so aus:

\header {
  zither-title = "Kremser Ausflug"
  zither-subtitle = "From \"Neue Akkordzither Schule\""
  zither-subsubtitle = ""
  zither-arranger = "Komp.: Erwin Walther"
  zither-instrument = "Akkordzither"
  zither-poet = ""
  zither-meter = "4/4"
  zither-opus = \markup \vspace #8
}

ZitatOb der Abschnitt passt, konnte ich noch nicht testen, weil wir uns erst noch auf eine Druckart festlegen müssen.

Eigentlich nicht, zumindest wenn ich wie bisher zahlreiche parallele Linien verwende, wichtig ist dann eher, ob die Linien so gedruckt werden, da0 der entstehende Winkel stimmt.
Bin ich aber nach wie vor noch nicht angegangen.

ZitatZu den Akkorden: ...
Hier verstehe ich nicht was Du meinst.
Aber ich kann kurz erklären was ich gemacht habe.
Tatsächlich bin recht rabiat vorgegangen, indem ich völlig ignoriere welche Akkord-Voicings auf der Zither vorgegeben sind, die Liste möglicher Akkorde aber auf C, G, F, D, A, E beschränke [2].

Das führt dazu, daß die Akkord-Symbole für diese Akkorde immer korrekt im ZitherStaff gedruckt werden, auch wenn das eingegebene Voicing tatsächlich gar nicht spielbar wäre.

Gruß,
  Harm


[1]
In default LilyPond gibt es dafür markup-system-spacing. Habe ich aber für den ZitherStaff nicht implementiert. Ich hatte drüber nachgedacht, aber mir wollte kein Grund dafür einfallen. Jetzt hab' ich einen. Komm auf TODO.
[2]
Tatsächlich ist auch das nicht völlig richtig. Probier mal Fis-Dur einzugeben, im ZitherStaff erscheint das Symbol für F-Dur, beide Akkorde fangen halt mit dem selben Buchstaben an.
Aber versuch mal H-Dur einzugeben und Du wirst einen ERROR und einen crash bekommen.








harm6

#68
ZitatBin noch am Probieren, kannst du mir mal alle 6 Akkorde in der Schreibweise als code aufschreiben? Ich brauch was vor Augen...

Dieser Code (include-Pfade bitte anpassen):
\version "2.23.9"

\include "../../zither-ly/zither-chord.ly"
\include "../../zither-ly/zither-tab-init.ly"


\layout {
  \context {
    \ZitherStaff
    stringTunings = #zither-c'-dis''-tuning
    \override VerticalAxisGroup.staff-affinity = #UP
  }
}

chrdsI = \chordmode {
  c4:1 c c/+c
  g:1 g g/+g
  f:1 f f/+f
  d:1 d d/+d
  a:1 a a/+a
  e:1 e e/+e
}

chrdsII = \chordmode {
  c,4:1 c/g c/g/+c
  g,,:1 g, g,/+g
  f,,:1 f/a f/a/+f
  d,:1 d/fis d/fis/+d
  a,,:1 a, a,/+a
  e,,:1 e/gis e/gis/+e
}

chrdsIII = \chordmode {
  <c>4 \invertChords 2 c, <c g c' e'>
  <g,> g, <g, g b d'>
  <f,> \invertChords 1 f, <f, a c' f'>
  <d> \invertChords 1 d,  <d fis a d'>
  <a,> a, <a, a cis' e'>
  <e,> \invertChords 1 e, <e, gis b e'>
}

mus = {
  \time 3/4
  c''2.
  g'
  f'
  d'
  a'
  e'
}

music =
<<
  \new ChordNames
    \with {
      \override ChordName.rotation = #'(-90 0 0)
    }
  %% switch to test
  \chrdsI
  %% \chrdsI
  %% \chrdsIII

  \new Staff
    \with {
      \override VerticalAxisGroup.staff-staff-spacing.padding = 10
      \omit Glissando
    }
    { \chrdsI }
   
  \new Staff
    \with {
      \omit Glissando
      \override VerticalAxisGroup.staff-staff-spacing.padding = 10
    }
    { \clef "bass" \chrdsII }
   
  \new Staff
    \with {
      \omit Glissando
    }
    { \clef "bass" \chrdsIII }
   
  {
    \printStringNames
    \staffSymbolWithOneThickLine
    \mus
  }
>>

\markup {
  \akkordZitherTab
  \music
}

ergibt dieses Bild:



An dieser Stelle in obigem Code
Zitatmusic =
<<
  \new ChordNames
    \with {
      \override ChordName.rotation = #'(-90 0 0)
    }
  %% switch to test
  \chrdsI
  %% \chrdsI
  %% \chrdsIII
  ...
teste die verschiedenen Definitionen für chrdsI/II/III.
Du wirst sehen das sich rein gar nichts ändert ...

chrdsI hat die simpelste Eingabe, aber die Noten stimmen oft nicht mit Deiner Vorgabe überein.
chrdsII ist komplexer in der Eingabe, führt auch häufiger (wenn auch nicht immer) zur Übereinstimmung mit Deiner Vorgabe.
chrdsIII stimmt immer mit Deiner Vorgabe überein, etwas was sich zuvor (mit chrdsI/II) nicht erreichen ließ.
Aber ist es das Wert? Ich würde die erste Option nehmen und fertig
Im ZitherStaff stimmt jede Fassung immer.

Gruß,
  Harm

Mikey70

Viel zum Lesen und Ausprobieren, danke, da brauche ich eine Weile für.
Nur nochmal zum Druck, ich hatte halt bis jetzt immer randlos auf 100% gedruckt, deshalb war ich ja auch bei 5.0 Linienabstand, seit irgend einer der letzten Überarbeitungen funktioniert das aber nicht mehr.Der Titel und die Saitenleiste sind halb weggeschnitten.
Ich werde für mich ausprobieren, wie ich es am besten machen kann...

Am A4 Druck führt aber kein Weg vorbei, ich denke dabei nicht nur an mich, sondern auch an andere, die das Programm nutzen wollen. Copyshop ist da keine Option (nicht nur, weil ich auf dem Land lebe)...
Und unendlich Papier passt auch nicht unter die Zithersaiten.

Alles Gute, sicher bis spätestens morgen Abend.

harm6

Ich habe mal das komplette spacing überarbeitet.
Schau mal in snippets/spacing.ly was Du einstellen kannst und spiel damit rum.
Vielleicht kommst Du jetzt besser klar...

Gruß,
  Harm

Mikey70

#71
ERGÄNZTES P.S.:


Habe heute etwas rumprobiert, die schwarze Kante wäre die Außenkante?, Dann an bei mein Ergebnis.
Bei den Linienabständen bin ich jetzt bei 5.2, wird sich wohl immer mal noch ändern.
Also bis zu diesen Außenlinien kann man bequem gehen, egal, wie man druckt.

Zitatteste die verschiedenen Definitionen für chrdsI/II/III.
Du wirst sehen das sich rein gar nichts ändert ...

Problem bei mir ist, ich bin Perfektionist, mein Fehler. Sicher geht auch die erste Definition.
Muss aber erst mal rausbekommen, was genau z.B. f:1 f f/+f und dagegen f,,:1 f/a f/a/+f bedeutet (um garnicht zu reden von <f,> \invertChords 1 f, <f, a c' f'>). Auch mein Problem, ich will immer alles ganz genau wissen.

P.S_; chrdsI und II habe ich verstanden, auch was im Code was macht. Nur eine Frage noch, MIDI spielt aber immer, was im Notenbild steht, nicht was im Zithernotenblatt steht?

harm6

ZitatHabe heute etwas rumprobiert, die schwarze Kante wäre die Außenkante?, Dann an bei mein Ergebnis.

Die schwarze Kante verdeutlicht den möglichen Druckbereich nach Einstellung der margins.
Das weitere spacing kann mit zither-xxx-xxx-spacing Variablen eingestellt werden.

Nichtsdestotrotz, man kann u.U. auch in die margins drucken (z.B. die cut-off Linien).
Ebenso kann Druck zu groß sein, dann rutschen Sachen nach rechts evtl auch nach unten aus dem Druckbereich.

Verstehe ich Dich ansonsten richtig, daß
  top-margin = 10
  bottom-margin = 10
  left-margin = 0
  right-margin = 0
der default werden soll?


ZitatNur eine Frage noch, MIDI spielt aber immer, was im Notenbild steht, nicht was im Zithernotenblatt steht?

Ja.

Mikey70

#73
Zitat von: harm6 am Freitag,  8. Juli 2022, 13:24Verstehe ich Dich ansonsten richtig, daß
  top-margin = 10
  bottom-margin = 10
  left-margin = 0
  right-margin = 0
der default werden soll?



Wenn, das wie gesagt der Bereich wird, bis wohin der Platz ausgenutzt wird, darüber hinaus aber nicht mehr, dann ja. Allerdings in sofern unter Vorbehalt, da nicht alle Zithersaitenlinien in der Ausgabe waren.
Und bis jetzt hat sich immer wieder mal was verschoben (wenn ich bedenke, wieviele Zahlen für den Saitenabstand ich schon hatte  ;D )

Das was jetzt hochgeladen ist, der letzte Stand sozusagen, ist das jetzt eine Version zum Probieren oder noch nicht ganz fertig?
Gibt es dafür eine test.ly, wo alles an Sachen drinsteht, was reingehört, damit es läuft, oder passt das noch so wie im "Kremser-Ausflug"?
Oder soll ich noch warten, bis der neue Rand eingearbeitet ist?

harm6

ZitatDas was jetzt hochgeladen ist, der letzte Stand sozusagen, ist das jetzt eine Version zum Probieren oder noch nicht ganz fertig?

Nun, ich bin laufend dabei patches zu schreiben und hochzuladen. Insoweit finden andauernd Veränderungen statt. All dies akkumuliert beständig im development branch des repository.

Um etwas stabileres zum probieren und testen zu haben wechsel auf den master branch, d.h. navigiere im terminal ins repository und gebe ein:
    git checkout master
und aktualisiere mit den bekannten Befehlen.

Ich habe ein rebase gemacht, jetzt ist der bisherige Code des development-branch in master verfügbar.
Für die Zukunft plane ich die Entwicklung im development-branch fortzusetzen und nur gelegentlich ein update in master zu machen.
master entspricht dann einer stable release, development ist dann bleeding edge.

Falls Du auf master wechselst schreibe bitte weiterhin was Dir auffällt, besonders was Dich stört und bugs sowieso.
Das kannst Du hier im Forum machen, für feature-requests und ausgesprochene bugs kannst Du auch den issue-tracker verwenden:
https://gitlab.com/Thomas_Morley/zither-ly/-/issues/new
und fülle dort vor allem "Title" und "Description" aus. Den button "Create Issue" nicht vergessen zu drücken.
Ich weiß jetzt allerding nicht, ob man dafür einen account bei GitLab haben muß.

ZitatGibt es dafür eine test.ly, wo alles an Sachen drinsteht, was reingehört, damit es läuft,
Nein, das wäre Sache einer Dokumentation. Auch auf TODO.
Für jetzt, nehme Dir files aus \snippets als Vorbild.

ZitatOder soll ich noch warten, bis der neue Rand eingearbeitet ist?
Dieser Rand sollte nur im file spacings.ly das Geschehen besser sichtbar machen, er ist nicht Teil des default.

Gruß,
  Harm