Definieren Sie die Funktion in \ Lyrik in LilyPond

8

Ich kompiliere ein großes Songbuch, und dafür hätte ich gern viele lokale Definitionen von Funktionen, die am Ende in einer \include d Datei liegen würden, aber das macht hier keinen Unterschied. Dazu muss ich die Funktionen in \score{ ... } scope definieren. LilyPond wirft jedoch immer wieder Fehler.

Das nicht funktionierende Beispiel:

%Vor%

Liefert einen Fehler:

%Vor%

Das Folgende funktioniert jedoch, Ich muss den Funktionen eindeutige Namen geben, was verpönt ist.

%Vor%     
yo' 31.12.2013, 13:20
quelle

2 Antworten

6

Leider ist es nicht möglich, Aufgaben in einer Partitur festzuhalten. Sie können Zuordnungen nur an folgenden Stellen einfügen:

  • die oberste Ebene,
  • in \display , \header und \midi Blöcke

Die LilyPond-Grammatik macht das ziemlich klar, auch wenn der Rest des Handbuches ein bisschen ausweichend ist. (Schau dir Ссылка an und schau nach, wo die assignment -Regel verwendet wird).

Angenommen, Ihre Zuweisungen sind für die oben aufgelisteten Blöcke nicht geeignet (was in diesem Beispiel definitiv der Fall ist) und vorausgesetzt, Sie möchten nicht etwas Exotisches machen, gehen Sie und definieren Sie Ihre eigenen Scheme-Module und finden Sie heraus, wie Sie vorgehen Wenn Sie sie in Ihrer LilyPond-Datei verwenden, haben Sie zwei Möglichkeiten:

  1. Definieren Sie xyz und abc und definieren Sie dann die Musik, die in die erste Partitur eingeht. Dann definieren Sie xyz und abc neu, bevor Sie die Musik für die nächste Partitur definieren. Dies funktioniert, weil Zuweisungen überschreiben, was zuvor dort war, und weil LilyPond-Definitionen in der Regel in der Reihenfolge verarbeitet werden. Wenn Sie jedoch möchten, dass einige Ihrer Definitionen in beiden Partituren verwendet werden und identisch sind, können Sie verwirrt werden.
  2. Bereite dich auf deinen Ansatz vor, obwohl ich ein Präfix oder ein Suffix wählen würde, das klarer macht, mit welchem ​​Score die Definition geht.

Die erste Option würde etwa so aussehen:

%Vor%

Dies funktioniert auch, wenn die music-definierenden Parts in separate LilyPond-Quelldateien ausgelagert werden.

    
Owen S. 11.01.2014, 09:13
quelle
3

Es ist möglich! Aber müssen Sie einen Befehl definieren, um die Variable oder den Befehl zu definieren:

%Vor%

Dies ist eine void-Funktion und kann überall fast genannt werden:

%Vor%

Wenn der Befehl definiert ist, können Sie Ihre Musikausdrücke aufrufen. Danach benötigt der Parser einen kleinen Lookahead, damit die Variable wirklich verfügbar ist - hier ist es das c ''. Sie können den Ausdruck optional in ein anderes Paar geschweifter Klammern einfügen.

    
Jan-Peter Voigt 07.03.2014 13:53
quelle