Views
Possible Mentors
-
Hans-Christoph Steiner
-
Andy Farnell
Description
The project aims to create a unified and efficient set of band-limited oscillators to make it easy to create synths that don't have “foldover noise”. This project would include unifying the existing externals and abstractions, as well as possibly porting quality BLOSCS from Csound or other open-source projects. It could implemented either in C or in Pd, but it probably should not be a mix.
Resources to start:
-
creb/blosc~ a C++ implementation of a bandwidth-limited oscillator
-
band-limited square wave discussion on pd-list
-
J09.bandlimited.pd a reference implementation in Pd
-
Predicting and controlling foldover in MSP: Theory and Technique ...
-
s_osc.pd in the RjDj library for an example of bandlimiting using transition splicing
-
synth.osc.saw.bl~.pd bandlimited saw from pdmtl abstractions, using a set of wave tables.
-
synth.osc.square.bl~.pd bandlimited square from pdmtl.
-
synth.osc.triangle.bl~.pd bandlimited triangle from pdmtl.
Required Skills
-
moderate knowledge of digital signal processing theory
-
solid Pd DSP skills
-
if the student desires, this could be implemented in C instead of Pd
Possible Breakdown of Steps
Ideally, this project would end with a complete set of common oscillators bundled together as a library. But each individual object would be useful on its own. So this project is basically made up of a some prep work, then a set of more or less even steps. Here is a possible list of oscillators to include: sine, square, triangle, sawtooth, pwm.