Stranger Things Theme Song!

Hi all! Just started playing around with Sonic Pi and inspired by the amazing music of Stranger Things, I decided to tackle the theme song. Right now, it’s pretty rough. Having issues with the arpeggio matching up with the “heartbeat” and would appreciate some guidance on how to effectively play the changing alto line/very rhythmic bass towards the end of the track. Of course, went through the tutorial but sometimes you just want to dive in :new_moon_with_face: – let me know if there’s a section I might have miss! Synth pointers would be great as well!

Here’s what I’ve worked out so far:

#1st with arp, 2nd with the height of arp
#look up how to oscillate synths (osc?)
live_loop :heartbeat do
  loop do
    with_fx :lpf, cutoff: 90 do
      with_fx :reverb do
        sample :drum_bass_soft
        sleep 0.2
        sample :drum_bass_soft
        sleep 0.55
      end
    end
  end
end


define :bassline do
  use_synth :hollow
  play :e2, sustain: 1, release: 1, cutoff: rrand(70, 130)
  sleep 1
end

in_thread(name: :bassline) do
  loop do
    bassline
  end
end

define :alto do
  use_synth :hollow
  play :g3
  sleep 1
end

in_thread(name: :alto) do #this still played when called 'bassline'
  alto #this still played when called 'bassline'
end

live_loop :melody do #blade #hollow #use_arg_bpm #prophet for bass #tech_saws for bass
  use_synth :beep
  loop do
    play_pattern_timed(ring :c4, :e4, :g4, :b4, :c5), 0.18 #align this with first part of heartbeat
    play_pattern_timed(ring :e4, :g4, :b4).reverse, 0.18 # align this with second part of heartbeat
  end
end

Thank you all!

2 Likes

Well, I listened to the actual theme…depends how ‘realistic’ you want to go
I guess…

With regard to changing the stuff towards the end of the track, you could set up
a ‘tick counter’ and when you reach… 300 ticks, change the parameters or synth…

live_loop bassline do
tick
if look < 300 then
use_synth :hollow
play :e2, sustain: 1, release: 1, cutoff: rrand(70, 130)
sleep 1
else
use_synth :prophet
play :e3, sustain: 1, release: 1.5, cutoff: rrand(90, 130)
sleep 1
end
end

Plenty other ways to do it though… people are bound to
chip in their favourites

Eli…

use_bpm 60
set_volume! 5

live_loop :heartbeat do
  loop do
    with_fx :lpf, cutoff: 90 do
      with_fx :reverb do
        sample :drum_bass_soft, amp: 2
        cue :beat1
        sleep 0.2
        sample :drum_bass_soft, amp: 1
        cue :beat2
        sleep 0.55
      end
    end
  end
end

define :bassline do
  use_synth [:prophet].choose
  play :e2, sustain: 1, release: 1, cutoff: rrand(70, 130), amp: rrand_i(0.25,0.5)
  sleep 1
end

define :alto do
  use_synth :hollow
  play :g3, amp: rrand_i(1,2)
  sleep 1
end

live_loop :do_bassline do
  bassline
end

live_loop :do_alto do
  alto
end

live_loop :melody do
  if one_in(4) then
    sync :beat1
    sync :beat2
    sleep 1
  else
    use_synth [:beep, :blade, :hollow].choose
    sync :beat1
    play_pattern_timed(ring :c4, :e4, :g4, :b4, :c5), 0.18 , amp: rrand_i(1,2)
    sync :beat2
    play_pattern_timed(ring :e4, :g4, :b4).reverse, 0.18 , amp: rrand_i(1,2)
  end
end
1 Like

Thank you so much! You really helped me out with lining up the rhythm, wasn’t familiar with use_bpm before!

Here’s an update:

use_bpm 60
set_volume! 5

live_loop :heartbeat do
  loop do
    with_fx :lpf, cutoff: 90 do
      with_fx :reverb do
        sample :drum_bass_soft, amp: 2
        cue :beat1
        sleep 0.2
        sample :drum_bass_soft, amp: 1
        cue :beat2
        sleep 0.55
      end
    end
  end
end

define :bassline_c do
  use_synth [:prophet].choose
  play :c2, sustain: 1, release: 1, cutoff: rrand(70, 130), amp: rrand_i(0.25,0.5)
  sleep 1
end


live_loop :bassline_c do
  bassline
end

live_loop :melody do
  use_synth [:beep, :blade, :hollow].choose
  sync :beat1
  play_pattern_timed(ring :c4, :e4, :g4, :b4, :c5), 0.18 , amp: rrand_i(1,2)
  sync :beat2
  play_pattern_timed(ring :e4, :g4, :b4).reverse, 0.18 , amp: rrand_i(1,2)
  #end
end
1 Like

Yup, that sounds much more ‘together’ than it was, :slight_smile:
Well done.

Eli…

Just wanted to give this some closure and post the code and what it sounds like!

Github
Soundcloud

There’s always room for improvement so don’t hold back critiques! The way I did this was, if you couldn’t tell from the code, was writing it all out and un-commenting when it was time for that segment which isn’t the most effective methodology, I imagine. Also, it definitely clips. But I still had fun with it and would love to come back to it when I learn more, maybe with some original stuff.

1 Like