]> git.donarmstrong.com Git - lilypond.git/blob - lily/score-performer.cc
release: 1.0.1
[lilypond.git] / lily / score-performer.cc
1 /*
2   score-performer.cc -- implement Score_performer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
7  */
8
9 #include "score-performer.hh"
10 #include "midi-def.hh"
11 #include "audio-column.hh"
12 #include "audio-item.hh"
13 #include "performance.hh"
14 #include "midi-stream.hh"
15 #include "string-convert.hh"
16 #include "debug.hh"
17 #include "score.hh"
18 #include "source-file.hh"
19 #include "source.hh"
20 #include "audio-staff.hh"
21
22 IMPLEMENT_IS_TYPE_B1(Score_performer,Performer_group_performer);
23 ADD_THIS_TRANSLATOR(Score_performer);
24
25
26 Score_performer::Score_performer()
27 {
28 }
29
30
31 Score_performer::~Score_performer()
32 {
33 }
34
35 void
36 Score_performer::play (Audio_element * p)
37 {
38   if  (p->is_type_b (Audio_item::static_name())) 
39     {
40       audio_column_l_->add_audio_item ((Audio_item*)p);
41     }
42   else if (p->is_type_b (Audio_staff::static_name())) 
43     {
44       performance_p_->add_staff ((Audio_staff*)p);
45     }
46   performance_p_->add_element (p);
47 }
48
49 void 
50 Score_performer::prepare (Moment m)
51 {
52   Global_translator::prepare (m);
53   audio_column_l_ = new Audio_column (m);
54   performance_p_->add_column (audio_column_l_);
55   post_move_processing ();
56 }
57
58
59 void 
60 Score_performer::process()
61 {
62   process_requests();
63   pre_move_processing();
64   check_removal();
65 }
66
67 void
68 Score_performer::start()
69 {
70 }
71
72
73 int
74 Score_performer::get_tempo_i() const
75 {
76   return performance_p_->midi_l_->get_tempo_i (Moment (1, 4));
77 }
78
79 void
80 Score_performer::finish()
81 {
82   check_removal ();
83   removal_processing();
84 }
85
86 Music_output *
87 Score_performer::get_output_p ()
88 {
89   Music_output * o = performance_p_;
90   performance_p_ =0;
91   return o;
92 }
93
94 void
95 Score_performer::do_add_processing ()
96 {
97   Translator_group::do_add_processing ();
98   assert (output_def_l_->is_type_b (Midi_def::static_name ()));
99   performance_p_ = new Performance;
100   performance_p_->midi_l_ = (Midi_def*) output_def_l_;  
101 }