LilyPond Griffschrift für Schwyzer Örgeli

Begonnen von juerg5524, Samstag, 23. Januar 2021, 14:40

« vorheriges - nächstes »

juerg5524

Hallo zusammen

Für einfache Stücke, wie z.B. den Knoedldrahner

https://www.volksmusik.cc/volkstanz/noten/images/Knoedldrahner.mid

kann mit meinem Programm - und mit Hilfe von LilyPond - einfach Griffschrift für Schwyzer Örgeli generieren. Mein Programm, der MidiSequenzer, ist in

http://juerg5524.ch/temp/midi-sequenzer.zip

enthalten. Vor dem Einlesen des Knoedeldrahners sollte

"Transpose" auf minus 4 und "SmallestNote" auf 16th gesetzt werden. Danach einlesen ("Choose mid-File).
Mit "Ticks per Quarter Note" gleich 240 wird das Stück am Raster angepasst.

Mit dem Button "Save for LilyPond" wird Knoedldrahmer.ly erzeugt. (Stand Anhang)

Davor ist es aber ratsam, noch einige Anpassungen vorzunehmen, wie z.B. die Balg Situation (stossen/ziehen):
Über Noten (Rechtecke) mit rechter Maustaste ziehen. Mit 'p' zwischen ziehen und stossen umschalten. 'F' schaltet zwischen den doppelten Belegungen hin und her.

Zwischenstand mit "Save Midi Partitur" abspeichern wäre auch nicht schlecht. Die Korrekturen werden ebenfalls mitgespeichert (ausser dem Wert von "Smallest Note").

In der Datei  Sequenzer-Doku.txt gibt es weitere nützliche Hinweise.

Viel Spass
Jürg


juerg5524


juerg5524

Kann mir jemand einen Tipp geben, wie ich die Bass-Notation und eventuell auch die Balg-Situation einbringen kann? Ein Beispiel würde mir vermutlich weiterhelfen.

Danke und Gruss
Jürg

harm6

Hallo Jürg,

ich antworte mal, obwohl ich nichts substantielles zu sagen habe, aber es soll nicht so wirken als würdest Du ignoriert werden...

Du scheinst Dir ne Menge Arbeit gemacht zu haben.
Allerdings ist mir das Instrument absolut fremd. Auch scheint das Programm für Windows geschrieben zu sein, als Linux-Nutzer bin ich dann nicht in der Lage es zu verwenden.

Hoffentlich kann noch jemand anderer etwas mehr dazu sagen.


Viele Grüße,
  Hrm

juerg5524

Hallo Harm

Das Programm kann unter Linux mit "Wine" verwendet werden. Ich würde es auch gerne für Steirische Harmonika erweitern. Dann bräuchte ich aber Unterstützung (Midi-Aufnahmen  und Tester).

Zu Beginn suchte ich eine Lösung, um aus Midi-Live-Aufnahmen möglichst automatisiert Griffschrift zu produzieren. Das klappte überhaupt nicht! Das war der Anfang des Sequenzers. Damit kann man nun Noten der Aufnahmen nachträglich editieren. Der Sequenzer zeigt die Noten in Griffschrift, spielt sie aber klingend.

Viele Grüsse
Jürg

C_E

Hallo Jürg,

Ich kann nicht glauben, dass ich hier im Wiki beitragen kann, weil ich Windows-Nutzer bin, und nicht obwohl.

Mir geht es zwar wie Harm, dass ich von dem Instrument noch nie gehört hatte. Danke erstmal für das Bekanntmachen.

Aber wenn ich dich richtig verstehe willst du die Griffschrift (und die Noten?) so verbessern, dass Bass und Balg auch klar beschrieben ist.
Was den Bass angeht würde ich dir entweder eine zweite Notenzeile nahelegen (wie bei Orgelmusik oder Akkordeon), oder aber einfach ein Buchstabe über die Notenzeile.
Letzteres ist vielleicht sogar einfacher, weil es ja immer nur ein Ton ist (oder?).

Für die Griffschrift finde ich die Zahlen unten eigentlich schon naheliegend. Ist die Griffschrift für pädagogische Zwecke, also soll sie das lernen erleichtern? Dann sind Zahlen wiederum vielleicht nicht das beste, weil auch diese muss man erst lernen. Ein zweites "System" von Bass-Griffschrift-Zeilen entsprechend der Melodiehand wäre vielleicht auch eine Idee? Aber natürlich weitaus aufwendiger.

Was den Balg angeht: Vielleicht wäre es eine Idee, die Taktstriche als extrem fett o.ä. zu markieren, bei denen gewechselt wird (siehe Anhang). Oder würdest du den Status gerne immer anzeigen?


Ich bin gespannt,
Caspar

juerg5524

Hallo Caspar

In deinem angehängten Bild ist die Darstellung des MidiSequenzers zu sehen. Im unteren Teil hat es zwei Balken mit je der Ziffer 5. Der Balken bedeutet stossen, kein Balken bedeutet ziehen. 5 ist der 5. Bass von unten gezählt. Grosse Ziffer steht für die Bass-Reihe beim Balg; kleine Ziffer (eine 4 ist im Bild zu sehen) bedeutet, äusserste Reihe.

Die von mir gewünschte Bass- und Balg-Darstellung bezieht sich auf die LilyPond-Ausgabe. Ein Beispiel, wie es aussehen sollte, ist im Anhang. Zug-/Druck-Wechsel halten sich nicht an die Taktstriche.

Viele Grüsse
Jürg

Arnold

Hallo Jürg,

ich habe mich in der Vergangenheit einmal mit der Steirischen auseinandergesetzt, deren Griffschrift ja schon relativ ähnlich ist, so bin ich nebenbei auch auf das Örgeli gestoßen.
Ursprünglich ging es bei mir eher darum, die Griffschrift der Steirischen in eine Notation für das Piano-Akkordeon zu übersetzen.
Ein Teil davon wäre natürlich auch ein Griffschriftbild der Steirischen, und sei es nur um Korrektur lesen zu können.
Da der akute Bedarf verschwunden ist, habe ich allerdings nicht mehr weitergemacht.

Ich versuche eine Kurzbeschreibung der Griffschrift - wenn etwas doch nicht stimmt, bitte korrigieren:
  • Diese Intrumente sind (in meinen Augen) transponierende Instrumente.
  • insbesondere die Steirischen sind nicht völlig identsich, es muß also gegebenenfalls noch ein exakte Beschreibung hinterlegt werden, um die Umsetzung durchführen zu können.
  • Im Diskant werden die Tasten dargestellt, welche zu drücken sind. Die äußerste Tastenreihe mit den Standardnotenköpfen in den Zwischenräumen, die zweite Tastenreihe mit den Standardnotenköpfen auf den Linien, die dritte Tastenreihe mit Kreuz-Köpfen (für die Viertel und kürzer bevorzugt das Doppelkreuz-Symbol anstelle des Notenkopfes, alternativ ein runder Standardnotenkopf mit Doppelkreuz davor).
  • Im Diskant werden die Notenenköpfe in horizontaler Richtung grundsätzlich nach Tastenreihe sortiert um den Notenhals positioniert - daher kommt die für den Unkundigen oft recht seltsam anmutende Seitenverteilung der Notenköpfe
  • Je nach Zug oder Druck des Balgs entsteht ein unterschiedlicher Ton
  • Im Baß - wie beim Stradella-Baß des Akkordeons wird die exakte Oktavlage ignoriert - werden Buchstaben (Steirisch) oder Zahlen (Örgeli) benutzt, um die zu drückende Taste anzugeben. Großbuchstaben / große Zahlen für den Baßton, Kleinbuchstaben / kleine Zahlen für die zugeordnete Akkordtaste.
  • Bei der Steirischen kommen je nach Zug oder Druck unterschiedliche Töne im Baß, beim Örgeli bleiben es die gleichen
  • Zug und Druck wird durch einen »Strich« gekennzeichnet, den ich ironischerweise »Puschbar« nenne. Entweder dicke und dünne Linie, oder dicke und keine (transparente) Linie, letztere Version bevorzugt bei der Steirischen
  • Eventuell werden noch nötige rhythmische Angaben für die Baßstimme (bei Abweichungen zum Diskant) noch mit nach unten gehalsten Noten unterhalb Puschbar angezeigt.

Als Umsetzung in Lilypond sah mein Konzept unter anderem vor:
  • Neben der Griffschrift und Piano-Akkordeon-Schrift noch eine »transponierte Klang-Schrift«, welche alle Informationen enthalten sollte, die eventuell bei der spezifischen Darstellung für Steirische/Örgeli Akkorden verloren geht.
  • Ja, sowohl die Griffschrift für Steirische/Örgeli als auch das Notenbild für Piano-Akkorden sollten also letztlich nur zwei Darstellungsweisen aus dem gleichen musikalischen Inhalt sein!
  • Eigene Symbole für die Notenköpfe, zumindest vorläufig per Postscript
  • In der »transponierten Klang-Schrift« würde die Tonart die bevorzugte Diskant-Tastenreihe angeben - die äußere entspricht C-Dur
  • Zug und Druck hätte ich mit einem Kontextproperty in der StaffGroup abgelegt, im der TKS (ab jetzt nutze ich das als Abkürzung für die »transponierten Klang-Schrift«) als Auf- und Abstrich-Symbol mit einem RehearsalMark dargestellt, bei der Steirischen als Darstellungsweise des Baß-Systems (transparent oder nicht)
  • Die String-Number für die Streichinstrumente hätte ich (in der TKS) noch dazu genutzt, um die zu bevorzugende Tastenreihe der Steirischen anzugeben.
  • Im Baß wären in der TKS nur Einzeltöne (im Baßschlüssel) notiert, Baßtöne in der unteren Oktave (c, - b,), Akkordtöne in der oberen Oktave (c - b) mit Buchstaben darüber zu Kennzeichnung der Akkordart (Dur, Moll, Sept, Vermindert für das Piano-Akkorden)
  • Zum Abschreiben der Griffschrift im Diskant hatte ich damals sogar eine ganze Batterie von Tonnamen vorgesehen, in denen außer der Tonhöhe auch die Tastenreihe notiert war (also Tonhöhe plus String-Number). Das waren als erster Buchstabe Konsonanten (von unten nach oben aufsteigend), als zweiter Vokale (a für die äußere Reihe, e für die zweite, ... und y für eine mögliche sechste Reihe), und als dritter Buchstabe war eventuell ein Buchstabe für den Zug- / Druck-Zustand geplant (da habe ich aber die Zuordnung vergessen, müßte ich erst wieder einmal nachsehen)

Auf deine Frage nach Notationsmögllichkeiten der Baßbalkens:
  • Eigenes Staff für die Baßzeile
  • Die dicke Line habe ich mit einer größeren Anzahl dünner Notenlinien in engem Abstand simuliert, denn mit einer einzigen dicken Linie wurden mir die Enden zu rund.
  • An den Übergangsstellen: \stopStaff - Staff-Erscheinung abändern - \startStaff
  • Das Ändern der Staff-Erscheinung ist also entweder die Transparenz an/abschalten, oder die Zahl der Einzellinien und deren Position abzuändern

Arnold

juerg5524

Hallo Arnold

Ja, du bist ein Musikprofi auch für Griffschrift. Selbst spielte ich Es-Horn in der Dorfmusik, Örgeli spiele ich nicht. Ich mache das für einen Freund, der nur die Griffschrift lesen kann, -- und natürlich, weil ich Spass am Programmieren habe!

Das, was du alles geschrieben hast, muss erst mal verdauen. Danke!

Kannst du mir vielleicht Noten für ein 4-reihiges Akkordeon mit Midi Datei geben, mit dem ich meine Akkordeon-Erweiterung testen kann! Das wäre lieb.

Viele Grüsse
Jürg

Arnold

Hallo Juerg,

ich habe nachgesehen, meine ganzen Arbeiten dazu sind schon über zehn Jahre alt.

Midi-Dateien habe ich keine.
Damals habe ich teilweise umfangreiche Informationen zur Steirischen und auch Noten im Internet gefunden.
Z. Bsp.
members.yline.com/~arizona/harmonika
peter-ganther.de
volksmusikschule.at und volksmusik.cc (Franz Fuchs aus Klosterneuburg, auch Noten)
Sehr interssant war die historische Entwicklung der Griffschrift auf der letztgenannten Internetseite, z. Bsp. auch Aufstrich und Abstrich für Zug und Druck.
Ob diese Seiten heute noch erreichbar sind, oder deren Inhalt sich ungünstig verändert hat, habe ich nicht geprüft.

Damals habe ich immerhin schon SCHEME-Funktionen entwickelt, welche eine angegebene Diskantbelegung in eine Palette von Musikfunktionen übersetzen konnten.
Heute würde ich meine »Diskant-Definiton« etwas anders notieren, das zieht natürlich eine Änderung dieser Routine nach sich.
Diese hatten den im PDF erklärten 3-Buchstaben-Namen, und gaben ein »NoteEvent« ohne »duration«, aber mit der Angabe der Tasten-Koordinate (als »tweak«) zurück. Diese konnten in LILYPOND in einen Akkord eingefügt werden, z. Bsp. »<\mac \nac \pac>4«.
Übrigens, bei der Baßbelegung der Steirischen gibt es eine große Vielfalt. Und für die Baßsymbole gibt es auch einige Benennungsmuster.
Die Diskantbelegung dagegen unterscheidet sich hauptsächlich in der Menge der Tasten, die bedeutenden Unterschiede sind zwischen Steirischer, Örgeli und Club.

Ich stellte auch noch fest, daß für ein gutes Schriftbild noch einiges zu tun wäre.
Z. Bsp. neu Symbole - das Doppelkreuz-Versetzungszeichen von Lilypond sollte für diese Anwendung eher etwas magerer sein, insbesondere bei Vorschlagsnoten. Die Standard-Kreuz-Notenkopfe von Lilypond sind wieder zu mager.
Doppelkreuz-Halbekopf sollte immer eng, eventuell sogar mit kleiner Überschneidung gepaart sein, deshalb wohl am besten als Ligatur zu einem einzigen Zeichen zusamengefaßt.
Während der Hals beim normalen Notenkopf nur zwei Ansatzpunkte (links für nach unten gehalst, rechts nach oben gehalst) benötigt, braucht man beim dieser Griffschrift vier bis fünf (links und rechts sowohl nach oben als auch nach unten gehalst, im Falle der Kreuz-Halbekopf-Ligatur noch ein Ansatzpunkt am Halbekopf für Hals nach unten falls nur eine Tastenreihe benutzt ist)
Kommen dritte und vierte Tastenreihe gemeinsam in einem Akkord vor, dann wird das Kreuz der dritten Reihe rechts vom Hals ausgerichtet (oben genannte Ligatur-Idee).

Diskantbelegungen (neuere Methode, Balgrichtung, Reihe und Gleich- bzw. Orientierungston in den »Notenzeilen« - d. h. bis zum BarCheck - notiert):

steirischDiskantToeneDreireiherNormalDreiunddreissigTasten = {
s1\downbow          bes\3 d'    f'    bes'  d''   f''-^  bes'' d'''  f'''  bes'''     | %\break   % 3. Reihe Zudruck
s1\upbow            es'\3 f'    a'    c''   es''  f''-^  a''   c'''  es''' g'''       | %\break   % 3. Reihe Aufzug
s1\downbow       f\2   a     c'    f'    a'    c''-^ f''    a''   c'''   f'''  a'''   | %\break   % 2. Reihe Zudruck
s1\upbow         bes\2 c'    e'    g'    bes'  c''-^ e''    g''   bes''  d'''  e'''   | %\break   % 2. Reihe Aufzug
s1\downbow    c\1   e     g     c'    e'    g'    c''-^  e''   g''   c'''  e'''  g''' | %\break   % 1. Reihe Zudruck
s1\upbow      f\1   g     b     d'    f'    a'    b'-^   d''   f''   a''   b''   d''' | %\break   % 1. Reihe Aufzug
}

steirischDiskantToeneDreireiherEineChromatischeDreiunddreissigTasten = {
s1\downbow           bes\3 d'    f'    bes'  d''   f''-^  bes'' d'''  f'''  bes'''     | %\break   % 3. Reihe Zudruck
s1\upbow             es'\3 f'    a'    c''   es''  f''-^  a''   c'''  es''' g'''       | %\break   % 3. Reihe Aufzug
s1\downbow       f\2    a     c'    f'    a'    c''-^ f''    a''   c'''   f'''  a'''   | %\break   % 2. Reihe Zudruck
s1\upbow         bes\2  c'    e'    g'    bes'  c''-^ e''    g''   bes''  d'''  e'''   | %\break   % 2. Reihe Aufzug
s1\downbow    es''\1 e     g     c'    e'    g'    c''-^  e''   g''   c'''  e'''  g''' | %\break   % 1. Reihe Zudruck
s1\upbow      as'\1  g     b     d'    f'    a'    b'-^   d''   f''   a''   b''   d''' | %\break   % 1. Reihe Aufzug
}


steirischDiskantToeneDreireiherClubDreiunddreissigTasten = {
s1\downbow          fis\3 d'    es'   bes'  fis'  es''-^  d''   fis'' es''' d'''       | %\break   % 3. Reihe Zudruck
s1\upbow            as\3  es'   cis'  fis'  as'   cis''-^ es''  as''  cis''' es'''     | %\break   % 3. Reihe Aufzug
s1\downbow       f\2   a     c'    f'    a'    c''-^ f''     a''   c'''   f'''  a'''   | %\break   % 2. Reihe Zudruck
s1\upbow         bes\2 c'    e'    g'    bes'  c''-^ e''     g''   bes''  d'''  e'''   | %\break   % 2. Reihe Aufzug
s1\downbow    c\1   e     g     c'    e'    g'    c''-^   e''   g''   c'''  e'''  g''' | %\break   % 1. Reihe Zudruck
s1\upbow      d\1   g     b     d'    f'    a'    b'-^    d''   f''   a''   b''   c''' | %\break   % 1. Reihe Aufzug
}


steirischDiskantToeneVierreiherNormalSechsundvierzigTasten = {
s1\downbow             es'\4 g'    bes'  es''  g''   bes''-^ es''' g'''  bes''' es''''        | %\break   % 4. Reihe Zudruck
s1\upbow               as'\4 bes'  d''   f''   as''  bes''-^ d'''  f'''  as'''  c''''         | %\break   % 4. Reihe Aufzug
s1\downbow          bes\3 d'    f'    bes'  d''   f''-^   bes'' d'''  f'''  bes''' d''''      | %\break   % 3. Reihe Zudruck
s1\upbow            es'\3 f'    a'    c''   es''  f''-^   a''   c'''  es''' g'''   a'''       | %\break   % 3. Reihe Aufzug
s1\downbow       f\2   a     c'    f'    a'    c''-^  f''    a''   c'''  f'''  a'''  c''''    | %\break   % 2. Reihe Zudruck
s1\upbow         bes\2 c'    e'    g'    bes'  c''-^  e''    g''   bes'' d'''  e'''  g'''     | %\break   % 2. Reihe Aufzug
s1\downbow    c\1   e     g     c'    e'    g'    c''-^   e''   g''   c'''  e'''  g'''  c'''' | %\break   % 1. Reihe Zudruck
s1\upbow      f\1   g     b     d'    f'    a'    b'-^    d''   f''   a''   b''   d'''  f'''  | %\break   % 1. Reihe Aufzug
}

steirischDiskantToeneVierreiherEineChromatischeSechsundvierzigTasten = {
s1\downbow               es'\4 g'    bes'  es''  g''   bes''-^ es''' g'''  bes''' es''''        | %\break   % 4. Reihe Zudruck
s1\upbow                 as'\4 bes'  d''   f''   as''  bes''-^ d'''  f'''  as'''  c''''         | %\break   % 4. Reihe Aufzug
s1\downbow           bes\3  d'    f'    bes'  d''   f''-^   bes'' d'''  f'''  bes''' d''''      | %\break   % 3. Reihe Zudruck
s1\upbow              es'\3 f'    a'    c''   es''  f''-^   a''   c'''  es''' g'''   a'''       | %\break   % 3. Reihe Aufzug
s1\downbow        f\2    a     c'    f'    a'    c''-^  f''    a''   c'''  f'''  a'''  c''''    | %\break   % 2. Reihe Zudruck
s1\upbow          bes\2  c'    e'    g'    bes'  c''-^  e''    g''   bes'' d'''  e'''  g'''     | %\break   % 2. Reihe Aufzug
s1\downbow    cis''\1 e     g     c'    e'    g'    c''-^   e''   g''   c'''  e'''  g'''  c'''' | %\break   % 1. Reihe Zudruck
s1\upbow      fis''\1 g     b     d'    f'    a'    b'-^    d''   f''   a''   b''   d'''  f'''  | %\break   % 1. Reihe Aufzug
}

steirischDiskantToeneVierreiherOberkrainerFuenfzigTasten = {
s1\downbow               bes\4 es'   g'    bes'  es''  g''   bes''-^ es''' g'''  bes''' es''''        | %\break   % 4. Reihe Zudruck
s1\upbow                 d'\4  as'   bes'  d''   f''   as''  bes''-^ d'''  f'''  as'''  c''''         | %\break   % 4. Reihe Aufzug
s1\downbow            f\3   bes   d'    f'    bes'  d''   f''-^   bes'' d'''  f'''  bes''' d''''      | %\break   % 3. Reihe Zudruck
s1\upbow              a\3   es'   f'    a'    c''   es''  f''-^   a''   c'''  es''' g'''   a'''       | %\break   % 3. Reihe Aufzug
s1\downbow        c\2    f     a     c'    f'    a'    c''-^  f''    a''   c'''  f'''  a'''  c''''    | %\break   % 2. Reihe Zudruck
s1\upbow          e\2    bes   c'    e'    g'    bes'  c''-^  e''    g''   bes'' d'''  e'''  g'''     | %\break   % 2. Reihe Aufzug
s1\downbow    fis''\1 cis'' e     g     c'    e'    g'    c''-^   e''   g''   c'''  e'''  g'''  c'''' | %\break   % 1. Reihe Zudruck
s1\upbow      cis''\1 fis'' g     b     d'    f'    a'    b'-^    d''   f''   a''   b''   d'''  f'''  | %\break   % 1. Reihe Aufzug
}

steirischDiskantToeneVierreiherFuenfeinhalbChromatischFuenfzigTasten = {
s1\downbow               cis'\4 es'   g'    bes'  es''  g''   bes''-^ es''' g'''  bes''' es''''        | %\break   % 4. Reihe Zudruck
s1\upbow                 d'\4   as'   bes'  d''   f''   as''  bes''-^ d'''  f'''  as'''  c''''         | %\break   % 4. Reihe Aufzug
s1\downbow            as\3  bes    d'    f'    bes'  d''   f''-^   bes'' d'''  f'''  bes''' d''''      | %\break   % 3. Reihe Zudruck
s1\upbow              a\3   es'    f'    a'    c''   es''  f''-^   a''   c'''  es''' g'''   a'''       | %\break   % 3. Reihe Aufzug
s1\downbow        as'\2  f      a     c'    f'    a'    c''-^  f''    a''   c'''  f'''  a'''  c''''    | %\break   % 2. Reihe Zudruck
s1\upbow          fis'\2 bes    c'    e'    g'    bes'  c''-^  e''    g''   bes'' d'''  e'''  g'''     | %\break   % 2. Reihe Aufzug
s1\downbow    fis''\1 cis'' e      g     c'    e'    g'    c''-^   e''   g''   c'''  e'''  g'''  as''' | %\break   % 1. Reihe Zudruck
s1\upbow      cis''\1 fis'' g      b     d'    f'    a'    b'-^    d''   f''   a''   b''   d'''  f'''  | %\break   % 1. Reihe Aufzug
}


steirischDiskantToeneFuenfreiherStrasserAchtundfuenfzigTasten = {
s1\downbow              as'\5   c''     es''    as''    c'''    es'''-^ as'''   c''''   es''''  as''''             | %\break   % 1. Reihe Zudruck
s1\upbow                des''\5 es''    g''     bes''   des'''  es'''-^ g'''    bes'''  des'''' f''''              | %\break   % 1. Reihe Aufzug
s1\downbow          es'\4   g'      bes'    es''    g''     bes''-^ es'''   g'''    bes'''  es''''  g''''          | %\break   % 1. Reihe Zudruck
s1\upbow            as'\4   bes'    d''     f''     as''    bes''-^ d'''    f'''    as'''   c''''   d''''          | %\break   % 1. Reihe Aufzug
s1\downbow      bes\3   d'      f'      bes'    d''     f''-^   bes''   d'''    f'''    bes'''  d''''   f''''      | %\break   % 1. Reihe Zudruck
s1\upbow        es'\3   f'      a'      c''     es''    f''-^   a''     c'''    es'''   g'''    a'''    c''''      | %\break   % 1. Reihe Aufzug
s1\downbow  f\2     a       c'      f'      a'      c''-^   f''     a''     c'''    f'''    a'''    c''''   f''''  | %\break   % 1. Reihe Zudruck
s1\upbow    bes\2   c'      e'      g'      bes'    c''-^   e''     g''     bes''   d'''    e'''    g'''    bes''' | %\break   % 1. Reihe Aufzug
s1\downbow      e\1     g       c'      e'      g'      c''-^   e''     g''     c'''    e'''    g'''    c''''      | %\break   % 1. Reihe Zudruck
s1\upbow        g\1     b       d'      f'      a'      b'-^    d''     f''     a''     b''     d'''    f'''       | %\break   % 1. Reihe Aufzug
}


schwyzerOergeliDiskantToeneEinunddreissigTasten = {
s1\downbow        as\3   cis'' es'   d''   bes'  es''-^ bes'' d'''  es''' cis'''      | %\break   % 3. Reihe Zudruck
s1\upbow          es'\3  cis'' bes   as'   es''  c''-^  as''  c'''  es''' fis''       | %\break   % 3. Reihe Aufzug
s1\downbow     fis'\2 a     c'    f'    a'    c''-^  f''   a''   c'''   f'''   a'''   | %\break   % 2. Reihe Zudruck
s1\upbow       fis'\2 c'    e'    g'    bes'  d''-^  e''   g''   bes''  d'''   e'''   | %\break   % 2. Reihe Aufzug
s1\downbow        e\1    g     c'    e'    g'    c''-^  e''   g''   c'''  e'''        | %\break   % 1. Reihe Zudruck
s1\upbow          g\1    b     d'    f'    a'    b'-^   d''   f''   a''   b''         | %\break   % 1. Reihe Aufzug
}

(Diese »Tabellen« natürlich ohne Gewähr!)

Arnold

Übrigens, für die Neulinge bei dieser Griffschrift für die Diatonischen Akkordeons:
Dreht man das angehängte PDF ins Hochformat, erkennt man, wie das Diskant-Tastenfeld zur Notenzeile positioniert ist und die Lage der zu notierenden Notenköpfe festlegt.

juerg5524

Hallo Arnold

Dein Ansatz ist sehr interessant, aber ich kenne mich mit der Skript-Programmierung nicht gut aus. Meine lieblings Programmiersprachen sind C++ und Delphi. Der MidiSequenzer ist in Delphi geschrieben. Er ist jetzt auch für die steirische Harmonika verwendbar. Link: http://juerg5524.ch/temp/new-midi-sequenzer.zip

Knödldrahner mit einer steirischen A-D-G-C Harmonika: "SmallestNote" auf 16th einstellen. Unter "Instrument" "Steirische ADGC" wählen. Knoedldrahner.mid laden. Da alles auf Zug spielbar ist, habe ich die ersten Takte für Druck markiert. Danach Taste "Save for LilyPond" und es entsteht die Datei im Anhang.

Viele Grüsse
Jürg

Arnold

Hallo Juerg,

ich nehme mal an, daß »\xNote« etwa »\tweak style #'cross« bedeutet.
  • Falls Du den Accidental_engraver herausnimmst (»\remove Accidental_engraver« im with-Block des Staff) und bei jedem Notenkopf mit \tweak Y-offset die Notenlinienposition angibst (0.5 für den Gleichton der 3. Reihe, 0.0 für den Gleichton der 2. Reihe) dann könnte Lilypond sogar die MIDI-Ausleitung (der Diskantzeile) erstellen.
  • Wenn Du dann noch bei den Akkorden mit mehr als einer Tastenreihe zu jedem Ton den passenden Wert von »X-offset« berechnen kannst und ihn »hinein-tweakst«, würde sogar die links-rechts-Verteilung der Notenköpfe passen.
  • Dann bleibt nur noch im Diskant, daß die Hälse an den Köpfen bisweilen nicht exakt enden.

% nur mit Version 2.18.2 getestet
\score{
  \new Staff \with {
  \remove Accidental_engraver
  } {
    <
      \tweak style #'cross  \tweak Y-offset #1.5  \tweak X-offset #-1.2  cis''
      \tweak Y-offset #-1  \tweak X-offset #0  as
    >
  }
}


Arnold

Übrigens, Lilypond kann, wenn ein »Text-Markup« als Notenkopf gewählt wird, bei diesem Text-Markup auch ein »Callback« platzieren, welches zuerst die angebebene Notenkopfbasislänge (Ganze, Halbe, Viertel und kürzer) herausliest und dann die passende Kopfform (z. Bsp. Doppelkreuz-Versetzungszeichen oder ein Zeichenpaar Doppelkreuz-Versetzungszeichen plus Halbe-Notenkopf) zurückgibt.

Arnold

So, Juerg,

da LILYPOND leider keine DLL-Schnittstelle hat, womit man in C++ eigene Engraver programmieren könnte um sie dann in die eigene Lilypond-Anwendung einzubinden, wirst Du wohl über kurz oder lang auch ein wenig mit dem SCHEME-Dialekt GUILE zu tun haben, wenn du ein wenig tiefer ins LILYPOND einsteigen mußt, z. Bsp. um noch diverse Layoutanpassungen vorzunehmen, insbesondere wenn diese »konditional« zu erfolgen haben.

Nun etwas »Spiel-Zeug« für dich.
  • es wurden die Diskantnoten nur ein einziges Mal eingegeben! (auch wenn die Töne musikalisch keinen Sinn ergeben)
  • Kreuz-Notenkopf wird über \tweak ausgewählt, mit Callback abhängig von der Notenkopf-Hauptlänge
  • Die Position zum Hals bei mehreren Notenkopfspalten wird auch über \tweak ausgewählt, jedoch müssen zwei Werte angegeben werden, für jede Halsrichtung einer, denn bei Achteln und kürzeren Noten ist die Balkensetzung nicht so einfach vorauszusehen.
  • Die Taktstriche zwischen der Griffschrift-Diskantzeile und der Zug-Druck-Linie lassen sich auch noch (irgendwie) ausblenden, müßte ich aber erst noch suchen. Genauso wenig war die Anpassung des Abstands zwischen diesen beiden Notenzeilen in meinem Focus.

\version "2.20.0"

%%%%% ein paar Text-Markups mit SCHEME erzeugt

% Steirisch X-Notehead for Quarter and shorter
#(define sxHead2  (make-musicglyph-markup "accidentals.doublesharp"))

% Steirisch X-Notehead for Half - narrow
#(define sxHead1  (make-combine-markup
                   (make-musicglyph-markup "accidentals.doublesharp")
                   (make-translate-scaled-markup '(0.83 . 0)
                    (make-musicglyph-markup "noteheads.s1"))))

% Steirisch X-Notehead for Half - wide for 'one note head column only on stem'
#(define sxHead1w (make-combine-markup
                   (make-musicglyph-markup "accidentals.doublesharp")
                   (make-translate-scaled-markup '(1.15 . 0)
                    (make-musicglyph-markup "noteheads.s1"))))

% Steirisch X-Notehead for Whole
#(define sxHead0  (make-combine-markup
                   (make-musicglyph-markup "accidentals.doublesharp")
                   (make-translate-scaled-markup '(0.75 . 0)
                    (make-musicglyph-markup "noteheads.s0"))))

% Steirisch X-Notehead for Breve
#(define sxHeadM1 (make-combine-markup
                   (make-musicglyph-markup "accidentals.doublesharp")
                   (make-translate-scaled-markup '(1.1 . 0)
                    (make-musicglyph-markup "noteheads.sM1"))))

%%%%% ein paar Callback-Funktionen, um eine Eigenschaft abhängig von einer anderen Eigenschaft festzulegen

% Steirisch Head select callback 'narrow Half' - for multiple note columns
#(define (selectSteirischHead grob)
  (let ((dl (ly:grob-property grob 'duration-log 2)))
   ; (for-each display (list "\n duration-log = " dl "\n"))
   (case dl
    ((2) sxHead2)
    ((1) sxHead1)
    ((0) sxHead0)
    ((-1) sxHeadM1)
    (else (if (< dl 0) sxHeadM1 sxHead2)))))

% Steirisch Head select callback 'wide Half' - for 'single notecolumn'
#(define (selectSteirischHeadW grob)
  (let ((dl (ly:grob-property grob 'duration-log 2)))
   ; (for-each display (list "\n duration-log = " dl "\n"))
   (case dl
    ((2) sxHead2)
    ((1) sxHead1w)
    ((0) sxHead0)
    ((-1) sxHeadM1)
    (else (if (< dl 0) sxHeadM1 sxHead2)))))

% stem-attachment wird (noch?) nicht berechnet.

% Je nach Halsrichtung benötigt man unterschiedliche X-offset-Werte!
#(define ((notehead-value-by-stem-direction upval downval) grob)
  (let* ((stem (ly:grob-object grob 'stem))
         (dir (if (null? stem) 0 (ly:grob-property stem 'direction 0))))
   ; (for-each display (list
   ;  "\n this:           " grob
   ;  "\n stem:           " stem
   ;  "\n stem-direction: " (ly:grob-property stem 'direction)
   ;  "\n"))
   (if (< dir 0) downval upval)))

%%%%% Eine Filterfunktion, um die griffschrift-spezifischen Tweaks entfernen zu können

% um Tweaks herauszufiltern
#(define (remove-listed-tweaks-if-noteevent syms mus)
  (let ((e-name (ly:music-property mus 'name #f)))
   (if (eq? e-name 'NoteEvent)
    (let ((tw (ly:music-property mus 'tweaks '())))
     ; (for-each display (list "\n tweaks = " tw  "\n"))
     (if (not (null? tw))
      (ly:music-set-property! mus 'tweaks
       (filter (lambda (x)
         (not (memq (car x) syms))) tw)))
     mus)
    mus)))

removeTweaksFromNoteevents =
#(define-music-function (syms mus)
  (symbol-list? ly:music?)
  (music-map (lambda (x)
    (remove-listed-tweaks-if-noteevent syms x))
   mus))


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Anwendungsbeispiel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%% Definition Diskantzeile
Diskant = {
  \key g \major

  \tweak stencil #ly:text-interface::print
  \tweak text #selectSteirischHeadW
  \tweak Y-offset 0.5
  cis''1

  <
    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHeadW
    \tweak Y-offset 0.5
    dis''

    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHeadW
    \tweak Y-offset -1.5
    fis'
  >2

  <
    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHeadW
    \tweak Y-offset 1.5
    \tweak X-offset #(notehead-value-by-stem-direction 0 -1.15)
    ges''

    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHeadW
    \tweak Y-offset -0.5
    \tweak X-offset #(notehead-value-by-stem-direction 0 -1.15)
    ases'
  >2

  <
    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHead
    \tweak Y-offset 1
    \tweak X-offset #(notehead-value-by-stem-direction 0 -1.15)
    fes''

    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHead
    \tweak Y-offset -1.5
    \tweak X-offset #(notehead-value-by-stem-direction 2.1 0)
    bis'
  >2

  r2

  <
    \tweak stencil #ly:text-interface::print
    \tweak text #selectSteirischHead
    \tweak Y-offset -0.5
    \tweak X-offset #(notehead-value-by-stem-direction 0.2 -1.15)
    d''

    \tweak Y-offset -3
    \tweak X-offset #(notehead-value-by-stem-direction 1.15 0)
    a'
  >4

  <
    \tweak Y-offset 0
    \tweak X-offset #(notehead-value-by-stem-direction 0 -1.15)
    ces''

    \tweak Y-offset -2.5
    \tweak X-offset #(notehead-value-by-stem-direction 1.15 0)
    b'
  >4

  <
    \tweak Y-offset 3
    es''

    \tweak Y-offset 1
    g''
  >4

  r4
  \bar "|."
}

%%%%% Definition Baßzeile
Bass = {
     \stopStaff
     \override StaffSymbol.line-count = 3
     \override StaffSymbol.line-positions = #'(-0.01 0 0.01)
     \startStaff
     s1
     \stopStaff
     \override Staff.StaffSymbol.line-positions = #'(-0.01 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1)
     \override Staff.StaffSymbol.line-count = 22
     \startStaff
     s1
     \stopStaff
     \override Staff.StaffSymbol.transparent = ##t
     \startStaff
     s1
     \stopStaff
     \override Staff.StaffSymbol.transparent = ##f
     \startStaff
     s1
}

%%%%% Gemeinsame Ausgabe
<<
   \new Staff {
     \clef treble
     \removeTweaksFromNoteevents #'(stencil text Y-offset X-offset) \Diskant
   }
  \new GrandStaff <<
   \new Staff \with {
     \remove Accidental_engraver
     \remove Key_engraver
   } {
     \clef tab
     \Diskant
   }
   \new Staff \with {
     \remove Accidental_engraver
     \remove Key_engraver
     \remove Clef_engraver
     \remove Time_signature_engraver
     \override BarLine.bar-extent = #'(0 . 0)
     \override StaffSymbol.line-count = 3
     \override StaffSymbol.line-positions = #'(-0.01 0 0.01)
   } {
     \Bass
   }
  >>
>>

%%%%% Ausgabe nur der Melodie
   \new Staff {
     \clef treble
     \removeTweaksFromNoteevents #'(stencil text Y-offset X-offset) \Diskant
   }

%%%%% Ausgabe nur der Griffschrift
  \new GrandStaff <<
   \new Staff \with {
     \remove Accidental_engraver
     \remove Key_engraver
   } {
     \clef tab
     \Diskant
   }
   \new Staff \with {
     \remove Accidental_engraver
     \remove Key_engraver
     \remove Clef_engraver
     \remove Time_signature_engraver
     \override BarLine.bar-extent = #'(0 . 0)
     \override StaffSymbol.line-count = 3
     \override StaffSymbol.line-positions = #'(-0.01 0 0.01)
   } {
     \Bass
   }
  >>


Da Lilypond abhängig von der »global-staff-size« leicht unterschiedliche Fonts für die Notensymbole verwendet, müßten eventuell auch die angegebenen Offset- und Versatzwerte davon abhängig angepasst werden.
Andererseits, deine Anwendung sollte zumindest für die Standardgröße ertüchtigt werden können, alle Positions-Offsets vorab auszurechnen und auszugeben. Bei anderen Notenschriftgrößen wird man die Unterschiede vielleicht nur mit der Lupe erkennen können.
Übrigens, ich benutzte eine leicht modifizerte Variante von sumatraPDF als Arbeitsviewer im Lilypond unter Windows, mit dem kann ich größer als 64-fach vergrößern, und 'point-and-click' sucht bei überlappenden Link-Zonen diejenige mit dem kleinsten Flächeninhalt aus.

Arnold

juerg5524

Hallo Arnold

Vielen Dank für deine Antwort. Vielleicht werde ich irgendwann deine Ratschläge berücksichtigen. Im Moment bin froh, wenn es mir gelingt, das LilyPond File fehlerfrei hinzubekommen (zum Teil fehlen die Pausen).

Viele Grüsse
Jürg

Arnold

Ja, Ja, Juerg,

etwas so trivial erscheinendes wie die Pausen - und wenn dann noch legato, staccato und tenuto hinzukommen soll, ojemine ...

Erinnert mich ein bisschen an den Spruch
ZitatDie Generalpause kingt in allen Orchestern gleich. — In fast allen!

Arnold