Autor Thema: große Projekt - die Grenze von Lilypond?  (Gelesen 11342 mal)

kilgore

  • Member
große Projekt - die Grenze von Lilypond?
« am: Dienstag, 30. November 2010, 11:28 »
Liebe Lily's,

Ich wollte mal eine Diskussion starten über große Partituren in Lilypond.  Wie geht ihr damit um?  Tips und Tricks?
Ich bin gerade am Ende der Setzung einer sehr grossen Partitur.  Die hat circa 40 Systemen und geht über mehr als 30 Seiten, insgesamt 42 Einzelstimmen.  Ich habe das Gefühl mit diesem Projekt an die Grenzen von Lilypond zu stossen!

Weil es so gross ist, ist die Zeit die Lilypond braucht zu kompilieren sehr lang.  Deswegen habe ich die Partitur in 4 Blöcke geteilt.  Die Eingabe habe ich noch leichter gemacht in dem ich jede Stimmgruppe ein andere Datei gebe.  Also zB alle Holzbläser sind in einer Datei die Unabhängig bearbeitet werden kann und am Ende in die Partitur integriert.  Jede Stimmgruppe ist dann auch wie die Partitur in 4 Blöcke geteilt.  So gehen Eingabe und Korrekturen relativ schnell. 
Änderungen in der Gesamtpartitur laufen aber sehr langsam.  Ein MetronomeMark verschieben heisst  1-2 Minuten warten bis ich die Änderung sehen kann.  1-2 Minuten ist kein Problem, aber wenn man viel ändern muss ist es Problematisch.

Dazu kommt dann die Einzelstimmen erzeugen.  Erstmal muss für jede Stimme die 4 Blöcke wieder zusammen geklebt sein, und danach individuell eingerichtet sein (es handelt sich um ein zeitgenössisches Partitur mit viele Objekte und Sonderzeichen).


Ich frage mich mit dem ganzen:  Gibt es ein einfachere Lösung?  Eignet sich Lilypond überhaupt für solche grosse Projekte?  Liegt die lange Kompilierung Zeit an meinem Laptop, also wäre es einfacher mit einer Kraftvolle Desktop-Rechner?


Ich bin gespannt, was alle dazu sagen!

Grüße
Kil

ding-dong

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #1 am: Dienstag, 30. November 2010, 13:35 »
lieber Lily-bruder!

Zitat von: kilgore
Ich wollte mal eine Diskussion starten über große Partituren in Lilypond.  Wie geht ihr damit um?  Tips und Tricks?

sicher kennst du das kapitel 3.4.2 Skipping corrected music im NR!?

da ist die rede von showFirstLength und showLastLength, \set Score.skipTypesetting = ##t | ##f

diese optionen sind vor allem bei der eingabe der musik nützlich!

Zitat von: kilgore
Weil es so gross ist, ist die Zeit die Lilypond braucht zu kompilieren sehr lang.  Deswegen habe ich die Partitur in 4 Blöcke geteilt.  Die Eingabe habe ich noch leichter gemacht in dem ich jede Stimmgruppe ein andere Datei gebe.  Also zB alle Holzbläser sind in einer Datei die Unabhängig bearbeitet werden kann und am Ende in die Partitur integriert.  Jede Stimmgruppe ist dann auch wie die Partitur in 4 Blöcke geteilt.  So gehen Eingabe und Korrekturen relativ schnell.

wie meinst du das - sind das blöcke mit jeweils 10 oder 20 takten?

Zitat von: kilgore
Die Eingabe habe ich noch leichter gemacht in dem ich jede Stimmgruppe ein andere Datei gebe.  Also zB alle Holzbläser sind in einer Datei die Unabhängig bearbeitet werden kann und am Ende in die Partitur integriert.  Jede Stimmgruppe ist dann auch wie die Partitur in 4 Blöcke geteilt.  So gehen Eingabe und Korrekturen relativ schnell.

da gehe ich noch weiter: ich verwende für jede stimme (Voice) eine eigene datei!

Zitat von: kilgore
Dazu kommt dann die Einzelstimmen erzeugen.  Erstmal muss für jede Stimme die 4 Blöcke wieder zusammen geklebt sein, und danach individuell eingerichtet sein (es handelt sich um ein zeitgenössisches Partitur mit viele Objekte und Sonderzeichen).

da verstehe ich nicht, was du genau meinst - wenn du die eingabe der stimmen oder stimmgruppen etc. gut strukturiert hast und sich jede stimme (oder block) in einer variablen befindet, ist es doch ein leichtes diese nach belieben zusammenzusetzen. klar kann es da viele mögliche kombinationen geben…

Zitat von: kilgore
… es handelt sich um ein zeitgenössisches Partitur mit viele Objekte und Sonderzeichen
ich nehme an, diese definitionen kann man in eine eigene datei stecken und mit \include "..." zur verfügung stellen?!

falls du lust hast, kannst du dein system (oder die struktur) ins forum stellen, so dass wir vielleicht konkreter darüber sprechen können.

ich glaube es gibt auch schon beiträge oder samples in diesem forum, wie man stücke mit vielen stimmen/instrumenten strukturiern kann (ev. von RobUr? bin mir nicht sicher)


kilgore

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #2 am: Dienstag, 30. November 2010, 14:08 »
Zitat
sicher kennst du das kapitel 3.4.2 Skipping corrected music im NR!?

Oh!  Ist mir irgendwie entgangen...das hilft mir wohl für einiges!

Zitat
wie meinst du das - sind das blöcke mit jeweils 10 oder 20 takten?

Die Blöcke sind jeweils 7-10 Seiten....

Zitat
da verstehe ich nicht, was du genau meinst - wenn du die eingabe der stimmen oder stimmgruppen etc. gut strukturiert hast und sich jede stimme (oder block) in einer variablen befindet, ist es doch ein leichtes diese nach belieben zusammenzusetzen. klar kann es da viele mögliche kombinationen geben…

also, für jeden Block gibt es ein Partitur Struktur (eine Datei), und Jede Stimmgruppe als einzel Datei, also Variabel.  Um die Stimmen zu machen muss ich dann die vier Stimmgruppen-Dateien wieder zusammen basteln damit alle Stimmen vollständig sind.

Die Objekte sind auch als "\include" in jeder Partitur-Struktur.  Die müssen aber zurecht geschoben werden in der Partitur, und dann nochmal in den Einzelstimmen.


Hier die erste Struktur von der Partitur (also Block 1)

\version "2.12.3"

\include "/media/data/dokumente/Lilypond/Nuria/percussion1-7.ly"
\include "/media/data/dokumente/Lilypond/Nuria/woodwinds1-7.ly"
\include "/media/data/dokumente/Lilypond/Nuria/brass1-7.ly"
\include "/media/data/dokumente/Lilypond/Nuria/NuriaSymbols.ly"
\include "/media/data/dokumente/Lilypond/Nuria/HighStrings1-7.ly"
\include "/media/data/dokumente/Lilypond/Nuria/LowStrings1-7.ly"
\include "quartertonearrows.ly"

#(set-default-paper-size "a3")
#(set-global-staff-size 9)




\header {
  dedication = \markup \magnify #2 { \italic "Dedication" }
  title = \markup \magnify #4 { "Title" }
  composer = \markup \magnify #2 { "Composer" \hspace #5 } }
       
        \paper { tagline = ##f
                 line-width = 26\cm
                 bottom-margin = 2\cm
                 ragged-last-bottom = ##f
        }     
       
\layout {
  \context {
    \RemoveEmptyStaffContext
  }
}




<<
  \new StaffGroup <<
    \new Staff { \picc }
    \new Staff 
    { \flutes }
    \new PianoStaff <<
    \new Staff
    { \oboeOneTwo }
    \new Staff 
    { \oboeThree }
  >>
    \new Staff
    { \clarinettes }
    \new Staff 
    { \bassClar }
    \new Staff
    { \faggot }
    \new Staff 
    { \kontraFaggot }
  >>
  \new StaffGroup <<
    \new PianoStaff <<
    \new Staff { \hornOneThree }
    \new Staff 
    { \hornTwoFour }
  >>
  \new PianoStaff <<
    \new Staff
    { \trumpetOneTwo }
    \new Staff \with {
      \override VerticalAxisGroup #'remove-first = ##t }
          { \trumpetTwo }
    \new Staff 
    { \trumpetThree }
  >>
  \new PianoStaff <<
    \new Staff
    { \tromboneOneTwo }
    \new Staff \with {
      \override VerticalAxisGroup #'remove-first = ##t }
          { \tromboneTwo }
    \new Staff
    { \tromboneThree }
  >>
    \new Staff
    { \tuba }
  >>
  \new StaffGroup <<
    \new Staff  { \timpani }
    \new Staff
    { \percOne }
  \new Staff
  { \percTwo }
  \new Staff
  { \percThree }
  \new Staff
  { \percFour }
  \new Staff 
  { \percFive }
>>
\new StaffGroup <<
   \harpOne  >>
\new StaffGroup <<
   \harpTwo  >>
\new StaffGroup <<
  \new Staff { \soloViolinOne }
  \new Staff
  { \soloViolinTwo }
>>
\new StaffGroup  <<
  \new PianoStaff  <<
  \new Staff
  { \violinsOneA }
    \new Staff
    { \violinsOneB }
    \new Staff \with {
      \override VerticalAxisGroup #'remove-first = ##t }
          { \violinsOneC }
        >>
        \new PianoStaff <<
    \new Staff
    { \violinsTwoA }
    \new Staff
    { \violinsTwoB }
    \new Staff \with {
      \override VerticalAxisGroup #'remove-first = ##t }
          { \violinsTwoC }
        >>
        \new PianoStaff <<
  \new Staff
  { \violaOne }
  \new Staff
  { \violaTwo }
>>
\new PianoStaff <<
  \new Staff
  { \celloOne }
  \new Staff
  { \celloTwo }
>>
\new PianoStaff <<
\new Staff
{ \kontrabassOne }
\new Staff
{ \kontrabassTwo }
\new Staff \with {
  \override VerticalAxisGroup #'remove-first = ##t }
          { \kontrabassThree }
        >>
>>
>>





ding-dong

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #3 am: Dienstag, 30. November 2010, 15:59 »
ist doch gut so!

ich würde persönlich noch weiter gehen und die einzelnen instrumentengruppen in variablen zusammenfassen, etwa:

woodwinds =   \new StaffGroup <<
    \new Staff { \picc }
    \new Staff { \flutes }
    \new PianoStaff <<
      \new Staff { \oboeOneTwo }
      \new Staff { \oboeThree }
    >>
    \new Staff { \clarinettes }
    \new Staff { \bassClar }
    \new Staff { \faggot }
    \new Staff { \kontraFaggot }
  >>

dito für die hörner etc.
das erhöht die übersicht nochmals und dein finales score schaut dann etwa so aus:
\score {
  <<
    \woodwinds
    \horns
    \violins
    …
  >>
}

es ist dann auch ein leichtes die partituren für die einzelnen gruppen/instrumente zu erstellen, sei es dass du ein masterfile für jedes instrument und jede instrumentengruppe erstellst oder diese im gesamt-score master auflistet und jeweils nach bedarf auskommentierst (was ich persönlich nicht empfehle).

selbstverständlich ist es sehr wichtig systematisch vorzugehen!


kilgore

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #4 am: Dienstag, 30. November 2010, 16:35 »
Ja für jede Stimmgruppe mache ich auch ein partitur für die Bearbeitung, die ich dann auskommentiere wenn ich die Gesamtpartitur durch die schleife gehen lasse.  Funktioniert eigentlich ganz gut.

Nächstes mal werde ich auf jeden Fall einzelne Dateien für jedes Instrument erstmal erstellen.  Ist aber in dieser Partitur nicht so leicht getan.  Wegen platzmangel sind zB die beiden Flöten auf einer System.  Für die Stimmen muss ich das aber manuell auseinander ziehen, weil beide Flöten Einzelstimmen brauchen. 

Das mit dem showFirstLength wird mir auf jeden Fall auch zukünftig weiterhelfen.

himatt

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #5 am: Dienstag, 30. November 2010, 19:19 »
Lieber Kil,
ich sitze auch grad an einer großen, langen Partitur: Weihnachten für Schulorchester mit allen Instrumenten, die Schüler so mitbringen :D
Da habe ich natürlich das gleiche Problem - langes Kompilieren ...
Ich habe schon mit verschiedenen Varianten aus NR 3.4.1bzw.2 experimentiert. Bin noch nicht so recht zu einem ordentlichen Ergebnis gekommen, aber das liegt wohl noch an meinem Handling damit ...

Ich arbeite im score für die Partitur auch nach dem Muster von ding-dong:
Zitat
\score {
  <<
    \woodwinds
    \horns
    \violins
    …
  >>
}
Hat eben genau für die Stimmenauszüge große Vorteile.
Die Musik selber habe ich in separaten Dateien, die Variablen wie hier z.B.  \woodwinds allerdings auch in der Ausgabedatei. Sollte ich vllcht auch noch auslagern. Wirds dadurch aber wirklich schneller? eher vllcht. übersichtlicher ...
Ich habe meine ausgelagerten Musikdateien nach Abschnitten in der Partitur getrennt, (macht sich in diesem meinen Fall eh günstig, da es ein Medley ist ...), also alle Instrumente in einer Datei, jedoch jeweils nicht endlos lang. Ich denke aber, es ist besser als jedes Instrument separat auszulagern. Hm ... kommt drauf an in welcher Reihenfolge man arbeitet ... abschnittsweise oder immer ein weiteres Instrument dazubasteln ... Ich muss aber beim Schreiben immer mal schnell in die andere Stimme wenns nicht passt oder eine neue Idee kommt ;) - beim reinen Abschreiben mag deine Variante besser sein ...
Die Stimmenauszüge habe ich dann in der selben Datei wie die Gesamtpartitur als neue bookparts, da reicht dann eben \woodwinds im score wenn vorher alles fein definiert ist ... macht das Kompilieren aber eben noch länger und soll mich zwingen mit diesen clip-regions besser arbeiten zu können. Allein wegen dieser Möglichkeit kann Lilypond gerade in solch großen Partituren erst recht Sinn machen denke ich.

Viele Grüße

Matthias


fugenkomponist

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #6 am: Mittwoch, 1. Dezember 2010, 15:47 »
Wegen platzmangel sind zB die beiden Flöten auf einer System.  Für die Stimmen muss ich das aber manuell auseinander ziehen, weil beide Flöten Einzelstimmen brauchen.
Könnte dir da nicht \partcombine helfen? Dann musst du nur die Einzelstimmen schreiben und kannst die für die Partitur automatisch in ein System schreiben lassen.

kilgore

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #7 am: Mittwoch, 1. Dezember 2010, 22:45 »
oh....!  Sowas wäre natürlich sinnvoll!  Wo ist es dokumentiert???

ding-dong

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #8 am: Donnerstag, 2. Dezember 2010, 00:07 »
im NR?

himatt

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #9 am: Donnerstag, 2. Dezember 2010, 01:04 »
in NR1.5.2
m.

kilgore

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #10 am: Donnerstag, 2. Dezember 2010, 08:45 »
oh!  Mein NR muss alt sein...dort ist es nicht gut dokumentiert...aber in LSR doch.

Ich wünsche mir, ich hätte diesen thread vor 3 monate angefangen!!

RobUr

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #11 am: Freitag, 10. Dezember 2010, 02:25 »
Hallo alle,

ein kleiner Beitrag dazu auch von mir:
Viele tolle Sachen sind erwähnt worden, und allen voran ist \partcombine ein prima Tool.

Die Frage nach der Performance ist natürlich system- und partiturabhängig. Einerseits ist es pure Rechenleistung (mehr Input muss länger gerechnet werden), andererseits hängt es sehr von den eingesetzten Spezialitäten ab: jeder Tweak und jede grafische Finesse bedeutet ein Mehr an Rechenaufwand. Man vergleiche den (Rechen-)Zeitaufwand für eine Standardpartitur und die gleiche Partitur mit verschobener Dynamik – das dauert auch bei 4 Seiten Output schon merklich länger.

Das Auslagern dient auch nur der persönlichen Organisation; Input/Verarbeitung bleibt rechnerisch gleich.
Ich persönlich notiere einander zugehörige Stimmen/Instrumente in eigenen Dateien, und zwar immer Musik. Das eigentliche Aussehen bzw. Aufbau der Partitur erfolgt dann in der zentralen „Steuerdatei“, in der ich die Gesamtpartitur, Einzelstimmen oder andere Auszüge definiere, um in einem Rutsch alles zu erhalten, u.a. auch Einzeldateien, die sogar separat bezeichnet werden können, z.B. #(define output-suffix "Orgel")

Wie gesagt, die Detailtiefe des „Auslagerns“ obliegt jedem selbst, das muss man für sich selbst herausfinden. Beispiele und Herangehensweisen gibt es genug hier im Forum.

Beste Grüße, Robert

trulli

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #12 am: Freitag, 10. Dezember 2010, 12:45 »
Klasse Leute,

ich setze mit meinen maximal 15 Seiten ja nur "kleine" Partituren.  ::)

Aber ich habe hier mal wieder etwas gelernt, von dem ich überhaupt nicht wusste, dass es existiert. Und gebrauchen kann ich es auch (showLastLength = R1*2).

Vielen Dank und frohe Weihnachten von Mat

kilgore

  • Member
Re:große Projekt - die Grenze von Lilypond?
« Antwort #13 am: Samstag, 11. Dezember 2010, 08:47 »
Ja also meine Partitur hatte viele verschobene Objekte, und viele selbstgebaute PostScript Objekte, und natürlich die 42 Systeme auf fast jede Seite.  Das dürfte wohl bei alle Programme langsam laufen!   \partCombine werde ich zukünftig viel mehr nutzen!   Schon gute Tipps hier, danke!

Pondus

  • Member
Re: große Projekt - die Grenze von Lilypond?
« Antwort #14 am: Freitag, 1. August 2014, 09:48 »
Hallo zusammen!

Gerne würde ich mich mit meiner Frage in dieses Thema einklinken. (Wenn es sinnvoll ist, einen neuen Thread zu eröffnen, mache ich das gerne.)

Ich habe eine große Partitur und für jedes Instrument einen Stimmensatz erstellt. All diesen Dateien gehen individuelle Titelseite und ein Inhaltsverzeichnis voraus.

Da das Werk aus mehreren Sätzen besteht, existieren zahlreiche Dateien, z. B. 02-fagott.ly für den 2. Satz, Fagottstimme.

Die Dateiorganisation ist sehr flüssig und logisch. Es kommt mir aber so vor, dass ich bei den zahlreichen Bookparts zu umständlich vorgehe: Für jeden Satz und jede Stimme habe ich einen Code in etwa wie

\bookpart {
  \tocItem \markup \concat { \TitelSatzZwei }
  \score {
    \new StaffGroup <<
      \set StaffGroup.instrumentName = \markup{ \fontsize #6 {"2. "} }
      \new Staff {\include "02-fagott.ly"}
    >> 
    \header {
      title = \markup \medium \TitelSatzZwei
    }
  }
}

Großartig wäre es, wenn man diesen Code mittels „while-Schleifen“, Zählern usw. fast automatisieren könnte.

Habt Ihr besser oder weitere Ideen zur Vereinfachung?

Vielen Dank!
Pondus