Beweggründe der Programmierer von LilyPond :

"Die Inspiration zu LilyPond kam, als zwei befreundete Musiker sich über die fade und langweilig aussehenden Computerausdrucke von Noten ärgerten. Jeder Musiker möchte schöne Musik lesen, warum also können wir Programmierer dieses Problem nicht lösen?

LilyPond macht genau das: Hiermit kann ohne große Probleme Musik gedruckt werden, die den Traditionen des klassischen Notensatzes entspricht. Man muss seine Zeit nicht damit verschwenden, die Abstände anzupassen, Vorzeichen umzugruppieren oder Bögen zu verändern. Der Notensatz von LilyPond wird Freunde und Kollegen durch seinen scharfen Druck beeindrucken."

(Quelle : http://lilypond.org/web/switch/)


Inhalt

  1. Notensatz für das Schlagzeug mit LilyPond
  2. Erste Schritte
    2.1. Basisdatei erstellen
    2.2. Erläuterungen zur Basisdatei
  3. Erste Noten setzen
  4. einen einfachen Groove notieren
  5. speziellere Notationsvarianten und Techniken
    5.1. Ghostnotes
    5.2. Flam
    5.3. Drag

 

1. Notensatz für das Schlagzeug mit LilyPond

http://lilypond.org.

Eine Softwarelösung zum Schlagzeugnotensatz sollte auf einfache und schnelle Weise optisch hochwertige Ausdrucke von Notenmaterial ermöglicht. Und das ist den Machern von Lilypond meiner Meinung nach gut gelungen - vorausgesetzt man nimmt sich einige Zeit zur Einarbeitung.

Allerdings hat LilyPond eine Eigenschaft, mit der Ihr Euch erst einmal anfreunden müßt : es besitzt keine grafische Eingabeoberfläche. Das heißt, Ihr müßt muß sämtliche Noten und weiteren Informationen in Form eines Quellcodes hinterlegen. Wenn man so sagen will, muß man eine Art eigener LilyPond Programmiersprache beherrschen.

Um Euch die Arbeit damit zu erleichtern, stelle ich Euch hier eine Demo-Datei zur Verfügung, die einen kurzen Notensatz enthält, und die ich Euch im einzelnen erläutere, damit Ihr sie nach Euren Wünschen anpassen und verändern könnt.

 


2. Erste Schritte


HinweisHinweis :

Wen nicht die Hintergründe, sondern eher schnelle Ergebnisse interessieren, der kann diesen Punkt überspringen, zu Punkt "3. Erste Noten setzen" springen und sich die Basisdatei dort herunterladen.


 

2.1. Basisdatei erstellen

Habt Ihr Euch LilyPond heruntergeladen und installiert, geht es los :

 

  1. Erstellt Euch einen Arbeitsordner z.B. auf dem Desktop. Im Beispiel heißt er "Notensatz"
  2. In diesem Ordner erstellt Ihr eine neue Datei mit der Dateiendung ".ly".
    Ich verwende dazu immer den Windows Editor. Im Beispiel heißt die Datei "notensatz-beispiel.ly"
  3. In die Datei "/Notensatz/notensatz-beispiel.ly" kopiert ihr den folgenden Code, den ich im folgenden erläutere :



%drum-info.de - LilyPond Basisdatei zur Erstellung PAS-Standard-konformer Schlagzeug Notation - Version 1.0

\version "2.12.2"
\header { tagline = ##f }
#(define drumset '(
    (bassdrum     default     #f        -3)
    (snare        default     #f        1)
    (hihat cross     #f         5)
    (pedalhihat cross     #f        -5)
    (closedhihat    cross     "stopped" 5)
    (openhihat    cross     "open"     5)
   
    (hightom      default     #f        3)
    (lowmidtom    default     #f        2)
    (lowtom       default     #f        -1)
   
    (ridecymbal    cross     #f        4)
    (crashcymbal   cross     #f        6)
    (cowbell       do  #f        3)))

\header{
    title = \markup \center-column { "Notensatzbeispiel für Schlagzeug" }
}

\new DrumStaff
\with {\consists "Parenthesis_engraver" } <<
\set DrumStaff.drumStyleTable = #(alist->hash-table drumset)
\set DrumStaff.instrumentName = #"1"
\numericTimeSignature
\time 4/4
\tempo 4=120
\drummode{
\stemUp
%---------------Hier beginnt der eigentliche Noten Code----------------------------------

%---------------Hier endet der eigentliche Noten Code------------------------------------
}
>>

 

2.2. Erläuterungen zur Basisdatei

\version "2.12.2"

Hier wird die Version von lilypond angeben, in für die die Datei erstellt wurde. Dieser Eintrag ist sehr wichtig, um eine Abwärtskompatiblität der Datei bei Installation einer neuen LilyPond Version zu gewährleisten.

\header { tagline = ##f }

Dieser Code ist für den eigentlichen Notensatz nicht notwendig. Er entfernt lediglich den Hinweis "Music engraving by LilyPond ...", den das Programm ansonsten an das Ende einer Seite setzt. Wer also LilyPond zu Werbung verhelfen möchte, kann dieser Zeile auch gerne wieder löschen.

#(define drumset '(
    (bassdrum     default     #f        -3)
    (snare        default     #f        1)
    (hihat cross     #f         5)
    (pedalhihat cross     #f        -5)
    (closedhihat    cross     "stopped" 5)
    (openhihat    cross     "open"     5)
   
    (hightom      default     #f        3)
    (lowmidtom    default     #f        2)
    (lowtom       default     #f        -1)
   
    (ridecymbal    cross     #f        4)
    (crashcymbal   cross     #f        6)
    (cowbell       do  #f        3)))

Dieser gesamte Abschnitt erstellt ein benutzerdefiniertes Schlagzeugtemplate. Der erste Eintrag pro Zeile definiert das Instrument, der zweite die Art des Notenkopfes, der dritte den Bezugspunkt im Notensystem und der vierte die verschiebung um Halbtöne zum Bezugspunkt. Also die position der Note.

An diesen Definitionen braucht bzw. solltet Ihr nichts ändern, da ich sie an die Empfehlung der PAS zur Notation von Schlagzeug angepaßt habe.

\header{
    title = \markup \center-column { "Notensatzbeispiel für Schlagzeug" }
}

Hier wird die Seitenüberschrift angegeben. Ihr könnt sie von "Notensatzbeispiel für Schlagzeug" ändern, indem Ihr den Text zwischen den Anführungszeichen anpaßt.

\new DrumStaff 
\with {\consists "Parenthesis_engraver" } <<
\set DrumStaff.drumStyleTable = #(alist->hash-table drumset)

Dieser Code führt zur Generierung eines Notensystems des Typs Schlagzeug und weißt diesem das zuvor definierte Schlagzeug-Template zu. Der consists "parenthesis_engraver" lädt ein Programmmodul, das zur Darstellung von ghostnotes notwendig ist.

\set DrumStaff.instrumentName = #"1"

Definiert den Namen des soeben erzeugten Notensystems. Ihr könnt die 1 zwischen den Anführungszeichen durch belibiegen text ersetzen, bzw die Zeile gang löschen, wenn Ihr keine Beschriftung wollt.

\numericTimeSignature
\time 4/4

Hier wird in der oberen Zeile dafür gesorgt, daß die Taktangabe in Form eines Bruches geschieht. In der unteren wird das Taktmaß für die folgenden Noten auf 4/4 gesetzt. Dies könnt Ihr natürlich Euren Wünschen gemäß ändern.

\tempo 4=120

Setzt die Tempoangabe. Die Vier erzeugt die Viertelnote. hier könnt Ihr auch andere Notenwerte angeben. =120 erklärt sich dann wohl von alleine. 

\drummode{
\stemUp
%---------------Hier beginnt der eigentliche Noten Code----------------------------------

%---------------Hier endet der eigentliche Noten Code------------------------------------
}
>>

Hier geschieht der eigentlich interessante Part. In der Zeile zwischen den beiden Markierungen werden die Noten eingegeben. Dazu aber weiter unten mehr.

\stemUp

Sagt LilyPond dabei lediglich, daß die Notenhälse nach oben zeigen sollen.

 

3. Erste Noten setzen

An dieser Stelle solltet Ihr die Basisdatei entweder selber erstellt haben, oder ihr hattet es eilig und wollt sie herunterladen.

Dies könnt Ihr hier tun : Download der Basisdatei

 

Wie oben schon erwähnt, ist der eigentlich interessante Teil der folgende :

\drummode{
\stemUp

}
>>

Die Leerzeile ist nämlich der Platz, indem die eigentlichen Noten geschrieben werden.

Im folgenden Beispiel schreiben wir eine Notezeile, in der die verschiedenen Notenwerte der Snaredrum erscheinen sollen. Ergänzt dazu einfach den Code um das unten rot markierte :

\drummode{
\stemUp
snare1
snare2 snare2
snare4 snare4 snare4 snare4 snare8
snare8 snare8 snare8 snare8 snare8 snare8 snare8
snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16 snare16
}
>>

In dieser einfachsten Version des notenschreibens in LilyPond ist das Prinzip klar erkennbar : es wird zuerst das Instrument (hier : die Snare) und dann der Notenwert genannt. Dabei gilt :

  • 1 = Ganze Note
  • 2 = halbe Note
  • 4 = viertel Note
  • 8 = achtel Note
  • 16 = sechzehntel Note
  • usw.

Habt Ihr die Noten eingefügt, speichert Ihr die Datei, schließt sie und verwendet per Rechtsklick den Menupunkt "Generate PDF ...". Daraufhin sollte sich kurz das schwarze Interpreterfenster von lilypond öffnen, und drei neue Dateien in Eurem Ordner erscheinen :

  • notensatz-beispiel.log - hier logt das Programm evtl. Syntaxfehler
  • notensatz-beispiel.ps - dies uist eine Postscript Datei zur evtl. späteren Weiterverwendung
  • notensatz-beispiel.pdf

Das PDF File ist das Ergebnis Eurer ersten LilyPond-Programmierbemühungen. Habt Ihr alles korrekt eingegeben, sollte in der Datei nun das folgende zu sehen sein :

 

Beispiel 1 : die verschiedenen Notenwerte der Snaredrum

 

Genauso könnt Ihr mit allen Instrumenten verfahren, die in der Aufstellung :

 (bassdrum     default     #f        -3)
    (snare        default     #f        1)
    (hihat cross     #f         5)
    (pedalhihat cross     #f        -5)
    (closedhihat    cross     "stopped" 5)
    (openhihat    cross     "open"     5)
   
    (hightom      default     #f        3)
    (lowmidtom    default     #f        2)
    (lowtom       default     #f        -1)
   
    (ridecymbal    cross     #f        4)
    (crashcymbal   cross     #f        6)
    (cowbell       do  #f        3)))

genannt sind.

 

4. einen einfachen Groove notieren

Wollt Ihr einen einfachen Groove notieren, so funktioniert das im Prinzip genauso wie unser erstes Beispiel mit den Snaredrum Notenwerten :

Instrument + Notenwert.

Allerdings kommt es in Grooves ja vor, daß Noten gleichzeitig gespielt werden. Diese Noten werden durch ">" und "<" zusammengefaßt, wobei der Notenwert nach dem "<" stehen muß

Zur Demonstration, löscht die Snaredrum-Noten aus Beispiel 1. wieder aus der Basisdatei und setzt stattdessen den folgenden Code an deren Stelle :

<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8


Ich habe hierbei nach jedem Takt einen Zeilenumbruch gesetzt. Dies ignoriert LilyPond (ebenso wie Leerzeichen) bei der Interpretation der Datei, sodaß man sich den Quelltext nach Übersichtsaspekten formatieren kann.

Als Ergebnis erhaltet Ihr (sofern wieder alles richtig ist) folgendes :

Beispiel 2 : ein einfacher 4-taktiger Groove

 

Wer die Geduld hatte bis hierher Aufmerksam zu lesen und die Beispiele nachzuvollziehen, der kann bereits Grooves und Fill-Ins mit LilyPond notieren.

Im weiteren folgen Beispiele für speziellere Notationsvarianten und Techniken, die einem das Programmieren in LilyPond einfacher machen.

 

 

5. speziellere Notationsvarianten und Techniken

5.1. ghostnotes

<\parenthesize Instrument>

Erzeugt, sofern das "parenthesize-modul" wie oben geladen wurde eine ghostnote. Das Wort Instrument im Code ist dabei durch das gewünschte zu ersetzen.

Beispiel :

<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hh16 
<\parenthesize sn>16
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>16
<\parenthesize sn>16 hh16 <\parenthesize sn>16
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8

Ersetzt den Notentext von 4. durch das obige und Ihr erhaltet den gleichen Groove mit ein paar schönen ghostnotes auf der Snare verziert :

Beispiel 3 : ghostnotes

 

 

5.2. Flam

\acciaccatura {Instrument}

Mit dem Code "\acciaccatura" setzt ihr einen Flam.

Beispiel :

<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
snare16 snare16 bassdrum16 hightom16 hightom16 bassdrum lowmidtom lowmidtom bassdrum lowtom lowtom
bassdrum  \acciaccatura {snare8} snare4

Hier habe ich den Groove aus 4. mit einem Fill-In versehen, der auf einem Snare-Flam endet :

Beispiel 4 : der Flam

 

 

5.3. Drag

Um einen Drag zu erzeugen, müßt ihr ebenfalls das "/acciaccatura" verwenden. Wie seht Ihr hier :

Beispiel :

<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
<bassdrum hihat>8 hihat8 <snare hihat>8 hihat8 <bassdrum hihat>8 <bassdrum hihat>8 <snare hihat>8 hihat8
snare16 snare16 bassdrum16 hightom16 hightom16 bassdrum lowmidtom lowmidtom bassdrum lowtom
lowtom bassdrum  \acciaccatura {snare16[ snare16]} snare4

Dies ist der selbe Groove + Fill-In wie beim Flam, allerdings endet das Fill hier auf einem Drag :

Beispiel 5 : der Drag

version "2.12.2"
\header { tagline = ##f }
#(define drumset '(
    (bassdrum    default        #f        -3)
    (snare        default        #f        1)
    
    (hihat        cross        #f        5)
    (pedalhihat    cross        #f        -5)
    (closedhihat    cross        "stopped"     5)
    (openhihat    cross        "open"         5)
    %(halfopenhihat    cross        #f        5) %Funktioniert noch nicht
    
    (hightom        default        #f        3)
    (lowmidtom    default        #f        2)
    (lowtom        default        #f        -1)
    
    (ridecymbal    cross        #f        4)
    (chinesecymbal    cross        #f        7) %c rash 2
    (crashcymbal    cross        #f        6)
    (cowbell        do        #f        3)))

%\paper { system-count=1}
\header{
    title = \markup \center-column { "Fill Ins - Ulf (1)" }                             %<--- Hier kommt der Titel der Noten hin.

}


%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
\new DrumStaff <<
\set DrumStaff.drumStyleTable = #(alist->hash-table drumset)
%\set DrumStaff.instrumentName = #"Fill-In # 2  "
\numericTimeSignature
\time 4/4
\drummode{
\stemUp
bassdrum4
snare
hihat
pedalhihat
closedhihat
openhihat
halfopenhihat
hightom
lowmidtom
lowtom
ridecymbal
chinesecymbal
crashcymbal
cowbell
}
>>