Am trying to compose an ambient piece on Sonic Pi, and i need some ideas

Hi there :

Am trying to compose an ambient piece with 2:30 minutes lengh,

using only sonic Pi.

This way,i can pratice composition,and programming.

I already created 3 random tracks,and now am thinking to add some drones,

to create some beating. The firt thing i tought,was to create some subtle frequence

modulation.There’s some idea for drones ?

As it intend to be an ambient piece, i give you the visual reference for it :

Twin Peaks - Cooper’s Dream

Thank you in advance.

Those who help me to develop a track for this, will be credited.

Try playing with something like this to get a beating drone sound.

with_fx :ixi_techno, phase: 0.5,res: 0.5,amp: 2,mix: 0.8 do
  synth :fm,note: hz_to_midi(80)  ,release: 20
  synth :fm,note: hz_to_midi(82)  ,release: 20  
end

Two effects together. the ixi_techno gives a modulation: adjust phase to alter rate. and mix for amount.
Two tones close in frequency beat together. Try varying frequency, and gap between them. (can be fractional eg 80.1)
Can adjust length of drone with release setting.

1 Like

Hi @GWB70,

there are surely thousand ways to achieve that…

This might be a starting point besides what @robin.newman suggested:

live_loop :lynch do
  use_synth :fm
  use_synth_defaults divisor: 1, depth: 1, attack: 2, sustain: 8, release: 2
  with_fx :reverb, room: 0.75 do
    with_fx :echo, phase: (ring 0.25, 0.5, 1, 2).choose, decay: 6 do
      n = play :a1
      control n, divisor: 10, divisor_slide: (ring 2,4,8).choose, depth: 4, depth_slide: (ring 2,4,8).choose
      # a bit crispy noise as well 
      use_synth :supersaw
      use_synth_defaults amp: 0.075, sustain: 8
      play :a0
    end
  end
  sleep (ring 4,8).choose
end
1 Like

Hi Robin :

I loved them both, yours and Martin’s ideas

are great.And for my surprise, sounds much better than

what i was trying to achieve in a conventional DAW.

Thank you very much.

Hi Martin :

What great atmosphere,that “crispy noise” matches perfectly to the scene.
It proves that Sonic Pi,and also Pure Data are perfect to the job.
Programming while composing,that’s the idea.
Thank you very much again, Martin.

You are welcome. Glad it’s of some use to you.

x = [78, 86, 81, 84].ring

with_fx :ixi_techno, phase: 0.5,res: 0.5,amp: 2,mix: 0.8 do
live_loop :wibble do
synth [:piano, :sine].choose,note: hz_to_midi(x.tick) ,release: 10, amp: 0.25
sleep [1, 0.75, 0.5].choose
end
end

x = [78, 86, 81, 84].ring

with_fx :ixi_techno, phase: 0.5,res: 0.5,amp: 2,mix: 0.8 do
live_loop :wibble do
synth [:dark_ambience, :hollow].choose,note: hz_to_midi(x.tick) ,release: 10, amp: 0.25
sleep [2, 1].choose
end
end

1 Like

Also a great idea.

With this one,i can even add a “motive” to drone.

Thanks a lot Eli.

Hi there :

This is the way,how i accommodated,the drone ideas you sent to me;

i choosed a more static drome,and put some random moviment

on pad:

# Lynch Background

in_thread(drone: :lynch) do
  loop do
    sync :tick
    r = 20
    with_fx :reverb, room: 0.75 do
      use_transpose 12
      synth:fm,note: hz_to_midi(82),release: r,amp: 0.1
      synth:fm,note: hz_to_midi(84),release: r,amp: 0.1
      x = [76, 77, 87, 88].ring
      use_transpose 0
      f = (ring 60,70,80,90).choose
      ph = (ring 0.25,0.5,1).choose
      with_fx :ring_mod,amp: 0.5,freq: 30,freq_slide: f,mod_amp: 2 do
        with_fx :ixi_techno, phase: ph,res: 0.5,amp: 1,mix: 0.6 do
          synth [:pretty_bell,:dull_bell].choose,note: hz_to_midi(x.tick),
            sustain: r,release: r/2, amp: 0.6,pan: rrand(-1,1)
          sleep r/4
        end
      end
    end

    
    in_thread(diades: :diades) do
      loop do
        sync :tick
        r = 20
        use_synth :hollow
        with_synth_defaults amp: 0.4,cutoff: 110,noise:(ring 0,1,2,3,4).choose do
          with_fx :reverb, room: 0.75 do
            use_transpose 0
            play choose([:E4,:F4]), attack: 2, release: 4
            sleep r/2
            play choose([:As4,:B4]), attack: 4, release: 5
            sleep r/5
            play choose([:G4, :D5]), attack: 5, release: 3
            sleep r/6
          end
        end
      end
    end
  end
end

Thank you all.