X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore-performer.cc;h=ea27d507b84c9482364ca1f25d7878a1a41cfa24;hb=6a62932652940f4ac2931f75d48796887fbc5fdc;hp=bb05c0f16a88ac815f1b550c1be64e4294639ecc;hpb=a19cd9c5efcc258ac73e34eac5223879393b6b50;p=lilypond.git diff --git a/lily/score-performer.cc b/lily/score-performer.cc index bb05c0f16a..ea27d507b8 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -2,165 +2,103 @@ score-performer.cc -- implement Score_performer source file of the GNU LilyPond music typesetter - + (c) 1996, 1997 Jan Nieuwenhuizen */ -#include #include "score-performer.hh" #include "input-translator.hh" #include "midi-def.hh" -#include "audio-item.hh" #include "audio-column.hh" +#include "audio-item.hh" #include "audio-score.hh" -#include "midi-item.hh" #include "midi-stream.hh" #include "string-convert.hh" #include "debug.hh" -#include "main.hh" #include "score.hh" #include "source-file.hh" #include "source.hh" +#include "audio-staff.hh" IMPLEMENT_IS_TYPE_B1(Score_performer,Performer_group_performer); + ADD_THIS_PERFORMER(Score_performer); + Score_performer::Score_performer() { - midi_l_ = 0; } + Score_performer::~Score_performer() { } + Translator* -Score_performer::ancestor_l( int l ) +Score_performer::ancestor_l(int l) { - return Global_translator::ancestor_l( l ); + return Global_translator::ancestor_l(l); } + int Score_performer::depth_i() const { return Global_translator::depth_i(); } + void Score_performer::finish() { Performer_group_performer::do_removal_processing(); - - - Midi_stream output_stream( midi_l_->outfile_str_, midi_item_l_arr_.size() + 1, 384 ); - *mlog << "MIDI output to " << midi_l_->outfile_str_ << " ..." << endl; - - header( output_stream); -// int track_i = 1; - for (int i=0; i< midi_item_l_arr_.size(); i++) { - Midi_item * it_p = midi_item_l_arr_[i]; - -// if ( it_p->is_type_b( Midi_track::static_name())) -// ((Midi_track*)it_p )->number_i_ = track_i ++; - output_stream<< *it_p; - } - *output_stream.os_p_ << flush; - *mlog << endl; } -void -Score_performer::play( Audio_item* l ) -{ - l->audio_column_l_ = audio_column_l_; - audio_column_l_->add( l ); -} void -Score_performer::play( Midi_item* l ) +Score_performer::play(Audio_element * p) { - midi_item_l_arr_.push( l ); -} - -Moment -Score_performer::get_mom() const -{ - return now_mom_; + if (p->is_type_b(Audio_item::static_name())) { + audio_column_l_->add( (Audio_item*)p); + } else if (p->is_type_b(Audio_staff::static_name())) { + score_l_->audio_score_p_->add_staff( (Audio_staff*)p ); + } + score_l_->audio_score_p_->add(p); } -void -Score_performer::header(Midi_stream &output_stream) -{ - Midi_track midi_track; - - time_t t = time( 0 ); - - // perhaps multiple text events? - String str = String( "Creator: " ) + get_version_str() + "\n"; - - Midi_text creator( Midi_text::TEXT, str ); - midi_track.add( Moment( 0 ), &creator ); - - str = "Automatically generated at "; - str += ctime( &t ); - str = str.left_str( str.length_i() - 1 ); - str += "\n"; - Midi_text generate( Midi_text::TEXT, str ); - midi_track.add( Moment( 0 ), &generate ); - - str = "from musical definition: "; - - str += score_l_->location_str(); - Midi_text from( Midi_text::TEXT, str ); - midi_track.add( Moment( 0 ), &from ); - - Midi_text track_name( Midi_text::TRACK_NAME, "Track " - + String_convert::i2dec_str( 0, 0, '0' ) ); - midi_track.add( Moment( 0 ), &track_name ); - - Midi_tempo tempo ( get_tempo_i() ); - midi_track.add( Moment(0), &tempo); - - output_stream << midi_track; -} void -Score_performer::prepare( Moment m ) +Score_performer::prepare(Moment m) { now_mom_ = m; - audio_column_l_ = new Audio_column( m ); - - score_l_->audio_score_p_->add( audio_column_l_ ); + audio_column_l_ = new Audio_column(m); + score_l_->audio_score_p_->add(audio_column_l_); } + void Score_performer::process() { process_requests(); - prev_mom_ = now_mom_; } + void -Score_performer::set_score(Score* score_l ) +Score_performer::set_score(Score* score_l) { - Global_translator::set_score( score_l ); - midi_l_ = score_l->midi_p_; + Global_translator::set_score(score_l); } + void Score_performer::start() { - // - int track_i = 1; - Performer_group_performer::set_track( track_i ); - // - - if ( midi_l_->outfile_str_ == "" ) - midi_l_->outfile_str_ = default_out_fn + ".midi"; } int Score_performer::get_tempo_i()const { - return midi_l_->get_tempo_i(Moment( 1, 4 )); + return score_l_->midi_p_->get_tempo_i(Moment(1, 4)); }