2 staff-performer.cc -- implement Staff_performer
4 (c) 1996, 1997 Jan Nieuwenhuizen <jan@digicash.com>
8 #include "staff-performer.hh"
9 #include "translator.hh"
10 #include "input-translator.hh"
12 #include "midi-def.hh"
13 #include "midi-item.hh"
14 #include "midi-stream.hh"
16 #include "string-convert.hh"
18 IMPLEMENT_STATIC_NAME(Staff_performer);
19 IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer);
20 ADD_THIS_PERFORMER(Staff_performer);
22 Staff_performer::Staff_performer()
29 Staff_performer::~Staff_performer()
35 Staff_performer::header()
38 Midi_text track_name( Midi_text::TRACK_NAME, "Track " + String_convert::i2dec_str( track_i_, 0, '0' ) );
39 midi_track_p_->add( Moment( 0 ), &track_name );
42 Midi_text instrument_name( Midi_text::INSTRUMENT_NAME, instrument_str() );
43 midi_track_p_->add( Moment( 0 ), &instrument_name );
45 Midi_tempo midi_tempo( midi_l_->get_tempo_i( Moment( 1, 4 ) ) );
46 midi_track_p_->add( Moment( 0 ), &midi_tempo );
50 Staff_performer::instrument_str()
52 return Translator::id_str_;
56 Staff_performer::midi_output( Midi_stream* midi_stream_l )
58 *mlog << "[" << track_i_ << "]";
59 *midi_stream_l << *midi_track_p_;
63 Staff_performer::play_event( Midi_item* l )
65 Moment mom = get_mom();
66 Moment delta_t = mom - midi_mom_ ;
68 midi_track_p_->add( delta_t, l );
72 Staff_performer::set_track( Midi_def* midi_l, int& track_i_r )
75 track_i_ = track_i_r++;
76 midi_track_p_ = new Midi_track( track_i_ );