use bevy::{
log::{Level, LogPlugin},
prelude::*,
};
use bevy_midix::{midix::prelude::*, prelude::*};
mod key_input;
mod ui;
fn main() {
App::new()
.add_plugins((
DefaultPlugins.set(LogPlugin {
level: Level::INFO,
..default()
}),
MidiPlugin::default(),
))
.add_plugins((key_input::plugin, ui::plugin))
.add_systems(Startup, add_soundfont)
.add_systems(PreUpdate, handle_mididata)
.run();
}
fn add_soundfont(asset_server: Res<AssetServer>, mut synth: ResMut<Synth>) {
synth.use_soundfont(asset_server.load("soundfont.sf2"));
}
fn handle_mididata(midi_input: Res<MidiInput>, synth: Res<Synth>) {
while let Ok(data) = midi_input.read() {
let LiveEvent::ChannelVoice(event) = data.message else {
continue;
};
info!("Data: {:?}", data.message);
synth.handle_event(event);
}
}