use mseq::{Conductor, Instruction, MidiInParam, MidiNote};
struct MyConductor {}
impl Conductor for MyConductor {
fn init(&mut self, context: &mut mseq::Context) -> Vec<Instruction> {
context.start();
vec![]
}
fn update(&mut self, context: &mut mseq::Context) -> Vec<Instruction> {
let step = context.get_step();
if context.get_step() == 959 {
context.quit();
}
let mut ins = vec![];
if step.is_multiple_of(24) {
println!("BPM: {}", context.get_bpm());
let note = MidiNote {
note: mseq::Note::C,
octave: 4,
vel: 127,
};
ins.push(Instruction::PlayNote {
midi_note: note,
len: 6,
channel_id: 1,
});
}
ins
}
}
fn main() {
env_logger::init();
let midi_in_param = MidiInParam {
ignore: mseq::Ignore::None,
port: None,
slave: true,
};
if let Err(e) = mseq::run(
MyConductor {},
None,
Some(midi_in_param),
) {
println!("An error occured: {:?}", e);
}
}