Sonic Pi and Hydra inspired by Ryoji Ikeda

It’s not a clean hardcore noise cover by Ryoji Ikeda.
Just inspired by his stuff. I guess I like a bit melodic stuff mixed in.

Hydra is set to have Sonic Pi as a source, so we can use the waveforms as live visuals.


# 230613 0037 Sonic Pi inspired by Ryoji Ikeda YT
# Trying out a new way of working with Sonic Pi and Hydra YT
# Saved 230613 0037
# Created by https://linktr.ee/relaxnow
# YT https://youtu.be/iNYczTiLNh4
# Inthread




# Inspiration
#   Ryoji Ikeda - Data.Matrix - Live at Sonár 2010
#   https://youtu.be/k3J4d4RbeWc

#   Ryoji Ikeda Pure Data Tutorial
#   https://youtu.be/CLddxGIlVPU

#   Ryoji Ikeda - Supercodex [Full Album]
#   https://www.youtube.com/watch?v=MsGPRZPLfPA

#   Ryoji Ikeda ARS musica !!
#   https://youtu.be/LeIZvgkRFSQ?t=1002

#   Also checkout Alva Noto or Byetone




set_volume! 1
use_bpm 60


with_fx :level, amp: 1 do |l|
  
  with_fx :reverb, room: 0.4, amp: 1 do
    with_fx :distortion, distort: 0.9, amp: 1 do |k|
      with_fx :hpf, cutoff: 120 do |hpf|
        
        live_loop :a1 do
          
          use_random_seed 100 #10000  #100 nice
          
          16.times do
            tick
            ls = 8
            control l, amp_slide: ls, amp: 2
            kr = [0,0.2,0.4,0.6,0.8].choose
            #            control k, res_slide: ls, res: 0.9, mix: kr
            #  control k, res: kr, mix: kr
            
            control hpf, cutoff: rrand_i(10,120)
            
            r1 = 0.0001
            r2 = 0.0001
            
            #r1 = 0.001
            #r2 = 0.001
            
            #r1 = 0.0025
            #r2 = 0.0025
            
            r1 = rrand(0.0001,0.001)
            r2 = rrand(0.0001,0.01)
            
            # density rrand_i(1,4) do
            sy = 128
            synth = knit(1,sy, 2,sy).look
            case synth
            when 1
              use_synth [:chipnoise].choose
            when 2
              use_synth [:bnoise,:gnoise, :noise, :chipnoise].choose
            when 3
              #use_synth [:bnoise,:gnoise, :noise].choose
            end
            
            
            play :c3, release: r1, pan: -0.8 if (spread(1,5)+spread(2,5)+spread(3,5)+spread(4,5)+spread(5,5)).look
            play :c4+3, release: r2, pan: 0.8 if (spread(1,5)+spread(2,5)+spread(3,5)+spread(4,5)+spread(5,5)).reverse.look
            #            sleep [0.25,0.125].choose
            sleep 0.125
          end
        end
        
      end
    end
  end
end

with_fx :level, amp: 2 do
  with_fx :reverb, room: 0.9 do
    
    live_loop :bass do
      tick
      use_synth :sine
      
      / sine bass /
      play :c2, amp: 2, sustain: 2, release: 1 if spread(1,16*3).look
      #play :c4, amp: 1, release: 2 if spread(1,16*3).look
      
      / mel /
      #      mel = [0,1,2,3,4,5].choose
      #mel = [0,4].choose
      #mel = 5
      m = 32
      
      mel = knit(0,m, 1,m, 2,m, 3,m, 4,m ,5,m).look
      puts "melody =",mel if spread(1,m).look
      case mel
      when 0
      when 1 #(not that great)
        play :c4+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
      when 2
        play :c4+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c5+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
      when 3
        #        play :c4+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c5+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c6+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
      when 4
        play :c4+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c5+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        #play :c6+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c7+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
      when 5
        play :c4+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c5+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c6+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
        play :c7+[0,2,-2,5,3,7,-7].look, release: 0.15, amp: 0.5 if spread(12,16).look and one_in(2)
      end
      
      
      
      sample :glitch_perc3, beat_stretch: [0.25,0.5, 1,2,4].choose, rate: [2,4].choose, slice: rrand_i(1,10), amp: 2, pan: rdist(0.5) if bools(1).look and one_in(2)
      
      use_synth :noise
      #    use_synth_defaults release: [0.01,0.02,0.04,0.06].choose
      use_synth_defaults release: [0.001,0.002,0.004,0.006].choose
      c = [70,80,90,100,110,120,130].choose-50
      #  play :c9, cutoff: c, amp: 2, pan: rdist(0.75)
      use_synth_defaults release: [0.01,0.02,0.04,0.06].choose
      #   play :c4, cutoff: 80, amp: 2, pan: rdist(0.5)
      
      dr = 64
      drums = knit(0,dr, 1,dr*2, 2,dr, 3, dr, 4,dr, 5,dr).look
      #drums = 1
      case drums
      when 0
      when 1
        sample :bd_haus, cutoff: 70, amp: [4,0,0,0,0,0, 0,0,0,0,0,0].look
        #sample :bd_haus, cutoff: 50, amp: [0,0,0,0,2,0, 0,0,2,0,0,0].look
        #sample :elec_tick, amp: [4,1,0,1,1].look, rpitch: 12
        #sample :elec_tick, amp: [4,1,0,1,1,0].look, rpitch: 0
        #sample :bd_haus, rate: 4, cutoff: 130, amp: [2,1,0,2,1,0,1].look and one_in(2)
      when 2
        sample :bd_haus, cutoff: 70, amp: [4,0,0,0,0,0, 0,0,0,0,0,0].look
        sample :bd_haus, cutoff: 50, amp: [0,0,0,0,2,0, 0,0,2,0,0,0].look
        #sample :elec_tick, amp: [4,1,0,1,1].look, rpitch: 12
        #sample :elec_tick, amp: [4,1,0,1,1,0].look, rpitch: 0
        #sample :bd_haus, rate: 4, cutoff: 130, amp: [2,1,0,2,1,0,1].look and one_in(2)
      when 3
        #sample :bd_haus, cutoff: 70, amp: [4,0,0,0,0,0, 0,0,0,0,0,0].look
        #sample :bd_haus, cutoff: 50, amp: [0,0,0,0,2,0, 0,0,2,0,0,0].look
        sample :elec_tick, amp: [4,1,0,1,1].look, rpitch: 12
        sample :elec_tick, amp: [4,1,0,1,1,0].look, rpitch: 0
        #sample :bd_haus, rate: 4, cutoff: 130, amp: [2,1,0,2,1,0,1].look and one_in(2)
      when 4
        # sample :bd_haus, cutoff: 70, amp: [4,0,0,0,0,0, 0,0,0,0,0,0].look
        sample :bd_haus, cutoff: 50, amp: [0,0,0,0,2,0, 0,0,2,0,0,0].look
        sample :elec_tick, amp: [4,1,0,1,1].look, rpitch: 12
        sample :elec_tick, amp: [4,1,0,1,1,0].look, rpitch: 0
        sample :bd_haus, rate: 4, cutoff: 130, amp: [2,1,0,2,1,0,1].look and one_in(2)
      when 5
        sample :bd_haus, cutoff: 70, amp: [4,0,0,0,0,0, 0,0,0,0,0,0].look
        sample :bd_haus, cutoff: 50, amp: [0,0,0,0,2,0, 0,0,2,0,0,0].look
        sample :elec_tick, amp: [4,1,0,1,1].look, rpitch: 12
        sample :elec_tick, amp: [4,1,0,1,1,0].look, rpitch: 0
        #sample :bd_haus, rate: 4, cutoff: 130, amp: [2,1,0,2,1,0,1].look and one_in(2)
      end
      
      sleep 0.125
    end
    
  end
end


#Hydra
# https://hydra.ojack.xyz/?code=JTJGJTJGczEuaW5pdFNjcmVlbigpJTBBJTIwJTIwJTBBc3JjKHMxKSUwQS5waXhlbGF0ZSgxNjAqNCUyQzkwKjQpJTBBLnBpeGVsYXRlKCU1QjUwJTJDNSU1RC5mYXN0KDIpJTJDJTVCMjAlMkM1MDAlNUQuc21vb3RoKCkuZmFzdCgzKSklMEElMkYlMkYubHVtYSgwLjIpJTBBLmludmVydCgtNSklMjAlMkYlMkZOTyUwQS5tb2R1bGF0ZShzcmMoczEpJTJDTWF0aC50YW4odGltZSoxMCkpJTBBJTJGJTJGLnJvdGF0ZSgwJTJDMC4xKSUwQSUyRiUyRi5rYWxlaWQoNCklMEElMkYlMkYucm90YXRlKDAlMkMwLjEpJTBBLnNjYWxlKDEpJTBBJTJGJTJGLnNjYWxlKDIpJTBBJTJGJTJGLnNjcm9sbFkoMCUyQyU1QjAuMDIlMkMtMC4wMSp0aW1lJTJGMTAwJTJDMC4wMSU1RCklMEElMkYlMkYuc2Nyb2xsWCgwJTJDJTVCLTAuMDIqdGltZSUyRjEwMDAlMkMwLjAxJTJDMC4wMyU1RCklMEEuY29sb3JhbWEoMSUyQzAlMkMwKSUyMCUyRiUyRnRoaW4lMjBvciUyMHRoaWNrJTBBLmNvbG9yYW1hKDAuNCUyQy0xMCUyQzApJTIwJTJGJTJGTk8lMEEudGhyZXNoKDAuNTYpJTIwJTJGJTJGYiUyNnclMjBvciUyMGNvbG9yJTBBLm1hc2soc2hhcGUoMiUyQzAuOCkuc2NhbGUoMSUyQzklMkYxNikpJTBBLm91dCgpJTBB

Hydra code

//s1.initScreen()
  
src(s1)
.pixelate(160*4,90*4)
.pixelate([50,5].fast(2),[20,500].smooth().fast(3))
//.luma(0.2)
.invert(-5) //NO
.modulate(src(s1),Math.tan(time*10))
//.rotate(0,0.1)
//.kaleid(4)
//.rotate(0,0.1)
.scale(1)
//.scale(2)
//.scrollY(0,[0.02,-0.01*time/100,0.01])
//.scrollX(0,[-0.02*time/1000,0.01,0.03])
.colorama(1,0,0) //thin or thick
.colorama(0.4,-10,0) //NO
.thresh(0.56) //b&w or color
.mask(shape(2,0.8).scale(1,9/16))
.out()

I really like his stuff below here.
Next step: Recreate a setup to do something similar in Sonic Pi :smiley:

Anyone up an exploration challenge based on Ryoji Ikeda?

1 Like

Great music, thanks for sharing。

1 Like