/synth

A polyphonic Synth type whose multiple oscillators generate sound via amplitude and frequency envelopes, implemented in Rust.

Primary LanguageRustMIT LicenseMIT

synth Build Status Crates.io Crates.io

A polyphonic Synth type whose multiple oscillators generate sound via amplitude and frequency envelopes.

Features

  • Sine, Saw, SawExp, Square, Noise and NoiseWalk waveforms.
  • Amplitude and frequency envelopes with an unlimited number of points.
  • Unlimited number of oscillators (each can have unique waveforms and amplitude and frequency envelopes).
  • Monophonic and Polyphonic modes (unlimited number of voices).
  • Simple note_on(pitch_in_hz, velocity) and note_off(pitch_in_hz) methods.
  • Per-channel amplitude and a stereo panning helper method.
  • "Stereo spread" for automatically spreading multiple voices evenly across the stereo image.
  • Per-voice portamento.
  • Per-voice detuning.
  • Multi-voice (unison) support in Mono mode.
  • Legato and Retrigger Mono modes.
  • Warbliness Oscillator builder method that uses gaussian noise to model the "warped-old-hardware-synth" sound.
synth.audio_requested(buffer, SETTINGS),

See an example here.