The second part of the problem asks for a “gesture generator” with several options. It is best to pursue each option as a separate patch. All versions must start with a MIDI key press, use the MIDI key as the first note of the gesture, and use a single durational (time) value. These instructions mean that all versions of the patchers will:
- Only a noteon message can start the timing unit (ok, by now we know it is a metro). You need a combination of two objects to get rid of noteoff commands.
- The metro object must use musical time values, which requires the use of a transport object and specific attribute arguments for the metro. I’m willing to waive this requirement if you’re still struggling with this patcher. You can use a metro with millisecond timing.
- The gesture plays in order, so you need to count bangs.
- You need to pass the MIDI note number to an add box to add to the output of the stored intervals in the table (like the arpeggiator).
The first version of the patcher shuts off at the end of the gesture (or stored interval sizes). To do so, you need to count events, determine when you reach the maximum number of events, and use that determination to stop the metro. It doesn’t matter how long you hold the MIDI key, so the noteoff message can be ignored.
The second version repeats the last note until you release the MIDI key. This version of the patcher will require you to keep the metro running, but bypass the counter once you reach the maximum number (end of gesture). There is a graphic object that performs this function. Use the result of the counter maximum to trigger the switch to route bangs away from the counter. You should know from the tutorials that an integer number object displays the last number passed through, and also stores it. A bang to a number box will cause the number box to re-output its stored number (the last number that passed through). In this version of the patcher, you hold the MIDI key down to play the gesture, and release it to stop. You already know from the first part of the assignment how to stop a metro using key velocity. Make sure you control a toggle leading to the metro so that you can pass the message to another control device for routing.
The third version of the patcher “repeats the last note with variable durations, chosen from a limited set (2 to 4) of values, related by multiples of the durational value used for the gesture.” This version requires that you change durations in the metro once you reach the maximum count. You can use the same determination that you use to switch the routing of bangs to also turn on a random object that bangs a table with stored multiples of the base value (1, 3, 4, 8, for example).
If you haven’t figured the third version, I’ll go over it in class on Friday.
The third part of the assignment is remarkably similar to one of the Day05 demo patchers.