A polyphonic Synth type whose multiple oscillators generate sound via amplitude and frequency envelopes, implemented in Rust.
Rust
Switch branches/tags
Nothing to show
Clone or download
mitchmindtree Merge pull request #47 from mitchmindtree/abstract_instrument
[Breaking Change] Abstract `Instrument` type into its own crate and use it as a dependency. Replace rustc-serialize with serde_serialization feature. Move dsp-chain behind feature.
Latest commit 74c53d7 Feb 12, 2017

README.md

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.fill_slice(frame_slice, sample_hz),

See an example here.