Due date: Oct. 5, 2016
Read and do the first 2 "Getting Started" JUCE tutorials:
as well as the first two "Audio, MIDI & plug-ins" JUCE tutotials:
First, read the Wikipedia page on additive synthesis. Then download the starter code and run it. If everything goes well, you should see the following application:
This is a simple synthesizer based on a sine wave oscillator. Its frequency and its gain can be controlled using sliders and it can be turned on or off using a checkbox.
For this assignment, you will make your own additive synthesizer. The sine wave oscillator is implemented in its own
class (Sine.h
) and can be easily duplicated. As explained in the Wiki page, the idea behind additive synthesis
is to add the signal of multiple sine wave oscillators together to create complex sounds. There is no rule as to how such a
synth should be controled so this part is up to you. For example, the frequency and the gain of each oscillator could be
controlled by independent sliders. Another approach would be to have higher level parameters that control several oscillators
at the same time.
When you make this synth, think of it as a musical instrument (and of yourself as a luthier). Try different mappings
and explore the "sonic capabilities" of your instrument to create different sound textures. Make it easy to play for a
potential performer. Try to use clean coding standards (e.g. when declaring several oscillators, create an array: don't
do this: Sine sine1, sine2, etc.;
).
Optionally, you could try to see how to generate different notes with your synth and automate that process using a random number generator for example. That's what is called algorithmic music. In that case, some of the parameters offered to the user could be the speed at which new notes are generated, their range, etc. Once again, this is totally up to you: just make it musical and make it sound good!