Here’s some Tidalcycles sound plus Hydra visuals. Experimenting with Hydra listening to Tidalcycles and changing the visualizations based on sound. It’s pretty glitchy in many ways, some of it on purpose, some of it due to the limitations of my computer. It doesn’t like playing 20 different samples 100 times every beat… for some reason. That’s ok, I embrace the glitch.
The video (WARNING! Flashing and strobe-like animations):
The Tidalcycles code:
bpm 110 do let something = 4 let somethingelse = 420 -- new functions let rect x y = stutWith x y (# gain 0.7) let buzzy x = chop x . (#crush 10) let slicey = fast 16 . striate (choose[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) . (# hpf 200) . (# gain 0.85) let randpan = (fast 0.8 $ pan (perlin)) let rip a b p = within (0.25, 0.75) (slow 2 . rev . stut 8 a b ) p -- thanks kindohm! let blurbdown a = within (0.25, 0.75) (slow 2 . rev . stutWith 8 a ( (|* speed (-1.9)) )) let blurbup a = within (0.25, 0.75) (slow 2 . stutWith 8 a (|* speed (1.4)) ) let mess = linger (1/30) . (|* gain 1.02) let phaser = phaserrate 0.3 # phaserdepth 0.9 let vintage = coarse (range 2 3 $ perlin) # crush (range 8 16 $ perlin) let m = shape 0.4 # amp 0.8 let del x y = delay 0.1 # delaytime x # delayfb y p "s" -- $ every 3 (within (0.5,1) (linger 0.25 . fast 1.33)) -- $ linger 0.125 $ fast 3 $ (98 ~>) $ sb 0.9 (#phaser) $ every 3 (rip 0.5 (1/64)) -- $ (9 ~>) $ sb (fast 0.34 $ sine - 0.55) (within (0,0.25) ((rect 20 (choose[(1/24),(1/20)])))) $ (11 ~>) $ sb 0.3 (# randpan) -- $ (101 ~>) $ sb 0.1 (buzzy 8) $ every 5 (within (0.25,0.75) (fast 4 . striate 4 . (# gain 0.76))) -- $ (87 ~>) $ sb 0.1 (#binshift (choose[0,0.5,1,2,3,5])) -- $ (23 ~>) $ sb 0.1 (#smear (choose[0.5,0.75,1,1.5,2])) -- $ (102~>) $ sb 0.8 (#real (choose[0.5,0.75,1,1.5,2])) -- $ every 2 ( rect 8 (1/32)) $ every 3 (rev) $ every 5 (scramble 4) $ every 7 (scramble 16) $ whenmod 11 9 (# speed (choose[2,3,4])) $ (111 ~>) $ sb 0.12 (rev) $ every 7 (db 0.3) $ stack [ (0.25 <~) $ st "[t~~t ~~~t ~t~~ t~~~]" $ s "kicks:67", (0.5 ~>) $ st "[<t t*2> ~ ~ ~ ]" $ s "kicks:23" # gain 0.7 # speed 0.8, twofour $ s "kicks:180" # shape 0.4 # sustain 0.1 # speed 4 # hpf 300 # del (1/12) (choose[0.9,0.9,0.9,0.7,0.7,0.6]), st "{tt~t~~t~~}%16" $ s "kicks:10" # hpf 900 # speed 3 # gain 1 # sus 0.04, (18 ~>) $ db 0.54 $ st "t*8" $ s (choose["db:4","db:3","db:5","db:6"]) # sus 0.02 # gain 0.8 # cut 2 # speed 0.8 # del (1/30) (fast 2 $ choose[0.1,0.5,0.6,0.7,0.9,1.1]) -- st "<t~~~ ~~~~ ~~>" $ s "vdrum:11" # hpf 900 # speed 0.25 # gain 0.8 ] # m
The Hydra code:
a.setBins(6) a.setSmooth(0.4) a.hide() a.setCutoff(0.2) osc(0.5,0.5, () => (a.fft[0]+2)) shape(2).rotate(1.75).repeatX(10).scroll(200).repeatY( () => (a.fft[0])+1*8 ).scrollX(0.2,0.05).rotate(-0.07,0.07).out(o1) shape(2).rotate(-1.75).repeatX(10).scroll(-200).repeatY( () => (a.fft[0])+1*8 ).scrollX([-0.2,0.2],[-0.05,0.05]).rotate(0.07,-0.07).scale([0.2,0.2,2,2,2,20,20,20,20,2]).out(o2) shape(4, () => (a.fft[5]) ).scale(2).scrollY(100).repeat(3).modulate(noise(0.1,0.2)).rotate(0.2,-0.2).diff(o1).diff(o2).out(o0)