Невозможно реализовать \ включить для создания таблицы стилей lilypond - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть рабочий файл Lilypond, который содержит около 80% инструкций стиля, которые я хотел бы использовать в качестве шаблона для других песен.Вместо того, чтобы копировать / вставлять, я бы предпочел поместить его в таблицу стилей по понятным причинам.Я почти уверен, что это выполнимо, но следование документации Lilypond просто приводит к тому, что я разбиваю файл.

\version "2.18.2"  % necessary for upgrading to future LilyPond versions.

\header{
    title = "Exercise: C, D, E Notes"
    tagline = ""  % removed
}


\paper{
    #(set-paper-size "arch a" 'landscape)
    system-system-spacing.basic-distance = #20
    system-system-spacing.minimum-distance = #20
    score-system-spacing.basic-distance = #20
    markup-system-spacing.basic-distance = #15
    indent = 0\cm
}

%Text instructions for each section
mark_A = ^\markup { \small Fingering }^\markup { \bold "Treble Clef - Right Hand" }
mark_B = ^\markup { \small Fingering }^\markup { \bold "Bass Clef - Left Hand" }

%Association list of pitches to colors.
#(define color-mapping
  (list
    (cons (ly:make-pitch 0 0 -1/2) (rgb-color 0 0 0))
    (cons (ly:make-pitch 0 0 0) (rgb-color 0 0 0))
    (cons (ly:make-pitch 0 0 1/2) (rgb-color 0 0 0))
    (cons (ly:make-pitch 0 1 -1/2) (rgb-color 0.8359375 0.64453125 0.796875))
    (cons (ly:make-pitch 0 1 0) (rgb-color 0.8359375 0.64453125 0.796875))
    (cons (ly:make-pitch 0 1 1/2) (rgb-color 0.8359375 0.64453125 0.796875))
    (cons (ly:make-pitch 0 2 -1/2) (rgb-color 0.4453125 0.7421875 0.2655625))
    (cons (ly:make-pitch 0 2 0) (rgb-color 0.4453125 0.7421875 0.2655625))
    (cons (ly:make-pitch 0 2 1/2) (rgb-color 0.4453125 0.7421875 0.2655625))
    (cons (ly:make-pitch 0 3 -1/2) (rgb-color 0.96875 0.6171875 0.15234375))
    (cons (ly:make-pitch 0 3 0) (rgb-color 0.96875 0.6171875 0.15234375))
    (cons (ly:make-pitch 0 3 1/2) (rgb-color 0.96875 0.6171875 0.15234375))
    (cons (ly:make-pitch 0 4 -1/2) (rgb-color 0 0.67578125 0.9296875))
    (cons (ly:make-pitch 0 4 0) (rgb-color 0 0.67578125 0.9296875))
    (cons (ly:make-pitch 0 4 1/2) (rgb-color 0 0.67578125 0.9296875))
    (cons (ly:make-pitch 0 5 -1/2) (rgb-color 0.91796875 0 0.54296875))
    (cons (ly:make-pitch 0 5 0) (rgb-color 0.91796875 0 0.54296875))
    (cons (ly:make-pitch 0 5 1/2) (rgb-color 0.91796875 0 0.54296875))
    (cons (ly:make-pitch 0 6 -1/2) (rgb-color 0.671875 0.39453125 0.0546875))
    (cons (ly:make-pitch 0 6 0) (rgb-color 0.671875 0.39453125 0.0546875))
    (cons (ly:make-pitch 0 6 1/2) (rgb-color 0.671875 0.39453125 0.0546875))
    ))

%Compare pitch and alteration (not octave).
#(define (pitch-equals? p1 p2)
  (and
    (= (ly:pitch-alteration p1) (ly:pitch-alteration p2))
    (= (ly:pitch-notename p1) (ly:pitch-notename p2))))

#(define (pitch-to-color pitch)
  (let ((color (assoc pitch color-mapping pitch-equals?)))
    (if color
      (cdr color))))

#(define (color-notehead grob)
  (pitch-to-color
    (ly:event-property (ly:grob-property grob 'cause) 'pitch)))

%BEGINNING OF ACTUAL SHEET MUSIC
music_A = \relative c' {
    \time 4/4
    \override Staff.TimeSignature #'style = #'() 
    \clef "treble"
    \override NoteHead #'color = #color-notehead
    c4-\mark_A-1 c-1 c-1 c-1 | d-2 d-2 d-2 d-2 | e-3 e-3 e-3 e-3 | e2-3 e-3 | \break
    e4-3 e-3 e-3 e-3 | d-2 d-2 d-2 d-2 | c-1 c-1 c-1 c-1 | c2-1 c-1  | \bar "|." \break

}


music_B = \relative c {
    \time 4/4
    \override Staff.TimeSignature #'style = #'() 
    \clef "bass"
    \override NoteHead #'color = #color-notehead
    e4-\mark_B-3 e-3 e-3 e-3 | d-4 d-4 d-4 d-4 | c-5 c-5 c-5 c-5 | c2-5 c-5  | \break
    e4-3 e-3 e-3 e-3 | d-4 d-4 d-4 d-4 | c-5 c-5 c-5 c-5 | c2-5 c-5  | \bar "|."
}

%Score Engraving
\score{
    \new Staff \music_A
    \layout{}
}


\score{
    \new Staff \music_B
    \layout{}
}

\score{
    \new Staff {\music_A \music_B}
    \midi{
        \tempo 4 = 144
}
}

В идеале я хотел бы вытащить инструкции \ paper и большой шаг в цвет.раздел в свой собственный шаблон и включить их.Я уверен, что решение очевидно, но по какой-то причине документация Лилипонд не согласна со мной.

1 Ответ

0 голосов
/ 25 сентября 2019

Оказывается, это действительно просто.Ссылки на документацию включают в себя два раздела - один (тот, который я нашел первым) проходит по очень запутанному сценарию и включает определение переменных и т. Д. Второй (гораздо более простой) просто использует:

\include "filename.ly"

и делаетвставка вместо того, что находится в этом файле.Извините за потерю времени, но, надеюсь, кто-то из тех, у кого такой же умственный пердеж, как я только что сделал, найдет это полезным.

...