X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faudio-score.cc;h=27f82a074699a413b34df8070d406ed297b77e97;hb=6a62932652940f4ac2931f75d48796887fbc5fdc;hp=8094b3e369a07eecd4f81fe6396a9eed8b1c6e48;hpb=a19cd9c5efcc258ac73e34eac5223879393b6b50;p=lilypond.git diff --git a/lily/audio-score.cc b/lily/audio-score.cc index 8094b3e369..27f82a0746 100644 --- a/lily/audio-score.cc +++ b/lily/audio-score.cc @@ -6,49 +6,98 @@ (c) 1997 Jan Nieuwenhuizen */ +#include #include "debug.hh" +#include "string.hh" +#include "string-convert.hh" +#include "main.hh" #include "midi-def.hh" +#include "midi-item.hh" +#include "midi-stream.hh" #include "audio-column.hh" +#include "audio-staff.hh" #include "audio-score.hh" +#include "score.hh" -Audio_score::Audio_score( Midi_def* l ) +Audio_score::Audio_score( Score* l ) { - midi_l_ = l; + score_l_ = l; } void -Audio_score::play( Audio_item* i, Audio_column* c ) +Audio_score::add( Audio_column* p ) { - assert( c ); - assert( i ); + p->audio_score_l_ = this; + audio_column_p_list_.bottom().add(p); +} - c->add( i ); -// typeset_element( i ); +void +Audio_score::output( Midi_stream& midi_stream_r ) +{ + int tracks_i = audio_staff_l_list_.size() + 1; + // ugh + int clocks_per_4_i = 384; + midi_stream_r << Midi_header( 1, tracks_i, clocks_per_4_i ); + output_header_track( midi_stream_r ); + int n = 1; + for ( PCursor i( audio_staff_l_list_ ); i.ok(); i++ ) + i->output( midi_stream_r, n++ ); } void -Audio_score::add( Audio_column* p ) +Audio_score::output_header_track( Midi_stream& midi_stream_r ) { - p->audio_score_l_ = this; - audio_column_p_list_.bottom().add(p); + 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( score_l_->midi_p_->get_tempo_i( Moment( 1, 4 ) ) ); + midi_track.add( Moment(0), &tempo); + + midi_stream_r << midi_track; +} + +void +Audio_score::add_staff( Audio_staff* l ) +{ + audio_staff_l_list_.bottom().add( l ); } -#if 0 void -Audio_score::output(Tex_stream &ts) +Audio_score::add(Audio_element *p) { - ts << "\n "<< midi_l_->lookup_l()->texsetting << "%(Tex id)\n"; - ts<< super_elem_l_->TeX_string(); - ts << "\n\\EndLilyPondOutput"; + audio_elem_p_list_.bottom().add( p); } -#endif void Audio_score::print() const { #ifndef NPRINT mtor << "Audio_score { "; - midi_l_->print(); + score_l_->midi_p_->print(); mtor << "\ncolumns: "; for ( PCursor i( audio_column_p_list_ ); i.ok(); i++ ) i->print(); @@ -59,15 +108,5 @@ Audio_score::print() const void Audio_score::process() { -#if 0 - clean_cols(); - print(); - *mlog << "Preprocessing elements... " <