I was playing around with variations of “notes” from the tidal cycle archive and came across this line that sounded oddly familiar to my phone when it is buzzing intensely at me.
d5 $ slow 4 $ s "notes:2" >| note (scale "major" ("<0>(2,2)") +"f2") # room 2.3 #krush 1.7 # gain (range 1.0 1.4 rand)
Hearing the buzz repeat itself, over and over again, gave me flashbacks to all the times I got notifications when I wasn’t supposed to – such as in my deep nap mode, when in a class trying to focus, when on a digital detox etc. Phone notifications can be inviting at times – I love getting texts from a best friend, family, or a loved one – but it could also be very irritating. I was inspired to create a composition expressing this very specific type of irritation we feel sometimes towards our digital best friend.
I used a mix of notes:1 and notes:2 for the main melodies. The build up of the sound was achieved by speeding up the base drums, snare drums, the bass (auto:5, auto:7), and the three melodies. For the visuals, I tried to find a cartoon character that resembled how I look like when I am sleep deprived. I came across a clip that I found really funny, from this particular scene in Spongebob where Squidward was very upset from the endless incoming calls from Spongebob and Patrick. Squidward had just finished preparing himself to sleep and was ready to go to dream land. The last thing he wanted to hear was the phone buzzing. This scene matched my inspiration perfectly. I wanted to sync the build up of the music to the anger I assume was building within Squidward. The story was the main component of focus within the composition, hence both the code for the visual and sound were structured around the storyline, the comments of which were left on Atom for the viewers to follow during the performance.
I hope you enjoy 😴
Tidal:
-- START do d2 $ fast 2 $ s "notes:1" >| note (arp "up" (scale "major" ("[2,3,7,6]"+"<2 3 7 3>") + "f4")) # room 0.4 # gain (range 0.7 1.0 rand) d1 $ fast 2 $ s "notes:1" >| note (scale "major" ("[0,<5 <4 3>>](<1 2>,4)") + "f3") # room 0.7 # gain 1.5 #krush 1.2 d3 $ s "bd bd <sd> bd" # room 0.1 d14 $ fast 2 $ ccv "<127 50 127 50 >" # ccn "1" # s "midi" -- CALL INCOMING!!!!! do d5 $ slow 4 $ s "notes:2" >| note (scale "major" ("<0>(2,2)") +"f2") # room 2.3 #krush 1.7 # gain (range 1.0 1.4 rand) d14 $ slow 2 $ ccv "<127 50 127 50 >" # ccn "1" # s "midi" d5 silence -- Second melody d4 $ fast 2 $ s "notes:2" >| note (scale "major" ("<6 <2 4 8 4 2>>(1,3)")) # room 1.2 # gain 1.1 hush -- build up of anger do d7 $ slow 2 $ s "[auto:5, auto:7]" # gain (1.1) # size (0.9) # room (0.8) d8 $ s "[~ sd, hh*2 hh*2 hh*2 <hh*6 [hh*2]!3>]" # room 1 # gain (range 0.8 1.0 rand) d9 $ s "sd*4" # krush 2 # room 0.4 d14 $ fast 16 $ ccv "<127 50 127 50 >" # ccn "1" # s "midi" hush -- ANGER BUILDING d10 $ qtrigger 10 $ seqP [ (0, 1, s "[sd*4]"), (1, 2, s "[bd*8, sd*8]"), (2, 3, s "[bd*16, sd*16, auto:1*16]"), (3, 4, s "[bd*32, sd*32, auto:1*32]"), (4, 5, s "sine*8" # up "g ~ e a [g ~] [~c] ~ ~") ] -- REAL ANGRY do d14 $ whenmod 24 16 (# ccn ("0*128"+"<t(7,16) t t(7,16) t>")) $ ccn "0*128" # ccv (slow 2 (range 0 127 saw)) # s "midi" d5 $ slow 2 $ s "notes:2" >| note (scale "major" ("<0>(2,2)") +"f2") # room 1.8 #krush 1.2 # gain 1 d6 $ s "sine*8" # up "g? ~ e a [g ~] [~c] ~ ~" # room (1) # gain (0.9) d7 $ slow 2 $ s "[auto:5, auto:7]" # gain (1) # size (0.9) # room (0.8) # cutoff 5000 d8 $ s "[~ cp, hh*2 hh*2 hh*2 <hh*6 [hh*2]!3>]" # room 1.1 -- fast hush -- OMG do d14 $ fast 16 $ whenmod 24 16 (# ccn ("0*128"+"<t(7,16) t t(7,16) t>")) $ ccn "0*128" # ccv (slow 2 (range 0 127 saw)) # s "midi" d5 $ slow 1 $ s "notes:2" >| note (scale "major" ("<0>(2,2)") +"f2") # room 1.8 #krush 1.2 # gain 1 d6 $ fast 2 $ s "sine*8" # up "g? ~ e a [g ~] [~c] ~ ~" # room (1) # gain (0.7) d7 $ slow 1 $ s "[auto:5, auto:7]" # gain (1) # size (0.9) # room (0.8) # cutoff 5000 d8 $ fast 2 $ s "[~ cp, hh*2 hh*2 hh*2 <hh*6 [hh*2]!3>]" # room 1 do d14 $ fast 4 $ ccv "<127 50 127 50 >" # ccn "1" # s "midi" d9 silence d8 silence d7 silence d6 silence d4 silence d3 silence d2 silence d1 silence d5 silence -- PEACEFUL TIMES do d14 $ fast 1 $ ccv "<127 50 127 50 >" # ccn "1" # s "midi" d13 $ fast 1 $ s "notes:2" >| note (scale "major" ("a3 g3 e3 <b3 c3 e3 f3>")) # room 1.2 # gain 1.1 hush
Hydra:
// video control vid = document.createElement('video') vid.autoplay = true vid.loop = true vid.volume = 0 // BE SURE TO CHANGE THE FOLDER NAME // BE SURE TO PUT A SLASH AFTER THE FOLDER NAME TOO basePath = "/Users/yejikwon/Desktop/Fall\ 2022/Live\ Coding/class_examples/composition/video/" videos = [basePath+"1.mp4", basePath+"2.mp4", basePath+"3.mp4", basePath+"4.mp4", basePath+"5.mp4"] // choose video source from array // SLEEP TIME vid.src = videos[0] // CALL vid.src = videos[1] // HELLO?! vid.src = videos[2] // HELLO?!!!! vid.src = videos[3] // THE END vid.src = videos[4] // use video within hydra s1.init({src: vid}) render // cc[1] will be zero always during the "A" section // thus making the scale value not change src(s1).scale(()=>-1*cc[0]*cc[1]+1).out() render(o0) let whichVideo = -1; update = ()=> { // only change the video when the number from tidal changes, // otherwise the video wil keep triggering from the beginning and look like it's not playing // cc[2] is for changing the video if (cc[2]!=whichVideo){ vid.src = videos[ccActual[2]] whichVideo=cc[2]; } }