Tropical Island: music out of noise

Alright, a bit more than ‘a day or two’! - but here’s my noise tune. I could spend another day or so tweaking it, but felt I just wanted to get it out :joy:
Note: it starts out slightly resource demanding, so hopefully it won’t grind to a halt for you :crossed_fingers:
The code is a bit messy, and could probably be simplified a bit, but it does the job :wink:
I haven’t done any mastering on it either - so possibly some small improvements could be made in that regard - but it’s still fairly reasonable :slight_smile:

# chill made with noise and some simple fx only

use_bpm 100

live_loop :met do
 sleep 2
end

live_loop :mel1, sync: :met do
 ns = (ring :a2).repeat(32) + (ring :a2, :b2, :d2, :a2, :d2, :c2).repeat(4)
 ds = (ring 4).repeat(32) + (ring 4, 4, 8).repeat(8)
 with_fx :level, amp: (ring 0, 0.5).ramp.tick(:a) do |lv|
   control lv, amp_slide: 32, amp: (ring 0.5, 1).ramp.look(:a)
   with_fx :reverb, room: 1, mix: 0.4 do
     with_fx :rlpf, centre: 100, res: 0.8, mix: 1, amp: 2 do |rb0|
       with_fx :wobble, filter: 1, phase: 32, mix: 0.75, cutoff_min: 60, cutoff_max: 70, invert_wave: 1, amp: 1 do |rh|
         with_fx :tanh, krunch: 5, mix: 1, amp: 3 do |th|
           2.times do |i|
             ds.length.times do
               stop if i == 1 && look % ns.length == 32
               tick
               cue :four if i == 0 && look % ns.length == 44
               with_fx :rbpf, centre: ns.look + 24, res: 0.9 do |rb1|
                 with_fx :rlpf, cutoff: ns.look + 1, res: 0.7 do |rb2|
                   synth :noise, amp: 1,  sustain: ds.look, release: 0, cutoff: ns.look, res: 0.995
                 end
                 s = synth :noise, amp: 0.1,  sustain: ds.look, release: 0, cutoff: ns.look + 12, res: 0.995
                 control s, slide: ds.look, cutoff: ns.look + 12.1
               end
               sleep ds.look
             end
           end
         end
       end
     end
   end
 end
end

live_loop :beat1, sync: :met do
 hs = (bools 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0)
 with_fx :level, amp: (ring 0, 1).ramp.tick(:a) do |lv|
   control lv, amp_slide: 64, amp: 1
   with_fx :rbpf, centre: 45, mix: 0.7, amp: 2 do
     with_fx :rlpf, cutoff: 40, amp: 1, res: 0.85, reps: (16 * 4) do
       hs.length.times do
         with_fx :rbpf, centre: 70, amp: 5, res: 0.85 do |rb|
           tick
           synth :noise, amp: 5, sustain: 0.125, release: 0, res: 0.998, cutoff: 60 if hs.look
           control rb, slide: 0.0625, centre: 20
           sleep 0.25
         end
       end
     end
   end
 end
 stop
end


live_loop :beat2, sync: :met, delay: 128 do
 hs = (bools 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
 
 with_fx :gverb, ref_level: 0, tail_level: 0.8, release: 8, room: 100, spread: 0.2, mix: 0.75 do
   with_fx :rhpf, cutoff: 125, res: 0.9, amp: 0.8 do
     with_fx :rhpf, cutoff: 122, reps: 32 do
       hs.length.times do
         
         with_fx :rbpf, centre: 117, amp: 0.75, res: 0.975 do |rb|
           tick
           synth :noise, amp: rrand(2, 2.5), sustain: 0, release: rrand(0.25, 0.5), res: 0.1, cutoff: 120 if hs.look
           sleep 0.25
         end
       end
     end
   end
 end
 stop
end

live_loop :mel3, sync: :mel1 do |i|
 sleep 64
 stop if i == 1
 ns = (ring :e3) + (ring :e3, :cs3, :b2, :a2, :e3, :a2, :d3).repeat(4)
 ds = (ring 64) + (knit 4, 6, 8, 1).repeat(4)
 with_fx :reverb, room: 1 do
   with_fx :hpf, cutoff: 90, amp: 4 do
     with_fx :lpf, cutoff: 80, amp: 1, mix: 0.9 do
       with_fx :tanh, mix: 0.1 do
         ns.length.times do
           tick
           with_fx :bpf, centre: ns.look + 12, amp: 1, res: 0.95 do
             with_fx :rbpf, centre: ns.look + 12.1, amp: 1, res: 0.975 do
               synth :noise, amp: 1, attack: 0.5, release: ds.look, cutoff: ns.look + 12, res: 0.997
               
               sleep ds.look
             end
           end
         end
       end
     end
   end
 end
 i += 1
end

live_loop :mel4, sync: :met do
 sync :four
 ns = ((ring :a4, :cs5, :b4, :fs4, :cs5, :b4).repeat(2) +
       (ring :gs4, :b4, :a4, :cs5, :d5, :e5) +
 (ring :gs4, :b4, :a4, :cs5, :d5, :e5).shuffle).repeat(2) +
   ((ring :a4, :cs5, :b4, :fs4, :cs5, :b4).shuffle.repeat(2) +
    (ring :gs4, :b4, :a4, :cs5, :d5, :e5).shuffle +
    (ring :gs4, :b4, :a4, :cs5, :d5, :e5).shuffle).repeat(2)
 ds = (ring 0.75, 0.75, 0.75, 0.75, 0.5, 0.5)
 with_fx :reverb, room: 1, mix: 0.4 do
   with_fx :rbpf, centre: 110, res: 0.8, amp: 1.8 do
     with_fx :lpf, cutoff: 80, amp: 1, mix: 0.9, reps: 2 do
       ns.length.times do |i|
         tick
         unless ns.look == :r
           if i < (ns.length / 2.0)
             with_fx :bpf, centre: ns.look + 12, amp: 1, res: 0.95 do
               with_fx :rbpf, centre: ns.look + 12.1, amp: 1, res: 0.975 do
                 synth :noise, amp: 1, attack: 0, sustain: ds.look, release: 0, cutoff: ns.look + 12, res: 0.997
                 
                 
               end
             end
           else
             with_fx :bpf, centre: ns.look, amp: 2, res: 0.95 do
               with_fx :rbpf, centre: ns.look + 0.1, amp: 1, res: 0.975 do
                 synth :noise, amp: 1, attack: 0, sustain: ds.look, release: 0, cutoff: ns.look, res: 0.997
                 
                 
               end
             end
           end
         end
         sleep ds.look
       end
     end
   end
 end
 stop
end

live_loop :mel5, sync: :met, delay: 258 do
 ns = (ring :b4)
 ns2 = (ring :a4)
 ds = (ring 16)
 with_fx :lpf, cutoff: 60, amp: 1.3 do
   with_fx :distortion, distort: 0.2, amp: 0.5, reps: 6 do
     ns.length.times do
       tick
       s = synth :noise, amp: 0.5, sustain: ds.look, release: 0, cutoff: ns.look, res: 0.997
       sleep 7
       control s, slide: 1, cutoff: ns2.look
       sleep ds.look - 7
     end
   end
 end
 stop
end
5 Likes