]> git.donarmstrong.com Git - lilypond.git/blob - lily/part-combine-music.cc
1375f8d06fddf8fdc16e949bee6b2557a99ad224
[lilypond.git] / lily / part-combine-music.cc
1 /*   
2   part-combine-music.cc --  implement Part_combine_music
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
7   
8  */
9
10 #include "part-combine-music.hh"
11 #include "musical-pitch.hh"
12
13 Part_combine_music::Part_combine_music (SCM  what, Music * f, Music * s)
14 {
15   assert (gh_string_p (what));
16   set_mus_property ("what", what);
17   set_mus_property ("one", f->self_scm ());
18   set_mus_property ("two", s->self_scm ());  
19
20   scm_unprotect_object (f->self_scm());
21   scm_unprotect_object (s->self_scm());  
22
23   set_mus_property ("type", ly_symbol2scm ("part-combined-music"));
24 }
25
26 void
27 Part_combine_music::transpose (Musical_pitch p)
28 {
29   first_l ()->transpose (p);
30   second_l () ->transpose (p);
31 }
32
33
34
35 Moment
36 Part_combine_music::length_mom () const
37 {
38   return first_l ()->length_mom ();
39 }
40
41 Musical_pitch
42 Part_combine_music::to_relative_octave (Musical_pitch p)
43 {
44   p = first_l ()->to_relative_octave (p);
45   return second_l ()->to_relative_octave (p);
46 }
47
48 void
49 Part_combine_music::compress (Moment m)
50 {
51   first_l ()->compress (m);
52   second_l ()->compress (m);
53 }
54
55 Music*
56 Part_combine_music::first_l () const
57 {
58   return unsmob_music (get_mus_property ("one"));
59 }
60
61 Music*
62 Part_combine_music::second_l () const
63 {
64   return unsmob_music (get_mus_property ("two"));
65 }