For my composition project, ‘BeachMind’, I wanted to recreate Abu Dhabi spring, beaches, sun and all in a bouncy sonic experience. I wanted to keep the track minimal, bringing in and dropping out elements based on the progression of the song. The visuals are surpposed to evoke a 90s SEGA-esque ocean with flittering lights. The song itself builds on sunny house music chords. I added some embellishments in the form of a sharp laser beam sample and hoot that adds to the atmospheric track.
The structure I followed is a twist on a very basic (ABACAB) formula of A -> B -> B’ -> AB -> AB’-> C: here I tried to bring in elements from other sections and join them together in ways to make it feel like the track was always active and alive. There was even a moment in my performance where I felt like re-editing the outro to drop out some of the percussion was something that the track needed. I think this was the most enjoyable part of the experience for me; to fully dissolve into the world of this track and listen to what it feels like and respond to it live rather than having a set structure in mind.
Tidal code:
setcps (130/60/4)
d1 $ s "bd*4"
let intro = do
xfadeIn 1 4 $ stack [
s "bd*4",
s "~ cp ~ cp",
s "[~ ho]*4"
]
xfadeIn 2 8 $ jux (rev . (|+ n 12))
$ every 4 (struct "t(5,8)")
$ struct "~ t ~ t t ~ ~ t"
$ n "<c'maj7 g'maj7 c'maj7 c'maj7>"
# s "superpiano"
# velocity (range 0.4 0.6 $ slow 2 sine)
# sustain 2
# lpf (range 800 4000 $ slow 4 sine)
# room 0.85 # sz 0.85
# delay 0.4 # delayt (3/16) # delayfb 0.5
# orbit 1
d3 $ s "<~ [~ [rave:7 rave:7]]>"
# speed 1.2
# gain (range 0.2 0.6 $ slow 8 sine)
# orbit 2
xfadeIn 4 4 $ struct "t ~ ~ t ~ t ~ ~"
$ n "<c2 g1 f1 c2>"
# s "superfm"
# sustain 0.6
# lpf (range 200 600 $ slow 4 sine)
# lpq 0.1
# shape 0.15
# orbit 2
d6 $ stack [
ccv "<10 20 30 40>",
ccv "<10 15 20 25>" # ccn 2
] # s "midi"
let rise = do
d2 $ stack [
every 3 (fast 2) $ struct "~ t ~ t t ~ ~ t"
$ n "<c'maj7 g'maj7 c'maj7 <a'maj7 a'maj7 a'maj7 c'maj7>>"
# s "superpiano"
# velocity (range 0.4 0.6 $ slow 2 sine)
# sustain 2
# lpf (range 800 4000 $ slow 4 sine)
# room 0.85 # sz 0.85
# delay 0.4 # delayt (3/16) # delayfb 0.5,
n "<c'maj7 g'maj7 c'maj7 <a'maj7 a'maj7 a'maj7 c'maj7>>"
# s "superfm"
# sustain 0.25
# lpf (range 1500 8000 $ slow 4 sine)
# lpq 0.2
# gain 0.5
# room 0.7 # sz 0.8
] # orbit 1
d5 $ s "<[~ ~ hit:2 hit:2]>"
# speed 1
# gain 0.5
# room 0.4 # sz 0.5
# orbit 3
d6 $ stack [
ccv "<40 60 80 100 110 120 125 127>",
ccv "<30 50 70 90 100 110 115 120>" # ccn 2
] # s "midi"
let drop = do
d1 $ s "<bd*4 [bd*4, sn*4] [sn*8] [sn*16] [bd:3, crash] ~ ~ ~>"
# orbit 2
d2 $ jux (rev . (|+ n 12))
$ struct "<[~ t ~ t t ~ ~ t] [~ ~ t ~ t t ~ t] [t ~ ~ t ~ t ~ t] [~ t t ~ ~ [t t] ~ ~]>"
$ n "<c'maj7 a'min7 f'maj7 g'dom7>"
# s "superpiano"
# velocity (range 0.5 0.9 $ slow 4 saw)
# sustain 0.4
# lpf (range 300 8000 $ slow 4 saw)
# room 0.5 # sz 0.6
# delay 0.3 # delayt (3/16) # delayfb 0.4
# orbit 1
d3 $ s "<~ ~ hit*8 hit*16 ~ ~ ~ ~>"
# n 2
# speed (range 1 4 $ slow 4 saw)
# gain (range 0 0.8 $ slow 4 saw)
# pan (fast 2 $ range 0 1 saw)
# orbit 1
d4 silence
d5 silence
d6 $ stack [
ccv "<40 70 100 127 0 0 0 0>",
ccv "<40 70 100 127 0 0 0 0>" # ccn 2,
ccv "<0 0 0 0 127 0 0 0>" # ccn 3
] # s "midi"
let backintro = do
d1 $ stack [
s "bd*4",
s "~ cp ~ cp",
s "[~ ho]*4"
]
d2 $ jux (rev . (|+ n 12))
$ struct "<[~ t ~ t t ~ ~ t] [~ ~ t ~ t t ~ t] [t ~ ~ t ~ t ~ t] [~ t t ~ ~ [t t] ~ ~]>"
$ n "<c'maj7 a'min7 f'maj7 g'dom7>"
# s "superpiano"
# velocity (range 0.5 0.9 $ slow 4 saw)
# sustain 0.4
# lpf (range 300 8000 $ slow 4 saw)
# room 0.5 # sz 0.6
# delay 0.3 # delayt (3/16) # delayfb 0.4
# orbit 1
d3 $ s "<~ [~ [rave:7 rave:7]]>"
# speed 1.2
# gain (range 0.2 0.6 $ slow 8 sine)
# orbit 2
d4 $ struct "t ~ ~ t ~ t ~ ~"
$ n "<c2 g1 f1 c2>"
# s "superfm"
# sustain 0.6
# lpf (range 200 600 $ slow 4 sine)
# lpq 0.1
# shape 0.15
# orbit 2
d6 $ stack [
ccv "80 40 100 60" # ccn 2
] # s "midi"
let outro = do
d1 $ s "bd*4"
# orbit 1
d3 silence
d4 silence
d6 $ stack [
ccv "<40 30 20 10>",
ccv "<30 20 10 0>" # ccn 2
] # s "midi"
d1 silence
d3 silence
intro
rise
drop
backintro
outro
hush
Hydra code:
voronoi(6, 0.04)
.modulate(noise(3, 0.1), () => 0.2 + (cc[1] * 0.6))
.color(0.05, 0.2, 0.7)
.add(voronoi(12, 0.06).modulate(noise(4, 0.12), 0.2).color(0, 0.7, 1), 0.4)
.add(osc(40, 0.01, 1).color(0.1, 0.8, 1).mult(noise(4, 0.1)), 0.5)
.modulateScrollX(osc(2, 0.01), 0.1)
.add(
shape(72, 0.02, 0.8)
.color(1, 0.8, 0.2)
.repeat(5, 3)
.modulate(noise(2, 0.05), 0.2)
.scrollY(() => Math.sin(time * 0.5) * 0.05)
.scrollX(0, () => -0.03 - (cc[2] * 0.1)),
0.8
)
.add(
osc(10, 0.1, 2).modulate(noise(2)).scrollY(-0.25).color(1, 0.2, 0.6)
.thresh(() => 0.8 - (cc[2] * 0.4)),
() => cc[2] * 0.8
)
.add(
osc(15, 0.05, 2)
.modulate(noise(4, 0.1), () => 0.2 + (cc[1] * 3))
.thresh(() => 0.8 - (cc[1] * 0.3), 0.1)
.color(1, 1, 1)
.scrollX(() => time * -0.05 - (cc[2] * 0.2)),
() => 0.1 + (cc[1] * 1.5)
)
.add(solid(1, 1, 1), () => cc[3])
.pixelate(256, 224)
.out(o0)
hush()