The 14-week journey has finally ended, and it was time to show everyone what we’ve been working on and how we grew throughout the semester! We were inspired by Alice in Wonderland when brainstorming for our final performance, hence our funky team name. However, while we were composing, we decided to stray off from following Alice in Wonderland’s narrative from the start to the end, and instead decided to mix in some random visuals and sounds in there as well while still keeping the general flow of the composition based on Alice in Wonderland.
We wanted to show contrast and build-up of the visuals and sounds between the starting point and the ending point, so we decided to start with black-and-white visuals and rather quieter, mysterious audio to go along with it to hint at what’s about to come later in the composition, which was Phase 1.
In Phase 2, we began to include very obvious Alice references (i.e. video and audio of the door closing and opening, teacups, Alice in Wonderland soundtrack, etc.), and our climax for Phase 2 was the appearance of the Cheshire cat image — I also added a sound clip saying “a Cheshire cat” from the movie, and this was the signal for transition into Phase 3, which was the “craziest” phase in our composition.
We tried to make the visuals and the audio as engaging as possible in Phase 3 because this was the final part of our performance, so there were a lot of fast beats and loud melodies. We also wanted to end with “a bang,” so we decided to use the chorus of the song “Gnarly” by Katseye and have a little surprise dance party to end our performance! The reason why we chose this song was because we thought the beats of it was very similar to something that we’d create in Tidal, and the whole repetition of the word “gnarly” seemed to fit well with our the intriguing, slightly unpredictable vibes we wanted for our last phase.
I want to give a special shoutout to Emilie and Rashed for being down to join me even though it was very last minute. 🙂 Because we wanted it to be a total surprise and make it seem like it was a “spontaneous” attempt to gauge audience engagement, they climbed up on stage when I gave them the signal so that it looked out of the blue rather than them waiting on stage beforehand, and we’re happy that it all worked out well!
Although there was a definite shift from serene/calm visuals/audio to the crazy/vibrant point we were at by the end of our composition, we still tried to keep the theme of mysterious, outworldly, fantastical, and intriguing vibes throughout the whole performance so that there was still a somewhat coherent picture portrayed to the audience.
With that being said, I’ll stop yapping and post the codes here now:
Hydra code (Adilbek — phase 1 + phase 2 till the Cheshire cat part; Jannah — ending of phase 2 + phase 3):
// Init values
basePath = "https://blog.livecoding.nyuadim.com/wp-content/uploads/"
videoNames = [basePath+"tea-1.mov", basePath+"kettle.mov"]
vids = []
allLoaded = false
loadedCount = 0
for (let i=0; i<videoNames.length; i++){
vids[i] = document.createElement('video')
vids[i].autoplay = true
vids[i].loop = true
vids[i].crossOrigin="anonymous"
vids[i].src = videoNames[i]
vids[i].addEventListener(
"loadeddata", function () {
loadedCount += 1;
console.log(videoNames[i]+" loaded")
if (loadedCount == videoNames.length){
allLoaded = true;
console.log("All loaded");
}
}, false);
}
whichVid = 1
s0.init({src: vids[0]})
update = () =>{
if (whichVid != ccActual[10]){
whichVid = ccActual[10];
s0.init({src: vids[whichVid]})
}
}
// Phase 1
// Calm Visuals with transition to Alice in Wonderlands
// Hydra 1.1
osc(() => Math.sin(time) * cc[0] * 200, 0)
.kaleid(() => cc[0] * 200)
.scale(1, 0.4)
.out()
// Hydra 1.2
osc(200, 0)
.kaleid(200)
.scale(1, 0.4)
.scrollX(0.1, 0.01)
.mult(
osc(() => cc[0] * 200, 0)
.kaleid(200)
.scale(1, 0.4)
)
.out();
// Hydra 1.3
shape(1,0.3)
.rotate(2)
.colorama(3)
.thresh(.2)
.modulatePixelate(noise(()=>(cc[0])*2.5,.1))
.out(o0)
//birds???
//where are we
// Hydra 1.4
shape(20,0.1,0.01)
.scale(() => Math.sin(time)*3)
.repeat(() => Math.sin(time)*10)
.modulateRotate(o0)
.scale(() => Math.sin(time)*2)
.modulate(noise(()=>cc[0]*1.5,0))
.rotate(0.1, 0.9)
.out(o0)
// Hydra 1.5
src(o0)
.layer(src(o0).scale(() => 0.9 + cc[0] * 0.2).rotate(.002))
.layer(shape(2, .5).invert().repeat(3,2).luma(.2).invert().scrollY(.1, -.05).kaleid(3).rotate(.1,.2))
.out()
// Phase 2
// Door appears
// Tea cup appears
// Tea clinking - video
// Door opening and entering the door - video
// ------ Build Up ----------
// Furniture appears again
// Furniture rotating around the screen
// Cheshire Cat starts to appear during the buildup and fully visible on drop
// Cheshire Cat flicker with left beats
// Hydra 2.1
s3.initVideo("https://blog.livecoding.nyuadim.com/wp-content/uploads/door-animation.mov")
src(s3).scale(() => {
const video = s3.src
const scaleStartTime = 0
video.currentTime = cc[0] * 2
const scaleAmount = Math.max(1.2, (video.currentTime - scaleStartTime) * 1.6)
return scaleAmount
}).out()
//who's there
//creak
// Hydra 2.2
// s2.initVideo("https://blog.livecoding.nyuadim.com/wp-content/uploads/tea.mov")
// src(s2).invert().scale(1.15).out()
src(s0).invert().scale(1.15).out()
// Hydra 2.3
s2.initVideo("https://blog.livecoding.nyuadim.com/wp-content/uploads/tea.mov")
src(s2).invert().scale(0.1).rotate(() => Math.sin(time) * 0.1).kaleid(() => cc[1] * 32).out()
// Hydra 2.4
voronoi(350,0.15)
.modulateScale(osc(8).rotate(Math.sin(time)),.5)
.thresh(.8)
.modulateRotate(osc(7),.4)
.thresh(.7)
.diff(src(o0).scale(1.8))
.modulateScale(osc(2).modulateRotate(o0,.74))
.diff(src(o0).rotate([-.012,.01,-.002,0]).scrollY(0,[-1/199800,0].fast(0.7)))
.brightness([-.02,-.17].smooth().fast(.5))
.out()
// Hydra 2.5 cat meow
//what is a cheshire cat??
s3.initImage("https://blog.livecoding.nyuadim.com/wp-content/uploads/cheshire-cat.png")
src(s3).blend(
noise(18)
.colorama(9)
.posterize(2)
.kaleid(50)
.mask(
shape(25, 0.25)
.modulateScale(noise(400.5, 0.5))
)
.mask(shape(400, 1, 2.125))
.modulateScale(
osc(6, 0.125, 0.05)
.kaleid(50)
)
.mult(
osc(20, 0.05, 2.4)
.kaleid(50),
0.25
)
.scale(1.75, 0.65, 0.5)
.modulate(noise(0.5))
.saturate(6)
.posterize(4, 0.2)
.scale(1.5),
0.7
)
.rotate(()=> Math.sin(time))
.scale(() => Math.cos(time))
.out()
//transition to phase 3
src(s3).blend(
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7].smooth(1))
.color(0.2,0.4,0.3)
.scrollX(()=>Math.sin(time*0.27))
.add(
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7,0.5,0.3].smooth(1))
.color(0.6,0.2,0.5)
.scrollY(0.35)
.scrollX(()=>Math.sin(time*0.33)))
.add(
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7,0.3].smooth(1))
.color(0.2,0.4,0.6)
.scrollY(()=> cc[0]*2)
.scrollX(()=>Math.sin(time*0.41)*-1))
.add(
src(o0).shift(0.001,0.01,0.001)
.scrollX([0.05,-0.05].fast(0.1).smooth(1))
.scale([1.05,0.9].fast(0.3).smooth(1),[1.05,0.9,1].fast(0.29).smooth(1))
,0.85)
.modulate(voronoi(10,2,2)),
0.7
)
.rotate(() => Math.sin(time))
.scale(() => Math.cos(time))
.out()
//
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7].smooth(1))
.color(0.2,0.4,0.3)
.scrollX(()=>Math.sin(time*0.27))
.add(
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7,0.5,0.3].smooth(1))
.color(0.6,0.2,0.5)
.scrollY(0.35)
.scrollX(()=>Math.sin(time*0.33)))
.add(
shape([4,5,6].fast(0.1).smooth(1),0.000001,[0.2,0.7,0.3].smooth(1))
.color(0.2,0.4,0.6)
.scrollY(()=> cc[0]*2)
.scrollX(()=>Math.sin(time*0.41)*-1))
.add(
src(o0).shift(0.001,0.01,0.001)
.scrollX([0.05,-0.05].fast(0.1).smooth(1))
.scale([1.05,0.9].fast(0.3).smooth(1),[1.05,0.9,1].fast(0.29).smooth(1))
,0.85)
.modulate(voronoi(10,2,2))
.out();
// Phase 3
//hydra 3.0
osc(18, 0.1, 0).color(2, 0.1, 2)
.mult(osc(20, 0.01, 0)).repeat(2, 20).rotate(0.5).modulate(o1)
.scale(1, () => (cc[0]*8 + 2)).diff(o1).out(o0)
osc(20, 0.2, 0).color(2, 0.7, 0.1).mult(osc(40)).modulateRotate(o0, 0.2)
.rotate(0.2).out(o1)
//hydra 3.1
osc(()=> cc[0]*10,3,4)
.color(0,4.2,5)
.saturate(0.4)
.luma(1,0.1, (6, ()=> 1 + a.fft[3]))
.scale(0.7, ()=> cc[0]*0.5) //change to * 5
.diff(o0)// o0
.out(o0)// o1
//hydra 3.2
osc(5, 0.9, 0.001)
.kaleid([3,4,5,7,8,9,10].fast(0.1))
.color(()=>cc[0], 4)
.colorama(0.4)
.rotate(()=>cc[0],()=>Math.sin(time)* -0.001 )
.modulateRotate(o0,()=>Math.sin(time) * 0.003)
.modulate(o0, 0.9)
.scale(()=>cc[0])
.out(o0)
//hydra 3.3
osc(()=>cc[0]*100, -0, 1)
.pixelate(40.182)
.kaleid(() => cc[0] * 19 + 3)
.rotate(()=>cc[0]*20, 0.125)
.modulateRotate(shape(3) //change shape maybe
.scale(() => Math.cos(time) * 2) //change to 5
.rotate(()=>cc[0], -0.25))
.diff(src(o0)
.brightness(0.3))
.out();
//hydra 3.4
osc(15, 0.01, 0.1).mult(osc(1, -0.1).modulate(osc(2).rotate(4,1), 20))
.color(0,2.4,5) //change to cc[0]
.saturate(0.4)
.luma(1,0.1, (6, ()=> 1 + a.fft[3]))
.scale(()=> cc[0], ()=> 0.7 + a.fft[3])
.diff(o0)// o0
.out(o0)// o1
//hydra 3.5
osc(49.633, 0.2, 1)
.modulateScale(osc(40, ()=>cc[0]*0.3, 1)
.kaleid(15.089))
.repeat(()=>cc[0], 2.646)
.modulate(o0, 0.061)
.scale(()=>cc[0], ()=> 1+ a.fft[3])
.modulateKaleid(shape(4, 0.1, 1))
.out(o0);
//crazyy 3.5
s0.initImage("https://blog.livecoding.nyuadim.com/wp-content/uploads/door.png")
s1.initImage("https://blog.livecoding.nyuadim.com/wp-content/uploads/cup.png")
s2.initVideo("https://blog.livecoding.nyuadim.com/wp-content/uploads/tea.mov")
src(s2) //alternate between s0,s1,s2,s3
.blend(
osc(5, 0.9, 0.001) //change first to cc[0]
.kaleid([3,4,5,7,8,9,10].fast(0.1))
.color(()=>cc[0], 4)
.colorama(0.4)
.rotate(()=>cc[0],()=>Math.sin(time)* -0.001 )
.modulateRotate(o0,()=>Math.sin(time) * 0.003)
.modulate(o0, 0.9)
.scale(0.9))
.rotate(() => Math.sin(time))
.scale(() => Math.cos(time))
.out(o0)
//end
src(s3)
.modulate(noise(3, 0.2))
.modulate(noise(()=>(cc[0]+cc[1])*1,0.3))
.blend(src(o0).scale(1.01), 0.7)
.out(o0)
s2.initVideo("https://blog.livecoding.nyuadim.com/wp-content/uploads/Gnarlyy.mp4")
src(s2).blend(
osc(5,0.9,0.01)
.kaleid([3,4,5,7,8,9,10].fast(0.1)))
// .colorama(0.1) //adilbek got it!!
.out()
hush()
// Phase 3.5
// Dancing people with "Not Gradebale" text
osc(200,0).kaleid(200).scale(1, 0.4).scrollX(0.1, 0.01).mult().out()
s0.initCam()
src(s0).saturate(2).contrast(1.3).layer(src(o0).mask(shape(4,2).scale(0.5,0.7).scrollX(0.25)).scrollX(0.001)).modulate(o0,0.001).out(o0)
osc(15, 0.01, 0.1).mult(osc(1, -0.1).modulate(osc(2).rotate(4,1), 20))
osc(13,0,1)
.modulate(osc(21,0.25,0))
.modulateScale(osc(34))
.modulateKaleid(osc(55),0.1,1)
.out()
Tidal code (Clara — phase 1 + phase 2, Jiho — phase 3):
-- phase 1
-- hydra 1.1
d13 $ ccv "20 90" # ccn "0" # s "midi" -- change from 20 90 to 10 70
d2 $ slow 1 $ s "~ hh" # gain 2
d4 $ slow 2 $ s "superpiano" # n (range 60 72 $ sine) # sustain 0.1 # room 0.5 # gain 1.2 -- start as slow 2, then $ fast 2
d3 $ s "birds:3"
-- d3 $ "birds" -- alt between birds and birds:3
-- hydra 1.2
d1 $ n ("<c2 a2 g2>")
# s "notes"
# gain ((range 0.6 0.9 rand) * 1.2)
-- # legato 1
-- # room 0.8
# size 0.95
# resonance 0.5
# pan (slow 5 sine)
# cutoff (range 500 1200 $ slow 4 sine)
# detune (range (-0.1) 0.1 $ slow 3 sine)
d9 $ n ("<[c3,fs3,g3] [~ c4]>*2 <[a2,gs3,e3,b2]*3 [~ d4,fs4]>")
# s "notes"
# gain (range 0.6 0.9 rand)
# legato 0.7
# room 0.6
# size 0.8
# resonance 0.4
# pan (slow 5 sine)
-- hydra 1.3
d2 $ ccv "17 [~50] 100 ~" # ccn "0" # s "midi"
d3 $ n "e5 ~ ~ a5 fs5 ~ e5 ~ ~ ~ c5 ~ ~ a5 ~ ~"
# s "notes"
# legato 1
# gain 1
-- # pan (slow 4 sine)
# room 0.7
# size 0.9
-- d9 silence
-- hydra 1.4
do
d2 $ ccv (segment 8 "0 20 64 127 60 30 127 50") # ccn "0" # s "midi"
d3 $ n "[0 4 7 12]!4"
# s "notes"
# gain "1"
# legato "0.5"
# speed "1"
-- # room "0.8"
# lpf 2000
-- Hydra 1.5
d5 $ s "[~ drum]*2" -- drum *4, then *2
# gain "1.3"
# delay "0.3"
# delayfeedback "0.2"
# speed "1"
do
d1 $ s "bd(5,8)"
# n (irand 5)
# gain "1.1"
# speed "0.6"
# lpf 600
d2 $ struct "<t(3,120) t(3,27,120)>" $ ccv ((segment 128 (range 127 0 saw))) # ccn "0" # s "midi"
-- END OF PHASE 1
-- d3 silence
-- d5 silence
-- PHASE 2: alice in wonderland
-- Hydra 2.1
do
d2 $ ccv "[[0 ~ 50 127 127]]" # ccn "0" # s "midi"
d1 $ s "[[door:1 ~ door:2 ~ ~]]" # gain 3
# speed 1
d4 $ slow 2 $ s "superpiano" # n (range 60 72 $ sine) # sustain 0.1 # room 0.5 # gain 1.5
d10 $ s "alice" # gain 1
d3 $ slow 2 "mug" # gain 1.8
d10 silence
-- Hydra 2.2
do
d2 $ ccv "[[1 0 1 0]]" # speed 1.2 # ccn "10" # s "midi"
d4 $ slow 4
$ s "[ [glass:3 ~ glass:5 ~]]"
# gain 1.5
# speed 1.2
-- drum
# shape (choose [0.3, 0.6])
# room 0.4
# delay 0.25
-- glass
# lpf (slow 4 $ range 800 2000 sine)
# pan (slow 8 $ sine)
-- d10 silence
d5 $ every 3 (rev)
$ s "space"
# n (run 5 + rand)
# octave "<5 6>"
# speed (rand * 0.5 + 0.8)
# lpf (slow 16 $ range 800 2000 sine)
# resonance 0.4
# orbit "d5"
-- Hydra 2.3
do
d2 $ ccv "80 [10 ~] [30 ~] ~" # ccn "1" # s "midi"
d1 $ s "bd bd sd bd" # gain 1.5
d3 $ slow 2 $ s "superpiano"
# n (scale "minor pentatonic" "0 2 4 7 11" + "<12 -12>")
# octave 5
# sustain 8
# legato 0.8
# gain 1
# lpf (slow 16 $ range 800 2000 sine)
# room 0.7
# delay 0.75
-- # delayfeedback 0.8
# speed (slow 4 $ range 0.9 1.1 sine)
# pan (slow 16 sine)
-- # vowel "ooh"
# orbit "d5"
d7 $ stack [
slow 4 $ s "pad:1.5" # gain 0.9,
s "bass*2" # room 0.5 # gain 1.2
]
-- d1 silence
-- Hydra 2.4
do
d6 $ s "~"
d8 $ every 2 (|+ speed 0.2) $ slow 2 $ sound "hh*8" # gain 1.5 # hpf 3000 # pan rand
d5 $ s "~ bass:1" # gain 2 # speed 0.5 # lpf 300 # room 0.4
d6 $ every 2 (0.25 ~>) $
s "~ cp"
# gain 1.5
# speed 1.2
d8 $ s "hh hh hh <hh*6 [hh*2]!3>" # gain 1.5
d5 $ s "[~ ~ bass:1]"
# gain 1.8
# speed 0.6
# lpf 400
# room 0.3
d3 $ qtrigger $ filterWhen (>=0) $ seqP [
(0,1, s "[bd bd] [sd hh]"),
(1,2, s "[bd bd bd bd] [sd hh]"),
(2,3, s "[bd bd bd bd bd bd] [sd hh]"),
(3,4, s "[bd bd bd bd bd bd bd bd] [sd hh]")
] # gain (slow 4 (range 0.8 1 saw))
-- Hydra 2.5
d9 $ s "cat3" # gain 5.2
# orbit "-1"
# dry "1"
# room "0"
# delay "0"
# shape "0"
# resonance "0"
# delay "0"
# delayfeedback "0"
# lpf "20000"
d4 $ stack [
s "<bd sn cp hh>" # speed "1 1.5 2",
s "808bd:4(3,8) 808sd:7(5,8)" # gain 1.1
]
d8 $ stack [
s "moog" >| note (arp "up" (scale "major" ("[0,2,4,6]") + "a5")) # room 0.4 # gain 0.7,
ccv 0 # ccn 1 # s "midi"
]
do
d4 $ s "bd bd sd bd cp odx mt <[bd*2]!8>" # gain 1.5
d2 $ ccv (segment 8 "0 20 64 [50 90]") # ccn "0" # s "midi"
d9 $ fast 2 $ s "moog" >| note (arp "up" (scale "major" ("[0,2,4,6]") + "a5")) # room 0.4 # gain 1 # squiz 0.3
-- Hydra 2.6
do -- change from d4 to d1
d1 $ sound "feel:2*8"
# gain 1.9 # speed (range 1 3.5 $ saw)
# cutoff (range 800 2000 $ sine) # resonance 0.2
# room 0.5 # accelerate 0.5
# sz 0.5 # crush 1
d2 $ ccv "0 20 64 90 0 30 70 112" # ccn "0" # s "midi"
do
d2 silence
d3 silence
d6 silence
d7 silence
d8 silence
d9 silence
-- END OF PHASE 2
do
d3 $ jux rev $ "bass:4*2 <bass:4 [bass*4]!2>"
# room 0.3 # gain 5
# shape 0.7
d1 $ ccv "0 40 64 14 70 112" # ccn "0" # s "midi"
d4 $ iter 4 $ sound "hh*2 hh*4 hh*2 <[hh] hh*2!2>"
# room 0.3 # shape 0.4
# gain 1.7
# speed (range 1.3 1.6 $ slow 4 sine)
do
d5 $ fast 2 $ s "sine" >| note (arp "up" (scale "major" ("[2,0,-4,6]"+"<-8 4 -2 5 3>") + "f5"))
# room 0.4 # gain 1.4
# legato 3
# pan (slow 8 $ sine)
d1 $ ccv "40 12 60 25 <34 70>" # ccn "0" # s "midi"
do
d6 $ s "arpy*4 arpy@1~ ~"
# legato 2.5
# up "f6 a5 c3 g6" # shape 0.7 # gain 1.3
d7 $ s "hh*8 ~ ~ cp!2 ~"
# gain 3 # shape 0.5 # resonance 0.5 # krush 0.3
d1 $ ccv "55 14 20 ~ ~ 70 112" # ccn "0" # s "midi"
d8 $ s "gnarly:1@1.2"
# cut 1 # shape 0.9 # gain 7
do
d10 $ s "bd*2 drum*4 <sd:1 feel:16> [~bd?]"
# gain "4.5 5 4" # shape 0.8
d1 $ ccv "[23, 45] [45, 12] [51 90]" # ccn "0" # s "midi"
d9 $ iter 4 $ sound "{<arpy:3(4,8) arpy:5(3,8) arpy:2(7,8)>}%2"
# n "7 32 11 6 21 17 10 3"
# room 0.5 # speed 2 # gain 1.4 # shape 0.2
do
d2 $ silence
d3 $ silence
d4 $ silence
d5 $ silence
d6 $ silence
d7 $ silence
d10 $ silence
do
d2 $ slow 1.25 $ s "sine" >| note (arp "up" (scale "min" ("[7,5,8,3,2,7,8,3,9,5]") + "a5"))
# shape 0.9 # gain 7 # sz 0.4
d1 $ ccv "45 ~~ 12 ~~ 75" # ccn "0" # s "midi"
do
d3 $ s "[bd*2, drum:2*4, <sd:4(3,8) feel:12(5,8)>, [~ bd:7?]]"
# gain "5 4 6" # shape 0.5
# squiz (range 1.5 3 $ slow 8 sine)
d1 $ ccv "12 51 30 ~~ [90 37]" # ccn "0" # s "midi"
d4 $ s "[newnotes:3*2, ~ newnotes:5*4?]" # gain 3 # cut 1
# n "-1" # shape 0.2
# squiz (range 1 1.5 $ slow 8 sine)
do
d5 $ s "[~, sd:3*4, [~ sd:5@2 sd:6*2]?]"
# gain 4 # speed 1.5
# size 0.4
d6 $ s "[~, metal:2(5,8), ~, metal:4(3,8)]"
# gain 1.7 # speed 0.7
# pan (slow 16 sine) # room 0.6
d7 $ stack [
s "feel:2*8" # gain "1",
s "bass:11*8" # gain "1.6" # speed "1.2" # pan "-0.5",
s "hh:4*4" # gain "3" # speed "0.7" # pan "0.5"
] # krush (range 0 2 $ rand)
d8 $ silence
d1 $ ccv "32 15 ~ ~ 69 ~~ [15 37]" # ccn "0" # s "midi"
do
d9 $ stack [
s "feel:2*8" # gain "1.4",
s "bass:11*8" # gain "1.6" # speed "1.6" # pan "-0.5",
s "hh:4*4" # gain "3" # speed "1" # pan "0.5"
] # krush (range 0 2 $ rand)
d8 $ s "gnarly:1"
# cut 1 # shape 0.9 # gain 7 # speed 3
do
d2 $ silence
d3 $ silence
d5 $ silence
d9 $ silence
do
once $ s "msam:2"
# gain 5 # legato 4
hush
once $ s "msam:4"
# gain 5
Aaaand here’s our final performance video!!! Hope you guys enjoy it. 🙂
Last but not least, these are some future improvements we want to make/the limitations coming from Jiho:
I’ve always struggled with creating impactful beat drops, and I think they’re especially important in rave music because they really shape how the audience responds. Looking back, I feel I could’ve done a better job and spent more time developing that section. It was a similar experience with the composition project—I kept layering different sound lines because each previous version felt dull or lacking. Most of the added elements ended up contributing more to the buildup than the drop itself. Personally, I think the buildup ended up being stronger than the actual beat drop. Moreover, while the integration of the first gnarly sound worked well, the ending felt too abrupt. That’s partly because the idea of using “gnarly” music was added later in the process. If I had built my music code around those gnarly beats from the start, the overall transitions would’ve been smoother and more cohesive. On a similar note, another area I’d personally like to work on is incorporating external sound files into my compositions. I feel like this is where I currently lack creativity, and watching other groups, including Clara, really inspired me. They were able to integrate external audio so seamlessly, and it made their pieces feel more dynamic and refined. It’s something I want to explore further to expand the range and depth of my own sound work in the future.