#[cfg(feature = "midi")]
fn main() -> humster::Result<()> {
use humster::prelude::*;
let mut track = Track::Midi(MidiTrack::new(vec![
MidiEvent::new(60, 80),
MidiEvent::new(64, 90),
]));
struct VelocityBoost(f32);
impl Processor for VelocityBoost {
fn process_midi(&self, track: &mut MidiTrack) {
for event in track.events.iter_mut() {
let boosted = (event.velocity as f32 * self.0).round() as u32;
event.velocity = boosted.min(127) as u8;
}
}
}
let boost = VelocityBoost(1.25);
track.apply(&boost);
if let Some(midi) = track.as_midi() {
for (idx, event) in midi.events().iter().enumerate() {
println!("Event #{idx}: note {}, velocity {}", event.note, event.velocity);
}
}
Ok(())
}
#[cfg(not(feature = "midi"))]
fn main() {
eprintln!("Enable the `midi` feature to run this example.");
}