]> git.donarmstrong.com Git - lilypond.git/blob - lily/tempo-performer.cc
b728730947e1093b77cbe9470cb78e98f1a7122c
[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 void 
26 Tempo_performer::do_print () const
27 {
28 #ifndef NPRINT
29   if (tempo_req_l_)
30     tempo_req_l_->print ();
31 #endif
32 }
33
34 void
35 Tempo_performer::do_process_music ()
36 {
37   if (tempo_req_l_)
38     {
39       audio_p_ = new Audio_tempo (tempo_req_l_->dur_.length_mom () /
40                                   Moment (1, 4) 
41                                   * Moment(tempo_req_l_->metronome_i_));
42       Audio_element_info info (audio_p_, tempo_req_l_);
43       announce_element (info);
44       tempo_req_l_ = 0;
45     }
46 }
47
48 void
49 Tempo_performer::do_pre_move_processing ()
50 {
51   if (audio_p_)
52     {
53       play_element (audio_p_);
54       audio_p_ = 0;
55     }
56 }
57
58 bool
59 Tempo_performer::do_try_music (Music* req_l)
60 {
61   if (tempo_req_l_)
62     return false;
63
64   if (Tempo_req *t =
65       dynamic_cast <Tempo_req *> (req_l))
66     {
67       tempo_req_l_ = t;
68       return true;
69     }
70
71   return false;
72 }
73