]> git.donarmstrong.com Git - lilypond.git/blob - lily/staff-performer.cc
release: 0.1.7
[lilypond.git] / lily / staff-performer.cc
1 /*
2   staff-performer.cc -- implement Staff_performer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
7  */
8
9 #include "staff-performer.hh"
10 #include "translator.hh"
11 #include "input-translator.hh"
12 #include "debug.hh"
13 #include "audio-column.hh"
14 #include "audio-item.hh"
15 #include "audio-staff.hh"
16
17 IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer);
18 ADD_THIS_PERFORMER(Staff_performer);
19
20 Staff_performer::Staff_performer()
21 {
22     audio_staff_p_ = 0;
23 }
24
25 Staff_performer::~Staff_performer()
26 {
27     delete audio_staff_p_;
28 }
29
30 void
31 Staff_performer::do_creation_processing()
32 {
33     audio_staff_p_ = new Audio_staff;
34
35     // staff name
36     play(new Audio_text( Audio_text::TRACK_NAME, instrument_str()));
37
38     // instrument description
39     play(new Audio_text( Audio_text::INSTRUMENT_NAME, instrument_str()));
40
41     // tempo
42     play(new Audio_tempo(get_tempo_i()));
43
44     // instrument
45     play(new Audio_instrument(instrument_str()));
46 }
47
48 void
49 Staff_performer::do_removal_processing()
50 {
51     Performer::play( audio_staff_p_ );
52     audio_staff_p_ = 0;
53 }
54
55 String 
56 Staff_performer::instrument_str() 
57
58     return Translator::id_str_; 
59 }
60
61 void 
62 Staff_performer::play( Audio_element* p )
63 {
64     if (p->is_type_b(Audio_item::static_name())) {
65         audio_staff_p_->add((Audio_item*)p);
66     }
67     Performer::play(p);
68 }
69