多声部基本操作

按惯例,先贴效果,再贴代码。

 

 

 

\version "2.20.0"
\language "english"

\paper {
  markup-markup-spacing = #'((padding . 5))	%文字行距
  markup-system-spacing = #'((padding . 3))	%谱文行距
}

\markup {"多声部的方法很简单,就是用<<和>>把多个声部包含进来"}
\markup {"声部之间用\\\\号隔开"}

\new Staff{
  <<
    {c''4 d''}	%声部1
    \\		%声部分隔符
    {a'4 b'}	%声部2
  >>
}

\markup {"一般默认声部1的符干向上,声部2符干向下。"}
\markup {"从下面这个例子可以看出lilypond在声部上的默认规则"}

\new Staff{
  d''^"默认" a' c'' g'				%默认
  \voiceOne d''^"按声部1排列" a' c'' g'	%按声部1排列
  \voiceTwo d''^"按声部2排列" a' c'' g'	%按声部2排列
  \oneVoice d''^"恢复默认" a' c'' g'	%恢复默认
}


\markup {"因此一旦没有分隔符\\\\,所有声部就会统一用默认的方式安排符干"}
\markup {"就会变成这个结果"}

\new Staff{
  <<
    {c''4 d''}	%声部1
    {a'4 b'}	%声部2
  >>
}

\markup {"lilypond也允许合并声部,只要在<<前面声明声部的样式,程序就会主动安排"}
% 

\new Staff {
  
  <<
    {c2''^"合并前" b'}
    {a' g'}
  >>


  \oneVoice		%默认
  <<
    {c2''^"默认" b'}
    {a' g'}
  >>
  
  \voiceOne		%按声部1安排
  <<
    {c''^"声部1" b'}
    {a' g'}
  >>
  
  \voiceTwo		%按声部2安排
  <<
    {c''^"声部2" b'}
    {a' g'}
  >>
  
  %声明声部2的等价方式
  <<
    {\voiceTwo c2''^"等价" b'}
    {\voiceTwo a' g'}
  >>
}

\markup {"遇到三个甚至四个声部在一起时,如果想要区分其中的两部分"}
\markup {"那就使用VoiceThree(向上)或者VoiceFour(向下)的命令"}
\markup {"VoiceFour属于次低声部,所以一般安排在VoiceTwo之上"}
\markup {"设置时注意声部之间加分隔符,否则输出的时候会统一符干"} 

\new Staff{
  <<
    {\voiceOne e''2 d''}\\
    {\voiceTwo c''2_"两个VoiceTwo" b'2}
    {\voiceTwo a'2 g'2}
  >>  
  <<
    {\voiceOne e''2 d''}\\
    {\voiceTwo c''2^"Two上Four下" b'2}\\
    {\voiceFour a'2 g'2}
  >>  
  <<
    {\voiceOne e''2 d''}\\
    {\voiceFour c''2_"Four上Two下" b'2}\\
    {\voiceTwo a'2 g'2}
  >>
  <<
    {\voiceOne e''2 d''}\\
    {\voiceFour c''2^"没加\\\\" b'2}
    {\voiceTwo a'2 g'2}
  >>  
}

 

posted on 2020-11-09 07:15  lilypond手残粉  阅读(393)  评论(0编辑  收藏  举报