Notensatz mit LilyPond
19. Februar 2021 von Thomas Breuss
Mit LilyPond habe ich eine weitere Möglichkeit entdeckt, Notenblätter aus einer Textdatei zu generieren. Das Programm ist ein freies Notensatzprogramm für alle gängigen Betriebssysteme.
Vor längerer Zeit benutzte ich zum Noten schreiben das proprietäre Programm Encore. Seit meinem Umstieg auf Mac steht mir dieses Notenprogramm nicht mehr zur Verfügung, obwohl ich noch viele Encore-Dateien herumliegen habe. Versuche mit Musescore, ebenfalls einem Opensource-Projekt, sahen durchaus erfolgversprechend aus. Der Notendruck ist sauber, die Eingabe funktioniert bedienerfreundlich. Trotzdem wollte ich für meine Electricbass-Website eine Möglichkeit haben, über definierte Workflows Noten generieren zu können. Das wichtigste Kriterium für mich war, dass Quelldateien versionierbar, Änderungen nachvollziehbar und Automatisierungsmöglichkeiten vorhanden sein sollten.
Das habe ich nun mit LilyPond hoffentlich gefunden. LilyPond ist ein GNU-Projekt und stellt einen offenen Standard für textbasierten Notensatz zur Verfügung. Im Gegensatz zu anderen gängigen Notensatzprogrammen bietet LilyPond selbst keine grafische Benutzeroberfläche zur Eingabe von Musik. Stattdessen erstellt der Benutzer mit einem beliebigen Texteditor eine Quelldatei, in der Noten und andere Notationselemente in einer an LaTeX angelehnten Syntax beschrieben werden. Die Textdatei wird vom LilyPond-Programm in verschiedene Dateiformate kompiliert (aktuell werden PDF, PS, PNG und SVG unterstützt), bei Bedarf können gleichzeitig auch MIDI-Dateien der notierten Musik erzeugt werden.
Detailierte Informationen zu LilyPond findet ihrer Website unter LilyPond.
Ein erster Versuch sieht vielversprechend aus. Nachfolgend seht ihr eine Quelltextdatei, welche eine Walking Basslinie über einen Jazz Blues in F darstellt
\version "2.20.0"
\header {
title = "Jazz Blues in F"
subtitle = "Walking Bass"
piece = "Swing"
tagline = \markup {
"14.02.2021 - Version 1.0 - www.electricbass.ch"
}
}
notes = \relative {
\key f \major
\time 4/4
\tempo 4 = 120
f,, g gis a | bes as g ges | f a c es | f a c ces | \break
bes as g ges | f d b as | f a c cis | d e f fis | \break
g a bes b | c bes a g | f cis d f | g des c e, |
}
\score {
\new StaffGroup <<
\new ChordNames {
\transpose c' c \chordmode {
\set Staff.midiInstrument = #"bright acoustic"
\set Staff.midiReverbLevel = #0.0
\set Staff.midiPanPosition = #0.2
f1:7 bes:7 f:7 f:7 |
bes:7 b:dim7 f:7 d:7 |
g:m7 c:7 f2:7 d:7 g:m7 c:7 \bar "|."
}
}
\new Staff \with {
\omit StringNumber
} {
\clef "bass_8"
\set Staff.midiInstrument = #"acoustic bass"
\set Staff.midiReverbLevel = #0.0
\set Staff.midiPanPosition = #-0.2
\numericTimeSignature
\notes
}
\new TabStaff \with {
stringTunings = #bass-tuning
} {
\clef moderntab
\notes
}
>>
\layout { }
\midi { }
}
Die Syntax von LilyPond ist an diejenige von LaTeX angelehnt. Die einen lieben dieses System, andere eher nicht. Ich gehöre zur zweiten Gruppe ;-) Trotzdem sind die Hauptkriterien damit erfüllt: die Möglichkeit der Quelltextverwaltung in einem Versionierungssystem, der Generierung unterschiedlicher Dateiformate und der Automatisierung des gesamten Workflows.
Den obigen Quelltext verwalte ich in einem privaten GitHub-Repository. Über eine GitHub-Action können die gewünschten Ausgabeformate generiert werden. Über eine weitere Action werden diese Dateien in ein Verzeichnis meiner Website geladen.
Auf Electricbass binde ich die Dateien über einen sogenanten Shortcode ein:
{score label="Walking Bass - Jazz Blues in F" path="walking-bass-jazz-blues-in-f"}
Damit steht das Musikstück auf der Website in drei Versionen zur Verfügung:
- als PNG-Grafik zur Einbindung im HTML und Vorschau im Browser
- als PDF-Dokument zum Herunterladen und Ausdrucken
- als MIDI-Datei zum Herunterladen und Anhören
Das sieht dann ungefähr so aus:

Downloads
Nicht schlecht! Vor allem habe ich damit unter anderem folgendes erreicht:
- Erstellung hoch qualitativer Noten aus textbasierten Dateien
- Verwaltung der Quelltexte in einem Versionierungssystem
- Automatisierung bei der Erstellung der Noten
- Generierung unterschiedlicher Ausgabeformate
Doch, das gefällt mir :-)
Was haltet ihr von LilyPond oder dem eingesetzten Workflow? Euer Feedback interessiert mich!
Schreib den ersten Kommentar.