5 #include "my-midi-lexer.hh"
6 #include "my-midi-parser.hh"
7 #include "midi-event.hh"
8 #include "midi-track.hh"
9 #include "midi-score.hh"
23 Midi_event* midi_event_p; // Voice_element* ?
24 Midi_score* midi_score_p; // Input_score* ?
25 Midi_track* midi_track_p; // Input_music* ?
29 %token SYSEX_EVENT1 SYSEX_EVENT2
31 %token SEQUENCE TEXT COPYRIGHT TRACK_NAME INSTRUMENT_NAME LYRIC MARKER CUE_POINT
32 %token END_OF_TRACK TEMPO SMPTE_OFFSET TIME KEY SSME
34 %token<i> INT8 INT16 INT32 INT7_8UNSET INT7_8SET VARINT
35 %token<i> RUNNING_STATUS NOTE_OFF NOTE_ON PROGRAM_CHANGE
38 %type <midi_score_p> header midi_score
39 %type <midi_track_p> track
40 %type <midi_event_p> event
41 %type <midi_event_p> the_event meta_event text_event midi_event sysex_event
42 %type <midi_event_p> running_status note_off note_on program_change
48 midi_parser_l_g->add_score( $2 );
61 HEADER INT32 INT16 INT16 INT16 {
62 $$ = new Midi_score( $3, $4, $5 );
90 META_EVENT the_meta_event {
100 | TEMPO INT8 INT8 INT8 {
102 | SMPTE_OFFSET INT8 INT8 INT8 INT8 INT8 {
104 | TIME INT8 INT8 INT8 INT8 {
154 String notename_str = ( pitch_i % 12 )[ "ccddeffggaab" ];
155 static int accidental_i_a[ 12 ] = { 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 };
156 int accidental_i = accidental_i_a[ pitch_i % 12 ];
157 if ( accidental_i == 1 )
158 notename_str += "is";
159 cout << "note(" << pitch_i << "): " << notename_str << endl;