Difference between revisions of "Dillafier"

From CCRMA Wiki
Jump to: navigation, search
 
Line 30: Line 30:
 
== TouchOSC for control ==
 
== TouchOSC for control ==
  
It was quite straightforward to get TouchOSC up and running, and I was able to control my plugin with no problems. Now to design the control interface...
+
It was quite straightforward to get TouchOSC up and running, and I was able to control my plugin with no problems. I opted to use both an XY pad and accelerometers as possible controls.
  
 
== Macro controls ==
 
== Macro controls ==
  
The control interface is really the crucial part of this device, so I spent a lot of time brainstorming control ideas. At first, I thought about using the x-axis of a touchscreen to represent a measure temporally in order to allow for specific changes to, for example, the hi hat on beat 2 but not on the other beats. However, my breakthrough came in realizing that I want to make a device which allows for real-time (or close to real-time) groove changes. True real-time control would be difficult to achieve because shifting a note or drum earlier requires advance notice, so I thought about having the plugin require action slightly in advance of the desired beat.
+
The control interface is really the crucial part of this device, so I spent a lot of time brainstorming control ideas. At first, I thought about using the x-axis of a touchscreen to represent a measure temporally in order to allow for specific changes to, for example, the hi hat on beat 2 but not on the other beats. However, my breakthrough came in realizing that I want to make a device which allows for real-time (or close to real-time) groove changes. True real-time control would be difficult to achieve because shifting a note or drum earlier requires advance notice, so I thought about having the plugin require action slightly in advance of the desired beat.
 +
 
 +
Eventually, after much Live Object Model documentation reading, I identified a control that would allow me to skip forward and back within the playing clip, allowing for close-to-real-time groove changes. The execution was tricky due to micro-timing issues, but I eventually got the plugin working smoothly after much trial and error.
 +
 
 +
== Finished plugin ==
 +
 
 +
The finished plugin (written from scratch) accepts two parameters - on-beat delay and off-beat (on the "and") delay. Both can be set to negative (shift before the beat) or positive (shift after the beat) values. The plugin only affects notes quantized to eighth-note values, so sixteenth note and faster rhythms are preserved except for any notes on the beat or on the "and" of the beat.
 +
 
 +
== Final composition ==
 +
 
 +
Since I intended the plugin primarily as a tool for production (since I don't perform solo live very often), I decided to compose a piece using the plugin. My composition uses four instances of the Dillafier, and uses automation to constantly create subtle (or occasionally drastic) shifts in the piece's rhythm. I recorded myself playing bass guitar live over the "Dillafied" tracks, adding another human element to the already "organic" feel that the Dillafier allows for.

Latest revision as of 20:48, 9 June 2014

Evan Gitterman \\ Music 220C \\ Spring 2014


Inspiration

The inspiration for the Dillafier came from what I refer to as "Dilla beats", which are hip-hop/R&B/funk grooves in which different rhythmic elements are deliberately placed just ahead or just behind the beat. In electronic music, this is done by choosing not to quantize the rhythm and dragging notes back and forth in time. In live music, this is substantially more difficult, since drummers and other rhythm section instruments must have a very strong sense of rhythmic precision.

The Dillafier (and "Dilla beats") are named after the renowned producer J Dilla (also known as Jay Dee), who was one of the most influential hip-hop producers ever. Unlike many of his contemporaries, he preferred to compose beats with quantization turned off. Here is an example of his signature lazy-time drum sound:

https://www.youtube.com/watch?v=_qvMLon2MXs

Here is an example of the band Hiatus Kaiyote playing similar grooves live:

https://www.youtube.com/watch?v=dVUT2LoYoT8


Initial idea

My original conception for the Dillafier was a Max for Live plugin that would allow easy macro-control of these subtle timing shifts. The goal is to allow for live control over such groove parameters, since the built-in Groove functionality requires dragging individual notes around in order to adjust timing. This would be useful in both live performance settings and in production, allowing producers to record automation on high-level groove features in a simple and straightforward way. My initial thought for the controller was a touch screen running over OSC - the challenging part is coming up with an intuitive way to map these multiple groove parameters to a graphic interface.


Starting out

I began by modifying the "Instant Haus" plugin that is included with Max for Live. This plugin creates drum loops effortlessly and allows for macro control of pattern, pitch, swing, and a simple shift. My first step was creating a macro control which adjusts the relative timing of both the snare drum and hi hat relative to the kick drum.

Here is a screenshot of my first working device: Dillafier1.jpg


TouchOSC for control

It was quite straightforward to get TouchOSC up and running, and I was able to control my plugin with no problems. I opted to use both an XY pad and accelerometers as possible controls.

Macro controls

The control interface is really the crucial part of this device, so I spent a lot of time brainstorming control ideas. At first, I thought about using the x-axis of a touchscreen to represent a measure temporally in order to allow for specific changes to, for example, the hi hat on beat 2 but not on the other beats. However, my breakthrough came in realizing that I want to make a device which allows for real-time (or close to real-time) groove changes. True real-time control would be difficult to achieve because shifting a note or drum earlier requires advance notice, so I thought about having the plugin require action slightly in advance of the desired beat.

Eventually, after much Live Object Model documentation reading, I identified a control that would allow me to skip forward and back within the playing clip, allowing for close-to-real-time groove changes. The execution was tricky due to micro-timing issues, but I eventually got the plugin working smoothly after much trial and error.

Finished plugin

The finished plugin (written from scratch) accepts two parameters - on-beat delay and off-beat (on the "and") delay. Both can be set to negative (shift before the beat) or positive (shift after the beat) values. The plugin only affects notes quantized to eighth-note values, so sixteenth note and faster rhythms are preserved except for any notes on the beat or on the "and" of the beat.

Final composition

Since I intended the plugin primarily as a tool for production (since I don't perform solo live very often), I decided to compose a piece using the plugin. My composition uses four instances of the Dillafier, and uses automation to constantly create subtle (or occasionally drastic) shifts in the piece's rhythm. I recorded myself playing bass guitar live over the "Dillafied" tracks, adding another human element to the already "organic" feel that the Dillafier allows for.