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