Hello from Tier 4 London

Hello guys!
I’ve been making music under the moniker Automageddon for a while now, mostly hardware-based but as recently I started coding in C# as I got into Unity, and found it truly enjoyable, I thought I might try to join the 2 things I like, coding and music, and fall into a massive black hole.
I’m still trying to decide between TidalCycles and Sonic Pi, but I’m leaning more and more towards Sonic Pi as it gives me a more structured approach.

My goal during this forced staycation over Xmas is to code a track that sounds like something I would do, so I’m trying to mix programmed beats and randomised parts on top to add variety.

And Sonic pi seems to help a lot with that, I’m surprised how much I got done in less than a week.

2 Likes

Hey @Automageddon, welcome to our forums. It’s lovely to have you here.

Really looking forward to seeing the kinds of things you’re working on when you’re ready to share :slight_smile:

Happy Live Coding!

1 Like

Welcome to the community. Hope you find your endeavours with Sp enjoyable and productive. Feel free to share what you produce.

1 Like

Hello again @Automageddon :grinning_face_with_smiling_eyes: great to see you.
I hope that you continue to discover lots of fun things as you make up your mind :slightly_smiling_face:

Happy to help you with any questions you may have as you try things out!

1 Like

Hi @Automageddon

I think Sonic Pi will do it for you. I was unsure just how to use SPi to begin with, but am now using it both for its own sounds and to drive hardware at the same time. Will you post some of your experiments as you go?

I’d also be interested to hear about your setup too.

THIS is what I want to try next, first I want to complete my first SPi song, which is coming along nicely so far, next I want to try and use it to send midi to the akai Force and from there to other synths.

As my weak spot as an electronic musician is lack of variety I’d like to get to the point where I can do most of my stuff in hardware, but be able to add some more controlled random elements via software…

2 Likes

That sounds like a plan. Spi has some really useful in-built synth sounds and fx. But , for me, where it really comes into its own is how it handles samples, and how it can control other devices. So you can use your unique-to-you sounds.

Because it’s so flexible you can choose how to tread the line between programmed and random, fantastic.

As it’s free-form, it’s a job of work to explore how to do it, which controls what etc. But quite nice work :grinning_face_with_smiling_eyes:

1 Like

And here’s a first result, the mood is there, but the track is seriously lacking something that drives it forward, it feels more like an ambience piece/intro.
Quite happy so far, but lots more to understand…
Also my code is ugly, really ugly, I wish I could fold it like in Visual Studio (or write better code)

Code (pretty much useless as I used custom samples)

# variables to refer to my samples
kick = "C:/Users/aless/Desktop/DubstepSamples/kick"
snare = "C:/Users/aless/Desktop/DubstepSamples/Snare"
bass = "C:/Users/aless/Desktop/DubstepSamples/Bass"
vox = "C:/Users/aless/Desktop/DubstepSamples/Vox"
cymbal = "C:/Users/aless/Desktop/DubstepSamples/cymbal"
fx = "C:/Users/aless/Desktop/DubstepSamples/fx"
chh = "C:/Users/aless/Desktop/DubstepSamples/chh"
perc = "C:/Users/aless/Desktop/DubstepSamples/Perc"
# end sample variables

use_bpm 280
#Sync track
in_thread(name: :click) do
  loop do
    cue :tick
    sleep 1
  end
end

## loops are defined below
#Intro drum
define :introbeat do
  live_loop :introbeat do
    
    sync :tick
    at 0 do
      sample kick, 4
    end
    
    at 2 do
      sample bass, rand_i(15), pan: rrand(-0.5, 0.5)
    end
    
    with_fx :reverb, room: 1, amp: 0.4 do
      at 3 do
        if one_in(4)
          sample snare, 6, pitch: -0.5
        else
          if one_in(4)
            sample snare, 5
            sleep [0.25, 0.175].choose
            if one_in (4)
              sample snare, 5, attack: 0.175, amp: 0.5
              sleep [0.25, 0.175].choose
              sample snare, 5, attack: 0.175, amp: 0.5
            else
              sample snare, 5, attack: 0.175, amp: 0.5
            end
          else
            sample snare, 5
          end
        end
      end
      sleep 4
      #chh
      sleep 0.25
      sample chh, rand_i(26)
      sleep 0.75
      
      sleep 4
      
    end
    
  end
end

# fx
define :distant do
  live_loop :distant do
    
    with_fx :reverb, room:1 do
      sync :tick
      sample fx, 6, gain: 0.3, pitch: rrand(-1, -4), rate: 0.5, amp: 0.1
      sleep rrand_i(5, 13)
    end
  end
end
define :nodistant do
  live_loop :distant do
    sleep 1
  end
end


#chh crickets
define :crickets do
  live_loop :cricketloop do
    sync :tick
    sample chh, 6, start: 0.05, finish: 0.16, amp: rrand(0.05, 0.1), pan: rrand(0.3, 0.5)
    sleep rrand(0.24, 0.27)
  end
end

define :nocrickets do
  live_loop :cricketloop do
    sync :tick
    sleep 1
  end
end


#voxfx
define :voxfx do
  in_thread(name: :voxfx) do
    
    8.times do
      at [7] do
        sync :tick
        with_fx :reverb do
          with_fx:echo do
            sample vox, rand_i(10), beat_stretch: 8, amp: 0.5, pitch: -2 if one_in (2)
          end
        end
      end
    end
    sleep 8
  end
end


define :newbeat do
  live_loop :introbeat do
    
    sync :tick
    
    #kick on 1
    sample kick, 4
    sleep 1
    
    #Basses
    sample bass, rand_i(15), pan: rrand(-0.5, 0.5)
    
    
    sleep 1
    
    if one_in(4)
      sample kick, 4, amp: 0.5
    end
    sleep 1
    #snare on 9
    sleep 5
    with_fx :reverb, room: 1, amp: 0.4 do
      if one_in(4)
        sample snare, 5
        sleep [0.25, 0.175].choose
        if one_in (4)
          sample snare, 5, attack: 0.175, amp: 0.5
          sleep [0.25, 0.175].choose
          sample snare, 5, attack: 0.175, amp: 0.5
        else
          sample snare, 5, attack: 0.175, amp: 0.5
        end
      else
        sample snare, 5
      end
      sleep 7
      # kick on 13
      if one_in(4)
        sample kick, 4, amp: 0.7
        sleep 0.25
        sample kick, 4, amp: 0.3
      end
      
    end
    
  end
  sleep 16
end

define :nobeat do
  live_loop :introbeat do
    
    sync :tick
    sample kick, 4, amp: 0.5
    sleep 8
  end
end




#introbeat
##newbeat
###nobeat
#distant
##nodistant
#crickets
##nocrickets
#voxfx

##Arrangement

nobeat
distant
sleep 16*4
introbeat
nodistant
sleep 16*4
crickets
sleep 16*2
introbeat
voxfx
distant
sleep 16*8
nobeat
nodistant
nocrickets
2 Likes

Nice work. Atmospheric samples.

Re posting code here if you put the whole thing inside three backticks ``` top and bottom then you get some formatting.