Hallo Sylvia,
dann will ich mal kurz auf die von Dir genannten Punkte eingehen.
1.)
Wenn ich mir eine Variable definere:
Am={a,4 \chordmode {a,4:m}}
und diese dann mehrfach aufrufe:
\AM \AM \AM
dann kann ich die hier an dieser Stelle nicht betexten: \AM^"Am"
ich kann dass nur hier:
Am={a,4^"Am" \chordmode {a,4:m}} - in dem Fall hab ich dann 3x "Am" dranstehen,
\AM^"Am" \AM \AM funktioniert aber nicht.
Der Text "Am" muß irgendwo "dranhängen", in Deinem Beispiel hängt er aber im luftleeren Raum (nämlich irgendwo zwischen zwei {}-Gruppen von "Musikdaten".
Es gibt keinen Syntaxfehler, wenn Du das ^"Am" an ein "nichts" hängst: <>^"Am" funktioniert ohne Syntaxfehler, aber dann hängt das "Am" auch nicht an dem Akkord, wo er hin soll.
Lösungsmöglichkeiten:
- Separates \AM-Makro ohne Text und ein \AMt-Makro mit Text
- Die "Am"-Beschriftung ins \AM-Makro aufnehmen und nach dem nach Bedarf den TextScript-Stencil verschwinden lassen (mit \override TextScript #'stencil = ##f). Wieder sichtbar wird er mit \revert TextScript #'stencil.
Die beiden Befehle kann man auch in Makros packen, das erhöht den Benutzungskomfort enorm.
- Für die Akkorde eine eine parallele Stimme mit unsichtbaren Pausen (s), an die man die Texte hängen kann.
- sich eine vollautomatische Luxuslösung bauen
2.)
Was auch nicht funktioniert ist die Beschriftung eines Chords: \chordmode {a,4:m}^"Am"
Die Möglichkeit, mit ^ oder _ oder - einer Note oder Pause oder auch "nichts" <> einen Text bzw. ein Text-Markup zuzweisen, geht nicht in allen Umgebungen.
Insbesondere nicht im \chordmode, da gilt ja auch eine ganz ander Syntax.
Abgesehen davon würde ich sowieso den \chordmode nicht für Deine Anwendung benutzen, denn die Umkehrung stimmt in der Regel nicht (immer Grundstellung) und Septim und dim7 sind viertönig. Da ist es einfacher, die Akkorde auszuschreiben. Wiederholungen können mit q abgekürzt werden.
3.)
Wie ich innerhalb eines \score { .. } eine Ueberschrift setze, habe ich auch noch nicht herausgefunden;
es klappt nur zwischen zwei Scores. Aber dem entgegen steht, dass ich gern ein midi dafon machen
moechte, was aber nur score-weise gelingt.
Das geht einfach als Markup an der entsprechenden Stelle. Vorher ein \break garantiert den Zeilenumbruch und dann stehen Dir alle Möglichkeiten offen (Auswahl):
- \mark \markup "irgendwas"
- <>^\markup "irgendwas"
- Sogar die Tempo-Bezeichnung läßt sich mißbrauchen
- was einem sonst noch so einfällt...
4.)
Und zu Lyrics wollte ich noch fragen, wie man die taktung abschalten kann. Ich habe Pausen und alles Moegliche gefunden,
aber nicht, wie man diese autotakt abschalten kann.
Wie meinst Du das? Neben dem direkten Bezug zu Noten (mit \addlyrics oder \lyricsto "...") können Liedtexte auch völlig selbständig (\new Lyrics ...) gesetzt werden. Die Silbendauern lassen sich wie bei der Noteneingabe mit Zahlen danach angeben: z. B. Hal4 - lo, Du!2
5.)
Zu guter Letzt noch was ganz doofes, gibt es die Moeglichkeit, automatisch an einzelne Noten den Notennamen dranzuschreiben?
Ich muss oefter mal Noten fuer Nichtnotenleser schreiben und muss dann immer muehsam a2^"a" dranschreiben.
Neben den kindgerechten "Easy-Noteheads" mit \easyOn und \easyOff gibt es im Standard noch die
NoteNames-Umgebung.
Hier werden nicht die Noten, sondern nur deren Namen ausgegeben.
Code:
ente = \relative c' {
\key es \major
es4 f g as bes2 bes c4 c c c bes1
}
<<
\new Staff \ente
\new NoteNames \ente
>>
Offensichlicher Nachteil: Die Notennamen werden (das ist fest so verdrahtet und wurde immer noch nicht verbessert) nur in niederländisch ausgegeben (LilyPonds Muttersprache). Völlig egal übrigens, in welcher Sprache die Noten eingeben wurden.
Es gibt einen Workaround, indem man den Stencil (den Druckstempel) ändert. Leider stehen an dieser Stelle keine echten Tonhöhen (pitches), sondern nur die niederländischen Namen zur Verfügung. Deshalb habe ich eine kleine Ausnahmetabelle (hoffentlich vollständig) definiert, die alle Änderungen enthält (ees wird es, aes wird as und bes wird b in diesem Beispiel).
Wenn der automatisch erzeugte niederländische Name nicht paßt, wird er durch den deutschen ersetzt.
Code:
\version "2.14.2"
dutchtogerman =
#`(("ees" . "es")
("eeses" . "eses")
("aes" . "as")
("aeses" . "ases")
("bes" . "b")
("beses" . "heses")
("b" . "h")
("bis" . "his")
("bisis" . "hisis"))
germanNoteName =
#(lambda (grob)
(let* ((name-dutch (ly:grob-property grob 'text))
(name-german (assoc-get name-dutch dutchtogerman name-dutch)))
(if (not (eq? name-dutch name-german))
(ly:grob-set-property! grob 'text name-german))
(ly:text-interface::print grob)))
\layout {
\context {
\NoteNames
\override NoteName #'stencil = #germanNoteName
}
}
ente = \relative c' {
\key es \major
es4 f g as bes2 bes c4 c c c bes1
}
<<
\new Staff \ente
\new NoteNames \ente
>>
Ergebnis dann tatsächlich auf deutsch:
Eigenes Makro,
das genau das macht, was Du auch von Hand getan hättest: mit ^"es" usw. den Notennamen an die Note hängen.
Hier haben wird direkt den neutralen pitch-Wert (mit Stammton, Vorzeichen und Oktavlage), der mit der Standard-Funktion note-name->german-markup in die deutsche Bezeichnung umgewandelt werden kann.
Außerdem habe ich einen Puffer eingebaut, der sich die Vorgängernote und den Namen nur druckt, wenn er sich geändert hat:
Code:
\version "2.18.2"
addNoteNames =
#(define-music-function (parser location music)(ly:music?)
"Add note name script text to notes"
(let* ((last-pitch #f))
(map-some-music
(lambda(m)
(cond ((music-is-of-type? m 'note-event)
(let* ((pitch (ly:music-property m 'pitch))
(pitch-text (if (equal? last-pitch pitch) #f (note-name->german-markup pitch #t))))
(set! last-pitch pitch)
(if pitch-text
(ly:music-set-property! m 'articulations
(cons
(make-music 'TextScriptEvent
'direction UP
'text pitch-text)
(ly:music-property m 'articulations))))
m))
(else #f)))
music)))
\relative c' \addNoteNames {
\key es \major
es4 f g as bes2 bes c4 c c c bes1
}
Also reicht ein Aufruf wie
\relative c' \addNoteNames {
\key es \major
es4 f g as bes2 bes c4 c c c bes1
}
aus, um dies hier zu erzeugen:
Das geht nur einstimmig (schnell hingewurstelt) und noch nicht in Release 2.14.2, weil sich seit damals die interne Verarbeitung grundlegend geändert hat und man das ganz anders aufziehen müßte.
Zeit für ein Upgrade auf die akutelle LilyPond-Version!
Viele Grüße
Torsten