Regroove is a Max for Live device that generates and applies expression to drum patterns using a learned understanding of rhythm and groove. The characteristics of groove learned by the embedded neural network encapsulate dynamics, microtiming, and syncopation and is ultimately based on many hours of drum rhythms played by session drummers on a 9-piece electronic drum kit. We wanted to avoid making yet another random pattern generator so a focus has been put on enabling interactivity and leveraging the rhythmic understanding of the embedded neural network to generate customized, musical variations on any input pattern. This documentation exists to help you understand how you can interact with the device to find your groove!
You will need Max 8.0.3 or higher to run the Max for Live device; if you have an up-to date version of Live 10+ this should be the default. If you're using Live 9, follow the official Ableton instructions to meet the requirements. If these requirements are satisfied, simply open up Ableton, double click the .amxd device or drag it into a MIDI track. Once the default parameters appear the device is loaded and you're ready to jam!
It's normal that it takes a few moments for the device to initialize, the actual load time depends on your OS and RAM size. Our tests reveal an average of 60 seconds on Windows 10+ and an average of 30 seconds on MacOS. We are aware that most Max for Live devices do not suffer such long loading times, however this is unavoidable for Regroove as we have to load large neural networks into memory. The device has been tested for ARM64 (Mac M1+) compatability.
The pattern matrix represents a 9-by-16 grid of 16th notes, from top to bottom each of the rows represent the different drum heads in a drum kit. The pattern matrix is fully interactive, this means the notes in the matrix are clickable and toggling a note will activate or deactivate it for playback whilst also sending this information to the backend, this allows you to quickly interact with and manipulate your patterns. Additionally, when operating with an activated sync mode, the pattern matrix will always display the currently playing pattern meaning you will be able to observe the patterns generated by the neural network in real-time.
3. High Tom
4. Mid Tom
5. Low Tom
6. Open Hat
7. Closed Hat
Currently, the order that the drum heads appear in is fixed as the neural network has been trained to associate each row index with a specific drum head. However, the device does offer ways to customize what happens for each drum head. At the end of each row you will notice a square toggle button, clicking this allows you to enter Detail Mode which exposes an interface for you to set parameters specific to each drum head (see figure below). At the top left of this view, you can a MIDI note and a "sync" toggle, these allow you to set the output MIDI note and whether this drum head should remain constant or not, respectively. At the bottom left there are four parameters, each of these parameters acts exlusively on the notes present for this drum head, they can be defined as follows:
VelAmp - Scales the velocity linearly
TimeShift - Shifts the time linearly forwards or backwards
VelRand - Randomizes the velocity
TimeRand - Randomizes the microtiming
Lastly, the bars displayed represents the velocity values of each of the notes played on this drum head, to view the microtiming values simply click the "Velocity" button in the bottom right. To exit, Detail Mode you can click the back arrow in the top right of the pane.
Besides clicking notes to enter an input, another useful feature of the pattern matrix is the ability to load a MIDI file into the pattern matrix. Currently we offer a drag-and-drop functionality for this, simply find the MIDI file of interest in the Ableton browser and drop it in (Ableton does not offer the ability to drop MIDI files directly from your built-in file management system). There is two gotchas to this feature, for one only MIDI notes that are currently active as outputs can be parsed from the input MIDI file. Since different VST drum kits offer different MIDI note mapping, there is a good chance that there is some inconsistencies between the target MIDI file and the current MIDI output setup. If you absolutely must use this MIDI file, you can always set the correct MIDI notes for each drum head in Detail Mode. Secondly, although MIDI files of any length can be dropped in the active area, only the first measure of a MIDI clip will be parsed since Regroove can only handle and display one input measure at a time.
With an input pattern defined, we can start thinking about initializing the neural engine. The neural engine is powered by an embedded neural network which generates patterns based on the pattern displayed in the matrix and the parameters specified in the engine pane. In the background, we are actually just asking the model to generate a set of patterns and storing them in memory. This means that the patterns in memory are not automatically updated when you adjust the engine parameters in this space, when you want to have a different set of patterns you need to explicitly re-generate them. This also means that you probably won't be interacting much with this pane when jamming. This configuration step can be compared to having a conversation with your drummer before a session starts; you would start by telling her what kind of rhythm you like, how much variation she should play on top of this rhythm, and how complex the variations should be. When configured properly, your drummer will lay down the right groove allowing you to focus on your own instrument or other parts of the arrangement.
Notewise density is defined as the total number of notes played in a one-bar rhythm. Minimum and maximum density together determine the range of densities that can be expected in the patterns generated. Note that these density values are interpreted relatively as related to the input pattern, in other words the average density is ultimately defined by the input pattern. Another way this can be defined is as complexity, the more notes that exist in a drum pattern the more complex it is.
Random determines the amount of variation present in the patterns generated, as compared to the input pattern. This can be abused in many ways, if you're looking for chaos and crazy drum solos or fills, pump up the random value. However, if you want controlled, minor syncopations of your input pattern, keep this value below 0.3.
One aspect of rhythmic expression is how microtiming and dynamics can be used to enhance a groove, its heavily intertwined with rhythm and tempo. The neural network has learned to ignore tempo and focus on which rhythms are typically associated with certain expression patterns. It follows that when we enter an input pattern, the neural network makes a prediction as to what it thinks are appropriate expression patterns for both dynamics and microtiming. We already exposed Detail Mode, which allows you to visualize and fine-tune these microtiming and dynamics patterns. Besides this fine-grained control, the expression pane offers a way to globally modify the amount of microtiming and dynamics applied to the pattern that's playing. The neural engine is only able to provide a single static prediction as to what the expected groove profile should be, the dials presented in this pane allow you to fine-tune that prediction to suit the groove of your track. We do this because, although the predictions may fit very well in a certain kind of music or a certain tempo, this isn't always the case when extrapolating to any music. Nonetheless we encourage you to try to and find the sweet spot of rhythm, expression, and tempo - it may take a minute but in the end it's a groove that will keep you locked in for days.
The last pane pane is your portal to syncopating the patterns in a way that suits your workflow. Here we allow you to modify the ways that the notes in the pattern interact with one each other to form a musical groove - this can be manipulated by injecting syncopations and density variations.
At the bottom of the pane you can control the loop length of your pattern, you can also clear the displayed pattern if you want to start with a clean slate. To start modifying the pattern, you can turn on syncopation by toggling sync, the dropdown gives you to choice to syncopate patterns in three distinct ways.
snap will syncopate the active pattern each time you trigger the sync button. Whether you're looking for fills or want to see the kind of patterns generated by a specific engine configuration, this is a nice way to manually cycle through the set of generated patterns.
auto will syncopate the active pattern at a given interval. The syncopation interval can be set using the number dropdown in the top right corner of the pane. Currently we only offer naive automation intervals (1, 2, and 4 bars). This is a great setting if you want the device to accompany your playing as it will continuously inject variations into your drum patterns.
toggle, our personal favorite, will syncopate the active pattern only while holding the trigger button. Upon releasing the trigger, the active pattern will snap back to the initial pattern. This mode is great if you want to spice up an existing rhythm with some sparse syncopations or fills.
We try our very best to present a device that works without any flaws, however with any complex software it's difficult to achieve perfection. However, we are always on the lookout for bugs, flaws, or new features, since you as the users are spending the most time with Regroove we encourage you to submit your feedback. We currently monitor for issues on the GitHub project associated with the device, so if anything comes up please go to regroove-m4l and check if someone else had this issue before or submit a new issue.