# A sketch for a performance with Sonic Pi and Hydra

**URL:** <https://in-thread.sonic-pi.net/t/a-sketch-for-a-performance-with-sonic-pi-and-hydra/6619>\
**Category:** Performances, Streams & Live Coding\
**Created:** [March 17, 2022, 4:37pm UTC](https://in-thread.sonic-pi.net/t/a-sketch-for-a-performance-with-sonic-pi-and-hydra/6619 "2022-03-17T16:37:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Relaxnow](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/relaxnow/32/2172_2.png) [@Relaxnow](https://in-thread.sonic-pi.net/u/Relaxnow)\
**Post date:** [March 17, 2022, 4:37pm UTC](https://in-thread.sonic-pi.net/t/a-sketch-for-a-performance-with-sonic-pi-and-hydra/6619/1 "2022-03-17T16:37:51Z")

</div>

A sketch for a performance with Sonic Pi and Hydra  
Kind regards  
Relaxnow

[![](https://img.youtube.com/vi/ZwUuFsCchCE/maxresdefault.jpg "A sketch for a performance with Sonic Pi and Hydra") ](https://www.youtube.com/watch?v=ZwUuFsCchCE)

```ruby

# 220317 A sketch for a performance with Sonic Pi and Hydra
# Backup 220317 17:20
# https://youtu.be/ZwUuFsCchCE

use_bpm 110

live_loop :met do
  sleep 1
end

live_loop :mel1, sync: :met do
  #stop
  use_synth :saw
  note = (knit :a1,8, :f2,3, :g2,4, :a2,3) #a1 f2 g1 g2
  play note.tick(:b), amp: 1.4,release: 0.35, cutoff: 95, pan: -0.5 if spread(3,5).tick
  sleep 0.25
  play note, release: 0.15, cutoff: 90, pan: -0.5 if spread(1,5).tick
  sleep 0.25
  play note, release: 0.15, cutoff: 110, pan: -0.5 if spread(4,5).tick
  sleep 0.25
end
live_loop :mel2, sync: :mel1 do
  #stop
  use_synth :tri
  play :f2, release: 0.15, cutoff: 90, pitch: 24, pan: 0.5 if spread(3,5).tick
  sleep 0.25
  play :g3, release: 0.15, cutoff: 90, pitch: 12, pan: 0.5 if spread(1,5).tick
  sleep 0.25
  play :a2, release: 0.15, cutoff: 110, pitch: 12, pan: 0.5 if spread(4,5).tick
  sleep 0.25
end
live_loop :mel3, sync: :met do
  #stop
  use_synth :dtri
  play knit(:f2,5, :g2, 7, :f2,2, :d2,5).tick , release: 0.15,
    cutoff: 80, pitch: 24+12, pan: 0 if spread(3,5).tick
  sleep 0.25
  play :g3, release: 0.15, cutoff: 90, pitch: 12+12, pan: 0.5 if spread(1,5).tick
  sleep 0.25
  play :a2, release: ring(0.15,0.1,0.35).choose,
    cutoff: ring(60,70,80,90,100,110,100,90,80,70).tick(:a),
    pitch: 12+12, pan: ring(-0.5,-0.25,0.25,0.5).choose if spread(4,5).tick
  sleep 0.25
end

live_loop :extra_fynky_mel4, sync: :met do #extra top syncopated funky top mel note
  #stop
  my_form = (knit false,16+32, true,16).tick(:c)
  
  use_synth :saw
  note = [:a4]
  # play note.tick(:b), amp: 1.4,release: 0.35, cutoff: 95, pan: -0.5 if spread(3,5).tick
  play note, amp: 1.4,release: 0.05, cutoff: 95, pan: -0.5, on: my_form if spread(3,5).tick
  sleep 0.25
  play note, release: 0.15, cutoff: 90, pan: -0.5, on: my_form if spread(1,5).tick
  sleep 0.25
  play note, release: 0.15, cutoff: 110, pan: -0.5, on: my_form if spread(4,5).tick
  sleep 0.25
end

#Drums
live_loop :kick1, sync: :met do
  my_form = (knit true,16, false,32).tick(:c)
  sample :bd_haus, cutoff: 80, amp: 2, on: my_form
  sleep 1
end
live_loop :randomsnare, sync: :met do
  stop
  sample :sn_generic, cutoff: 100, amp: 0.8, rate: 2,
    finish: rrand(0.1,0.8) if spread(3,21).tick and one_in(4)
  #sample :bd_haus, cutoff: 80, amp: 2 if spread(ring(1,3,5).look,11).tick #and one_in(2)
  sleep 0.25
end
live_loop :snare, sync: :met do
  sleep 2
  sample :sn_generic, cutoff: range(90,120, step: 2.5).reflect.tick(:d), amp: rrand(0.5,0.9), rate: rrand(1.1,1.8),
    finish: rrand(0.1,0.8) #if spread(3,21).tick #and one_in(1)
  #sample :bd_haus, cutoff: 80, amp: 2 if spread(ring(1,3,5).look,11).tick #and one_in(2)
end

# Oneshots
use_synth :growl #:prophet / :growl :bnoise :gnoise
# a4 d4
#play :d4, attack: 8, release: 8, cutoff: range(90,130, step: 10).reflect.tick(:d), amp: 1

with_fx :reverb, room: 0.8 do
  
  live_loop :onshotsloop do
    #stop
    
    use_synth :growl #:prophet / :growl :bnoise :gnoise
    use_synth :prophet#:prophet / :growl :bnoise :gnoise
    use_synth :cnoise#:prophet / :growl :bnoise :gnoise
    use_synth :pulse#:prophet / :growl :bnoise :gnoise
    
    sleep 4
    12.times do
      use_synth ring(:prophet, :growl, :pulse).choose
      #play ring(:d5, :a5).choose, attack: 0, release: 0.15, cutoff: range(60,130, step: 5).reflect.tick(:d), amp: 1, pan: rrand(-1,1)
      play ring(:d6, :a6).choose, attack: 0, release: 0.15, cutoff: range(60,130, step: 5).reflect.tick(:d), amp: 1, pan: rrand(-1,1)
      #sleep 2
      #play :g5, attack: 4, release: 4, cutoff:
      sleep 0.25
    end
    sleep 0
  end
end

```

[Link to Hydra visuals](https://hydra.ojack.xyz/?code=JTJGJTJGJTIwR2FsYXh5JTIwVHJpcCUwQSUyRiUyRiUyMGJ5JTIwUmFuZ2dhJTIwUHVybmFtYSUyMEFqaSUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGcmFuZ2dhcHVybmFtYWFqaTEud2l4c2l0ZS5jb20lMkZwb3J0Zm9saW8lMEElMEFzaGFwZSgxJTJDMSklMEElMjAlMjAubXVsdCh2b3Jvbm9pKDEwMDAlMkM2KSUwQSUyMCUyMC5ibGVuZChvMCkubHVtYSgpKSUwQSUyMCUyMC5hZGQoc2hhcGUoNSUyQzAuNjI1KSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMC5yb3RhdGUoMSUyQzEpLm11bHQodm9yb25vaSgxMDAwJTJDMSkubHVtYSgpKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMC5yb3RhdGUoMS41KSkuc2Nyb2xsWCglNUIwLjElMkMtMC4wNjI1JTJDMC4wMDUlMkMwLjAwMDAxJTVEJTJDMCklMEElMjAlMjAuc2Nyb2xsWSglNUIwLjElMkMtMC4wNjI1JTJDMC4wMDUlMkMwLjAwMDAxJTVEJTJDMCklMEElMjAlMjAub3V0KCk=)
