]> git.donarmstrong.com Git - lilypond.git/blob - mi2mu/midi-score.cc
partial: 0.0.40.jcn
[lilypond.git] / mi2mu / midi-score.cc
1 //
2 // midi-score.cc -- implement Midi_score
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #include "mi2mu.hh"
7
8 Midi_score::Midi_score( int format_i, int tracks_i, int tempo_i )
9 {
10         format_i_ = format_i;
11         tracks_i_ = tracks_i;
12         tempo_i_ = tempo_i;
13 }
14
15 Midi_score::~Midi_score()
16 {
17 }
18
19 void
20 Midi_score::add_track( Midi_track* midi_track_p )
21 {
22         midi_track_p_list_.bottom().add( midi_track_p );
23 }
24
25 int
26 Midi_score::output_mudela( String filename_str )
27 {
28         mtor << "Lily output to " << filename_str << " ..." << endl;
29
30         int track_i = 0;
31         Lily_stream lily_stream( filename_str );
32         for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ ) {
33                 mtor << "track " << track_i++ << ": " << flush;
34                 i->output_mudela( lily_stream );
35                 lily_stream.newline();
36                 mtor << endl;
37         }
38
39         lily_stream << "score {";
40         lily_stream.newline();
41
42         for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ ) {
43                 lily_stream << "\tstaff { melodic music { ";
44                 lily_stream << i->name_str();
45                 lily_stream << " } }";
46                 lily_stream.newline();
47         }
48
49         lily_stream.indent();
50                 lily_stream << "commands {";
51                 lily_stream.indent();
52                         midi_parser_l_g->midi_time_p_->output_mudela( lily_stream, true );
53                         lily_stream.tnedni();
54                 lily_stream << "}";
55                 lily_stream.newline();
56                 lily_stream << "midi {";
57                         lily_stream.indent();
58                         midi_parser_l_g->midi_tempo_p_->output_mudela( lily_stream, true );
59                         lily_stream.tnedni();
60                 lily_stream << "}";
61                 lily_stream.tnedni();
62
63         lily_stream << "}";
64         lily_stream.newline();
65
66         return 0;
67 }
68
69 void
70 Midi_score::process()
71 {
72         int track_i = 0;
73         for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ )  {
74                 mtor << "track " << track_i++ << ": " << flush;
75                 i->process();
76                 mtor << endl;
77         }
78 }
79