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
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!
Wikipedia has a decent explanation: note "operators"
Some nice samples and a tutorial are here
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
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)
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 demo
Plucked 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