Skip to content

RandomInsano/floaterator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sound Floaterator

I was inspired by some eurorack synth gear to build my own software-defined synth. Because sound libraries usually just want a big old stream of floating point numbers to drive a speaker, that's all this library does. It's a series of 64bit floating-point iterators that you can chain together. Many of them are controlled with virtual knobs and switches.

So far, there are these lovely features:

  1. A broken noise generator (only one frequency)
  2. A Sine Wave generator
  3. A volume filter
  4. An ADSR envelope filter
  5. Control knobs that you can connect in at creation time

Here's a usage example:

    let mut freq = controls::Knob::new(440.0);
    let volume = controls::Knob::new(1.0);

    let generator = Arc::new(RwLock::new(generators::GenSine::new(freq.clone())));
    let envelope = Arc::new(RwLock::new(filters::FilterADSR::new(generator, 200.0, 10.0, 0.6, 100.0)));
    let mut samples = filters::FilterVolume::new(envelope.clone(), volume.clone());

    // TODO: Hide the thread safety away where nobody has to see it
    // TODO: Moar knobs! (Specifically on the ADSR filter)

Currently, I'm piping this stuff through CoreAudio and have a disgusting shim for keyboard entry using Piston to give me a single octave musical keyboard. That'll change eventually, but I'm putting this project on hold until the next SkullSpace synth jam.

Just because I'm not iterating on it doesn't mean I won't accept pull requests though! If you want to contribute, maybe file an issue first so we can discuss coding attack plans.

About

Software Defined Synthesizer

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages