]> git.donarmstrong.com Git - lilypond.git/blob - lily/tempo-performer.cc
release: 1.3.93
[lilypond.git] / lily / tempo-performer.cc
1 /*
2   tempo-performer.cc -- implement Tempo_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 "tempo-performer.hh"
10 #include "command-request.hh"
11 #include "audio-item.hh"
12
13 ADD_THIS_TRANSLATOR (Tempo_performer);
14
15 Tempo_performer::Tempo_performer ()
16 {
17   tempo_req_l_ = 0;
18   audio_p_ = 0;
19 }
20
21 Tempo_performer::~Tempo_performer ()
22 {
23 }
24
25
26 void
27 Tempo_performer::do_process_music ()
28 {
29   if (tempo_req_l_)
30     {
31       audio_p_ = new Audio_tempo (tempo_req_l_->dur_.length_mom () /
32                                   Moment (1, 4) 
33                                   * Moment(tempo_req_l_->metronome_i_));
34       Audio_element_info info (audio_p_, tempo_req_l_);
35       announce_element (info);
36       tempo_req_l_ = 0;
37     }
38 }
39
40 void
41 Tempo_performer::do_pre_move_processing ()
42 {
43   if (audio_p_)
44     {
45       play_element (audio_p_);
46       audio_p_ = 0;
47     }
48 }
49
50 bool
51 Tempo_performer::do_try_music (Music* req_l)
52 {
53   if (tempo_req_l_)
54     return false;
55
56   if (Tempo_req *t =
57       dynamic_cast <Tempo_req *> (req_l))
58     {
59       tempo_req_l_ = t;
60       return true;
61     }
62
63   return false;
64 }
65