- Access
- License
- Publication
- Contact
If you are interested in trying out the module, there is a software version of it available here
Copyright (c) Music Technology Group, 2023
Permission is hereby granted, free of charge, to any person obtaining a copy of this hardware design and associated documentation files (the “Design”), to deal in the Design without restriction, including without limitation the rights to use, copy, modify, merge, publish, and distribute copies of the Design, subject to the following conditions:
THE DESIGN MAY NOT BE USED FOR COMMERCIAL PURPOSES.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Design.
To cite this work, please use the following BibTeX entries:
@inproceedings{Haki2024GrooveTransformer,
author = {Evans, Nicholas and Haki, Behzad and Jorda, Sergi},
booktitle = {Proceedings of the International Conference on New Interfaces for Musical Expression (NIME) 2024},
year = {2024},
month = sep,
publisher = {NIME},
title = {GrooveTransformer: A Generative Drum Sequencer Eurorack Module},
}
@phdthesis{Haki2025DesignDevelopmentDeployment,
author = {Haki, Behzad},
title = {Design, development, and deployment of real-time drum accompaniment systems},
school = {Universitat Pompeu Fabra},
year={2025},
}
You can reach any of the authors if you have any inquiries or questions about the project.
- Overview
- Demo
Source Code
Daisy Seed Source (C++)
Libre (or RPi) Code (Python)
Additional Info
PCB
Schematics
Gerber Files
JLCPCB Production Files
Images
Faceplate
Design
Different Finishes
No Faceplate:
Laser Cut and Laser Etched Wood:
Glass:
Glass with Printed Sticker:
Interface Controls and Parameters
Figure Index | Name | Description | |
---|---|---|---|
Utility Parameters | 1 | Internal Clock Tempo Knob | Sets the internal clock tempo |
2 | Internal Clock CV Output | CV clock output | |
3 | External Clock CV Input | Input for external CV clock source | |
4 | Metronome Click Output | Metronome click audio output | |
5 | Play/Stop Switch | Starts and stops the outputs and input groove record buffer | |
6 | Record/Overdub/Off Switch | Three-way switch to change the mode of the input groove record buffer | |
7 | Clear Button | Clears the input groove record buffer | |
8 | Shift Button | Enables secondary functions of other buttons | |
CV/MIDI Pattern Generation Output | 9 | CV Gate Voice Output | MIDI output and CV gate and velocity output for each voice |
10 | CV Velocity Voice Output | ||
11 | MIDI Output | ||
Input Groove Control | 12 | Input Groove CV Gate Input | MIDI input and CV gate and velocity input for input groove |
13 | Input Groove CV Velocity Input | ||
14 | Input Groove MIDI Input | ||
15 | Input Groove Velocity Knob | Quantizes the input groove to the grid and quantizes the velocity of each note | |
16 | Input Groove Offset Knob | ||
Generation Control | 17 | Uncertainty Knob | Sets the value of the Uncertainty parameter |
18 | Uncertainty CV Input | CV input for the Uncertainty parameter | |
19 | Voice Density Knob | Controls the number of hits in each sequence by adjusting the threshold of the model | |
20 | Voice Velocity Scale Knob | Scales the velocity output. At minimum value, no scaling is applied to the outputs. At maximum value, all velocities are scaled to the maximum value. | |
Latent Space Interpolation | 21 | Preset Selection Knob | Selects the preset number to be loaded or to be saved to. A preset consists of the saved states in the latent space Z_A and Z_B |
22 | Preset Save/Load Button | Saves current states Z_A and Z_B to the selected preset number. Pressing with shift button loads the preset at the selected preset number | |
23 | Save/Randomize A and B Button | Sets the current state to be Z_A or Z_B in the latent space. Pressing with shift button generates a random placement for Z_A or Z_B in the latent space | |
24 | A/B Interpolation Slider | Interpolation position ( \alpha ) between states Z_A and Z_B in the latent space | |
25 | A/B Interpolation CV Input | CV input to automate the interpolation position ( \alpha ) in the latent space | |
26 | Follow Knob | Sets the value of the Follow parameter ( \beta ) in the latent space | |
27 | Follow CV Input | CV input to automate the Follow parameter ( \beta ) |
Eurorack Jams
Setup:
For the GrooveTransformer’s input groove, it receives a multiple of the Intellijel Metropolix gate and pitch sequence that controls the Acid Technology Chainsaw voice in the Eurorack. In this scenario, we have opted to use the pitch values of each note event to represent the velocity of the input. The pitch and gate voltages are sent from the Eurorack to the GrooveTransformer via an Expert Sleepers ES-9 DC-coupled audio interface and a Cardinal CV to MIDI converter plug-in. Generated drum patterns from the GrooveTransformer are converted to Control Voltage (CV) and sent to the Eurorack via a PolyEnd Poly2 MIDI to CV converter.
Drum Synthesis:
We use 7 voices of the generated patterns (kick, snare, open and closed hi-hat, and lo/mid/hi tom) to trigger 4 voices in the Eurorack:
Kick: Schlappi Engineering Angle Grinder + Make Noise Moddemix VCA + Intellijel Quadrax envelope generator
Snare: Intellijel Plonk
Open and Closed Hi-Hats: Basimilus Iteritas Alter
Lo, Mid, Hi Toms: Akemie’s Taiko
To retain generated dynamics, the kick, hi-hats, and toms are routed to individual channels on a Mutable Instruments Veils. The level of each channel is controlled with the velocity sequence associated with the corresponding voice The Intellijel Plonk has a dedicated velocity input that we utilized rather than routing the signal to Veils
Video 1
Video 2
Video 3
Video 4
Module Videos (Exploring Synthesis)
Hardware 1
Hardware 2