Due Thursday April 12 at noon.
- Using frequency modulation, create an instrument that generates an evolving “soundscape”. Specifically, use a carrier and modulating frequency that are comparable to one another, but vary them using infrasonic low-frequency oscillators. Feel free to also use time-varying filters to further evolve the sound.
Using a combination of FM, envelope shaping, and subtractive synthesis, design a guitar-like instrument. Do this in four steps, as follows:
- First create a pitched signal with a rich source of harmonics by using the oscPartials signal function, where the number of harmonics is set to one-half the sampling rate divided by the fundamental frequency (to avoid aliasing).
- Add a little more richness to the signal by adding a small amount of vibrato.
- Now create an amplitude envelope that suitably creates a “plucking” effect.
- Finally, run the signal through a low-pass filter whose cut-off frequency is initially very high, and then drops to a lower frequency that is a function of the pitch (so that low notes and high notes have similar timbre). This reflects the fact that the higher partials die off more quickly than the lower ones.
- Test your guitar-like sound by playing the first eight bars of Beethoven’s Fur Elise (see below) using your instrument. You are welcome to use p-fields to control your sound, but remember that the first three arguments in the Instr interface are Dur, AbsPitch, and Volume, which should be all that you need.
> module FurElise where > import Euterpea > rh1 = line [e 6 en, ds 6 en, e 6 en, ds 6 en, e 6 en, b 5 en, > d 6 en, c 6 en, a 5 qn] > rh2 = line [c 5 en, e 5 en, a 5 en, b 5 qn] > rh3 = line [e 5 en , gs 5 en, b 5 en, c 6 qn] > rh4 = line [e 5 en] :+: rh1 > rh5 = line [e 5 en, c 6 en, b 5 en, a 5 hn] > rh = rh1 :+: rest en :+: rh2 :+: rest en :+: rh3 :+: > rest en :+: rh4 :+: rest en :+: rh2 :+: rest en :+: rh5 > lh1 = line [a 3 en, e 4 en, a 4 en] > lh2 = line [e 4 en, gs 4 en, b 4 en] > lh3 = lh1 :+: rest dqn :+: lh2 :+: rest dqn :+: lh1 > lh = rest wn :+: lh3 :+: rest dqn :+: rest dhn :+: lh3 > furElise = rh :=: lh