]> git.donarmstrong.com Git - lilypond.git/blob - lily/simultaneous-music.cc
(to_relative_octave): undo relative
[lilypond.git] / lily / simultaneous-music.cc
1 #include "input.hh"
2 #include "moment.hh"
3 #include "pitch.hh"
4 #include "music-list.hh"
5
6 Moment
7 Simultaneous_music::get_length () const
8 {
9   return Music_sequence::maximum_length (get_mus_property ("elements"));
10 }
11
12 Moment
13 Simultaneous_music::start_mom () const
14 {
15   return Music_sequence::minimum_start (get_mus_property ("elements"));
16 }
17
18 Simultaneous_music::Simultaneous_music()
19 {
20
21 }
22
23 /*
24   Cut & paste from Music_sequence, (ugh) , but we must add an error
25   message.
26  */
27 Pitch
28 Simultaneous_music::to_relative_octave (Pitch p)
29 {
30   Pitch first;
31   int count=0;
32
33   Pitch last = p;
34   for (SCM s = music_list (); gh_pair_p (s);  s = ly_cdr (s))
35     {
36       if (Music *m = unsmob_music (ly_car (s)))
37         {
38           last = m->to_relative_octave (last);
39           if (!count ++)
40             first = last;
41         }
42     }
43
44 #if 0
45   if (count && first != last)
46     {
47       String str = _("Changing relative definition may cause octave change.");
48       str += "\nWas: " +  first.to_string ()
49         + " -- now returning: " + last.to_string () + "\n";
50       
51       origin()->warning (str);
52     }
53
54   return last;
55 #else
56   return first;
57 #endif
58 }
59
60 ADD_MUSIC (Simultaneous_music);
61
62 Pitch
63 Event_chord::to_relative_octave (Pitch p)
64 {
65   return do_relative_octave (p, true);
66 }
67 ADD_MUSIC(Event_chord);