LilyPond Workshop

25.10.2011 20:32
avatar  JuergenPB ( gelöscht )
#1 RE: LilyPond Workshop
Ju
JuergenPB ( gelöscht )

Im Nachbarthread wurde gesagt, daß die mit LilyPond gesetzten Noten recht ansprechend aussehen.

Ich denke, es wäre nicht ganz schlecht, einen kleinen "Workshop" hier zu machen. - Sofern Interesse besteht

Ich schreibe LilyPond von Hand OHNE irgendwelche graphischen Oberflächen und Ihr werdet sehen, daß das ganz einfach ist.

Nachfolgend erkläre ich erstmal eine ganz einfache Datei (so wie ich es mache). Es führen bei LilyPond sehr viele Wege zum Ziel. Ich erkläre es so, wie ICH es für einfach halte.

Zuerst muß man Lilypond sagen, mit welcher Version man arbeitet. Kommt eine neue Version heraus, weiß LilyPond dann, daß die Datei ggf. mit einer alten Version geschrieben ist, und verarbeitet die Datei entsprechend. LilyPond ist rückwärtskompatibel!
Das macht man mit: version "2.12.3"

Dann wollen wir natürlich mit deutschen Notennamen arbeiten; also h statt b und as statt aflat.
Wir sagen also: include "Deutsch.ly"

Nun definieren wir das Papier auf dem die Noten ausgedruckt werden sollen. Das ist in der Regel A4
Die Papierumgebung heißt: paper { }
In die Klammern kommen die Definitionen
Beim Hochformat schreiben wir: #(set-paper-size "a4" 'landscape)
Beim Querformat: #(set-paper-size "a4" 'landscape)

Die Notensystem können wir so auf der Seite verteilen, daß sie die ganze Seite füllen (mit viel Abstand dazwischen) oder sie ganz nach oben rücken.
Letzteres macht man mit: ragged-bottom = ##t
Auch das kommt in die Papierumgebung

Die erste Zeile hat normalerweise einen Einzug. Will man den nicht haben, setzt man ihn auf 0 Zentimeter
indent = 0cm
Auch das kommt in die Papierumgebung

Normalerweise schreibt LilyPond eine Fußzeile, in der steht, daß die Noten mit LilyPond gesetzt worden sind. Das kann man ausschalten
tagline = ##f

Nun können wir noch einen Titel definieren. Der enthält Überschrift, Komponist und den, der den Satz geschrieben hat. (Siehe Datei - ist selbsterklärend). Ich mache dort manche Schriften etwas kleiner (mit markup fontsize...) - ausprobieren!

Als nächstes definiere ich mir eine Variable, in der Sachen stehen, die für alle Systeme gebraucht werden. Normalerweise hat man ja (bei Orgelnoten) in jedem System die gleiche Tonart, gleiche Taktart, gleiche Geschwindigkeit. Die Geschwindigkeit ist für eine spätere MIDI-Dateiausgabe wichtig. Sie wird aber auch mit ausgedruckt. Wenn man sie nicht braucht, kann man sie weglassen.

Die Noten speicher ich in einer Variablen (hier Voiceeins). Die Noten werden "relativ" eingegeben. Das bedeutet, wenn ich erst ein c eingebe und dann ein d, weiß das Programm, daß es das d neben dem c ist und nicht irgendein anderes. Notenlängen werden mit Zahlen eingegeben (1=ganze, 2=halbe, 4=viertel etc). Gibt man keine Länge an, so wird die Länge der vorhergehenden Note genommen. Hat man also nur Viertel, reicht es die 4 einmal einzugeben (siehe Beispiel).
Der Notenschlüssel wird mit clef treble (=Violinschlüssel) bzw. bass (=Baßschlüssel) angegeben. Auch andere Schlüssel, wie Tenorschlüssel o.ä. sind machbar.
Wenn alle Noten eingegeben sind, beendet man es mit bar "|." für den Endtaktstrich.

Nun müssen die Noten noch ausgegeben werden. Das passiert in der Score-Umgebung. Dort wird mit new Staff ein Notensystem erzeugt und in dem wird das ausgegeben, was man mit global definiert hat und die Noten (Voiceeins).
Dann fügen wir noch einen layout{} Befehl an, damit alles auch richtig ausgegeben wird. Das ist besonders dann wichtig, wenn man auch MIDI ausgeben will etc. In dem einfachen Beispiel könnte es auch fehlen.

Die ganze Datei sieht dann so aus. Das speichert man mit der Endung .ly.
Mit der Eingabe: lilypond dateiname.ly
in der Eingabeaufforderung übersetzt man das Ganze und erhält eine PDF.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
version "2.12.3"
include "deutsch.ly"
 
% Papierumgebung
paper {
#(set-paper-size "a4")
ragged-bottom = ##t
indent = 0cm
}
 

% leere Fußzeile
tagline = ##f
 

% Titelei
header {
title = "Name des Stücks"
composer = markup fontsize #-3 "W: Komponist"
arranger = markup fontsize #-3 "S. Satz"
}
 
% Globale Einstellung für alle Systeme
global = {
key c major
time 4/4
tempo 4 = 120
}
 

Voiceeins = relative c' {
clef treble
c4 d e f
g a h c
c h a g
f e d c
bar "|."
}
 

 
%%%% Ausgabe der Noten
 
score {
>
layout{}
}
 
 



Bei Fragen - fragen! [wink]

Dateianhänge
  • f6t491p5329n183.pdf

Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!

 Antworten

 Beitrag melden
26.10.2011 00:58
#2 RE: LilyPond Workshop
avatar
Administrator

Interesse habe ich durchaus.
Jedoch: Noteneingabe im Blindflug und per Text finde ich schrecklich... [sad]


Auf Orgelsuche.

 Antworten

 Beitrag melden
26.10.2011 13:28
avatar  JuergenPB ( gelöscht )
#3 RE: LilyPond Workshop
Ju
JuergenPB ( gelöscht )

TEIL 2

Was nun noch fehlt sind ein paar Kleinigkeiten und schon hat man alles zusammen um zumindest Stücke mit einem System zu setzen.

Punktierte Noten werden notiert indem ein Punkt an die Notenlänge angehängt wird.

Akkorde werden in spitzen Klammern notiert . Alles was dazwischen steht wird übereinander gesetzt. Hinter der > Klammer wird die Länge angegeben.

Haltebögen setzt man, in dem man ein ~ an die Notennotation anhängt. Hängt man dies Zeichen an einen Akkord an, so erkennt das Programm automatisch, welche Noten im Folgenden mit den Akkordnoten identisch sind, und setzt die Haltebögen entsprechend.

Legatobögen setzt man, indem man zu Beginn ein ( an die Notennotation anhängt und am Ende ein )
Phrasierungsbögen sind typographisch gesehen das gleiche in grün. Sie werden mit ( und ) notiert.

Pausenzeichen werden mit r gefolgt von einer Zahl für die Länge gesetzt; Ganztaktpausen werden mit R gesetzt. Diese stehen dann zentriert in der Mitte eines Taktes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
version "2.12.3"
include "deutsch.ly"
 
% Papierumgebung
paper {
% #(set-paper-size "a4" 'landscape)
#(set-paper-size "a4")
ragged-bottom = ##t
ragged-right = ##f % System auf Zeilenlänge strecken
indent = 0cm
}
 

% leere Fußzeile
tagline = ##f
 

% Titelei
header {
title = "Name des Stücks"
composer = markup fontsize #-3 "W: Komponist"
arranger = markup fontsize #-3 "S. Satz"
}
 
% Globale Einstellung für alle Systeme
global = {
key c major
time 4/4
}
 

Voiceeins = relative c' {
clef treble
r2 c2(
4 ~
) f a c
R1
c4(~
( 8. 16)) 1
bar "|."
}
 

 
%%%% Ausgabe der Noten
 
score {
>
% layout{}
 

}
 
 

Dateianhänge
  • f6t491p5345n186.pdf

Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!

 Antworten

 Beitrag melden
27.10.2011 15:35
avatar  JuergenPB ( gelöscht )
#4 RE: LilyPond Workshop
Ju
JuergenPB ( gelöscht )

Mit dem bisher gesagtem kann man schon ganz gut Noten setzen.
Für einen Orgelsatz fehlt aber noch eine Kleinigkeit.
Man will ja in der Regel zwei Stimmen pro System aufschreiben. Solange die beiden Stimmen nur aus zwei parallel laufenden Melodien bestehen, bei denen jeweils jede Stimme gleich lange Noten hat, kann man sie so setzen wie Akkorde. In der Praxis ist das aber eher selten. Zwar kann man mit der Akkordnotation auch tricksen, aber besser ist es, jede Stimme einzeln aufzuschreiben.

Im folgenden habe ich mal den Anfang von "Gott durch deine Güte" von J.S.B. aus dem Orgelbüchlein genommen.

Normalerweise setzt LilyPond die Notenhälse je nach Notenhöhe mal nach unten und mal nach oben. Das ist natürlich falsch, wenn man zwei Stimmen in ein System setzt, da sich dann die Notenhälse überlapppen.
Um das zu umgehen, gibt es die Befehle voiceOne, voiceTwo, voiceThree und voiceFour. Bei den ungeraden Stimmen werden die Hälse nach oben gesetzt, bei den ungeraden nach unten.

Die Systeme werden - wie immer - mit "new Staff" erzeugt. Im Beispiel habe ich den Systemen noch Namen gegeben (Eins, Zwei, Drei). Warum, sieht man beim zweiten Beispiel zum "Feintuning".
Innerhalb des Staffs erzeugt man nun in doppelten Spitzklammern > die Stimmen mit new Voice. Hier muß man einen Namen angeben.

Nach der ersten Eingabe läßt sich das Ergebnis schon sehen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
version "2.12.3"
include "deutsch.ly"
 
% Papierumgebung
paper {
#(set-paper-size "a4" 'landscape)
ragged-bottom = ##t
indent = 0cm
}
 

% leere Fußzeile
tagline = ##f
 

% Titelei
header {
title = "Gott, durch deine Güte (Anfang)"
arranger = markup fontsize #-3 "S. J. S. Bach"
}
 
% Globale Einstellung für alle Systeme
global = {
key f major
time 3/2
}
 

VoiceS = relative c' {
clef treble
voiceOne
f1 f4 g
a1 h2
c1 d2
c1 r2
d1 e2
bar "|."
}
 
VoiceA = relative c' {
clef treble
voiceTwo
r8 es8 d c d e d c b d c b
a8 g' f e d c d e f e f g
e8 b' a g a b a g f a g a
g8 a g f e g f e a g f g
a8 c b a b c b a b d c b
}
 
VoiceT = relative c {
clef bass
r4 f,4 b c d e
f4 g f e d g
c,4 f e f d g
e4 a g a f b
fis4 d g f g c,
}
 
VoiceB = relative c {
clef bass
R1.
f1 f4 g
a1 h2
c1 d2
c2 r2 r2
}
 

%%%% Ausgabe der Noten
 
score {
>
new Staff = "Zwei" { global VoiceT }
>>
new Staff = "Drei" { global VoiceB }
>>
% layout{}
 
}
 




Feintuning:
Zwei Dinge könnte man jetzt noch manuell korrigieren.

Die halbe Pause im 4. Takt sitzt m.E. zu hoch.
Die halbe Pause wurde normal mit r2 gesetzt und da sie zur ersten Stimme gehört rutscht sie recht weit nach oben.
Eine Pause kann man aber auch manuell auf eine beliebige Stelle setzten. Statt des Pausenzeichens r notiert man dazu den Ton, wie sie sitzen soll - in diesem Falle ein d - gefolgt von rest. Also d2rest.

Das a im zweiten Takt sitzt auf der 2. Hilfslinie. Das ist nicht so schön. Man kann es auch im unteren System notieren. Dafür habe ich den Systemen Namen gegeben.
Zum Verschieben kann man wie folgt vorgehen:
- Umschalten auf System Zwei
- Umschalten auf voiceThree (damit die Halsposition stimmt)
- Note setzten
- Zurückschalten auf voiceOne
- Zurückschalten auf System Eins

hier der Ausschnitt:

1
2
3
4
5
 
	change Staff = "Zwei" 
voiceThree
a
voiceTwo
change Staff = "Eins"
 



Jetzt sieht es besser aus!

Dateianhänge
  • f6t491p5356n187.pdf
  • f6t491p5356n188.pdf

Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!