Я пытаюсь выгравировать кусок пипы, используя Lilypond 2.20 на Ubuntu 20.04. Первые несколько нот отображаются так:
Что выглядит не так:
Любая помощь будет высоко оценена!
Вот мой исходный код Lilypond:
\version "2.20.0"
\header {
title = "Yi Dance"
subtitle = "彝族舞曲"
subsubtitle = "1960"
instrument = "Pipa · 琵琶"
composer = "WANG Huiran · 王惠然"
arranger = "Pipa Fingering: YANG Wei · 楊惟"
}
\markup {
\vspace #1
}
%% fingering symbols
fngs = \finger\markup{\override #'(font-name . "pipa") \fontsize #5 "s"}
fngw = \finger\markup{\override #'(font-name . "pipa") \fontsize #5 "w"}
fngDaiLunBoxed = ^\markup{\translate #'(-2.25 . 1.25) \box{\pad-markup #0.2 \override #'(font-name . "pipa") \fontsize #2 "s w"}}
\layout {
indent = #0
\context {
\Score
\remove "Bar_number_engraver"
}
\context {
\Voice
\consists "Melody_engraver"
\override Stem #'neutral-direction = #'()
}
}
global = {
\key a \minor
\numericTimeSignature
}
upper = \relative c'' {
\clef treble
\global
% Music follows here.
%% for the symbol サ
\once\override Staff.TimeSignature.stencil = #ly:text-interface::print
\once\override Staff.TimeSignature.text = \markup{\bold \fontsize #3 "サ" }
\once\override Staff.TimeSignature.extra-offset = #'(0 . -1.5)
%% section title and tempo hint
\once \override Score.RehearsalMark.self-alignment-X = #LEFT
\tempo "[1] liberamente, lento poi accelerando【一】自由地、慢起漸快"
\cadenzaOn
\appoggiatura{d16 c} a4\fngDaiLunBoxed \appoggiatura{d16 c} a4 \appoggiatura{d16 c} a4 \appoggiatura{d16 c} a4
\cadenzaOff
\revert Score.TimeSignature.stencil
}
lower = \relative c {
\clef bass
\global
% Music follows here.
%% for the symbol サ
\once\override Staff.TimeSignature.stencil = #ly:text-interface::print
\once\override Staff.TimeSignature.text = \markup{\bold \fontsize #3 "サ" }
\once\override Staff.TimeSignature.extra-offset = #'(0 . -1.5)
\cadenzaOn
c1 c
\cadenzaOff
\revert Score.TimeSignature.stencil
}
\score {
\new PianoStaff
<<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
\layout { }
\midi { }
}
Вот что вы можете с этим сделать:
Это вызвано грациозными нотами. Они всегда приходят перед долей, поэтому программа ведет себя по такой логике: «Начнем с двух нотоносцев. Хорошо, в верхнем должен быть скрипичный ключ, а в другом ключ еще не указан, поэтому ставим скрипичный ключ. ключ в нем тоже. Теперь добавьте несколько нот форы в верхнем нотоносце и немного пустого места в нижнем нотоносце. Эй! Теперь в нижнем нотоносце есть басовый ключ! и т. д. Если вы поставите \grace s8
после вашего \clef bass
, музыка «выстроится», и проблема исчезнет.
В PianoStaff
тактовые размеры связаны вместе: вы меняете их в одном нотоносце, они меняются и в другом PianoStaff.TimeSignature
. Staff.TimeSignature
делать то, что вы хотите.
То же самое для каденций. Если вы запускаете/останавливаете каденцию в одном нотоносце, она автоматически запускается/останавливается в другом.* Таким образом, в вашем примере музыка в первом нотоносце заканчивается раньше, и каденция останавливается, поэтому каденция останавливается и в другом нотоносце. , что приводит к тактовой черте (и тактовому размеру 4/4) после этого. Это уйдет само собой, когда вы будете писать музыку.
(*: Экспериментально установленный факт 😃)
Я бы также порекомендовал пару небольших изменений, чтобы сделать код немного чище. Они вообще не меняют вывод:
Было бы чище поместить переопределение вашего тактового размера в вашу global
переменную. Это лучшее место для сброса всех таких переопределений.
Вам не нужно \revert
взламывать тактовый размер, потому что он был переопределен только \once
, т.е. он работает только для следующего вхождения этого объекта, в данном случае тактового размера.
Я бы также переместил \layout
блок в \score
блок для дополнительной чистоты.
Николь Науманн
Николь Науманн
Николь Науманн
Рамильес
s
это спейсерная пауза — просто невидимая пауза, которая занимает заданное количество времени, в данном случае8
= 1/8 ноты.Николь Науманн
Рамильес