Deutsches Lilypond Forum (Archiv)
Allgemein => Allgemeine Diskussion => Thema gestartet von: kilgore 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
-
lieber Lily-bruder!
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!
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?
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!
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…
… 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)
-
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!
wie meinst du das - sind das blöcke mit jeweils 10 oder 20 takten?
Die Blöcke sind jeweils 7-10 Seiten....
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 }
>>
>>
>>
-
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!
-
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.
-
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:
\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
-
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.
-
oh....! Sowas wäre natürlich sinnvoll! Wo ist es dokumentiert???
-
im NR?
-
in NR1.5.2 (http://lilypond.org/doc/v2.13/Documentation/notation-big-page.de.html#automatic-part-combining)
m.
-
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!!
-
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
-
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 (http://www.smileygarden.de/smilie/Weihnachten/x36.gif)
-
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!
-
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
-
Hallo,
ich arbeite (seit längerem, mit Unterbrechungen) an einer Sammlung von Salonorchster-Musik: 24 Sätze, 19 Stimmen.
Für jede Einzelstimme (auch Transponiervarianten) habe ich eine eigene LY-Datei. Einen Großteil dieser LY-Dateien erstelle ich mittlerweile mit einem Scheme-Programm. Allerdings möchte ich nicht verheimlichen, daß der Aufwand für die Erstellung und Pflege dieser Routine nicht unerheblich ist. Andererseits waren die Unterschiede zu groß, um es mit einer Tabellenkalkulation und anschließendem »copy and paste« zu erledigen.
Am längsten dauert naturgemäß die Übersetzung der Partitur. Mit einem selbstgeschriebenen Programm überprüfe ich jedesmal die Datei-Uhrzeiten (einschließlich der Inlucde-Dateien aus dem gleichen Verzeichnis) mit dem Ergebnis-PDF, ob ich eine einzelne Übersetzung überspringen kann. Und dank genügend RAM im Rechner lasse ich bis zu acht Lilypond-Prozesse parallel laufen.
Arnold
-
Hallo Pondus
habe schnell etwas gebastelt. Kannst du es brauchen?
Zum starten:
java -jar LilyBook.jarIch habe es nicht wirklich getestet, es sollte aber laufen.
Man kann noch mehr automatisieren. Z.B. dass du nicht die Namen der Instrumenten tippen musst, sondern dass das Programm alle Files in einem Ordner liest, oder so.
Die Backslash und die Endungen .ly werden automatisch hinzugefügt.
Ich hoffe, du kannst es brauchen.
Einen lieben Gruss
Eugenio
Edit: Attachement geändert. Es gab einen kleinen Fehler. Den Zeildatei wurde nicht überschrieben.
-
...oder das?
Der erster Teil ist auf der Konsole (ich hatte keine Zeit jetzt Grafik zu programmieren).
Bei der Frage nach Instrument musst du schreiben z.B. fagott, und er generiert 1-fagott.ly 2-fagott.ly usw.
Probier es mal
Ciao
Eugenio
Ps: java -jar LilyBook2.jar
-
Wow! Vielen Dank, Arnold und Eugenio,
mit Terminal, einigen Programmiersprachen usw. kenne ich mich ganz gut aus. Deshalb hoffe ich, dass ich mit den JAR-Dateien zurecht komme. Auf die Schnelle habe ich das Prinzip noch nicht durchschaut, werde mich aber intensiv damit auseinandersetzen.
Viele Grüße
Pondus
-
Hallo Pondus
wenn du mir die genaue Struktur von deiner Directory beschreibst, kann ich schauen, dass es ganz automatisch läuft. :)
Einen schönen Abend und einen Gruss
Eugenio