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
'solmisasiis 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-detailssettings (left.paddingandright.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):
\voiceOneOverridden from the original
\voiceOnewith 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'solmisasitag, 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. UseVoicecontext type here, rather thanSolmisasiVoice, so it will also be engraved correctly in original standard notation. Please see the attached example.\voiceTwoOverridden from the original
\voiceTwowith 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'solmisasitag, 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.\oneVoiceOverridden from the original
\oneVoicewith 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.\startOpenDivisiSpanThis 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.
\startCloseDivisiSpanThis 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.
\stopDivisiSpanThis 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
\oneVoiceis 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
\oneVoiceis called inside the\stopDivisiSpan,\voiceOnemust 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 \startOpenDivisiSpanwhich 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 } >>