GTA IV THEME COVER – GRAND CRASH AUTO
https://youtu.be/MhB7h15L7sw
Hey all !
At some point, GTA, be it the first 2d game or its 3d open-world successors were heavy-weights and still are in the gaming industry. Not as underground as many titles we adore, it still layed down foundations that marked our digital gaming experience. GTA IV especially so with its darker atmosphere and social commentary.
Anyway let’s not dive too deep into a pseudo-analysis of GTA and simply take a dive into its soundtrack.
Mickael Hunter, aka “Pablo” made the theme song, a colorful but still melancholic track we tried to replicate and transform as well as we could.
We played it – in the video above – as a pre-made setup from which we could change the structure and arrangements on the fly.
And we hope you enjoy it 🙂
—> Fully livecoded with FoxDot and Troop. <—-
See the code below. – it might sound different in vanilla FoxDot as we are using some custom synths and samples but we encourage you to replace them with whatever suits you.
Root.default = “C”
Master().reset()
Clock.bpm=144
Scale.default=”dorian”
e_all.stop()
p_all.only()
p5.amp=0
j1 >> mpluck([[0, 1, 2, 1, 0, 1 ,0, -1],-3], mverb=lininf(0,0.8,32), amp=lininf(0,0.5,32), oct=(PStep(8, 5, 6), 5, 7), pan=PWhite(-1,1), cut=1/2, dur=2, delay=0, hpf=lininf(0,400,32))
p0 >> pianovel([[0, 1, 2, 1, 0, 1 ,0, -1],-3], dur=1/2, velocity=PRand(20,60), velhard=0.2, amp=PGauss(0.4, 0.1), oct=PStep(7,6,5), rate=linvar([0.1,2],24), sus=0.3).unison(3).sometimes(“stutter”, oct=[6, 8], mverb=[0.6, 0.4])
p1 >> pianovel(p0.degree + 5, oct=PStep(4, 5, [6, 7]),velhard=[PGauss(0.2, 0.2), 0], velocity=PRand(40,88), delay=var([0,(0.125, 0)], [5, 3]), amp=linvar([0.3, 0.6], [16]), mverb=0.1).accompany(p0).unison(4).human()
p2 >> pianovel([p0.degree], oct=PStep([4, 7], 6, 7), dur=4, sus=4, rate=4, amp=[0.4, 0.2], delay=[0,0,(0,3)], lpf=9999).unison(2) + (0,2,4)
j1.dur=1/2
j1.mverb=0
p3 >> pianovel(( [[0, 1, 2, 1, 0, 1 ,0, -1],-3], 0), delay=[0, 0, (0, 1.5)], dur=2, velocity=[PRand(50,63),PRand(30,53)], amp=0.5,oct=var([(4, 5), (5, 6)], [8]), lpf=8080, sus=0.3).unison(3).sometimes(“stutter”)
p4 >> pianovel(( [[0, 1, 2, 1, 0, 1 ,0, -1],-3], 7) + var([0, 4]), delay=[0, 0, (0, 3.0)], dur=4, velocity=[PRand(50,53),PRand(30,53)], amp=0.7,oct=var([(4, 5), (5, 6)], [8]), lpf=8080, sus=0.3).unison(3).sometimes(“stutter”)
Root.default = 0
d1 >> play(“.{…u}..u…”, sample=5, hpf=var(PRand(4000)+10), rate=(.5,2)).sometimes(“stutter”)
d2 >> play(“.{…c}..c…”, sample=5, mverb=0, flanger=0, chorus=var(PWhite(0, 1)), amp=P*[0, 1], rate=(P*[.5,.5,.5,-1],2))
d3 >> play(“v…..(…{v.})(…{.v}))”, cut=2, sample=8, disto=0, drive=(0,var(PWhite(0,0.2)))).sometimes(“stutter”)
d4 >> play(“v…..(…{v[vv].}).”, sample=8, delay=0.5, hpf=400, amp=var([0, 1], [28, 4]))
d5 >> play(“(…(.p)).((p.).(p.).)((p.).(p.).)”, dur=1/4, sample=4, crush=8,bits=8)
d6 >> play(“-{-[–]}-.-{[—][–]}(-.)(-[—-])”, sample=2, amp=PCoin(PWhite(0, 1),0,0.5), hpf=6000, pan=PWhite(-1,1)).sometimes(“amen”).sometimes(“bubble”).sometimes(“stutter”, PRand(16), rate=PWhite(-1,5))
d7 >> play(“—.-{[—][–]}(-.)(-[—-])”, hpf=5000, sample=10, amp=PCoin(PWhite(0, 1), 0, 0.5), pan=PWhite(-1,1)).sometimes(“amen”).sometimes(“bubble”)
d8 >> play(“—.-{[—][–]}(-.)(-[—-])”, pan=PWhite(-1, 1), hpf=4000, amp=PCoin(PWhite(0, 1), 0, 0.5), sample=8).sometimes(“amen”).sometimes(“bubble”).every(4, “shuffle”)
Master().lpf=var([0, 4000, 6000, 15000], [24, 4, 2, 2])
Master().hpf=var([0, 20, 30, linvar([3200, 6400], 32)], [24, 4, 2, 2])
Master().cut=var([0, 1, 1/2, linvar([1/4, 1], 32)], [24, 4, 2, 2])
l9 >> play(“#”, amp=Master().lpf==15000)
Group(d6,d7,d8).stop()
p_all.stop()
d9 >> play(“x(x.).(x[.x])”, dur=1, sample=3)
d0 >> play(“v.”, sample=8, drive=var(PWhite(0,0.2))).sometimes(“stutter”, 2).stop()
s1 >> ssaw([[0, 1, 2, 1, 0, 1 ,0, -1],-3], amp=0.3, hpf=200, hpr=0.39, dur=1/2, phase=0, sus=linvar([0.6, 1], 16), mverb=1).unison(2)
Root.default = var([0, [-12, 7]], [8])
a0 >> bbass([[0, 1, 2, 1, 0, 1 ,0, -1],-3], dur=1/2, oct=6, hpf=1000, amp=0.7, bpf=0, shape=linvar([0,0.2],[32]), sus=linvar([0.1,2],[50,0]))
drop(6,2,2)
p_all.dur=4
s2 >> tb303([[0, 1, 2, 1, 0, 1 ,0, -1],-3], top=linvar([4000, 12000], [64, 32]), cutoff=linvar([400, 4000], [32, 32, 64]), hpf=4000, amp=0.2, hpr=0.2, dur=1/2, sus=linvar([0.6, 1], 16), cut=0, mverb=0).unison(2)
s3 >> ssaw([[0, 1, 2, 1, 0, 1 ,0, -1],-3], top=0, cutoff=0, hpf=0, amp=0.1, hpr=0.2, dur=1/2, sus=linvar([0.6, 1], 16), cut=0, mverb=0).unison(2)
s4 >> ssaw([0,2,P+(3,4),P+(6,7,8,14)], oct=(5.01, 3.99, 7), sawtype=0, sawmix=0.5, lpr=0.1, amp=(0.2, 0.1, 0.2), lpf=0, dur=8).unison(6).solo(0)
s5 >> ssaw([0,2,4], oct=4, dur=8, lpf=800, slide=1, slidedelay=6).unison(3)
l0 >> loop(“xhop16”, dur=16, sample=1, amp=0.5)
s1 >> soprano(p0.degree, vib=0, dur=8, oct=(3, 4), amp=0.2, lpf=4000, formant=0.2).unison(2).slider() + (0,2,4)
p_all.stop()
l1 >> loop(“xdrum8”, dur=16, sample=0, amp=0.5)
p6 >> pianovel([p0.degree], dur=4, sus=4).every(2, “stutter”)
l1 >> loop(“funk16”, dur=32, sample=0, amp=0.5)
l0 >> loop(“futur16”, dur=32, sample=0, amp=0.5)
p_all.lpf=50
p_all.stop()
p2.lpf=0
b1 >> bass([0,0,-1,7,7,-1], dur=[1/2,1/2,[rest(3)]], amp=1, oct=5, echo=0.25, sus=1).solo(0)
b2 >> jbass(4, dur=1/2, amplify=var([0,1],[3.5,0.5]), amp=1, echo=0.5, oct=4)
b3 >> dbass(P[3, 4, 4.5, [4, 3]].stutter(2), dur=1/4, oct=(4,5), amplify=var([0, 1], [6, 2]))
b4 >> bass([(0, [7, 3]), (0, [4, -1])], drive=linvar([0, 1], 32), oct=P(3, [4, [5, 6]])+1, room2=0, dur=[1/2, 1/2, [rest(1)]], scale=Scale.dorian).unison(2)
q4 >> play(“n”, dur=8, bit=4, crush=1, delay=2, amp=1, rate=[1, 0.5], echo=0.25)
p1 >> pianovel([[0, 1, 2, 1, 0, 1 ,0, -1],-3], delay=[0, 0, (0, 1.5)], dur=2, velocity=[PRand(50,83),PRand(30,53)], amp=0.7,oct=var([(4, 5), (5, 6)], [8]), lpf=8080, sus=0.3).unison(3).sometimes(“stutter”)
Root.default = var([0, [-2, 7]], [8])
Root.default = “G”
b_all.dur=1/2
Darkwater – SLAAP (remix by Crash Server)
TOPLAP 16 Equinox @ Live Stream – 22 mar 2020
TOPLAP 16 Equinox @ LiveStream Like last year, we participated…
TOPLAP 15th Anniversary @ Live Stream – 14 feb 2019
TOPLAP 15th Anniversary @ LiveStream The open worldwide live coding…
Algorave and workshop @Tübingen (Germany) – 23 july 2022
Algorave and Workshop @Tübingen – 23 July 2022 We had…