]> git.donarmstrong.com Git - lilypond.git/blob - lily/key-performer.cc
79fdac637e6468d4ed7882c82a072b88f93921df
[lilypond.git] / lily / key-performer.cc
1 /*
2   key-performer.cc -- implement Key_performer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
7 */
8
9 #include "key-performer.hh"
10 #include "command-request.hh"
11 #include "audio-item.hh"
12
13
14 ADD_THIS_TRANSLATOR (Key_performer);
15
16 Key_performer::Key_performer ()
17 {
18   key_req_l_ = 0;
19   audio_p_ = 0;
20 }
21
22 Key_performer::~Key_performer ()
23 {
24 }
25
26 void
27 Key_performer::do_process_music ()
28 {
29   if (key_req_l_ && key_req_l_->get_mus_property ("pitch-alist") != SCM_UNDEFINED)
30     {
31       audio_p_ = new Audio_key (); // *key_req_l_->key_);
32       Audio_element_info info (audio_p_, key_req_l_);
33       announce_element (info);
34       key_req_l_ = 0;
35     }
36 }
37
38 void
39 Key_performer::do_pre_move_processing ()
40 {
41   if (audio_p_)
42     {
43       play_element (audio_p_);
44       audio_p_ = 0;
45     }
46 }
47
48 bool
49 Key_performer::do_try_music (Music* req_l)
50 {
51   if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
52     {
53       if (key_req_l_)
54         warning (_ ("FIXME: key change merge"));
55
56       key_req_l_ = kc;
57       return true;
58     }
59
60   return false;
61 }
62