]> git.donarmstrong.com Git - lilypond.git/blob - mi2mu/midi-score.cc
d8bc7bb276413b14a0de0273896863d8a0e656b4
[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         tor( NORMAL_ver ) << "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                 tor( NORMAL_ver ) << "track " << track_i++ << ": " << flush;
34                 i->output_mudela( lily_stream );
35                 lily_stream.newline();
36                 tor( NORMAL_ver ) << endl;
37         }
38
39         lily_stream << "\\score{";
40         lily_stream.indent();
41                 for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ ) {
42                         lily_stream << "\\staff{ melodicregs ";
43                         lily_stream << i->name_str();
44                         lily_stream << " }";
45                         lily_stream.newline();
46                 }
47                 lily_stream.newline();
48                 lily_stream << "\\paper{";
49                         lily_stream.indent();
50                         lily_stream << "\\unitspace 20\\mm";
51                         lily_stream.tnedni();
52                 lily_stream << "}";
53                 lily_stream << "\\midi{";
54                         lily_stream.indent();
55                         // not use silly 0 track
56                         midi_track_p_list_.bottom()->midi_tempo_p_->output_mudela( lily_stream, true );
57                         lily_stream.tnedni();
58                 lily_stream << "}";
59                 lily_stream.tnedni();
60
61         lily_stream << "}";
62         lily_stream.newline();
63
64         return 0;
65 }
66
67 void
68 Midi_score::process()
69 {
70         int track_i = 0;
71         for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ )  {
72                 tor( NORMAL_ver ) << "track " << track_i++ << ": " << flush;
73                 i->process();
74                 tor( NORMAL_ver ) << endl;
75         }
76 }
77