A Rust library for audio oscillators, waveform generation, and noise.
| Source | Description |
|---|---|
NaiveOsc | Simple oscillator without anti-aliasing. Fast but produces aliasing at higher frequencies. |
PolyBlepOsc | Band-limited oscillator using polyBLEP for reduced aliasing. |
NoiseGen | Noise generator with white, pink, and brown noise. Requires noise feature. |
use oscy::{poly_blep::PolyBlepOsc,Oscillator,Waveform};letmut osc = PolyBlepOsc::new(44100.0,440.0,Waveform::Saw);letmut buffer = [0.0f32;512];
osc.fill(&mut buffer);use oscy::{poly_blep::PolyBlepOsc,Waveform};let osc = PolyBlepOsc::new(44100.0,440.0,Waveform::Square);let samples:Vec<f32> = osc.take(1024).collect();Use NaiveOsc when performance is critical and aliasing is acceptable (e.g., low frequencies, or when followed by filtering). Use PolyBlepOsc for cleaner sound at higher frequencies.
use oscy::{naive::NaiveOsc, poly_blep::PolyBlepOsc,Oscillator,Waveform};// Naive: simple and fast, but aliasesletmut naive = NaiveOsc::new(44100.0,2000.0,Waveform::Saw);// PolyBLEP: smooths discontinuities to reduce aliasingletmut blep = PolyBlepOsc::new(44100.0,2000.0,Waveform::Saw);Enable the noise feature in your Cargo.toml:
oscy = { version = "0.1", features = ["noise"] }use oscy::noise::NoiseGen;letmut noise = NoiseGen::pink();let samples:Vec<f32> = noise.take(1024).collect();Available types: white(), pink(), brown().
- Sine
- Saw
- Square
- Triangle
MIT License - see LICENSE for details.