Regroove is a Max for Live device that generates and syncopates drum pattern using a learned understanding of rhythm and groove. The representation of groove learned by the algorithm encapsulates dynamics, microtiming, and syncopation and is ultimately based on hundreds of 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 the embedded neural network works and how you can interact with the device to find your groove!
Throughout the documentation we cover features present in both V1 and V2 of the device. V1 is available for free for anyone to start playing with and introduces the user to the device and working with the syncopation engine. We're currently working actively on V2 which will enable expressive dynamics and microtiming - the documentation will be updated as development continues so it might be that you come across content that is only available in V2. If you're interested in V2 feel free to send us a message, we're always looking for new people to beta test the software.
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 the requirements above 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. Loading fat deep learning models into memory is unavoidable in this case.
The pattern matrix is 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.
3. High Tom
4. Mid Tom
5. Low Tom
6. Open Hat
7. Closed Hat
Currently, this order is fixed as the neural network has been trained to associate each row with a specific drum head. However, at the start of each row you will notice a MIDI note defined for each row, this is customizable allowing you to route the notes for that row to the correct MIDI note on your drum machine or drum kit. Secondly, you will notice that each row has a toggle button, when deactivated this means that this row will remain fixed and not change even if the rest of the pattern is syncopated - for example, you could deactivate the kick if you want to keep your low-end groove in check whilst syncopating the rest of the drums.
All the nodes in the matrix are clickable, this allows you to quickly interact with and manipulate your patterns. Additionally, with syncopation activated, the pattern matrix will always display the currently playing pattern meaning you will be able to observe the generated patterns in real-time.
Another useful feature of the pattern matrix is the ability to record MIDI directly from Ableton. Just play a MIDI file into the Ableton MIDI track that contains regroove, toggle record mode, and hit play. The matrix will be automatically filled as the note events are registered.
With our input pattern defined, we can start thinking about initializing the pattern generator engine. The engine is powered by an embedded neural network which generates patterns based on the pattern displayed in the matrix and the parameters specified in this 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 dense or sparse 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.
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.
Samples determines how many samples will be available after model initialization.
The last pane pane is your portal to syncopating the patterns in a way that suits your needs best. The controls can be categorized into two domains, rhythm and expression. Rhythm can be defined as the way 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. Expression has to do with how microtiming and dynamics can be used to amplify this groove and is heavily intertwined with the rhythm and tempo of the pattern with which each note. For those interested in a more rigorous, intellectual discussions details on the way each of these elements define a groovy rhythm, have a look at this complementary blog article.
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.
wait will syncopate the active pattern at a given interval. The syncopation interval below the mode dropdown. 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.