]> git.donarmstrong.com Git - lilypond.git/blob - lily/staff-performer.cc
release: 0.0.78
[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 description
52     Midi_text instrument_name( Midi_text::INSTRUMENT_NAME, instrument_str() );
53     midi_track_p_->add( Moment( 0 ), &instrument_name );
54
55     // set instrument :-)
56     // lieve wendy, nu heb je mijn track_i_ / get_staff_i weggehaald...
57     // zie ook note-performer: ugh
58     // ugh, need to know channel (===track===staff) too
59     int channel_i = 0;
60     Midi_instrument instrument( channel_i, instrument_str() );
61     midi_track_p_->add( Moment( 0 ), &instrument );
62
63     Midi_tempo midi_tempo( get_tempo_i(  ) );
64     midi_track_p_->add( Moment( 0 ), &midi_tempo );
65 }
66
67 String 
68 Staff_performer::instrument_str() 
69
70     return Translator::id_str_; 
71 }
72
73 void 
74 Staff_performer::play_event( Midi_item* l )
75 {
76     Moment mom = get_mom();
77     Moment delta_t = mom - midi_mom_ ;
78     midi_mom_ += delta_t;
79     midi_track_p_->add( delta_t, l);
80 }
81