Advanced Techniques
FM Synthesis
Old idea for making interesting sounds with cheap hardware
Now used digitally because easier to implement accurately
Idea: Think about an LFO being used to provide vibrato
$$ y[t] = \sin(\omega_0 (t + a ~ \sin(\omega_l t)) $$
Well, what happens when $w_l$ gets above 100Hz or so?
Turns out, can be modeled as a bunch of harmonics and subharmonics of $w_0$
This is the same as FM radio: use an audio signal to make vibrato on a radio signal!
FM Refs
Wikipedia has a decent explanation: note "operators"
Some nice samples and a tutorial are here
The classic synth is the Yamaha DX7. Dexed is a faithful open-source emulation
FM Demo
Let's look at some Python code that implements a very simple 2-operator FM synth
Note how harmonics and near-harmonics (and subharmonics and near-subharmonics work)
Note how amplitude works
Granular Synthesis
Recall our discussion of sound time scales earlier
1-50ms is an interesting duration: long enough that tones will be heard as tones, but too short to hear individual notes
Idea: Break a sample into overlapping chunks in this time range and treat them as separate "music particles" or "granules"
Various games can now be played with the granules: pitch shifting (resample the individual granuals), time stretching (replicate or omit granules), fun synthesis effects (e.g. emit randomly-sampled granules)
Granular Refs
Physical Modeling
Idea: Quit trying to be so clever. Build a model of the instrument and run the model to make simulated sound
Way harder than sampling synth, but likely to produce way better results
Pipe organ is pretty close to perfect: Hauptwerk has some amazing commercial software combining sampling (for individual pipes) with physical modeling (for the instrument as a whole)
Piano isn't bad:
has a nice demoPlucked string modeling is kind of terrible in general: Karplus-Strong is basic plan.
Proper modeling requires solving acoustic systems; really hard math and physics. Drums are an active area of research