|
|
@ -1,4 +1,4 @@
|
|
|
|
use std::fs;
|
|
|
|
use std::{fs, io::{stdout, Write}};
|
|
|
|
|
|
|
|
|
|
|
|
use midly::Smf;
|
|
|
|
use midly::Smf;
|
|
|
|
|
|
|
|
|
|
|
@ -18,17 +18,17 @@ fn main() {
|
|
|
|
let bytes = fs::read(FILENAME).expect("Failed to read input file!");
|
|
|
|
let bytes = fs::read(FILENAME).expect("Failed to read input file!");
|
|
|
|
let smf = Smf::parse(&bytes).unwrap();
|
|
|
|
let smf = Smf::parse(&bytes).unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let mut stdout = stdout();
|
|
|
|
|
|
|
|
|
|
|
|
let mut current_on = [false; 32];
|
|
|
|
let mut current_on = [false; 32];
|
|
|
|
|
|
|
|
|
|
|
|
let track = &smf.tracks[0];
|
|
|
|
let track = &smf.tracks[0];
|
|
|
|
print!("const DATA: &[u32] = &[");
|
|
|
|
|
|
|
|
for (_, event) in track.iter().enumerate() {
|
|
|
|
for (_, event) in track.iter().enumerate() {
|
|
|
|
// println!("{}", event.delta);
|
|
|
|
|
|
|
|
let mut delta = event.delta.as_int();
|
|
|
|
let mut delta = event.delta.as_int();
|
|
|
|
while delta >= 96 {
|
|
|
|
while delta >= 96 {
|
|
|
|
delta -= 96;
|
|
|
|
delta -= 96;
|
|
|
|
let word = get_u32(¤t_on);
|
|
|
|
let word = get_u32(¤t_on);
|
|
|
|
print!("0x{:x},", word);
|
|
|
|
stdout.write(&word.to_le_bytes()).ok();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
match event.kind {
|
|
|
|
match event.kind {
|
|
|
|
midly::TrackEventKind::Midi { channel: _, message } => match message {
|
|
|
|
midly::TrackEventKind::Midi { channel: _, message } => match message {
|
|
|
@ -44,17 +44,9 @@ fn main() {
|
|
|
|
current_on[index as usize] = true;
|
|
|
|
current_on[index as usize] = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_ => {
|
|
|
|
_ => {}
|
|
|
|
// println!("event {}: {:?}", i, message);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
_ => {
|
|
|
|
_ => {}
|
|
|
|
// println!("event {}: {:?}", i, event);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
println!("];");
|
|
|
|
|
|
|
|
// for (i, track) in smf.tracks.iter().enumerate() {
|
|
|
|
|
|
|
|
// println!("track {} has {} events", i, track.len());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|