]> git.donarmstrong.com Git - lilypond.git/blob - lily/part-combine-music.cc
release: 1.3.107
[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 "part-combine-music-iterator.hh"
12 #include "musical-pitch.hh"
13
14 Part_combine_music::Part_combine_music (SCM  what, Music * f, Music * s)
15 {
16   assert (gh_string_p (what));
17   set_mus_property ("what", what);
18   set_mus_property ("one", f->self_scm ());
19   set_mus_property ("two", s->self_scm ());  
20
21   scm_unprotect_object (f->self_scm());
22   scm_unprotect_object (s->self_scm());  
23
24   set_mus_property ("type",
25                     Part_combine_music_iterator::constructor_cxx_function);
26 }
27
28 void
29 Part_combine_music::transpose (Musical_pitch p)
30 {
31   first_l ()->transpose (p);
32   second_l () ->transpose (p);
33 }
34
35
36
37 Moment
38 Part_combine_music::length_mom () const
39 {
40   return first_l ()->length_mom ();
41 }
42
43 Musical_pitch
44 Part_combine_music::to_relative_octave (Musical_pitch p)
45 {
46   p = first_l ()->to_relative_octave (p);
47   return second_l ()->to_relative_octave (p);
48 }
49
50 void
51 Part_combine_music::compress (Moment m)
52 {
53   first_l ()->compress (m);
54   second_l ()->compress (m);
55 }
56
57 Music*
58 Part_combine_music::first_l () const
59 {
60   return unsmob_music (get_mus_property ("one"));
61 }
62
63 Music*
64 Part_combine_music::second_l () const
65 {
66   return unsmob_music (get_mus_property ("two"));
67 }