• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Elegantere Struktur und Flexibilität

Begonnen von infranator, Donnerstag, 10. April 2014, 12:37

Vorheriges Thema - Nächstes Thema

infranator

Hallo Leute,

wenn ich an Stücken mit vielen Stimmen arbeite, will ich nicht immer die komplette Partitur kompilieren müssen, wenn ich länger an einzelnen Formteilen arbeite. Darum benutze ich in dem Fall folgende Strukturierung:


\version "2.19.0"

%%%%%%%% leer.ly %%%%%%%%%
MusikA = { }
MusikB = { }


%%%%%%%% TeilA.ly %%%%%%%%%

%%{
MusikA = {
  c'4 d' e' f'
  g' a' b' c''
}
%}

%%%%%%%% TeilB.ly %%%%%%%%%

%%{

MusikB = {
  d''4 e'' f'' g''
  a'' b'' c''' d'''
}
%}

%%%%%%%% Partitur.ly %%%%%%%%%%

% \include "leer.ly"
% \include "TeilA.ly"
% \include "TeilB.ly"

\new Staff {
  \MusikA
  \MusikB
}


Um ein kompilierbares Minimalbeispiel posten zu können, habe ich das, was eigentlich in vier Dateien stehen würde zusammengefasst und nur eine Stimme definiert (normalerweise stehen in jeder TeilX.ly Datei alle Instrumente)
Es funktioniert so weit ganz gut so. Es stört mich allerdings, dass ich am Anfang jede Stimme leer definieren muss (leer.ly) um in der Partitur Formteile auskommentieren zu können.
Da gibt es doch bestimmt einen eleganteren weg? Ein paar Sachen habe ich schon probiert, bin aber jedes Mal bereits am Anfang gescheitert:

Eine Scheme-Funktion, die alle Variablen, die in einer Liste stehen leer definiert.
Eine Funktion, die überprüft, ob eine Variable existiert, oder nicht. (geht nicht weil eine unbound-variable immer Syntax error erzeugt)
Eine Funktion, die überprüft, ob eine Datei über \include eingebunden ist, oder nicht.

Vielleicht hat jemand eine Idee, wie man das Problem angehen könnte oder kann mir zumindest einen Stoß in die richtige Richtung geben?
Viele Grüße,
infranator

harm6

Hallo,

das einzige was mir dazu einfällt:

xy = \relative c' {
c d e f
}

#(define def
(if (defined? 'def) def #{ #}))
     
#(define xy
(if (defined? 'xy) xy #{ #})) 

<<
  \new Staff \def
  \new Staff \xy
>>


Vielleicht geht mehr via define-macro, aber meine bisherigen Versuche waren nicht erfolgreich. :(


HTH (a bit),
  Harm