lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A question regarding staff crossing


From: Mats Bengtsson
Subject: Re: A question regarding staff crossing
Date: Wed, 30 Aug 2006 10:21:46 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20060628 Debian/1.7.8-1sarge7.1

One solution is to introduce a separate variable that
handles the staff switching (and changing stem directions).
As long as it ends up in the same Voice context as the
corresponding music, it will work well. I modified the following
lines in your example to do it:

rhUpper = \relative c''' { \Key c4 g a b | c1 }
rhLower = \relative c'' { \Key c2 c4 d | e1 }
lhUpper = \relative c' { \Key c1 | c'4 g e g | }
lhLower = \relative c { \Key c1 | c }

switchVoiceThree = { s1 \change Staff = up \voiceFour }

...

piano = {
 \context PianoStaff <<
   \set PianoStaff.instrument = #"Piano   "
   \set PianoStaff.instr = #"p   "
\context Staff = up { \clef treble
     \global
     \set Staff.midiInstrument = "acoustic grand"
     << \rhUpper \\ \rhLower >>
   }
   \context Staff = down {
     \clef bass
     \global
     \set Staff.midiInstrument = "acoustic grand"
     << << \lhUpper \switchVoiceThree >> \\ \lhLower >>
   }
 >>
}


Note also that I used the <<{...} \\ {...} >> construct to
save some typing. Read in "Explicitly instantiating voices"
for more information on exactly what it does.

Finally, I would recommend you to upgrade to the latest
stable version of LilyPond, version 2.8.6. It's available for
download at www.lilypond.org in the form of a package
that installs easily on any Linux distribution.
In addition to the new features and bug fixes, it also
contains a significantly improved manual (in fact, the
manual for version 2.9 is even better and applies almost
completely also to version 2.8).

  /Mats

Amelie Zapf wrote:

Dear Lilypond folks,

after a long period of "not having any questions" and happily using 2.0, I've now upgraded to 2.6.5, due to Linux distribution upgrade. Now here's what I'd like to do:

I have a score with the format attached below. Now I would like to use manual staff switches in the piano, while still keeping layout and content nicely separated, i.e. I'd like to retain the four piano voices as separate units, but each one in one piece, and insert them into the PianoStaff later on. Is there any way to do that?

Regards,

Amy

%%% The Score

#(set-default-paper-size "a4")
#(set-global-staff-size 16)
\include "english.ly"
%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%% global = { \time 4/4 }
Key = { \key c \major }

% ############ Chords ###########

harmony = \chordmode { \jzchords c1 }
% ############ VOICES ############

voc = \relative c' { \Key c1}
text = \lyricmode { note }
flt = \relative c'' { \Key }

rhUpper = \relative c''' { \voiceOne \Key c1 }
rhLower = \relative c'' { \voiceTwo \Key c1 }
lhUpper = \relative c' { \voiceOne \Key c1 \change Staff = up c'1 }
lhLower = \relative c' { \voiceTwo \Key c1 }
Bass = \transpose c c' \relative c, { \Key c1 }
drumset = \drummode { bd4 }
%%%%%%%%% PRE-PROCESSING THE VOICES %%%%%%%%%%%%%%%%%%%%%%

%% ----- Chords -----

rsharmony = \harmony
% tenorharmony = \transpose c' d \harmony

%% ----- Instruments -----

vocal = {
 \global
 \set Staff.instrument = #"Mezzo-Soprano"
 \set Staff.instr = #"msop"
 \set Staff.midiInstrument = "violin"
 \clef treble
 \context Voice = theVoice \voc
}

flute = {
 \global
 \set Staff.instrument = #"Flute"
 \set Staff.instr = #"fl"
 \set Staff.midiInstrument = "flute"
 \clef treble
 \context Staff \flt
}

piano = {
 \context PianoStaff <<
   \set PianoStaff.instrument = #"Piano   "
   \set PianoStaff.instr = #"p   "
\context Staff = up { \clef treble
     \global
     \set Staff.midiInstrument = "acoustic grand"
     << \new Voice \rhUpper \new Voice \rhLower >>
   }
   \context Staff = down {
     \clef bass
     \global
     \set Staff.midiInstrument = "acoustic grand"
     << \new Voice \lhUpper \new Voice \lhLower >>
   }
 >>
}

bass = {
 \global
 \set Staff.instrument = #"Bass"
 \set Staff.instr = #"b"
 \set Staff.midiInstrument = "contrabass"
 \clef bass
 \context Staff \Bass
}

drumContents = {
 \global
 <<
   \set DrumStaff.instrument = #"Drums"
   \set DrumStaff.instr = #"dr"
   \new DrumVoice \drumset
 >>
}
%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%% \score {
 <<
   \new Staff \vocal
   \lyricsto "theVoice" \new Lyrics \text
   \new Staff \flute
   \new ChordNames \rsharmony
   \new PianoStaff \piano
   \new Staff \bass
   \new DrumStaff { \drumContents }
 >>
\layout {
   indent = 1.5 \cm
   raggedlast = ##t
   \context { \RemoveEmptyStaffContext }
   \context {
     \Score
     \override BarNumber #'padding = #3
     \override RehearsalMark #'padding = #2
     skipBars = ##t
   }
 }

 \midi { \tempo 4 = 80 }
}

\paper {
   % vsize = 29.7 \cm
   % hsize = 21.0 \cm
   linewidth = 17.0 \cm
   topmargin = 2.0 \cm
   bottommargin = 2.0 \cm
   leftmargin = 2.0 \cm
   betweensystempadding = #1
   raggedbottom=##f
   raggedlastbottom=##f
   % systemSeparatorMarkup=\slashSeparator
}



--
=============================================
        Mats Bengtsson
        Signal Processing
        Signals, Sensors and Systems
        Royal Institute of Technology
        SE-100 44  STOCKHOLM
        Sweden
        Phone: (+46) 8 790 8463                         
       Fax:   (+46) 8 790 7260
        Email: address@hidden
        WWW: http://www.s3.kth.se/~mabe
=============================================





reply via email to

[Prev in Thread] Current Thread [Next in Thread]