This is an example of a patch loaded in a poly~ which uses midi values to load and transpose samples of guitar strings in a groove~. This patch is used as an abstraction inside of the Sampling Synthesizer in Max patch which includes pitch bend and mod wheel functionality and contains the buffer~ objects that the groove~ in this patch refers to.
The example shows how to display the note value of a midi note input in a jit.window as a rectangle. The x position of the rectangle is determined by the value of the midi note input.
This example shows a way to visualize the pitch of a MIDI note on the x axis of a lcd object. The same thing could be done in Jitter with jit.lcd. Whenever you're trying to visualize music or sound, some decisions have to be made about how parameters from one domain (music) will be mapped to the other domain (image). In this case, we've decided to visualize pitch in terms of a circle's left-to-right position.
Following the “Tap Tempo” example, this is a translation of that patch it into a Max for Live device that controls the Live transport (using the mouse instead of the t key). For the purpose of the example demonstration the code that would reside inside an amxd file is included here inside a Max patch, so you can just see in Max without having to load it into Live.
This example shows a super simple tap tempo implementation. The patch alters the transport tempo based on the rate at which you tap the “t” key. This method simply takes the average of the most recent three time intervals between the most recent four taps. So once you tap four times, it will set the transport tempo to your tempo, and if you keep tapping it responds to your changes but takes a couple beats to move gradually to your new tempo.
If you want to detect when a number has occurred that fits within a particular range, you'll want to use logical operators to test conditions such as is less than, is less than or equal to or is greater than this and less than that. Most logical operators send out the number 1 (meaning true) if the condition is met, and 0 otherwise.
The easiest way to cut a two-dimensional matrix into equal-sized rectangular segments is with jit.scissors. You initialize the jit.scissors object's rows and/or columns attribute, and the object will be created with enough outlets to send each segment out a separate outlet.
Instead of the user entering a tempo value by hand, it’s possible to have the computer measure the tempo at which the user is tapping the beat. Do do that, you simply need to measure the time difference between two events (taps).
You can assign input data to have a different function at different times, simply by sending it to different parts of your program. For example, if you have a control device such as a MIDI keyboard or other MIDI controller with a limited number of keys, buttons, knobs, or faders, you can assign one control element to be the mode selector that changes the functionality of all the other elements.