]> git.donarmstrong.com Git - lilypond.git/blob - mi2mu/include/my-midi-parser.hh
release: 0.0.44
[lilypond.git] / mi2mu / include / my-midi-parser.hh
1 //
2 // my-midi-parser.hh -- declare My_midi_parser
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #ifndef MY_MIDI_PARSER_HH
7 #define MY_MIDI_PARSER_HH
8
9
10 int yyparse();
11
12 /** 
13   An interface to the YACC midi parser.
14   (midi_parser)
15  */
16 class My_midi_parser {
17 public:
18     My_midi_parser( String filename_str,Sources * );
19     ~My_midi_parser();
20
21     void add_score( Midi_score* midi_score_p );
22     void error( char const* sz_l );
23     int parse();
24     void forward( int i );
25     Moment mom();
26     void note_begin( int channel_i, int pitch_i, int dyn_i );
27     Midi_event* note_end_midi_event_p( int channel_i, int pitch_i, int dyn_i );
28     int output_mudela( String filename_str );
29     void reset();
30     void set_division_4( int division_4_i );
31     void set_key( int accidentals_i, int minor_i );
32     void set_tempo( int useconds_per_4_i );
33     void set_time( int num_i, int den_i, int clocks_i, int count_32_i );
34
35     int bar_i_;
36     int track_i_;
37     String filename_str_;
38     String copyright_str_;
39     String instrument_str_;
40     String track_name_str_;
41
42     Midi_key* midi_key_p_;
43     Midi_tempo* midi_tempo_p_;
44     Midi_time* midi_time_p_;
45
46 private:
47     I64 now_i64_;       // 31 bits yields tipically about 1000 bars
48
49     static int const CHANNELS_i = 16;
50     static int const PITCHES_i = 128;
51     I64 running_i64_i64_a_[ CHANNELS_i ][ PITCHES_i ];
52
53     Midi_score* midi_score_p_;
54     int division_1_i_;
55
56     char const* defined_ch_C_;
57     int fatal_error_i_;
58     My_midi_lexer* midi_lexer_p_;
59 };
60
61 extern My_midi_parser* midi_parser_l_g;
62
63 #endif // MY_MIDI_PARSER_HH
64