]> git.donarmstrong.com Git - lilypond.git/blob - m2m/midi-score.cc
release: 0.0.39-1
[lilypond.git] / m2m / midi-score.cc
1 //
2 // midi-score.cc -- implement Midi_score
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #include "m2m.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         Lily_stream lily_stream( filename_str );
31         for ( PCursor<Midi_track*> midi_track_l_pcur( midi_track_p_list_.top() ); midi_track_l_pcur.ok(); midi_track_l_pcur++ ) {
32                 midi_track_l_pcur->output_mudela( lily_stream );
33                 lily_stream.newline();
34         }
35
36         lily_stream << "score {";
37         lily_stream.newline();
38
39         for ( PCursor<Midi_track*> midi_track_l_pcur( midi_track_p_list_.top() ); midi_track_l_pcur.ok(); midi_track_l_pcur++ ) {
40                 lily_stream << "\tstaff { melodic music { ";
41                 lily_stream << midi_track_l_pcur->name_str();
42                 lily_stream << " } }";
43                 lily_stream.newline();
44         }
45
46         lily_stream.indent();
47                 lily_stream << "commands {";
48                 lily_stream.indent();
49                         midi_parser_l_g->midi_time_p_->output_mudela( lily_stream, true );
50                         lily_stream.tnedni();
51                 lily_stream << "}";
52                 lily_stream.newline();
53                 lily_stream << "midi {";
54                         lily_stream.indent();
55                         midi_parser_l_g->midi_tempo_p_->output_mudela( lily_stream, true );
56                         lily_stream.tnedni();
57                 lily_stream << "}";
58                 lily_stream.tnedni();
59
60         lily_stream << "}";
61         lily_stream.newline();
62
63         return 0;
64 }
65
66 void
67 Midi_score::process()
68 {
69         for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ ) 
70                 i->process();
71 }
72