Here’s what I came up with so far:
This sounds great! Do you have any gists up on how you do the rhythm programming for this kind of beat? I’m trying to get better at doing hip-hop style beats in SonicPi.
Yeah this one is pretty simple. Basically what I do is imagine (or sometimes draw on paper) the way I want my samples to be arranged in a pattern. I usually start with a Kick and Snare sound as they are the basis for a Hip Hop beat.
If you’re having trouble coming up with your own beat pattern you can cheat by going to google images and searching for photos of patterns you might be interested in. For this one I’m using a Dub Step type pattern. Here’s an example of a pattern you might find if you search on Google Images:
It was composed in a different program but it doesn’t really matter. We can see how many beats to a bar, as well as where the Kick, Snare and other instruments should go. This should be a good starting point for arranging your beat.
One technique I do is I start with the Kick and Snare playing in a typical Four-On-The-Floor type beat which is the easiest pattern you can come up with. Then I think about whether I want the placement of the Kick to come earlier or later and move things around accordingly until I get the type of pattern I have in my head.
A second technique which I’ve never tried but you may find useful is to chop a segment from a song you like. Bring the chopped loop into Sonic Pi and get it playing in a loop (lower the volume to 50%) then start arranging your beat over top of your reference beat pattern. This will allow you to quickly copy the beats structure by lining your Kick, Snare, etc… with those of the reference.
Thanks! So I used to make music using Logic Pro and it has a similar beat matrix/grid as what you are showing.
From a SonicPi implementation perspective, though, do you represent the beat programing using like quasi-matrices?
Something like:
M = 1.0
p1 = [1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0].ring
p2 = [0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0].ring
p4 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].ring
live_loop :tick do
with_fx :level, amp: 0.2 do
cue :tick
sn = p2.tick(:snare_tick)
if sn != 0
sample :sn_dolf, rate: 1, amp: sn + rrand(-0.5, 0.5)
end
k = p1.tick(:kick_tick)
if k != 0
sample :bd_tek, rate: 1, amp: 8 + rrand(-0.5, 0.5)
end
h = p4.tick(:hats_tick)
if h != 0
sample :drum_cymbal_closed, rate: 1, amp: 8 + rrand(-0.5, 0.5)
end
end
sleep M / 16
end
Okay, yeah I use Logic Pro X too for mixing and mastering. I used to use it for beat making up until finding out about Sonic Pi since I find coding faster.
I don’t use quasi-matrices but I think that’s probably the easiest way to visually see what’s happening. I probably should start doing that. Right now I just have live_loop’s with sounds playing and a “sleep” inside the loop. I also use time_warp to displace sounds along the grid. Time_warp is useful because I can offset sounds so they’re not on the grid whatsoever.
At the end of the day, I think the best option is to arrange the simple structure in matrices like you showed. Then place any off-grid sounds using time_warp if you need to.
Since you have Logic, you might want to open the drum sampler and load up some of the default samples to see their pattern structure. This will allow you to also listen to them and get a quick idea of what your end result should sound like.