Recreating Stardrive, by Jeremy Blake

(I should probably start a new topic for this, don’t want to overload the other thread - Mergrim tribute - that this appears in)

PD-Pi

For those following, I now have 5 buffers’ worth of ‘tutorial’ sketches for my student, and buffer 6 covers the intro to the Stardrive track. I have intentionally used a combination of pattern arrays, play_pattern_timed, and spread().rotate() for melodic and rhythmic contours, to expose the student to the different ways to sequence events.

I had considered using the ‘patented’ DJDave pattern function definition (if mypat == “x–x–x-”) but couldn’t quite see how to use it for melodic sequences.

Anyhoo:

/6 using the delay: control to sequence events in time/

use_synth :bass_foundation
pat1 = [1,0,1,0,0,1,0,2,0,0,0,0,0,2,3,2]
live_loop :bass2 do
  use_synth_defaults release: 0.4
  tick
  play 32 if pat1.look == 1
  play 34 if pat1.look == 2
  play 36 if pat1.look == 3
  sleep 0.25
end

use_synth :dsaw
live_loop :melody do
  use_synth_defaults amp: 0.3, attack: 0.2, release: 0.2
  play_pattern_timed [44,51,50,58], [0.75,1,0.5,1.75]
end

live_loop :drums, delay: 8 do
  tick
  sample :drum_bass_hard if spread(1,4).look
  sample :drum_snare_hard, rate: 0.75 if spread(1,4).rotate(2).look
  sample :perc_snap, rate: 0.75 if spread(1,4).rotate(2).look
  sleep 0.25
end

live_loop :hats, delay: 16 do
  12.times do
    sample :drum_cymbal_closed
    sleep 0.25
  end
  4.times do
    sample :drum_cymbal_closed
    sample :drum_cymbal_open, amp: 0.5, sustain: 0.3 if spread(2,4).rotate(1).tick
    sleep 0.25
  end
end

Over the next few months my student and I will add effects (slow filter sweeps, delay on/off, reverb etc), but that icing isn’t vital atm, I more concerned with getting him to sequence and control events in time, and in real time.

PD-Pi

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

Very cool.
I’m working on some utils to help arrange and perform music, including handling drum notation. It should be done later this week. I’ll be posting it to github, and I’ll post a message here talking about it.

1 Like

Hi @HarryLeBlanc
I look forward to seeing the results - I do enjoy the way we are forced to think when sequencing musical events in Sonic Pi, and as a non-expert coder, I’m developing a ‘new’ conceptual model of event timing.

I was raised on audio SW like Audiomulch, Ableton, then Max and PD; Sonic Pi encourages a different way of conceptualising and realising music - no GUI - which is why I love it!!

PD-Pi

I just finished YummyFillings.rb and posted it to github; there’s another thread discussing it in detail. Tons of methods to help with all sorts of things – lfos, envelopes, trancegates, making rhythms swing, stutter effect for samples, simplifying transposing sample, arranging multiple instruments within a single method, etc etc. I hope you find it useful.
I haven’t yet delved into supercollider, puredata, etc., though I did dabble a bit in moduar synthesis with cardinal/vcvrack and reaktor.
It’s really a golden age for music making on the computer.

Hi
I will check this out after the holidays - looks like a lot of work you did!!

ps I highly recommend Pure Data if I may, especially pd-l2Ork or PurrData. I remember, maybe 20 years ago, installing Ableton Live and Reason, and thinking “this is it, this is all I’ll ever need!” And I get that same vibe now, but with Sonic Pi and PD (and OSC :wink: )

PD-Pi

[update]

So, I’ve assigned the 6 parts/sections of the intro to functions, with start/stop args so I can sequence the parts at will. I was going to leave the FX until the very end, but couldn’t resist.

And I learned something new!!

You can add FX when you call the function from another buffer, for example:

/Buffer 0/
define :foo do
live_loop :riff do
play some sounds
sleep n
end
end

Then elsewhere:

/Buffer 1/
with_fx :reverb do
foo
end

And it applies the effect to the active loop(s). :face_with_open_eyes_and_hand_over_mouth:

I’ll post a short video of me playing the intro to Stardrive in this way shortly.

PD-Pi