Autor Thema: Tabvorlage verbessern (Umgang mit Variablen)  (Gelesen 50 mal)

Mjchael

  • Newbie
  • *
  • Beiträge: 14
  • Autor bei Wikibooks (Gitarre / Liederbuch u.a.m.)
    • Federführender Autor des Lagerfeuerdiploms.
Tabvorlage verbessern (Umgang mit Variablen)
« am: Dienstag, 20. Juli 2021, 22:40 »
Ich versuche mit TablEdit Beispiele für Tabulaturen zu schreiben.
Das Ergebnis sieht furchtbar aus, weil das Programm keine Stimmkreuzungen kann.

Ich habe mir selbst eine Vorlage gebastelt, die recht gut aussieht. Wenn ich jetzt aber versuche mit Variablen zu arbeiten, produziere ich nur Syntaxfehler.

Kann mir einer helfen den Code zu optimieren?

%<score lang="lilypond" >
<<
% die folgenden 3 Zeilen setzen Balken nur über eine vietel Notenlänge, was das Auszählen erleichtert. (sonst über. eine halbe Notenlänge)
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
\set Timing.beatStructure = #'(1 1 1 1)
% Akkordbuchstabe
\new ChordNames {
 \chordmode { d1 }
}
% Noten
\relative c  {
 % Eckige Klammern für Zweistimmigkeit
 <<
 % Notenschlüssel für Gitarren
  \clef "treble_8"
  % Nach dem Hoch-Zeichen Markup: Akkord in Tab-Ausrichtung (nicht 90° gedreht) mit Griffdiagramm.
  { fis'8 ^\markup {
            \override #'(fret-diagram-details . ((orientation . landscape)))
            \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;"
      } d a  fis'8 d,8 d' a4
   }
   \\
   % Bass-Stimme bzw. Daumen
   \relative { d4 a' d, a' }
 >>
}
% Tabulatur
\new TabStaff \relative c {
 % incl. Notenbalken
 \tabFullNotation
 <<
   { fis'8 d a  fis'8 d,8 d' a4}
    \\
   \relative { d4 a' d, a' }
 >>
}
>>
% </score>

Ergibt:


Das auskommentierte 'score' soll euch nicht stören. Das zeigt nur an, dass der Code für die Wikibooks bzw. Wikipedia benötigt wird, und ich von daher nicht mit externen Dateien (includes) arbeiten kann. Alles muss innerhalb eines Codes geschehen. Dass ich besser auf das "relative" verzichten sollte, um die Tonfolgen beliebig für neue Tabulaturbeispiele zu kopieren ,ist mir auch klar.

Ich habe die Diskant- und Bassmelodie zweimal notiert.
Diese sollten eigentlich vorher zusammengefasst werden.

diskant = {...}
bass = {...}
Dies schien zu klappen.

Die Akkordbuchstaben hätte ich auch gerne in einer Variablen gehabt, damit ich die Grundstruktur der Tabulatur mehrfach wiederverwenden kann.
chords = {...}

Da habe ich mir eine Menge Syntaxfehler eingefangen, so dass ich euch den Code nicht mehr zumuten kann.

Die Akkorddiagramme würde ich ebenfalls gerne als Vorlage einbinden.
crd_D ={...}
Da würde mich interessieren, ob ich die Ausrichtung für jeden Akkord neu eingeben muss?
« Letzte Änderung: Dienstag, 20. Juli 2021, 23:50 von Mjchael »
Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!

harm6

  • Hero Member
  • *****
  • Beiträge: 930
Antw:Tabvorlage verbessern (Umgang mit Variablen)
« Antwort #1 am: Mittwoch, 21. Juli 2021, 15:27 »
Ich würde wohl so vorgehen:
\version "2.22.0"

chrds = \chordmode {
  d1
}

fretDiagrams = {
  \override TextScript.direction = #UP
  s1-\markup \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;"
}

diskant = \relative {
  fis'8 d a fis'8 d,8 d' a4
}
bass = \relative {
  d4 a' d, a'
}

music = << \diskant \\ \bass >>

quaterBeaming = \with {
  beamExceptions = #'()
  baseMoment = #(ly:make-moment 1/4)
}

myLayout =
\layout {
  \context {
  \Voice
    \override TextScript.fret-diagram-details.orientation = #'landscape
    \quaterBeaming
  }
  \context {
  \Staff
  \clef "treble_8"
  }
  \context {
  \TabStaff
  \tabFullNotation
    \quaterBeaming
  }
}

%<score lang="lilypond" >
\score {
  <<
    \new ChordNames \chrds
    \new Staff << \music \fretDiagrams >>
    \new TabStaff \music
  >>
  \layout { \myLayout }
}
% </score>

Gruß,
  Harm

Mjchael

  • Newbie
  • *
  • Beiträge: 14
  • Autor bei Wikibooks (Gitarre / Liederbuch u.a.m.)
    • Federführender Autor des Lagerfeuerdiploms.
Antw:Tabvorlage verbessern (Umgang mit Variablen)
« Antwort #2 am: Samstag, 24. Juli 2021, 10:15 »
Vielen Dank!  :D
Ich werde mich in den Quelltext vertiefen.
Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!