Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: bblochl am Dienstag, 9. Juli 2013, 17:40
-
Wenn ich Tabulaturen mit Text verbinde, erhalte ich eine leere Tab-Zeile und Noten mit dem Text? Um das zu verhindern gibt es sicher wieder irgendeinen Trick?
Hier ein Beispielcode zum Probieren:
\version "2.16.2"
NotenI = {
\relative c'{
\key g \major
<<
\tempo "Rhythmus zählen"
{ d,4\4 %2/8
d4\4 %2/8
d4\4 %2/8
d4\4 %2/8
d4\4 %2/8
d4\4 %2/8
d4\4 %2/8
d4\4 %2/8
}
\addlyrics {
eins und zwei und drei und vier und fünf und sechs und sieben und acht und
}
>>
}
}
\score {
<<
\new TabStaff \with {
tablatureFormat = #fret-number-tablature-format-banjo
stringTunings = #banjo-open-g-tuning
}
\NotenI
>>
\layout {
\tabFullNotation
\stemDown
}
}
Grüße
-
Wenn ich Tabulaturen mit Text verbinde, erhalte ich eine leere Tab-Zeile und Noten mit dem Text? Um das zu verhindern gibt es sicher wieder irgendeinen Trick?
hallo!
hab's mit 2.17.20 probiert - das scheint zu funktionieren:
textLyrisch = \lyricmode {
eins und zwei und drei und vier und fünf und sechs und sieben und acht und
}
<<
\new TabStaff \with {
tablatureFormat = #fret-number-tablature-format-banjo
stringTunings = #banjo-open-g-tuning
}
\new TabVoice = "abc" \NotenI
\new Lyrics \lyricsto "abc" \textLyrisch
>>
Eluze
-
Hallo bblochl ,
etwas Hintergrund:
In der NR 2.1.1 "Übliche Notation für Vokalmusik" wird im Abschnitt "Text an einer Melodie ausrichten" (http://lilypond.org/doc/v2.16/Documentation/notation/common-notation-for-vocal-music.de.html#aligning-lyrics-to-a-melody) erklärt was es mit
\addlyrics
auf sich hat:
\addlyrics benutzen
Der \addlyrics-Befehl ist eigentlich nur eine Abkürzung für eine etwas kompliziertere LilyPond-Struktur, den man manchmal aus Bequemlichkeit einsetzen kann.
{ Noten }
\addlyrics { Gesangstext }
bedeutet das Gleiche wie
\new Voice = "bla" { Noten }
\new Lyrics \lyricsto "bla" { Gesangstext }
[...]
Der Befehl \addlyrics kann keine polyphonen Situationen bewältigen. In diesen Fällen sollen man \lyricsto benutzen.
D.H.: \addlyrics setzt einen Voice-Kontext für den varangegangenen musikalischen Ausdruck.
In /ly/engraver-init.ly steht aber bei TabStaff:
\context {
\Staff
\alias "Staff"
\name "TabStaff"
\denies "Voice"
[...]
\addlyrics braucht also eine Voice, der TabStaff akzeptiert aber keine.
Kann nicht funktionieren.
So manche (vermeintliche) Abkürzungen bringt einen eben nicht ans Ziel. ;)
(Ich verwende \addlyrics praktisch nie, der vielen Begrenzungen wegen.)
Eluze hat schon gezeigt wie es tatsächlich funktioniert.
\lyricsto ist eben nicht zwangsläufig auf einen Voice-context angewiesen.
Gruß,
Harm
P.S.
Es gibt ja schon den Hinweise, daß \addlyrics nicht für polyphone Situationen geeignet ist, vielleicht sollte ich einen patch schreiben, um darzustellen, daß es mit TabStaff/TabVoice ebenfalls nicht klappt...
-
P.S.
Es gibt ja schon den Hinweise, daß \addlyrics nicht für polyphone Situationen geeignet ist, vielleicht sollte ich einen patch schreiben, um darzustellen, daß es mit TabStaff/TabVoice ebenfalls nicht klappt...
Ok, hab' einen patch eingereicht.
Mal sehen was daraus wird.
https://codereview.appspot.com/11062043/ (https://codereview.appspot.com/11062043/)
Gruß,
Harm
-
Danke für die Erklärungen von harm6 und Eluze.
In der Mail von Eluze habe ich gelesen
hab's mit 2.17.20 probiert - das scheint zu funktionieren:
.
Daraufhin habe ich 2.17.21 installiert um dann festzustellen, dass mein Code auch damit nicht funktioniert und habe erst dann gesehen, dass
harm6 und Eluzes Code anders - mit zwei Objekten ... usw.- programmiert ist. Wie Harm6 ja erläuterte, ist \addlyrics nur eine Abkürzung, die eben \denies "Voice" enthält. Ob das so sein muss, kann ich nicht beurteilen, habe zu wenig Ahnung von lilypond.
Wäre doch interessant, ob der "neue Code" von harm6/Eluze auch in 2.16 funktionert? Könnte das mal jemand versuchen und das Ergebnis posten? Meine Version 2.16 ist ja weg.
Hier der neue Code zum copy-pasten:
\version "2.17.21"
textLyrisch = \lyricmode {
eins und zwei und drei und vier und fünf und sechs und sieben und acht und
}
NotenI = {
\relative c'{
\key g \major
<<
\tempo "Takt zählen"
{ d,4\4 %2/8
d8\4 d\4 %2/8
d4\4 %2/8
d8\4 d\4 %2/8
d4\4 %2/8
d8\4 [d\4] %2/8
d4\4 %2/8
d8\4 [d\4] %2/8
}
>>
}
}
<<
\new TabStaff \with {
tablatureFormat = #fret-number-tablature-format-banjo
stringTunings = #banjo-open-g-tuning
}
\new TabVoice = "abc" \NotenI
\new Lyrics \lyricsto "abc" \textLyrisch
>>
\layout {
\tabFullNotation
\stemDown
}
Grüße
-
Wäre doch interessant, ob der "neue Code" von harms6/Eluze auch in 2.16 funktionert? Könnte das mal jemand versuchen und das Ergebnis posten? Meine Version 2.16 ist ja weg.
dann ist es ja einerlei, ob es funktioniert oder nicht - aber es funktioniert tatsächlich!
Eluze
-
Schön - dann hätte ich ja nicht updaten müssen.
Grüße
-
ich wollte damit nur sagen, dass es mit 2.17.20 funktioniert aber dass ich es nicht mit 2.16 getestet habe 8)
die 2.17.21 hat weitere vorteile (sofern du nicht auf windows bist) ;)
Eluze
-
Wie Harm6 ja erläuterte, ist \addlyrics nur eine Abkürzung, die eben \denies "Voice" enthält.
Das habe ich so nicht geschrieben.
Sondern: \addlyrics setzt den Voice-Kontext. Aber der TabStaff akzeptiert keine Voice.
Wäre doch interessant, ob der "neue Code" von harm6/Eluze auch in 2.16 funktionert? Könnte das mal jemand versuchen und das Ergebnis posten? Meine Version 2.16 ist ja weg.
Du könntest überlegen mehrere Versionen zu benutzen/installieren.
Ich selbst habe fünf davon.
Vermutlich hat Eluze mehr.
Phil Holmes hat mal geschrieben er hätte 60+ (falls ich mich recht erinnere).
Gruß,
Harm
-
Hallo nochmal,
Wie Harm6 ja erläuterte, ist
\addlyrics
nur eine Abkürzung, die eben
\denies "Voice"
enthält.
Ob das so sein muss, kann ich nicht beurteilen, habe zu wenig Ahnung von lilypond.
Ich habe im vorangegangenen post schon richtiggestellt was ich tatsächlich gesagt habe. ;)
Darüberhinaus habe ich mal versucht zu identifizieren welche files man patchen müßte um \addlyrics auch für TabVoice anwendbar zu machen:
ly:syntax-constructors.scm
define-music-display-methods.scm
lily-lexer.cc
parser.yy
Wahrscheinlich noch deutlich mehr
Mit anderen Worten: Operationen am offenen Gehirn.
Da rühr ich keinen Finger, aber David Kastrup (https://liarchiv.joonet.de/index.php?topic=1222.0) nimmt ja auch Aufträge (http://lilypond.org/sponsoring.html) an.
Gruß,
Harm
-
Du könntest überlegen mehrere Versionen zu benutzen/installieren.
Ich selbst habe fünf davon.
Vermutlich hat Eluze mehr.
Phil Holmes hat mal geschrieben er hätte 60+ (falls ich mich recht erinnere).
in der tat - ich habe 64 versionen von 2.12.3 bis 2.17.20 (platz auf dem harddisk oder sonst wo ist ja heute kein problem mehr)
und ich habe ein kleines .bat programm (lymv [ly multiple versions], das mir erlaubt, einen bestimmten release (2.12, 2.13 …) zu laden:
so kann ich mit lymv "c:\program files (x86^)" lilypond 2.17 test.ly auf einen schlag alle versionen die ich heruntergeladen habe für das file test4 laufen lassen und danach die resultate vergleichen. es erzeugt ganz einfach je ein pdf mit den gängigen einstellungen und der vorangestellten versionsnummer.
falls jemand interessiert ist, kann ich das batch file gerne zur verfügung stellen
Eluze
-
Das Thema hat sich mittlerweile weit von
Tabs mit Text
entfernt, vielleicht sollte man die Beiträge dazu in einen neuen Thread verschieben?
Ich benutze seit rund 30 Jahren nur Linux, eine BAT-Datei würde mir nichts nutzen. Dennoch interessiert mich das Thema.
In Linux befinden sich die Libraries in /usr/local/lilypond/usr/lib und guile, lilypond, lilypond-book .... und viele mehr in /usr/local/lilypond/usr/bin/. Beim Aufruf mit dem Shell-Script lilypond im Verzeichnis /usr/local/lilypond/usr/binin werden diese Pfade gesetzt und die Compilation ausgeführt.
Man müsste also für verschiedene Versionen diese Verzeichnisse unterscheidbar halten, was in der Standardinstallation nicht vorgesehen ist. Man müsste dazu viele Shell-Scripte durchdacht ändern, denn - wie sonst? erfolgt die Installation oder die Compilation über Shell-Scripte. Das ist sicher möglich, aber ziemlich viel Aufwand bis man das Gesamtsystem von Scripten bug-free hat.
Grüße
PS: / (slash) ist in Linux das, was bei M$ der back-slash \ ist.
-
Das Thema hat sich mittlerweile weit von
Zitat
Tabs mit Text
entfernt, vielleicht sollte man die Beiträge dazu in einen neuen Thread verschieben?
gerne + unbedingt! - Eluze
-
Verschieben kann wohl nur ein Administrator - wer kennt einen der den ansprechen/mailen kann?
Thema vielleicht "Versionsverwaltung" unter "Allgemeine Diskussion"? Evebtell getrennt nach "Versionsverwaltung Linux" und Versionsverwaltung M$"?
Grüße