Kurs:Lilypond für Wikis: Ein einfaches Lied

Aus Wikiversity


Ein etwas aufwendiger arrangiertes Lied auf den Wikibooks soll als Beispiel dienen. Der Schnelleinstieg wird als bekannt vorausgesetzt.

Oh, Susanna[Bearbeiten]

Handy-Nutzer sollten ggf. das Display quer halten.

<score sound="1" raw="1">
\version "2.20.0"
\header {
 title = "Oh, Susanna"
 % subtitle = "Subtitle"
 % poet = "Poet"
 composer = "Stepen Foster (1848 publ.)"
 % arranger = "arr: ccbysa: Wikibooks (mjchael)"
}

myKey = {
  \clef "treble"
  \time 4/4
  \tempo 4 = 140
  %%Tempo ausblenden
  \set Score.tempoHideNote = ##t
  \key g\major
}

%% Akkorde
%% Lagerfeuerschlag
%% 1 . 2 + . + 4 .
myG = \chordmode { g,,4  g,8 4 8 4 }
myD  = \chordmode { d,4  d8 4  8 4 }
myC  = \chordmode { c,4 c8 4 8 4 }
%% Westernschlag
%% 1 . 2 + 3 . 4 +
myGD = \chordmode { g,,4  g,8 8 d,4 d8 8 }

myChords = \chordmode {
  \set Staff.midiInstrument = #"acoustic guitar (nylon)"
  %% Akkorde nur beim Wechsel Notieren
  \set chordChanges = ##t
  %% Lagerfeuerschlag 
  %% 1 . 2 + . + 4 .
  \partial 4 s4
  \myG \myG \myG \myD
  \myG \myG \myGD \myG 
  \myC \myC \myG \myD 
  \myG \myG \myGD \myG
}

myMelody = \relative c'' {
  \myKey
  \set Staff.midiInstrument = #"trombone"
  \partial 4 g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 |
  \bar "||"
  c2 c | e4 2 4 | 
  d4 d b g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 | 
   \bar "|."
}

myLyrics = \lyricmode {
  \set stanza = "1."
  I _ come from A -- la -- ba -- ma with my ban -- jo on my knee,

    I'm _ going to Loui -- si -- a -- na, my _ true love for to see;

Oh! Su -- san -- na, oh don't you cry for me,
I've _ come from A -- la -- ba -- ma with my ban -- jo on my knee.
}

\score {
  <<
    \new ChordNames { \myChords }
    \new Voice = "mySong" { \myMelody }
    \new Lyrics \lyricsto "mySong" { \myLyrics }
  %  \new TabStaff { \myChords } %% Check 
  >>
  \midi { }
  \layout { }
}

%% unterdrückt im raw="1"-Modus das DinA4-Format.
\paper {
  indent=0\mm
  %% DinA4 0 210mm - 10mm Rand - 20mm Lochrand = 180mm
  line-width=180\mm
  oddFooterMarkup=##f
  oddHeaderMarkup=##f
  % bookTitleMarkup=##f
  scoreTitleMarkup=##f
}
</score>
Ergibt

\version "2.20.0"
\header {
 title = "Oh, Susanna"
 % subtitle = "Subtitle"
 % poet = "Poet"
 composer = "Stepen Foster (1848 publ.)"
 % arranger = "arr: ccbysa: Wikibooks (mjchael)"
}

myKey = {
  \clef "treble"
  \time 4/4
  \tempo 4 = 140
  %%Tempo ausblenden
  \set Score.tempoHideNote = ##t
  \key g\major
}

%% Akkorde
%% Lagerfeuerschlag
%% 1 . 2 + . + 4 .
myG = \chordmode { g,,4  g,8 4 8 4 }
myD  = \chordmode { d,4  d8 4  8 4 }
myC  = \chordmode { c,4 c8 4 8 4 }
%% Westernschlag
%% 1 . 2 + 3 . 4 +
myGD = \chordmode { g,,4  g,8 8 d,4 d8 8 }

myChords = \chordmode {
  \set Staff.midiInstrument = #"acoustic guitar (nylon)"
  %% Akkorde nur beim Wechsel Notieren
  \set chordChanges = ##t
  %% Lagerfeuerschlag 
  %% 1 . 2 + . + 4 .
  \partial 4 s4
  \myG \myG \myG \myD
  \myG \myG \myGD \myG 
  \myC \myC \myG \myD 
  \myG \myG \myGD \myG
}

myMelody = \relative c'' {
  \myKey
  \set Staff.midiInstrument = #"trombone"
  \partial 4 g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 |
  \bar "||"
  c2 c | e4 2 4 | 
  d4 d b g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 | 
   \bar "|."
}

myLyrics = \lyricmode {
  \set stanza = "1."
  I _ come from A -- la -- ba -- ma with my ban -- jo on my knee,

    I'm _ going to Loui -- si -- a -- na, my _ true love for to see;

Oh! Su -- san -- na, oh don't you cry for me,
I've _ come from A -- la -- ba -- ma with my ban -- jo on my knee.
}

\score {
  <<
    \new ChordNames { \myChords }
    \new Voice = "mySong" { \myMelody }
    \new Lyrics \lyricsto "mySong" { \myLyrics }
  %  \new TabStaff { \myChords } %% Check 
  >>
  \midi { }
  \layout { }
}

%% unterdrückt im raw="1"-Modus das DinA4-Format.
\paper {
  indent=0\mm
  %% DinA4 0 210mm - 10mm Rand - 20mm Lochrand = 180mm
  line-width=180\mm
  oddFooterMarkup=##f
  oddHeaderMarkup=##f
  % bookTitleMarkup=##f
  scoreTitleMarkup=##f
}

Erklärungen[Bearbeiten]

\version

\version "2.20.0" wird von Frescobaldi automatisch erzeugt, und kann bei einer Fehlersuche helfen, falls ein veralteter obsoleter Code verwendet wurde.

\header

Der Header-Bereich sollte selbsterklärend sein. Hier ungenutzte Felder wurden mit % auskommentiert.  % arranger... kann schnell wieder angeschaltet werden, wenn man beispielsweise die Grafik drucken oder in einem sozialen Netzwerk posten möchte, und die Rechte an dem Arangement klären will.

Empfohlene Konvention für Kommentare
%% Irgendein Text...
Kommentare mit 2 Prozentzeichen ( %% ) dienen der Information der Autoren. Die Kommentare sind nicht unmittelbar Bestandteil des Codes.
% Codeschnipsel
kommentiert alles ab dem Prozentzeichen bis zum Zeilenende aus. Entfernt man das % am Anfang der Codezeile schaltet man den Codeschnipsel wieder an.
% \new TabStaff { \myChords } %% Check

Lösche das %. Damit lässt sich eine Tabulatur hinzuschalten, um zu überprüfen, ob die simulierte Gitarrenbegleitung einer echten Gitarrenbegleitung nahe genug kommt. Wie du siehst entspricht die simulierte Begleitung nicht den tatsächlich gegriffen Akkorden, reicht aber als Hörbeispiele in der Regel aus.

%{ ... %}
kommentiert einen mehrzeiligen Codeblock aus. Der Code wird ignoriert, bleibt aber für zukünftige weitere Bearbeitungen stehen.

\version "2.20.0"
\header {
 title = "Oh, Susanna"
 % subtitle = "Subtitle"
 % poet = "Poet"
 composer = "Stepen Foster (1848 publ.)"
 % arranger = "arr: ccbysa: Wikibooks (mjchael)"
}

myKey = {
  \clef "treble"
  \time 4/4
  \tempo 4 = 140
  %%Tempo ausblenden
  \set Score.tempoHideNote = ##t
  \key g\major
}

%% Akkorde
%% Lagerfeuerschlag
%% 1 . 2 + . + 4 .
myG = \chordmode { g,,4  g,8 4 8 4 }
myD  = \chordmode { d,4  d8 4  8 4 }
myC  = \chordmode { c,4 c8 4 8 4 }
%% Westernschlag
%% 1 . 2 + 3 . 4 +
myGD = \chordmode { g,,4  g,8 8 d,4 d8 8 }

myChords = \chordmode {
  \set Staff.midiInstrument = #"acoustic guitar (nylon)"
  %% Akkorde nur beim Wechsel Notieren
  \set chordChanges = ##t
  %% Lagerfeuerschlag 
  %% 1 . 2 + . + 4 .
  \partial 4 s4
  \myG \myG \myG \myD
  \myG \myG \myGD \myG 
  \myC \myC \myG \myD 
  \myG \myG \myGD \myG
}

myMelody = \relative c'' {
  \myKey
  \set Staff.midiInstrument = #"trombone"
  \partial 4 g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 |
  \bar "||"
  c2 c | e4 2 4 | 
  d4 d b g | a2. g8 a |
  b4 d d4. e8 | d4 b g4. a8 |
  b4 b a a | g2. r4 | 
   \bar "|."
}

myLyrics = \lyricmode {
  \set stanza = "1."
  I _ come from A -- la -- ba -- ma with my ban -- jo on my knee,

    I'm _ going to Loui -- si -- a -- na, my _ true love for to see;

Oh! Su -- san -- na, oh don't you cry for me,
I've _ come from A -- la -- ba -- ma with my ban -- jo on my knee.
}

\score {
  <<
    \new ChordNames { \myChords }
    \new Voice = "mySong" { \myMelody }
    \new Lyrics \lyricsto "mySong" { \myLyrics }
    \new TabStaff { \myChords } %% Check 
  >>
  \midi { }
  \layout { }
}

%% unterdrückt im raw="1"-Modus das DinA4-Format.
\paper {
  indent=0\mm
  %% DinA4 0 210mm - 10mm Rand - 20mm Lochrand = 180mm
  line-width=180\mm
  oddFooterMarkup=##f
  oddHeaderMarkup=##f
  % bookTitleMarkup=##f
  scoreTitleMarkup=##f
}

Kopiere den Code nach Frescobaldi oder nach www.hacklily.org und kommentiere dort die Score-Tags aus!

%<score>
 ...
%</score>

Teste selbst, was die auskommentierten Codeschnipsel bewirken.

Variabeln bzw. Definitionen...

...werden im Code an entsprechender Stelle (ggf. auch mehrfach) eingefügt. Dieses erlaubt eine Trennung von Layout und Inhalt. Ein Layout, eine Begleitung oder eine Stimme kann so einfacher wiederverwendet werden.

Empfehlung
Um die frei wählbaren Variablennamen von den reservierten Lilypond-Namen zu unterscheiden, empfiehlt es sich, die Vorsilbe 'my' (engl.: meine) zu verwenden. Als Namen sollten eindeutige Elemente aus dem Lilypond-Code bevorzugt werden (myChords, myLyrics). Weiterhin bieten sich eindeutige Bezeichnungen aus der Musikliteratur an. (myBass, myDiskant, mySopran...). Darüber hinaus sollte man zugunsten einer internationalen Verwendung unmissverständliche englische Begriffe wählen (mySong, myMelody). Anstelle der Variable global = { ... } aus den Programm Frescobaldi empfehle ich die Variable myKey = { ... }
chordChanges

\set chordChanges = ##t erlaubt eine etwas natürlichere Akkordbegleitung, als wenn man nur jeweils einen Akkord pro Takt (o.ä.) angibt. Wird ein Akkord mehrfach wiederholt (also auch rhythmisch und in verschiedenen Oktavebereichen) so wird er nur einmal geschrieben. Die Notenwerte und Oktavebereiche werden analog zu der Notenschreibweise gesetzt. (Kleinschreibung beachten!) Akkordzusätze werden anschließend hinter dem Doppelpunkt gesetzt (Siehe Schnelleinstieg).

  %% Lagerfeuerschlag
  %% 1 . 2 + . + 4 .
  \partial 4 s4
  g,,4 g,8 4 8 4 % G.

Ändert sich der Oktavebereich einer Note oder eines Akkordes nicht, so reicht es, bei einer unmittelbaren Wiederholung nur den Notenwert als Ziffer anzugeben, was bei einer geschickten Ausnutzung von Copy&Past eine Menge Tipparbeit ersparen kann.

Bei Akkorden funktioniert kein \relative c'. Du musst den Oktavebereich beim Wechsel auf ein Tasteninstrument (oder umgekehrt) manuel bei den Akkorden anpassen. Akkorde werden zwar nur in der Grundstellung gespielt, doch dieses sollte den Ansprüchen eines Wiki-Nutzers genügen.

\myG

Für häufig wiederkehrende Schlagmuster kann es lohnend sein, für jeden Akkord eine Variable anzulegen, die man auch für andere Lieder kopieren kann. Einzelne Akkorde oder Verzierungen kann man ebenfalls in einer Variable anlegen, oder im myCords-Block direkt hineinschreiben.

set Staff.midiInstrument

\set Staff.midiInstrument Die Instrumentierung richtet sich nach dem ursprünglichen Buchprojekt b:Gitarre. Die Singstimme soll hervortreten und sich klar von der Begleitung unterscheiden. Die Begleitung soll etwas dezenter ausfallen, als eine Klavierbegleitung oder auch als eine Akkustikgitarre. Aber probieren ruhig selbst andere Instrumente aus.

new Voice

\new Voice = "mySong" eine neue Stimme muss eindeutig benannt werden, damit man bei mehrstimmigen Arrangements die Lyrics richtig zuordnen kann.

\paper

Ohne den Paper-Block wird jedes Musikbeispiel im Raw-Modus als eine DinA4-Seite (wie ein PDF-Dokument) dargestellt. Die Breite im Paper-Block wurde mit 180cm so gewählt, dass entweder bei einem zentrierten Druck auf DinA4 ein 1,5cm Druckrand entsteht, oder ein Lochrand von 2cm und 1cm auf der gegenüberliegenden Seite, was gängigen Konventionen in der Mediengestaltung (Druck) entspricht. Die Breite kann bei Bedarf angepasst werden. Für den tatsächlichen Druck mag jedoch ein SVG-Export des Quellcodes mittels Frescobaldi vorteilhafter sein.