]> git.donarmstrong.com Git - lilypond.git/blob - lily/staff-performer.cc
release: 0.0.77.jcn1
[lilypond.git] / lily / staff-performer.cc
1 /*
2   staff-performer.cc -- implement Staff_performer
3
4   (c) 1996, 1997 Jan Nieuwenhuizen <jan@digicash.com>
5  */
6
7
8 #include "staff-performer.hh"
9 #include "translator.hh"
10 #include "input-translator.hh"
11 #include "debug.hh"
12 #include "midi-def.hh"
13 #include "midi-item.hh"
14 #include "midi-stream.hh"
15 #include "string.hh"
16 #include "string-convert.hh"
17
18
19 IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer);
20 ADD_THIS_PERFORMER(Staff_performer);
21
22 Staff_performer::Staff_performer()
23 {
24     midi_mom_ = 0;
25     midi_track_p_ = new Midi_track;
26 }
27 void
28 Staff_performer::do_creation_processing()
29 {
30     header();
31 }
32
33 void
34 Staff_performer::do_removal_processing()
35 {
36     Performer::play_event( midi_track_p_);
37 }
38
39 Staff_performer::~Staff_performer()
40 {
41     delete midi_track_p_;
42 }
43
44 void
45 Staff_performer::header()
46 {
47     // set track name
48     Midi_text track_name( Midi_text::TRACK_NAME, instrument_str());
49     midi_track_p_->add( Moment( 0 ), &track_name );
50
51     // set instrument :-)
52     Midi_text instrument_name( Midi_text::INSTRUMENT_NAME, instrument_str() );
53     midi_track_p_->add( Moment( 0 ), &instrument_name );
54
55     
56     Midi_tempo midi_tempo( get_tempo_i(  ) );
57     midi_track_p_->add( Moment( 0 ), &midi_tempo );
58 }
59
60 String 
61 Staff_performer::instrument_str() 
62
63     return Translator::id_str_; 
64 }
65
66 void 
67 Staff_performer::play_event( Midi_item* l )
68 {
69     Moment mom = get_mom();
70     Moment delta_t = mom - midi_mom_ ;
71     midi_mom_ += delta_t;
72     midi_track_p_->add( delta_t, l);
73 }
74