This is my second take on the Steve Reich “Clapping Music” rendition as a scene in Teletype.
I thought that I could post it as a form of “tutorial” explaining each component of the scene, which consists of only 3 scripts, and one pattern.
Connect external clock to INPUT 1 (which will execute script 1 on each trigger)
Connect trigger OUTPUT A to INPUT 2 (which will execute script 2 on each trigger)
Connect trigger OUTPUT B to a VCA or your percussive sound generator
Connect trigger OUTPUT C to a VCA or your percussive sound generator
I set up the pattern as 24 steps, which is an equivalent of two identical bars from the “Clapping Music” (see here: http://www.music.mcgill.ca/~gary/306/week10/clapping.pdf ) You will see that steps 0-11 are the same as steps 12-23. I set this up this way so that I can use the same pattern for the two sequences that constitute the composition. (Short explanation of the structure of the piece is that one sequence repeats the same bar consistently, while the other shifts forward by one step until it reaches the full cycle of 12 shifts and begins to play the same sequence as sequence 1, and the cycle begins again. Here is a visual representation of the two cycling patterns as two rotating discs: https://upload.wikimedia.org/wikipedia/commons/0/07/Steve_Reich_-_Clapping_Music_visualization_disks.png )
This is the “Initializing” script that is automatically executed when the scene is loaded. essentially set up as a “starting point” or a kind of reset for the piece. This can be manually executed by pressing the “widows” + I on the keyboard at any time to restart the piece.
P.N 0 — tells the teletype to work with Pattern 0 (first column on the left in TRACKER mode)
P.L 24 — sets the length of the sequence at 24 steps
Y -1 — sets variable Y to -1 (so that when the script 1 is executed for the first time it will set it to 0, and read the first step of the sequence
Z 0 — sets variable Z to 0
Most of what happens in this script is two counters (Y and Z) that are advancing the steps in the two sequences.
Y ADD Y 1 — using the ADD arithmetic operator it simply adds 1 to whatever the current Y count is, each time this script is executed, which is every time it receives the external clock trigger on INPUT 1.
IF EQ Y 12 : Z ADD Z 1 — an IF modifier checks whether the Y count had reached number 12, and IF it did, it advances the count of variable Z by adding 1 to it’s current count. So, each time a complete sequence of 12 steps is counted on Y, it advances Z by 1.
IF EQ Y 12 : Y 0 — and, when the count of Y reaches 12, it also resets Y back to 0.
IF EQ Z 12 : Z 0 — and the same for variable Z: if it reaches 12, it is reset back to 0.
TR.PULSE 1 — sends a pulse out of trigger OUTPUT 1 which is connected (self-patched) to INPUT 2 on teletype. (This is basically my way of extending this script beyond the 6 lines limit. The content of SCRPT 2 could have easily been sitting in SCRIPT 1.)
T PN 0 Y — sets up variable T which is set to either a 1 or a 0. Using the PN command, it looks at pattern 0, and checks the index position Y (which is a continuous count from 0 to 11).
X P ADD Y Z — sets up variable X sets the index position for this pattern to be a result of addition of variable Y and Z. (So that when variable T begins the second repeat of the 12 step bar at position 1, then variable X begins at position 2 - one step ahead, and on next rotation, two steps ahead etc.)
IF EQ X 1 : TR.PULSE 3 — check current step position in the pattern at index equal to variable X, and see if it is a 1 or a 0. IF it is 1 then send trigger out of OUTPUT C.
IF EQ T 1 : TR.PULSE 2 — check current step position in the pattern at index equal to variable T, and see if it is a 1 or a 0. IF it is 1 then send trigger out of OUTPUT B.
Hopefully this will be helpful to someone here.
If you have any questions, please don’t hesitate to ask.
Also, if you see different ways of approaching these tasks, maybe “cleaner” way of scripting, do share, I would love to learn further. There are always different ways of going about making things happen