Due date: Oct. 5, 2016

Lab and Readings

Read and do the first 2 "Getting Started" JUCE tutorials:

as well as the first two "Audio, MIDI & plug-ins" JUCE tutotials:

Assignment: Making an Additive Synthesizer

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!


Final Deliverable


  • Rahul Agnihotri
  • Ziheng Chen
  • Orchisama Das
  • Walker Davis
  • Graham Davis
  • Travis Geis
  • Victoria Grace
  • Cheng Gu
  • Ron Guglielmone
  • Matt Herrero
  • Mark Hertensteiner
  • Dylan Hunn
  • Adam Jaffe
  • Megan Jurek
  • Hemanth Kini
  • Paula Kusumaputri
  • Nolan Lem
  • Yuan Li
  • Prateek Murgai
  • Michael Olsen
  • Mark Rau
  • Jeff Setter
  • Juan Sierra
  • Hanze Tu
  • Quint Underwood
  • Maggie Xu
  • Shenli Yuan