synth 0.5.2

A polyphonic Synth type whose multiple oscillators generate sound via amplitude and frequency envelopes.
docs.rs failed to build synth-0.5.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: synth-0.11.0

synth Build Status

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.
  • Uses sound_stream and its Sample trait and in turn is generic over any bit-depth or sample format.
for event in stream.by_ref() {
    match event {
        Event::Out(buffer) => synth.audio_requested(buffer, SETTINGS),
        ..
    }
}

See an example here.

PortAudio

synth uses PortAudio as a cross-platform audio backend. The rust-portaudio dependency will first try to find an already installed version on your system before trying to download it and build PortAudio itself.

License

MIT - Same license as PortAudio.