@@ -92,7 +92,7 @@ fn convert_to_midi(parse_result: &Parse2Result) -> Vec<Vec<TrackEvent<'static>>>
9292 let raw_track = & parse_result. strings [ i] ;
9393 let mut delta_carry: u32 = 0 ;
9494 for ( tick_idx, raw_tick) in raw_track. iter ( ) . enumerate ( ) {
95- match raw_tick. element {
95+ match & raw_tick. element {
9696 Fret ( fret) => {
9797 let pitch = fret + string_freq[ & string_name] ;
9898 let ( note_on, note_off) = gen_note_events ( pitch. into ( ) , delta_carry. into ( ) ) ;
@@ -106,6 +106,12 @@ fn convert_to_midi(parse_result: &Parse2Result) -> Vec<Vec<TrackEvent<'static>>>
106106 delta_carry = 0 ;
107107 tracks[ i] . push ( note_on) ;
108108 tracks[ i] . push ( note_off) ;
109+
110+ let pitch = pitch + 1 ;
111+ let ( note_on, note_off) = gen_note_events ( pitch. into ( ) , delta_carry. into ( ) ) ;
112+ delta_carry = 0 ;
113+ tracks[ i] . push ( note_on) ;
114+ tracks[ i] . push ( note_off) ;
109115 }
110116 FretBendTo ( from) => {
111117 let pitch = from + string_freq[ & string_name] ;
@@ -125,7 +131,6 @@ fn convert_to_midi(parse_result: &Parse2Result) -> Vec<Vec<TrackEvent<'static>>>
125131 tracks[ i] . push ( note_off) ;
126132 }
127133 Rest => delta_carry += LENGTH_OF_EIGHT ,
128- // dead notes are purely cosmetic in this implementation
129134 DeadNote => ( ) ,
130135 }
131136 }
@@ -136,6 +141,7 @@ fn convert_to_midi(parse_result: &Parse2Result) -> Vec<Vec<TrackEvent<'static>>>
136141 }
137142 tracks
138143}
144+
139145fn gen_note_events < ' a > ( key : u7 , initial_delta : u28 ) -> ( TrackEvent < ' a > , TrackEvent < ' a > ) {
140146 let note_on = TrackEvent {
141147 delta : initial_delta,
0 commit comments