The patches are inspired by James Tenney's Collage #1 and Steve Reich's Piano Phase. They do essentially the same thing (and some year I'll combine them into one.)

Steve Reich, Piano Phase

In Piano Phase, two musically identical motives are looped at slightly different tempos. The result is that the repeated material slides out of phase. When the two join again, the piece ends. This sampling patch allows a files to play at specified rates, automatically looping the file. Each patch gets a bank of nine samples.

Here is the "Reich" qlist:

0 0 comment --------------- STARTUP -----------------;
sample1-read sample1.wav;
0 1 comment --------------- EVENT 1 -------------------;
start-loop1 1590 60 100 1580 1 2753 0 5;
start-loop2 1580 60 100 1580 1 2753 0 5;
0 2 comment --------------- EVENT 2 -------------------;
stop-loop1 bang;
stop-loop2 bang;

Here the first (startup) event asks the first sample to read "sample1.wav" into the first of the nine samples. The second event starts the two loop players and the third stops them. The loop players take arguments as commented on the patch; loop1, for example, gets:

	1590     periodicity of loop
	60       pitch of sample
	100      amplitude of sample
        1580     length of each playback in msec (increase this for overlap)
	1        sample number (agrees with "sample1-read" message in qlist)
	2753     where in sample to start (0 for beginning) in msec
	0        envelope rise time, msec
        5        envelope release time, msec

Tenney, Collage #1

In the qlist for the Tenney example, you get individual invocations of samples instead of loops, more appropriate for montage. The example qlist has:

0 0 # --------------- STARTUP -----------------;
0 1 # --------------- EVENT 1 -------------------;
#      pitch amp duration file-number onset  risetime decaytime pan ;
samp      60  90   1000        1        0        5        5       1;

1000 samp 60 90 1000 1 0000 5 5 5;
1000 samp 60 90 1000 1 1000 5 5 9;
1000 samp 60 90 1000 1 1000 5 5 9;
1000 samp 60 90 350 1 2000 100 100 5;
100 samp 59 90 350 1 2000 100 100 5;
100 samp 58 90 350 1 2000 100 100 5;
100 samp 57 90 350 1 2000 100 100 5;
100 samp 56 90 350 1 2000 100 100 5;
100 samp 55 90 350 1 2000 100 100 5;
100 samp 56 90 350 1 2000 100 100 5;
100 samp 57 90 350 1 2000 100 100 5;
100 samp 58 90 350 1 2000 100 100 5;
100 samp 59 90 350 1 2000 100 100 5;
100 samp 60 90 2000 1 2000 100 1000 5;
1000 samp 58 90 5000 6 0 100 100 5;

Note that the qlist doesn't contain commands to load soundfiles; this is done in the patch, but if you want to load your own they should be as in the Reich example.

To do "live" recording from a qlist, it's easier to use the Manoury example, not this one.

Soundfile Playback

When changing the speed of the soundfile, keep in mind some counter-intuitive facts about this sample reader:

The default, non-transposed speed of a file is "60." This is because this is MIDI for middle C. If you want to play your sample twice as fast, you mean to double its frequency. In terms of pitch, this means that you must transpose up an octave. Therefore, to double the soundfile playback speed, set the pitch at "72", or the MIDI pitch one octave above middle C. Likewise, to halve the speed, transpose down one octave to "48".

When playing a soundfile backwards,