Extension: ‘simultaneous-divisi’
Bundled since solmisasi-lily-v1.0.6-beta
Full path (Linux/Mac): <solmisasi-lily-root-dir>/lib/extension/solmisasi-simultaneous-divisi.ily
Full path (Windows): <solmisasi-lily-root-dir>\lib\extension\solmisasi-simultaneous-divisi.ily
Description:
This extension contains some necessary helper functions to accommodate simultaneous divisi within a single staff music. With this extension loaded, new music tag
'solmisasi
is introduced. This music tag is used to distinguish between solmisasi-notation-specific music and the original standard notation music.
Layout objects:
- Open Divisi spanner: a spanner grob which indicates a change in the music from one-voice music to simultaneous music (limited to two voices).
- Close Divisi spanner: a spanner grob which indicates a change in the music from simultaneous music (limited to two voices) to one-voice music. Notes:
- Originally, those spanners are text spanners. Some needed text spanners settings are incorporated and used in their internal calculation routine, such as the
'bound-details
settings (left.padding
andright.padding
).- I decided to use dashed-line style in drawing those spanners in order to make it visually different from the Hairpin object.
Main command(s):
\voiceOne
Overridden from the original
\voiceOne
with some additional commands to adjust the position and size of the higher pitched music in a specific simultaneous music passage. The formatted solmisasi music is tagged by'solmisasi
tag, and the original music is kept intact. To engrave the original music using standard notation, you have to exlude the solmisasi-tagged music part with\removeWithTag #'solmisasi.
This voice context should be explicitly declared with the same context ID as the surrounding music. UseVoice
context type here, rather thanSolmisasiVoice
, so it will also be engraved correctly in original standard notation. Please see the attached example.\voiceTwo
Overridden from the original
\voiceTwo
with some additional commands to adjust the position and size of the lower pitched music in a specific simultaneous music passage. The formatted solmisasi music is tagged by'solmisasi
tag, and the original music is kept intact. To engrave the original music using standard notation, you have to exlude the solmisasi-tagged music part with\removeWithTag #'solmisasi
. No need to explicitly declare this context ID. Please see the attached example.\oneVoice
Overridden from the original
\oneVoice
with some additional commands to revert the position and size of all music objects when the music goes to single/one voice passage. No need to explicitly use this command as it is incorporated in the\stopDivisiSpan
(see below), unless there is a special need to call this.\startOpenDivisiSpan
This command is used to start an open divisi spanner, and can be called at the last note of the one-voice passage, just before the music goes simultaneous. Please see the attached example.
\startCloseDivisiSpan
This command is used to start a close divisi spanner, and can be called at the last note of the first (higher pitched) context in simultaneous divisi music, just before the music goes sequential (one-voice). Please see the attached example.
\stopDivisiSpan
This command is used to stop any divisi spanners, and can be called just before the first note of the following simultaneous or sequential music. The modified
\oneVoice
is incorporated in this command.
Scenario:
music = {
[one-voice music passage]\startOpenDivisiSpan
<<
\context Voice = [name] {
\stopDivisiSpan
\voiceOne
[voice-one music passage]\startCloseDivisiSpan
}
\\
{
\voiceTwo
[voice-two music passage]
}
>>
\stopDivisiSpan
[another one-voice music passage]
...
}
Notes:
- Using a simultaneous music separator (
\\
) is mandatory. - Since
\oneVoice
is called inside the\stopDivisiSpan
,\voiceOne
must be written after\stopDivisiSpan
.
Example of Usage:
\withExtensions #'(
"simultaneous-divisi"
)
%% The Soprano part from the attached image
sop = {
\relative c'' {
<<
\context Voice = "sop" {
\voiceOne sol8^\mp la si do16( re) fa4 mi\startCloseDivisiSpan
}
\\
{
\voiceTwo mi,8 fa sol la16( si) do4 do
}
>>
\stopDivisiSpan
do8 mi8 do16( di16) re8 re4\startOpenDivisiSpan
<<
\context Voice = "sop"
{
\stopDivisiSpan
\voiceOne mi\startCloseDivisiSpan
}
\\
{
\voiceTwo do
}
>> |
\stopDivisiSpan
re2 mi2 |
}
}
lsop = \lyricmode {
Ka -- mi ber -- syu -- kur ke --
pa -- da -- Mu ya Tu -- han yang te
}
<<
\new Staff \with { instrumentName = \markup\bold "S." } {
\new Voice = "sop" \removeWithTag #'solmisasi \sop
}
\new Lyrics \with { \override LyricText.font-size = #0.5 }
\lyricsto "sop" \lsop
\new SolmisasiStaff \with { instrumentName = \markup\bold "S." } {
\new SolmisasiVoice = "sop" \solmisasiMusic \sop
}
\new SolmisasiLyrics \with {
\override LyricText.font-size = #0.5
} \lyricsto "sop" { \solmisasiLyrics \lsop }
>>
Example of the Engraved Score:
Possible Problems
bas = {
\clef bass
\relative c {
do2 do2\startOpenDivisiSpan
<<
\context Voice = "bas"
{
\stopDivisiSpan
\voiceOne
fa4(\sf do8 fa8) re'8( mi16 do16 fa,4)\startCloseDivisiSpan
}
\\
{
\voiceTwo re4( la) do8( sol16 la16 do4)
}
>>
\stopDivisiSpan
sol'2 do,2 |
}
}
The red-colored open divisi spanner is incorrect in its starting coordinate. It should be drawn right after the last duration dot in the first bar. To overcome this problem, you can use some tweaks or workarounds, such as:
- tweak the left bound padding of the open divisi spanner:
do2 do2-\tweak bound-details.left.padding #7 \startOpenDivisiSpan
which resulted in the first example image, or
- wrap the second “do2” in a simultaneous music (using skips in the second element):
do2 << { do2 } { s4 s4\startOpenDivisiSpan } >>