embedded-audio-core 0.2.1

no_std duty-modulated PWM audio: effect banks, tiered DSP, and mixing for Cortex-M
Documentation
use embedded_audio::{AudioEngine, FmMapper, Waveform, markham};

#[test]
fn markham_profile_clamps_frequency() {
    assert_eq!(markham::clamp_frequency(100), 250);
    assert_eq!(markham::clamp_frequency(9000), 8000);
    assert_eq!(markham::clamp_frequency(1000), 1000);
}

#[test]
fn markham_fm_tick_tone() {
    let mut engine = AudioEngine::new_markham();
    engine.play_tone(440, 100, Waveform::Sine);
    let tick = engine.tick_fm();
    assert!(tick.active);
    assert!((430..=450).contains(&tick.frequency_hz));
}

#[test]
fn markham_fm_vco_silence() {
    let mapper = FmMapper::markham();
    let tick = mapper.map_pcm(0);
    assert!(!tick.active);
}