+ match File::open(filename) {
+ Result::Ok(mut f) => {
+ let mut xm = Vec::new();
+ f.read_to_end(&mut xm).unwrap();
+ return play_xm(&xm);
+ },
+ Result::Err(err) => {
+ println!("Couldn't open module {}: {:?}", filename, err);
+ },
+ }
+ SoundPlayer { device: None }
+}
+
+pub fn hit_event(player: &mut SoundPlayer) -> f32 {
+ use std::ops::Deref;
+ let audio_device_lock = player.device.as_mut().unwrap().lock();
+ let xm_callback = audio_device_lock.deref();
+ let xm = &xm_callback.xm;
+ let n_samples = xm.latest_trigger_of_instrument(0x1D);
+ n_samples as f32 / SAMPLE_RATE as f32