A sequence of notes is often specified by a "note list," consisting of times, durations, other transformations, and a parameterized behavior to generate the sound. The following is an example:
(defun ringpat1 () (scale 0.8 (sim (scale 0.6 (at 0.0 (ring 0.6 45 2))) (scale 0.5 (at 0.2 (ring 0.8 40 1.5))) (scale 0.8 (at 0.6 (ring 1 44 1))) (scale 0.7 (at 0.8 (ring 1.2 32 0.8))) )))
Notice that there are 4 sounds. The sounds are shifted in time using the at
transformation, and all four sounds are combined using the sim
construction.
Because of the time shifts, the sounds do not take place simultaneously, but they may
overlap somewhat.
Durations are specified by the first parameter to ring
, so no stretch
transformations are used here. Each sound is individually scaled.
To play this sound, you need the ring
function from Vinal Scratch Tutorial. Then you can type:
(play (ringpat1))
Try the following combination, which plays a short and long version of ringpat1
at about the same time:
(play (sim (scale 1.0 (at 0.0 (ringpat1))) (scale 0.7 (at 0.05 (stretch 1.5 (ringpat1)))) ))