Skip to content

Commit 0b3dd7a

Browse files
committed
midi: generate bends
1 parent a1a99a2 commit 0b3dd7a

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/backend/midi/mod.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
139145
fn 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

Comments
 (0)