Tue 24 Jul 2012 11:24:46 AM UTC, comment #3:
To answer one of my own questions: one way to make Lilypond do what I want seems to be to have the transpose for first voice in Staff and another one for 2nd voice in its Voice i.e.
%Start of Staff
\new Staff = "Euphonium 1" << \transpose bes c''
\new Voice = "VoiceIIMvmntI" {
\clef treble
{ \key ees \major}
{ \time 2/4 }
\MvmntIVoiceII } %End of voice
\new Voice = "VoiceIIIMvmntI" {
\transpose bes c''
\MvmntIVoiceIII } %End of voice
>>
%End of Staff
Unfortunately it is not that simple. The problem is the scope of the transpose and this can be seen best by placing the transpose inside 1st voice.
If you have immediately before "\clef", it does nothing (transposes clef!)
If you have it before "{ \key", it transposes key but not the notes.
If you have it before "{ \time", it does nothing (transposes time!)
If you have it before "\MvmntIVoiceII", you've guessed, it transposes notes but not key.
You could have the tranpose as the first thing in a voice with the rest of the voice enclosed in braces:
\new Voice = "VoiceIIMvmntI" {
\transpose bes c'' {
\clef treble
{ \key ees \major }
{ \time 2/4 }
\MvmntIVoiceII } } %End of voice
That works fine but might but might be difficult to manage in code. Carrying that idea out to the Staff doesn't work. A transpose followed by { followed by two Voices then } results in one after the other not together.
I suspect the simplest solution will be to have the transpose before each "\new Voice". The following does work:
\new Staff = "Euphonium 1" << \transpose bes c''
\new Voice = "VoiceIIMvmntI" {
\clef treble
{ \key ees \major }
{ \time 2/4 }
\MvmntIVoiceII } %End of voice
\transpose bes c''
\new Voice = "VoiceIIIMvmntI" {
\MvmntIVoiceIII } %End of voice
>>
%End of Staff
I leave it up to you to decide how best to implement this.
|