# Warble Tutorial

The warble function by Alex illustrates the use of AM and FM oscillators to create an "analog" electronic synthesizer sound.

```(defun warble (&optional (dur 1) (pch 60))
(stretch dur
(sum (mult
(env 0.017 0.1 0.004 1 0.7 0.8 1)
(amosc pch (fmosc (hz-to-step 8)
(pwl 0 4 0.2 -4 0.56 9 0.7 0 1 -8 1))))
(mult (stretch 0.96 (env 0.2 0.09 0.07 0.92 0.8 0.6 1))
(amosc pch (fmosc (* pch 1.414)
(pwl 0.2 80 0.5 4 0.9 1120 1 200 1)))))))```

This sound is the sum of two components. To find the two components, look for ```(mult ...)```. Each of these components is the product of an envelope and an AM oscillator. The first one modulates the AM oscillator with a low frequency (about 8 Hz) sinusoid produced by an FM oscillator. The modulator varies in frequency according to a piece-wise linear envelope.

The second component is similar, but uses a much higher modulating frequency in the audio range, producing a ring-modulation effect. Another piece-wise linear envelope sweeps the modulator frequency by as much as 1120 Hz.

## Thicker Texture

A thicker texture can be obtained by playing copies of warble together with slight parameter changes. Here is an example:

```(defun thicker ()
(sim (scale 0.5 (at 0.00 (warble 8 48)))
(scale 0.3 (at 0.05 (warble 8.05 47.9)))))```

## Another FM Sound

The following produces another analog-sounding FM texture:

```(defun mod (dur)
(stretch dur
(mult (pwl 0 1000 .2 200 .5 8000 1 100 1)
(fmosc c4 (pwl 0 1 .5 3.25 1 .74 1)))))

(defun blurp (dur)
(fmosc c3 (mult (osc 07 dur) (mod dur))))```

This example relies on a combination of AM and FM: the output is from an FM oscillator, but its modulator is formed by multiplying (AM) two oscillators. The first is low frequency (about 12 Hz), giving a warbling sound, and the second, generated by ```(mod dur)```, is another FM oscillator. It appears that the modulation generated by the piece-wise linear function is almost insignificant. You might try scaling the expression (pwl 0 1 .5 3.25 1 .74 1) in `mod` by varying amounts to see what happens.

The original duration of `blurp` was 3.1 (seconds), but longer versions are interesting and reveal more detail.

## Yet Another Sound

See Other Sounds Using Ring in Vinal Scratch Tutorial for another example.

/body>