diff --git a/FatBoy.sf2 b/FatBoy.sf2 deleted file mode 120000 index 98553be..0000000 --- a/FatBoy.sf2 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/soundfonts/FatBoy.sf2 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 51d6aeb..dcf0656 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,41 +7,40 @@ use std::sync::Arc; use tinyaudio::prelude::*; fn main() { - // Load the SoundFont. - let mut sf2 = File::open("FatBoy.sf2").unwrap(); - let sound_font = Arc::new(SoundFont::new(&mut sf2).unwrap()); + // Load the SoundFont. + let mut sf2 = File::open("super_small_font.sf2").unwrap(); + let sound_font = Arc::new(SoundFont::new(&mut sf2).unwrap()); - // Setup the audio output. - let params = OutputDeviceParameters { - channels_count: 2, - sample_rate: 44100, - channel_sample_count: 4410, - }; + // Setup the audio output. + let params = OutputDeviceParameters { + channels_count: 2, + sample_rate: 44100, + channel_sample_count: 4410, + }; - // Create the synthesizer. - let settings = SynthesizerSettings::new(params.sample_rate as i32); - let mut synthesizer = Synthesizer::new(&sound_font, &settings).unwrap(); + // Create the synthesizer. + let settings = SynthesizerSettings::new(params.sample_rate as i32); + let mut synthesizer = Synthesizer::new(&sound_font, &settings).unwrap(); - // Play some notes (middle C, E, G). // 16 channels actually // 60=c 64=e 67=g //up to 128velocity though dont go below 50 tbh // 12 notes per octave - synthesizer.note_on(0, 64+12, 127); - //synthesizer.render(&mut left[..], &mut right[..]); // puts in a state of rendering the first loop of these notes + // Play some notes (middle C, E, G). // 16 channels actually // 60=c 64=e 67=g //up to 128velocity though dont go below 50 tbh // 12 notes per octave + synthesizer.note_on(0, 64 + 12, 127); + //synthesizer.render(&mut left[..], &mut right[..]); // puts in a state of rendering the first loop of these notes - // The recycled output buffer per-loop, could be in lamba but that'd be wasteful - let sample_count = (params.channel_sample_count) as usize; - let mut left: Vec = vec![0_f32; sample_count]; - let mut right: Vec = vec![0_f32; sample_count]; - // Start the audio output. Executes channel_sample_count per loop, sample_rate/channel_sample_count per second forever. - let _device = run_output_device(params, { - move |data| { - synthesizer.render(&mut left[..], &mut right[..]); // put in a state of rendering the next loop of these notes - for (i, value) in left.iter().interleave(right.iter()).enumerate() { - data[i] = *value; - } - } - }) - .unwrap(); + // The recycled output buffer per-loop, could be in lamba but that'd be wasteful + let sample_count = (params.channel_sample_count) as usize; + let mut left: Vec = vec![0_f32; sample_count]; + let mut right: Vec = vec![0_f32; sample_count]; + // Start the audio output. Executes channel_sample_count per loop, sample_rate/channel_sample_count per second forever. + let _device = run_output_device(params, { + move |data| { + synthesizer.render(&mut left[..], &mut right[..]); // put in a state of rendering the next loop of these notes + for (i, value) in left.iter().interleave(right.iter()).enumerate() { + data[i] = *value; + } + } + }) + .unwrap(); - // Let it ride - std::thread::sleep(std::time::Duration::from_secs(2)); + // Let it ride + std::thread::sleep(std::time::Duration::from_secs(2)); } - diff --git a/super_small_font.sf2 b/super_small_font.sf2 new file mode 100644 index 0000000..362823d Binary files /dev/null and b/super_small_font.sf2 differ