This example provides an introduction to using the groove quantize functionality.
Groove quantize is available as part of the Quantize tool. Starting in the piano roll, find a series of events you want to quantize...
...and select them with the Quantize tool.
The Quantize tool defaults to quantizing to the current time grid. Because the grid is on 16ths, and the notes are already 16ths, no quantizing took place. Temper ships with two very basic groove templates, both 1 measure of 4/4 time. Use the morph slider to find the 8th Shuffle Start and 8th Shuffle End shapes.
|8th Shuffle Start|
|8th Shuffle End|
These shapes aren't very thrilling -- you'll definitely want to create your own custom groove shapes. The easiest way to do this is with the Shapify tool.
Create a rhythm you want to groove to...
...and select it with the Shapify tool.
The Shapify tool is used to turn MIDI data into shapes for use in other parts of the system. By default the Shapify tool is creating a generic shape, but this isn't very useful for groove quantizing, so under the Macro section, click the button that says none and choose Groove. There are no other options to choose with a groove macro, so click the Add Shape button to add it to the database.
Now go back to your original events and again select them with the Quantize tool. Using the morph slider, you'll find your new shape is available to select.
Temper performs groove quantizing by looking at each event's location in a measure and then shifting it according to the supplied shape. Look at the groove shape in the above screenshot: Negative values -- everything below the center line at 0 -- says to shift events left, everything above 0 says to shift events right. Wherever the shape crosses the 0 axis corresponds to an event location that does not need to be shifted at all.
The point of this is that you can do creative groove quantizing -- you can morph between grooves, you can attach other shapes to modify the grooves, you can use the Attraction shape to control how much groove is applied at any point along the selection.
Not only does Temper include a full shape editor for constructing your own multipart shapes, but the shapes themselves are plain text .xml files. The factory shapes are located in the shapes/ folder included in the Temper download; user shapes can be found by clicking the Windows Start button and selecting My Documents->Angry Red Planet->Temper->shapes.
If you have any facility with scripting, you can do your own algorithmic shape generation. Let's look at a simple example:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <shape k="email:example" l="Example"> <shape f="1"> <shp k="arp:Envelope"> <pt x="0" y="0" /> <pt x="0.5" y="-0.5" /> <pt x="0.5" y="0" /> <pt x="1" y="-0.5" /> <pt x="1" y="0" /> </shp> </shape> </shape>
This is a complete shape -- save it as an .xml file in your shapes/ folder and it will be available as a groove shape. From now on we'll abbreviate by just looking at the arp:Envelope part of the shape.
So what is the above envelope telling us? If you apply it as a groove on a measure of 4/4 time, you'll see it quantizes everything to half notes: The important thing to pay attention to is when y is 0, which we see is when x is 0 and x is 0.5 -- i.e, at the start and half way through the measure. Everything else is responsible for shifting events to line up with these two quantize points.
Let's look at another example:
<shp k="arp:Envelope"> <pt x="0" y="0" /> <pt x="0" y="0.5" /> <pt x="0.5" y="0" /> <pt x="0.5" y="0.5" /> <pt x="1" y="0" /> </shp>
In this example, we see the y 0 crossing points are still at x values of 0 and 0.5 -- so it's still quantizing to half notes. What's different? Note in the first example that all the values are 0 or less, but in the second, they are all 0 are more. Remember that negative y values shift events left, and positive values shift them right: The first example is quantizing by shifting every event to the nearest left anchor, the second example is quantizing by shifting every event to the nearest right anchor.
One last example:
<shp k="arp:Envelope"> <pt x="0" y="0" /> <pt x="0.25" y="-0.25" /> <pt x="0.25" y="0.25" /> <pt x="0.5" y="0" /> <pt x="0.75" y="-0.25" /> <pt x="0.75" y="0.25" /> <pt x="1" y="0" /> </shp>
Now we see a mix of positive and negative y values: This example is shifting events to which anchor is closest. Notice, also, that the maximum y value dropped in half, from 0.5 to 0.25, representing the fact that an event never needs to shift more than a quarter of the total length of the measure to get to the nearest half note.