From fa9c4c7b8557e7229bc7f66b3703d5292e515435 Mon Sep 17 00:00:00 2001 From: D4VID Date: Thu, 10 Jul 2025 16:13:28 +0200 Subject: [PATCH] Use edited midi file --- media/bad_apple.mid | Bin 0 -> 22165 bytes src/main.rs | 38 +++++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 media/bad_apple.mid diff --git a/media/bad_apple.mid b/media/bad_apple.mid new file mode 100644 index 0000000000000000000000000000000000000000..563f88616252329de85f4b3c7dbcddec54798479 GIT binary patch literal 22165 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 u32 { @@ -25,9 +31,14 @@ fn main() { let mut current_on_upper = [false; 32]; // higher notes let mut current_on_lower = [false; 32]; // lower notes + let highest_upper_note = HIGHEST_NOTE; + let lowest_upper_note = HIGHEST_NOTE - 31; + let highest_lower_note = HIGHEST_NOTE - 32; + let lowest_lower_note = HIGHEST_NOTE - 63; + let track = &smf.tracks[TRACK]; for (_, event) in track.iter().enumerate() { - // println!("{}", event.delta); + eprintln!("delta: {}", event.delta); let mut delta = event.delta.as_int(); while delta >= STEP { delta -= STEP; @@ -40,28 +51,29 @@ fn main() { midly::TrackEventKind::Midi { channel: _, message } => match message { midly::MidiMessage::NoteOff { key, vel: _ } => { let key_i = key.as_int() as usize; - if key_i >= 59 && key_i <= 90 { - current_on_upper[key_i-59] = false; + if key_i >= lowest_upper_note && key_i <= highest_upper_note { + current_on_upper[key_i - lowest_upper_note] = false; } - if key_i >= 27 && key_i <= 58 { - current_on_lower[key_i-27] = false; + if key_i >= lowest_lower_note && key_i <= highest_lower_note { + current_on_lower[key_i - lowest_lower_note] = false; } } midly::MidiMessage::NoteOn { key, vel: _ } => { let key_i = key.as_int() as usize; - if key_i >= 59 && key_i <= 90 { - current_on_upper[key_i-59] = true; + eprintln!("key: {}", key_i); + if key_i >= lowest_upper_note && key_i <= highest_upper_note { + current_on_upper[key_i - lowest_upper_note] = true; } - if key_i >= 27 && key_i <= 58 { - current_on_lower[key_i-27] = true; + if key_i >= lowest_lower_note && key_i <= highest_lower_note { + current_on_lower[key_i - lowest_lower_note] = true; } } _ => { - // println!("event {}: {:?}", i, message); + // eprintln!("event {}: {:?}", i, message); } }, _ => { - // println!("event {}: {:?}", i, event); + // eprintln!("event {}: {:?}", i, event); } } }