Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: donblech am Dienstag, 20. April 2010, 14:42
-
Hallo an alle,
ich möchte ein Bigband-Arrangement mit einem Titelblatt versehen. Es gibt dazu schon einen anderen Thread mit dem ich allerdings Probleme habe. Woran es jetzt im Einzelnen liegt kann ich nicht sagen, jedenfalls gibt es massenhaft Fehlermeldungen, wenn ich das dortige Titelblatt nachbaue.
Könnte es vielleicht mit der Verwendung von \relative zu tun haben?
Und wenn ja, wie kriegt man das in den Griff??
Ich hab mal eine Datei angehängt, vielleicht kann ja jemand was damit anfangen.
Vielen Dank schon mal für Eure Mühe und schönen Tag noch,
der Don
-
welche version hast du?
wenn du eine neuere als die dort angegebene verwendest, solltest du mal convert-ly probieren!
-
Hallo DingDong,
.....verdammt, irgendwas vergess ich doch immer.
Version 2.12.2 ist es natürlich.
Schönen Gruß,
der Don
-
Hallo Don,
ich habe mal konvertiert (du hattest eine Vorlage in 2.8.1).
Läuft es jetzt ohne Fehler?
Grüße von Mat
-
du hattest eine Vorlage in 2.8.1
Nein, es ist fälschlicherweise von NoteEdit (in der aktuellen Version 2.8.1!) eingefügt. Die .ly-Datei ist auch vorher schon ohne Fehler, aber mit Warnungen, kompiliert worden. Die Warnungen bezogen sich auf die fehlerhafte Definition der Instrumentennamen, z.B. \set Staff.instrument = #"Alt-Sax 1" statt \set Staff.instrumentName = #"Alt-Sax 1". Das muss von NoteEdit stammen. Durch die Konvertierung sind die Instrumentennamen jetzt doppelt definiert, wobei die zuletzt gemachte Angabe Vorrang hat. Don schrieb ja, dass er LP 2.12.2 verwendet.
Ebenso von NoteEdit dürfte die redundante \relative-Angabe im \score-Block stammen (alle Noten sind bereits vorher in \relative-Blöcken definiert). Allerdings sollte dies einem Titelblatt nicht im Wege stehen! Der grundsätzliche Aufbau ist ja:
\markup { Titelblatt }
\score { Musik }
Am übersichtlichsten ist natürlich die Aufteilung in Buch und Buchblöcke:
\book {
\bookpart {
\markup { Titelblatt }
}
\bookpart {
\score { Musik }
}
}
Welches „dortige“ Titelblatt ist denn eigentlich gemeint? In der Regel sind es funktionierende Snippets! Vielleicht gibt es ein Problem mit dem Querformat (landscape)? Ansonsten muss der Titelblattblock bloß – wie alles andere auch – an der richtigen Stelle eingefügt werden. Am besten postest du deine Datei inklusive des Titelblattversuchs. Im weiteren Verlauf muss aber sichergestellt sein, dass NoteEdit den Code nicht wieder umschmeißt ;) Ich finde es ohnehin heikel, einen mittlerweile 4 Jahre alten Editor (Release v2.8.1: 27. März 2006!) für Lily zu bemühen. In der Zwischenzeit hat sich sehr vieles getan. Woher nur soll NoteEdit die aktuelle Lily-Syntax kennen? Wenn es unbedingt ein grafischer Editor sein soll, würde ich zum Nachfolgeprojekt Canorus (http://canorus.berlios.de/) raten.
Viele Grüße, Robert
-
Hallo nochmal,
nach einigem Rumprobieren siehts jetzt schon mal etwas besser aus, allerdings ist der Titel incl. Komponist von Seite 2 auf das Titelblatt gerutscht. Wenn das gelöst wäre, wäre ich glücklich. Datei ist angehängt.
Zu NoteEdit:
Ich hab mich an das Programm ziemlich gewöhnt, da ich damit schnell und unkompliziert arbeiten kann, und ich brauche es auch zum Probehören. Ausser besagten Warnungen macht es auch sonst keine Zicken.
Canorus hab ich auch installiert, habe aber bis jetzt noch nicht viel mehr als eine weiße Fläche hingekriegt. Warscheinlich brauchts da wohl eine Einarbeitungsphase zu der ich bis jetzt noch keine Zeit gefunden habe.
-
hallo
das wurde von RobUr schon erklärt.
alternativ geht auch
\markup { \fontsize #9 \bold "das titelblatt" }
\bookpart {
\score {}
\header {}
}
hdh
-
Hallo,
ich bins leider nochmal.
Jetzt müsste ich nur noch wissen, ob das ganze Partitur-Layout, also die Staff-Groups in den \book oder \bookpart -Bereich gehören, ebenso \paper, und wo genau muss der \book-Bereich wieder geschlossen werden.
Ich weiss dass das langsam etwas nervig wird, tut mir auch echt leid, aber vielleicht könnte jemand die angehängte Datei kurz umstellen, danach hab ichs dann auch bestimmt kapiert.
Schönen Abend noch,
der Don
-
leider kompiliert dein code bei mir immer nur mit fehlern - du müsstest wirklich auf eine neuere version umsteigen und die wörter "instrument" in shortInstrumentName umwandeln oder auskommentieren!
bei der struktur, die das titelblatt einzeln darstellt, hat RobUr den weg gewiesen - sein beispiel ist kurz + übersichtlich!
man könnte höchstens noch die position der \header {} einfügen.
das \paper {} kannst du ausserhalb jeglichen contexts oder eben auch innerhalb eines books oder bookparts platzieren - es hat dann auch nur innerhalb des jeweiligen contexts - oder global -wirkung!
tip: mach dir ein kleines beispiel mit einem oder zwei bookparts und scores und nur einem staff oder voice! bei den noten hast du ja diese prinzip - vorbildlich - angewendet!
natürlich gibt es noch die einschlägige literatur - achtung auf die version, es hat sich einiges geändert (seit 2.8...)
übrigens: mach dir nichts draus, wenn du mal die übersicht verlierst - lilypond bietet sehr viel für viele ansprüche und gerade deshalb ist es nicht immer einfach den einfachsten + besten ( + richtigsten) weg zu finden!
wieterhin viel erfolg + spass! [und mach dir nichts draus wenn du einmal zu viel fragst…]
-
Hallo Don!
Ich weiss dass das langsam etwas nervig wird, tut mir auch echt leid, aber vielleicht könnte jemand die angehängte Datei kurz umstellen, danach hab ichs dann auch bestimmt kapiert.
Schon in Ordnung … Ich gebe mir immer Mühe, die Logik hinter Lily verständlich zu machen. Je nach Problem kann es unterschiedlich lange dauern, bis man das Grundsätzliche verstanden hat. Aber wenn dann das Prinzip klar ist, dürfte sich das Brett vorm Kopf von allein verabschieden ;)
Ein entscheidender Grundsatz für dein Titelblatt-Problem ist die klare Trennung von Markup und Musik sowie die Unterteilung des Dokuments in buchähnliche Abschnitte. Ein Roman ist ja auch in mehrere Kapitel unterteilt. Dieses Prinzip greift Lily mit der book-bookpart-Möglichkeit auf, die an sich sehr einleuchtend ist, aber ich erkläre es gleich nochmal mit einigen Ergänzungen, da ich vermute, dass du organisatorisch mit verschiedenen Variablen und \score-Definitionen durcheinander kommst. (Ganz nebenbei hat mich das ebenfalls viele Stunden des Ausprobierens und Grübelns gekostet, aber es ist unerlässlich, wenn man mit umfangreichen Partituren arbeitet. Häufig hilft wiederholtes Lesen der entsprechenden NR-Kapitel und weniger wildes Code-kopieren. In der NR [engl. Originaldokument] habe ich bisher nichts falsches, höchstens schwierig formuliertes oder lückenhaftes gefunden.)
OKAY – wie funktioniert das nun mit diesem buchähnlichen Aufbau, und wohin kommen welche Variablen und Blöcke?
Als Beispiel soll eine komplette Notenausgabe incl. Titelei und zwei verschiedenen Klavierstücken dienen. Ein Inhaltsverzeichnis lasse ich vorerst bewusst weg. Da es um die Struktur geht, fehlen auch Noten etc.
-- Dateianfang --
\version "2.12.3" % Lily-Version
#(set-global-staff-size 20) % Die Zeilengröße für das Dokument angeben.
#(set-default-paper-size "a4") % Papierformat und -ausrichtung für das Dokument angeben.
% Jetzt Variablen definieren, die im gesamten Dokument verwendet werden sollen.
myTitle = "Zwei Etüden"
mySubtitle = "für das Pianoforte zu drei Händen"
myDedication = "Meiner Klavierlehrerin in tiefster Abneigung gewidmet."
myComposer = "Ano Nymus"
% Hier können auch schon die Variablen mit den Noten kommen;
% alternativ in Dateien auslagern und an dieser Stelle per \include einbinden.
EtuedeEinsGlobal = { Tonart, Takt, Taktstriche, Umbrüche etc. für erstes Stück }
EtuedeEinsNotenRH = { Noten für die rechte Hand bzw. obere Zeile des ersten Stücks }
EtuedeEinsNotenLH = { Noten für die linke Hand bzw. untere Zeile des ersten Stücks }
EtuedeZweiGlobal = { Tonart, Takt, Taktstriche, Umbrüche etc. für zweites Stück }
EtuedeZweiNotenRH = { Noten für die rechte Hand bzw. obere Zeile des zweiten Stücks }
EtuedeZweiNotenLH = { Noten für die linke Hand bzw. untere Zeile des zweiten Stücks }
% JETZT NEHMEN WIR DAS BUCH AUS DEM REGAL:
\book {
% Welche gemeinsamen Seiteneinstellungen hat das BUCH?
% (Format, Ausrichtung und staff size sind schon auf oberster Ebene definiert.)
\paper {
left-margin = 2\cm
line-width = 17\cm
ragged-last-bottom = ##f
first-page-number = #-1 % Titelblatt = -1, dann [leere] Rückseite = 0, dann erst Seite "1"
% optional globales even[/odd]Header[/Footer]Markup
% falls Fonts umdefiniert werden: hier! (myStaffSize = ... #(define fonts ...) etc.)
}
% Welche gemeinsamen Header-Optionen sollen für das BUCH gelten?
\header {
tagline = ##f
breakbefore = ##t % Titel auf einer neuen Seite beginnen
}
% JETZT BETRACHTEN WIR DIE VORDERSEITE DES BUCHES (1. BUCHTEIL: Titelblatt):
\bookpart {
\markup \abs-fontsize #20 \fill-line {
\center-column {
\myComposer
\myTitle
\mySubtitle
}
}
% abweichende Seiteneinstellungen für diesen bookpart:
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% JETZT SCHLAGEN WIR DAS BUCH AUF (2. BUCHTEIL: [leere] Titelblattrückseite):
\bookpart {
\markup { \null } % leeres Markup, sonst keine Ausgabe; kann stattdessen auch Herausgeberhinweise, Vorwort u.ä. enthalten
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% JETZT ENDLICH KOMMT DAS ERSTE MUSIKSTÜCK (3. BUCHTEIL: Etüde I):
\bookpart {
\paper {
% abweichende Seiteneinstellungen für aktuellen bookpart
}
\header { % Kopfdaten für aktuellen \bookpart-Block
dedication = \myDedication
title = "Etüde I"
subtitle = \markup { "aus" \myTitle \mySubtitle }
composer = \myComposer
}
\score { % Partiturdefinition
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeEinsGlobal \EtuedeEinsNotenRH >>
\context Staff = "linke Hand" << \EtuedeEinsGlobal \EtuedeEinsNotenLH >>
>>
\layout { % Notenlayout für aktuellen \score-Block; erzeugt Notenausgabe
indent = #0
}
}
}
% JETZT KOMMT NOCH DAS ZWEITE MUSIKSTÜCK (4. BUCHTEIL: Etüde II):
\bookpart {
\paper {
% abweichende Seiteneinstellungen für aktuellen bookpart
}
\header { % Kopfdaten für aktuellen \bookpart-Block
dedication = \myDedication
title = "Etüde II"
subtitle = \markup { "aus" \myTitle \mySubtitle }
composer = \myComposer
}
\score { % Partiturdefinition
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeZweiGlobal \EtuedeZweiNotenRH >>
\context Staff = "linke Hand" << \EtuedeZweiGlobal \EtuedeZweiNotenLH >>
>>
\layout { % Notenlayout für aktuellen \score-Block; erzeugt Notenausgabe
indent = #0
}
}
}
% MITTLERWEILE HABEN WIR (angenommen) 6 SEITEN UND BRAUCHEN NOCH 2 FÜR EINE 8-SEITEN-BROSCHÜRE (letzter BUCHTEIL: Blindseiten):
\bookpart {
\markup { \null } \pageBreak \markup { \null } % leeres Markup, sonst keine Ausgabe
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% MIDI-AUSGABE FEHLT NOCH!
% (benötigt keinen eigenen \bookpart, sollte aber innerhalb von \book stehen)
% 2 \score-Blöcke für je 1 MIDI-Datei pro Stück
\score { % definiert MIDI-Partitur #1
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeEinsGlobal \unfoldRepeats \EtuedeEinsNotenRH >>
\context Staff = "linke Hand" << \EtuedeEinsGlobal \unfoldRepeats \EtuedeEinsNotenLH >>
>>
\midi { } % erzeugt MIDI-Datei #1
}
\score { % definiert MIDI-Partitur #2
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeZweiGlobal \unfoldRepeats \EtuedeZweiNotenRH >>
\context Staff = "linke Hand" << \EtuedeZweiGlobal \unfoldRepeats \EtuedeZweiNotenLH >>
>>
\midi { } % erzeugt MIDI-Datei #2
}
}
-- Dateiende --
So – nach diesem Schema baue ich meine Notenausgaben. Ich fahre damit ganz prima, zumal es auf meine Ansprüche maßgeschneidert ist. Die Struktur ist beliebig erweiterbar und kennt kaum Grenzen. Man muss nur den Überblick behalten, aufmerksam die Logausgabe beobachten und Ruhe bewahren, wenn Fehler auftreten, die erfahrungsgemäß fast immer auf falsche bzw. unvollständige Klammerung (seltener Fehlposition bestimmter Blöcke) zurückzuführen sind! Eine umfangreiche Partitur ist nunmal ein großes Unterfangen – wo gehobelt wird, fallen Späne. Experimentieren erwünscht!
Ein Titelblatt ist also nichts weiter als ein separater \bookpart, der den anderen vorangestellt wird und lediglich \markup statt Noten enthält. Im Prinzip enthält die Datei jede Menge Noten (in eigenen Variablen), aber diese werden erst ganz woanders in den \score-Blöcken abgerufen/aktiviert und durch \layout innerhalb des \score-Blocks grafisch ausgegeben. Dieser wichtige Unterschied ist deutlich am Ende des Beispiels erkennbar, wenn zwar \score-Blöcke definiert, aber statt durch \layout mittels \midi verarbeitet werden!
Zwingend notwendig ist jedenfalls, dass wenn man schon mit \bookpart arbeitet, alles mit \book umschlossen werden und die Struktur von vorn bis hinten stimmen muss; selbst „Die unendliche Geschichte“ klappen wir irgendwann zu – und das Buch ist „abgeschlossen“: \book {}!
Würde es verwirren, wenn ich jetzt hinzufügte, man könne auch mehrere \book(s) in einer Datei definieren? :D Kein Scherz, sondern sogar äußerst praktisch, da jeder weitere \book-Block auch eine weitere, separate Datei erzeugt! Im vorliegenden Beispiel, das eine „Gesamtausgabe“ erzeugt, könnte man noch einen \book-Block nur mit der ersten Etüde und einen weiteren nur mit der zweiten Etüde anlegen, dann erhielte man mit einem einzigen Lily-Durchlauf 3 PDFs: Gesamtausgabe, Etüde I, Etüde II :)
Als Anhang gibt’s noch deine überarbeitete Datei. Ein paar Tipps: Wenn du schon compers „Vorschub“-Funktion einbindest, benutze sie doch auch! Dann hat das ewige „ge\nulle“ ein Ende … Ein weiterer wäre der oft gesehene exzessive Einsatz von \fill-line, um jede Zeile einzeln zu zentrieren: das geht doch prima mit \center-column { "Zeile 1" "Zeile 2" ... }! Um die Spalte mit zentriertem Inhalt zentriert auszurichten, nimmt man \fill-line { \center-column { ... } } – spart ’nen Haufen Tippen. Was uns NoteEdit aber in jedem Fall antut, sind dessen maschinell vergebene Bezeichner: \context Staff = cTrumpetXEIA liest sich doch wesentlich schlechter als \context Staff = "Trumpet 4". Dass dieser Editor die Contexte explizit bis hinunter zum Voice-Context anlegt, kann man ihm ja verzeihen (Lily legt diese im Hintergrund selbst an). Es ist nur sehr unübersichtlich dadurch.
achtung auf die version, es hat sich einiges geändert (seit 2.8...)
Es ist ja eben nicht Lily 2.8.1, sondern NoteEdit 2.8.1. Der Code läuft gut durch – bis auf die Warnungen wegen der fehlerhaften instrument[Name]-Definitionen: die müssen natürlich korrigiert werden! Ich habe das in der angehängten Datei getan. Jetzt würde mich interessieren, ob NoteEdit das wieder rückgängig machen würde. Don: bitte Feedback nach Probelauf!
Ansonsten hoffe ich, dass jetzt vieles klar(er) ist und die beigefügte Datei als gute Vorlage dienen kann.
Beste Grüße, Robert
-
super - danke für diese klare, detaillerte darstellung :) - sollte doch in den snippets aufgenommen werden!
meines wissens ist das lilypond manual nicht so übersichtlich
-
Klasse Aufstellung, Rob! (http://www.smileygarden.de/smilie/Lachend/50.gif) (http://www.smileygarden.de)
Gruß von Mat
-
Hallo liebe Gemeinde,
die Datei funktioniert, auch wenn sie mit einer höheren Version gemacht wurde, was zu einer Fehlermeldung führt (return-code 1).
Mittlerweile habe ich es auch geschafft eine andere Datei entsprechend umzubauen. Jetzt würde mich nur noch interessieren ob es möglich ist den Copyright-Hinweis auf der 1. Seite (nach dem Titelblatt) zu wiederholen, weiss das jemand??
Nochmal zu NoteEdit: wenn ich die Noten gesetzt habe hat NoteEdit seine Schuldigkeit getan und ich arbeite mit lily weiter. Ich brauche das nur zur akustischen Kontrolle. NoteEdit kann lily-Dateien auch nur erzeugen, aber nicht einlesen.
Schönen Tag noch,
der Don
-
Hallo Don,
die Datei funktioniert, auch wenn sie mit einer höheren Version gemacht wurde, was zu einer Fehlermeldung führt (return-code 1).
Dann ändere einfach die Versionsnummer in "2.12.2", wenn es deiner installierten Version entspricht.
Jetzt würde mich nur noch interessieren ob es möglich ist den Copyright-Hinweis auf der 1. Seite (nach dem Titelblatt) zu wiederholen, weiss das jemand??
Ich weiß es … und ja, es ist möglich ;) Soll ich auch noch verraten? Dafür gibt es die Abfrage #part-first-page. Du könntest also das Footer-Markup im \paper-Block des \bookpart mit den Noten folgendermaßen ändern/ergänzen:
oddFooterMarkup = \markup {
\on-the-fly #part-first-page
\fill-line { \myCopyright }
\on-the-fly #not-part-first-page
\fill-line { \fromproperty #'page:page-number-string }
}
Um #not-part-first-page verwenden zu können, muss dies vorher definiert werden:
#(define (not-part-first-page layout props arg)
(if (= (chain-assoc-get 'page:page-number props -1)
(ly:output-def-lookup layout 'first-page-number))
empty-stencil
(interpret-markup layout props arg)))
Bleibt noch zu erwähnen, dass bei fehlendem evenFooterMarkup die Definition aus oddFooterMarkup angewandt wird.
EDIT: Das gilt natürlich auch für Header-Markup.
Grüße, Robert
-
Halleluja,
es hat tatsächlich geklappt....ich bin platt!!!!
Vielen, vielen Dank für Eure unendliche Geduld mit mir.
Ein schönes, sonniges Wochenende wünsche ich Euch,
der Don
-
Hallo,
bin neu hier im Forum und habe auch nicht sehr viel Erfahrung mit Lilypond. Im Augenblick erstelle ich eine Edition mit Stücken für Tasteninstrument und habe hier im Forum schon wirklich super Beiträge gefunden, die immer sehr verständlich waren und mir sehr geholfen haben! ;)
Nun komme ich leider nicht mehr weiter... ich habe aus unterschiedlichen Gründen die Einzelstücke (insg. fast 300) in einzelne Dateien geschrieben. In einer separaten Datei habe ich häufig verwendete Variablen und Funktionen definiert (z.B. gewisse Sonderzeichen für Verzierungen, horizontale Verschiebungen, Stichnoten in Akkorden etc.) und diese per \include eingebunden. Funktioniert alles auch super und die Einzeldateien werden ohne Fehlermeldungen ausgegeben.
Jetzt möchte ich gerne alle Dateien zu einem "Fließtext" mit Seitenzahlen zusammenfügen für ein Gesamt-pdf. Dafür wollte ich die \book-Funktion verwenden und habe wie in der ausführlichen Beschreibung oben von RobUr (Danke - echt super!) eine Datei angelegt. Leider ist bei mir der Fall aber etwas komplizierter ??? und mir ist nicht klar, wie ich meine Einzeldaten sowie die settings korrekt einbinde; dort, wo es im Beispiel als Option angegeben ist, hat es jedenfalls mit meinen Daten nicht funktioniert. Egal, an welcher Stelle ich es versucht habe, die settings werden nicht übernommen, sondern die Variablen tauchen beim Kompilieren immer als Fehler auf. Wenn ich die settings nicht einbinde - sie sind schon mit \include in den jeweiligen Einzeldateien - werden sie auch nicht übernommen. Habe auch schon die Dokus gewälzt und hier im Forum über Variablen gelesen, nur ich habs nicht geschafft, das für meinen Fall zu adaptieren >:(
Abgesehen davon funktioniert leider auch die Einbindung der Einzeldateien nicht. Diese habe ich aufgebaut wie in der Dokumentation vorgeschlagen, d.h. nach dem Header (mit title, subtitle) etc. sowie \include "settings.ly" kommt der Notentext upper = \relative c' { Noten rechte Hand } und lower = \relative c { Noten linke Hand} und dann
\score { \new PianoStaff <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower >> }
Damit kommt eine "fertige" Klavierpartitur raus, die ich gerne so wie sie ist in das Gesamtdokument übernehmen würde, direkt danach (also nicht erst auf einer neuen Seiten) die nächste dieser Art usw. Die ersten ca. 150 sollen in einen \bookpart und die zweiten aus der anderen Handschrift in einen zweiten \bookpart.
Irgendwie komme ich aber mit den Schachtelungen settings/Einzeldatei/Gesamtdatei nicht klar, weil ich habe ja schon in den Einzeldateien score und staff definiert. Wie muss ich das in der \book-Datei dann handhaben???
Habe ziemlich viel ausprobiert, bin aber nie zu dem Ergebnis gekommen, das ich wollte.
Deshalb meine Frage: wie kann ich meine bestehenden settings und meine Einzeldateien in eine \book-Umgebung korrekt einbetten? Bin grad etwas verzweifelt, dass ich kurz vor dem Ziel daran scheitere :-[
Ach ja, habe die Einzeldaten mit Lilypond 2.16.2 für Windows angelegt.
Vielen Dank schonmal im voraus und schönen Abend,
enigma
-
Hallo enigma,
willkommen im forum.
Ich persönlich komme mit beschreibenden Aussagen nicht so gut klar, sondern will immer Code haben. ;)
Kannst Du ein Beispiel posten welches das Problem verdeutlicht?
Du wirst natürlich ein bißchen Arbeit mit so einem Beispiel haben, denn es sollte so kurz wie möglich sein ...
Gruß,
Harm
-
Hallo Harm,
vielen Dank für Dein Interesse! Ich habe nun versucht, ein Beispiel zusammenzustellen, das möglichst kurz ist. Hoffentlich ist es einigermaßen verständlich...
Meine settings-Datei enthält mehrere Befehle wie z.B.
verschoben = {
\once \override NoteColumn #'force-hshift = #0.5
}
Stichnote = #(define-music-function (parser loc arg) (ly:music?)
(_i "Tag @var{arg} in small size.") #{
\once \override NoteColumn #'force-hshift = #0.15
\tweak #'font-size #-3 $arg
#})
wobei ich den letzten Befehl nicht bis ins Detail verstehe :-[, sondern nach ähnlichen "nachgebaut" habe, aber er funktioniert.
----
Eine Einzeldatei sieht folgendermaßen aus:
\version "2.16.2"
\include "settings.ly"
\header {
title = "Psalm 1"
subtitle = "Qui au conseil"
tagline = ""
}
global = {
}
upper = \relative c' {
\clef treble
\key c \major
\time 2/2
g'8. f16 e32 [ d e f] g e f g \bar "||"
}
lower = \relative c {
\clef bass
\key c \major
\time 2/2
<c g' c>2 \bar "||"
}
\score {
\new PianoStaff <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
}
\layout {indent= 0.0\cm}
----
Und nun das book-Gerüst wie oben angegeben:
\version "2.16.2"
#(set-global-staff-size 15)
%Papiergrösse noch definieren, Verlagsvorgaben
%Psalm1 = \include "Psalm001.ly"
%funktioniert an dieser Stelle nur mit 1 Datei, die dann direkt eingefügt wird, geht nicht bei mehreren Dateien
%Psalm2 = \include "Psalm002.ly"
\book {
\paper { }
\header {
tagline = ##f
breakbefore = ##t
}
%Quelle 1
\bookpart {
\paper { }
\header {
%Informationen sollen aus jew. Einzeldaten übernommen werden
}
\score {
\context PianoStaff = "Klavier"
%??? rechte und linke Hand als "upper" und "lower" in jew. Einzeldatei - dort oder erst hier zusammenfügen? Wie wird die Referenz gemacht?
}
\layout { indent = #0}
}
%Quelle 2
\bookpart {
\paper { }
\header {
%Informationen sollen aus jew. Einzeldaten übernommen werden
}
\score {
\context PianoStaff = "Klavier"
%??? rechte und linke Hand als "upper" und "lower" in jew. Einzeldatei - dort oder erst hier zusammenfügen? Wie wird die Referenz gemacht?
}
\layout { indent = #0}
}
}
Also, mir ist nicht klar, wo und wie ich meine bereits bestehenden Dateien inkludieren muss und wie ich die settings übernehmen kann, oder reicht das, wenn sie dann in den Einzeldateien aufgerufen werden? Die Angabe des Verzeichnisses stimmt jedenfalls, es steht alles in einem Ordner.
In den Einzeldateien habe ich ja bereits ein \score definiert, muss ich das jetzt nochmal machen oder wie kann ich das bereits Bestehende aufrufen?
Welche Angaben (header, layout etc.) muss ich aus den Einzeldateien löschen und in die Gesamtdatei einfügen?
Muss ich für jedes Stück einen neuen bookpart machen? Ich habe 3 Quellen, die jeweils einen Teil der Einzeldaten beinhaltet, das wäre für mich ein bookpart, aber was sind dann die Einzeldaten? Alternativ wäre es auch kein Problem, für jede Quelle ein book zu machen, das ich mit entsprechenden Seitenzahlen versehe.
Ganz naiv gesagt, hätte ich gerne, dass er mir die bestehenden Dateien in der von mir gewünschten Reihenfolge zu einem Fließtext zusammenhängt. ;)
Uff, ganz schön viele Probleme... ::) ich hoffe, ich habe es einigermaßen verständlich dargestellt, sonst bitte gerne nachfragen! ;)
Ganz lieben Dank und viele Grüße,
enigma
P.S. leider hat das mit dem farbigen html-Text-Kopieren aus Frescobaldi nicht geklappt >:(
-
Hallo enigma,
ganz allgemein gesagt: du kannst nicht \paper {} in \paper {} includieren! Demzufolge auch nicht \header {} in \header etc.
Include-Dateien werden an ihrer Stelle eingebunden, als ob deren Inhalt dort ausnotiert wäre.
Variante 1:
Es wäre kein Problem, in einer externen Datei eine gültige Partitur zu notieren, um diese dann innerhalb eines bookpart aufzurufen. Bitte auf Log-Ausgabe achten, an welchen Stellen Lily meckert, z.B. \paper {} außerhalb von \score {} usw.
Variante 2 (meine in diesem Thread längst beschriebene):
Du lagerst Musik als Variablen aus und bindest sie außerhalb des book ein. Hierbei bitte Reihenfolge beachten: deine „settings“-Datei muss vor den include-Dateien, in denen die definierten Makros aufgerufen werden, eingebunden werden. Immer auf eindeutige Variablenbezeichner achten!
Muss ich für jedes Stück einen neuen bookpart machen? Ich habe 3 Quellen, die jeweils einen Teil der Einzeldaten beinhaltet, das wäre für mich ein bookpart, aber was sind dann die Einzeldaten? Alternativ wäre es auch kein Problem, für jede Quelle ein book zu machen, das ich mit entsprechenden Seitenzahlen versehe.
Ganz naiv gesagt, hätte ich gerne, dass er mir die bestehenden Dateien in der von mir gewünschten Reihenfolge zu einem Fließtext zusammenhängt.
In diesem Fall notierst du mehrere \score-Blöcke hintereineinander in einem bookpart. Es geht ja nicht darum, was du für einen Bookpart hältst, sondern wie Lily damit umgeht! Der Sinn eines Bookpart ist ja gerade der, einen neuen Abschnitt auf einer neuen Seite zu erzeugen. Ein Book hingegen erzeugt eine eigene Datei.
ich hoffe, ich habe es einigermaßen verständlich dargestellt, sonst bitte gerne nachfragen!
Nachfrage Bitte: Poste deine kompilierbaren (!) Minimalbeispieldateien!
Gruß, Robert
-
Hallo Robert,
spät, aber dennoch ein herzliches Dankeschön für die sehr hilfreiche Zusammenstellung.
% (Format, Ausrichtung und staff size sind schon auf oberster Ebene definiert.)[/i]
\paper {
left-margin = 2\cm
line-width = 17\cm
ragged-last-bottom = ##f
first-page-number = #-1 % Titelblatt = -1, dann [leere] Rückseite = 0, dann erst Seite "1"
% optional globales even[/odd]Header[/Footer]Markup
% falls Fonts umdefiniert werden: hier! (myStaffSize = ... #(define fonts ...) etc.)
}
Eine Anmerkung zu dem zitierten Ausschnitt: Wenn man so das Lilypond-eigene Inhaltsverzeichnis verwendet und im exportierten PDF-Dokument die Verlinkung des Inhaltsverzeichnisses mit dem Ziel nutzen möchte, muss man noch etwas Hand anlegen.
Die Zuweisung first-page-number = #-1 erzeugt einen Versatz um 2 Seiten (nach vorne). Die Links zeigen auf die angegebene Seite des PDF-Dokuments und nicht auf die von Lilypond vergebene Seitenzahl.
In http://lists.gnu.org/archive/html/lilypond-user/2012-04/msg00499.html (http://lists.gnu.org/archive/html/lilypond-user/2012-04/msg00499.html) hat der fleißige Harm eine Lösung beschrieben, die mit meiner (noch) genutzten Version 2.16.2 klaglos funktioniert.
Grüße
Martin