From CCRMA Wiki
Jump to: navigation, search

Final Project Proposal:

I'm a fan of the Serum synthesizer, but I've run into issues using it with my DawDreamer. For example, with Serum and DawDreamer, I can load presets and change various parameters such as the amount of modulation from Envelope 1 to Oscillator 2's panning, but I can't change the routing itself. The routing is baked into the preset. In other words, the modulation matrix can't change, only the amount of modulation for each entry in the table. I want some kind of API in which I can decide the routing.

The second major issue is that I can't load a Wavetable from Python. The wavetable is also baked into the preset in some non-modifiable way.

The third issue is not related to sound design but instead to using the sound signals for visual design. I'd like to have access to all of the intermediate signals in a modular synthesis setup. So if there are envelopes and LFOs, I'd want an audio-rate stream of all of them in addition to the final stereo signal. I intend to use these signals some time later for real-time audio-reactive visual design.

To summarize, I plan on making a wavetable synthesizer with many features:

  • 2D Wavetable oscillators
  • The 2D wavetables can be set via Python or some C++ API.
  • Polyphony
  • Various filters and FX
  • API for modular routing (modular synthesis)
  • LFOs and Envelopes whose outputs are accessible

As a spinoff project, once I figure out some of the wavetable stuff, it would also be great to have a basic "sampler" instrument such as the one in Ableton Live or Kontakt. I want to be able to provide samples via Python or C++. I'd then want to have some of the basic Sampler features such as ADSR envelopes to control volume, panning, filter cutoffs etc.

I need to look at the inner workings of surge-python because it might have a good example of setting modular routing via Python.

Weeks 1-3:

Week 4:

Anti-Alias techniques