Lead Sheets für verschiedene Instrumente

Begonnen von hurrlipurr, Sonntag, 9. Dezember 2018, 08:59

« vorheriges - nächstes »

hurrlipurr

Guten Morgen,

ich erstelle gerade ein paar Lead Sheets und benötige die Ausgabe jeweils für C, Bb und Eb (normal und transponiert für Tenor- und Altsaxophon). Zur Zeit mache ich das jeweils mit transpose-commands im Quelltext, das ist aber relativ aufwändig. Gibt es da eine elegante Methode, jeweils in einem Durchgang drei PDF Dokumente  zu erzeugen?

VG Oliver

Malte

Ja, das geht. Hast du ein Minimalbeispiel? Ansonsten kann das ungefähr so aussehen:

akkorde = \chordmode { ... }
melodie = \relative { ... }
text = \lyricmode { ... }

sheet = <<
  \new ChordNames \akkorde
  \new Staff \melodie \addlyrics \text
>>

\header { ... }

\layout { ... }

\book { \bookOutputSuffix "C" \sheet }
\book { \bookOutputSuffix "B" \transpose c bes, \sheet }
\book { \bookOutputSuffix "Es" \transpose c es \sheet }

hurrlipurr

#2
Ok, das werde ich gleich mal ausprobieren.

Es funktioniert! :-) Allerdings muss man in die andere Richtung transponieren, also z.B.  c->d für die Bb-Notation.

Ideal wäre noch, wenn die PDF-Files in verschiedene Unterverzeichnisse geschrieben würden. (Das kann ich aber auch per Skript erledigen.)

Vielen Dank!

Malte

Stimmt, die Transposition hab ich falsch rum gedacht, hab den Code ohne Probieren hingeschrieben ;) Im Zweifelsfall würde ich dann aber statt
\transpose c d
lieber
\transpose bes, c
schreiben, das find ich in diesem Fall leserlicher.

Wegen der Verzeichnisse: Du könntest probieren, statt \bookOutputSuffix \bookOutputName zu verwenden und sowas wie
\bookOutputName "Es/Autumn_leaves_Es"
zu schreiben. Hab ich aber ebenfalls nicht getestet. Alternativ ist das Verschieben ins entsprechende Verzeichnis im Terminal (Linux/Mac OS) leicht gemacht:
mv *-Es.pdf Es/
Das schiebt alle Dateien, die auf -Es.pdf enden, in das Verzeichnis Es (welches existieren muß). Ähnliches sollte auch mit Windows möglich sein, da kenn ich die Syntax nicht.

hurrlipurr

Hallo Malte,

die erste Lösung hat den Nachteil, dass jedesmal der Filename explizit angegeben werden muss - und noch schlimmer man ggf. auch mal eine frühere Datei versehentlich überschreibt, wenn man es nicht anpasst.

Ich habe in einem anderen Forum noch folgende Lösung gefunden:

\book { \bookOutputName $(string-append "C/" (ly:parser-output-name)) \bookOutputSuffix "C" \sheet }


Da ich aber mit Linux und vim arbeite, gefällt mir dein zweiter Vorschlag besser, da ich den dann gleich mit einer passenden Tastenkombination in der .vimrc eintragen kann.

hurrlipurr

Zusatzaufgabe!  ;D

Ich brauche jetzt auch noch die Sheets für Posaune im Bass-Schlüssel.

Fällt euch dazu auch eine elegante Lösung ein, den Workflow zu erweitern?

VG Oliver

Malte

Zwei Ideen:

sheet = <<
  \new ChordNames \akkorde
  \new Staff \melodie \addlyrics \text
>>

sheetPos = <<
  \new ChordNames \akkorde
  \new Staff { \clef bass \melodie } \addlyrics \text
>>

\book { \bookOutputSuffix "C" \sheet }
\book { \bookOutputSuffix "B" \transpose c bes, \sheet }
\book { \bookOutputSuffix "Es" \transpose c es \sheet }
\book { \bookOutputSuffix "Pos" \sheet \sheetPos }


melodie = \relative { \tag pos \clef bass ... }

\book { \bookOutputSuffix "C" \removeWithTag pos \sheet }
\book { \bookOutputSuffix "B" \removeWithTag pos \transpose c bes, \sheet }
\book { \bookOutputSuffix "Es" \removeWithTag pos \transpose c es \sheet }
\book { \bookOutputSuffix "Pos" \keepWithTag pos \sheet }

Vielleicht gibts noch ne einfachere Möglichkeit, die ähnlich den Tags funktioniert, aber ohne ein explizites \removeWithTag auskommt, das müßte ich aber zu Hause mal ausprobieren ...

hurrlipurr

Danke, Malte.

Mir ist noch ein Problem aufgefallen: ich schreibe z.T. die Texte unter die Leadsheets, aber so wie ich es mache, klappt das nicht mit den \book commands, es wird ein separates Sheet ausgegeben.


sheet = {
      <<
          ...
      >>

\markup {
  \fill-line {
    \hspace #1
    \column {
      \line{Beautiful love, you're all a mystery}
       ....
    }
    \hspace #2
    \column {
        .....
    }
    \hspace #1
  }
}
}
\book { \bookOutputName $(string-append "PDF/" (ly:parser-output-name)) \bookOutputSuffix "C" \sheet }

harm6

ZitatMir ist noch ein Problem aufgefallen: ich schreibe z.T. die Texte unter die Leadsheets, aber so wie ich es mache, klappt das nicht mit den \book commands, es wird ein separates Sheet ausgegeben.

Natürlich. Falls explizite \book-commands da sind und anderer toplevel Stoff, so werden mehrere books ausgegeben.
Eins für jedes \book und eins für den sonstigen toplevel-Stoff.

Pack das markup ins book bei dem Du's haben willst.

Gruß,
  Harm


hurrlipurr

Ups, wenn man vor lauter Bäumen den Wald nicht mehr sieht.  :-[