View on GitHub

Groove Modeler

Make your music groove with code

With Groove Modeler you can create grooves with consistent rhythmic feel in programmed music, for the time being in music created with Sonic Pi. This is done by manipulating parameters relevant to the creation of groove like how laid back an instrument is or how much it swings.

Just download and install Sonic Pi (it’s free!), grab some code from the Groove Modeler GitHub page, paste into Sonic Pi, hit run and enjoy.

The Theory of Groove

There is a lot of mystery around the pheonomenon of groove, see e.g. the Wikipedia page on groove. No matter how culturally coined, dependent from learning, or how important for communication and participation, it seems clear that groove is caused by completely un-esoteric pyhsical properties of rhythmic sounds. There is also some, though not much, great quantitative research, e.g. lucerne groove research library on groove.

For the Groove Modeling project it is crucial to identify the variables which determine how a drum pattern or a whole piece of music is perceived rhytmically, which feel it “has”, i.e. which groove sensation it evokes.

Here are some hypothesis about important variables - please raise an issue on this website’s GitHub source page if you think something is wrong or missing!

Timing

  1. swing - how soft or hard, i.e. how much is the first of two eigth or sixteenth notes is prolonged (and the following one shortened)?
  2. laid back - how much behind the beat (or ahead of the beat!) does an instrument play?
  3. tightness/looseness - how much does the timing vary, from machine-like precision to a “drunk” feel? Question: would “drunk” feel be best captured by randomness, or is there a system behind loose timing of able players which makes it distinguishable from plain bad timing of beginners / weaker players?
  4. togetherness/apartness - how much do these three rhythmic variables differ between the different instruments?
  5. articulation (1/2) - how short or long are notes played? When exactly does a note end?

Dynamics

  1. velocity - how much harder, how much softer some notes are played than others? How does this articulation (2/) relate to something like intensity?
  2. loudness - how much louder, how much lower some notes or whole voices are amplified than others? How does the mix influence rhythmic feel?

Modeling Groove With Sonic Pi

At this place there should be a documentation about Groove Modeler. for now, please look at the comments in the code after installing Sonic Pi, copying the code in any one .rb file to a free buffer and hitting run.