staff 0.11.0

Music theory library with midi, notes, chords, scales, and more
Documentation
use rodio::{OutputStream, Sink, Source};
use staff::{midi, synth::ChordSource, Chord};
use std::time::Duration;

fn main() {
    let (_stream, stream_handle) = OutputStream::try_default().unwrap();
    let sink = Sink::try_new(&stream_handle).unwrap();

    let chord = Chord::major(midi!(C, 4));
    let frequencies = chord
        .into_iter()
        .map(|midi_note| midi_note.frequency() as _);

    let source = ChordSource::builder()
        .spacing_duration(Duration::from_millis(200))
        .build_guitar(frequencies);

    sink.append(
        source
            .take_duration(Duration::from_secs_f32(3.))
            .amplify(0.20),
    );

    sink.sleep_until_end();
}