Ich versuche, ein Pipa-Stück mit Lilypond 2.20 auf Ubuntu 20.04 zu gravieren. Die ersten Noten werden wie folgt wiedergegeben:
Was sieht nicht richtig aus:
Jede Hilfe wird sehr geschätzt!
Hier ist mein Lilypond-Quellcode:
\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 { }
}
Hier ist, was Sie dagegen tun können:
Das wird durch die Vorschlagsnoten verursacht. Sie kommen immer vor dem Taktschlag herein, also verhält sich das Programm nach dieser Logik: „Lasst uns die zwei Notensysteme beginnen. OK, das oberste muss einen Violinschlüssel haben und das andere hat noch keinen Schlüssel angegeben, also lasst uns einen Violinschlüssel setzen fügen Sie auch einen Notenschlüssel ein. Setzen Sie jetzt ein paar Vorschlagsnoten in die obere Notenzeile und ein bisschen Leerraum in die untere Notenzeile. Hey! Es gibt jetzt einen Bassschlüssel in der unteren Notenzeile! Lassen Sie uns ihn rendern!“ \grace s8
usw. Wenn Sie ein nach Ihrem setzen \clef bass
, wird die Musik "aneinandergereiht" und das Problem verschwindet.
Im PianoStaff
, sind die Taktarten miteinander verbunden: Sie ändern es in einer Notenzeile, es ändert sich auch in der anderen.* Ich bin mir nicht ganz sicher, wie das funktioniert, aber wenn Sie Ihren サ-Hack auf statt anwenden, wird PianoStaff.TimeSignature
es Staff.TimeSignature
beginnen tun, was Sie wollen.
Dito für Kadenzen. Wenn Sie die Kadenz in einem Notensystem starten/stoppen, wird sie automatisch im anderen gestartet/gestoppt.* In Ihrem Beispiel endet also die Musik im ersten Notensystem früher und die Kadenz wird gestoppt, sodass die Kadenz auch im anderen Notensystem gestoppt wird , was danach zu einem Taktstrich (und einem 4/4-Takt) führt. Dies wird von selbst verschwinden, wenn Sie die Musik schreiben.
(*: Experimentell festgestellter Fakt 😃)
Ich würde auch ein paar kleine Änderungen empfehlen, um den Code etwas sauberer zu machen. Sie ändern die Ausgabe überhaupt nicht:
Es wäre sauberer, Ihre Zeitsignaturüberschreibungen in Ihre global
Variable einzufügen. Es ist der beste Ort, um all diese Überschreibungen abzulegen.
Sie brauchen \revert
den Taktart-Hack nicht, da er nur überschrieben wurde \once
, dh er funktioniert nur für das nächste Vorkommen dieses Objekts, in diesem Fall Taktart.
Ich würde den Block auch für ein bisschen mehr Sauberkeit \layout
in den Block verschieben.\score
Nicole Naumann
Nicole Naumann
Nicole Naumann
Ramillies
s
ist eine Abstandspause – nur eine unsichtbare Pause, die die angegebene Zeit in Anspruch nimmt, in diesem Fall8
= 1/8-Note.Nicole Naumann
Ramillies