Downloads

hw1.wav - "Timbrescape" 2:02 16/44.1 WAV 21.5 MB
static1.ck - DX-7 inspired 4-operator FM drone synth with UI
static2.ck
static2.ck
time-varying1.ck - Slowly modulated FM parameters with UI animation
time-varying2.ck
time-varying3.ck
bleepbloop.ck.ck - Bleeps and bloops!

Instructions

The above chuck programs require miniAudicle!

Summary

The object of assignment 1 was to thoroughly explore the timbral landscapes that FM synthesis provides. The idea behind my work was to loosely emulate the functionality of the DX-7 synthesizer in order to follow along with the "X-amples" in John Chowning's book FM Theory and Applications by Musicians for Musicians.

The chuck programs are comprised of four FM operators connected in series, and the frequency of each operator is expressed as a multiple of the fundamental frequency. The programs make use of the MAUI api, providing sliders for operator frequency and modulation index. I also included a button that outputs the silder values as chuck code that can be copied back into the program to initialize the parameters. Thereofre, I was able to cover a lot of sonic ground with only very minor code changes.

Modulating with integer multiples of the fundamental led to interesting and unexpected timbres, as my prior experience with frequency modulation consisted of tuning oscillators to arbitrary frequencies. Another interesting discovery is that operators tuned in this manner will contribute distinct effects based on thier phases. In order to capture this, I also added buttons to randomize and synchronize operator phases, which came in handy when composing the timbrescape.

Challenges

Because the synthesis is based on whole-number frequency ratios, an algorithm had to be implemented to cause the MAUI sliders to 'snap' to integer values:

fun void snapToInt(MAUI_Slider s)
{
    s.value() => float v;
    while((v $ int) > 0)
    {
       1 -=> v;
    }

    if (Std.fabs(v) < 0.05)
       s.value(s.value() - v);
}