Strudelify
Gorilla al sole cover art

King Kong

Gorilla al sole

Paoli

KeyC majorTempo115 bpm
0:00/0:00
// Gorilla al sole — Paoli
// 115 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · epiano2
const epiano2 = note(`<
  ~@8 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ B ~ B ~@5 A ~@10 B ~ B ~@5 A ~ A ~ A ~ A ~@5 C@2 D@2 C@2 D@2 E ~@3 A ~ A ~ A ~ A
  ~@13
>`.pickRestart({
  A: "[c4,d4,e4,g4] ~@3", B: "[g#3,a#3,c4,d#4]@3 ~@13", C: "[~@4 [c4,g#4]@16 ~@2 [a#3,g4]@4 [g#3,f4]@5 ~]/2",
  D: "[~@4 [c4,g#4]@17 ~ [a#3,g4]@4 [g#3,f4]@6]/2", E: "[g#3,a#3,c4,d#4,g#4]@13 ~@3",
})).s("gm_epiano2").gain(0.35)

// bass · fretless bass
const bass = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B C D E F G H G I A B A B A B A B A B J C D E F G H G I A B A B A B
  A B A B A B C D E F C D E F G H G I A B A B A B A B A B A B J A B A B J K@2
>`.pickRestart({
  A: "c2@5 ~@5 c2 ~ a1@4", B: "f1@5 ~@5 f1 ~ g1@4", C: "g#1@4 ~@2 d#1@2 f1 ~ f1@2 c1@4", D: "c#1@2 ~ g#1 a#1!2 d#1@2",
  E: "g#1@5 ~ d#1@2 f1 ~ f1@2 c1@4", F: "c#1@5 ~ g#1@2 a#1 ~ a#1@2 d#1@4", G: "g#1@5 ~ g#1@2 f1@5 ~ f1@2",
  H: "a#1@5 ~ a#1@2 d#1@4 g1@4", I: "c#1@5 ~ c#1@2 d1@4 g1@4", J: "g1@2 ~ c2 a1 f1 d1 g1", K: "[c2 ~ c2@14]/2",
})).s("gm_fretless_bass").gain(0.56)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A B A B ~@8 A B A B C D C E C D C E F@5 G H I ~@2 A B A J A B A J K F@5 G H I C D C E C D C E A B A B F@9 G H I C
  D C E C D C E A B A J K A B A J K L@2
>`.pickRestart({
  A: "[c5,e5] ~@3 [e4,g4]@9 ~ c5@2", B: "a4 b4 c5 b4@2 a4 g4@2",
  C: "[c4,c5]@2 [c4,c5]!2 [c4,c5]@3 ~ [c4,c5]@2 [c4,c5]!2 [c4,c5]@4", // C
  D: "[c4,c5] ~@3 [c4,c5]@2 [c4,c5]!2 [c4,c5]@4 [c4,c5]@3 ~", // C
  E: "[f4,f5]@3 ~ [f4,f5]@2 [f4,f5]!2 [d4,d5]@4 [d4,d5]@3 ~", F: "[g#4,g#5] ~ [g#4,g#5] ~ [g#4,g#5] ~ [g#4,g#5] ~",
  G: "[g#4,g#5] ~ [g#4,g#5] ~ [g4,g5] ~ [g4,g5] ~", H: "[g4,g5] ~ [g4,g5] ~ [f4,f5] ~ [f4,f5] ~",
  I: "[f4,f5] ~ [f4,f5] ~ [g4,g5] ~ [g4,g5] ~", J: "a4 b4 c5 b4@2 c5 d5@2", K: "b4 c5 d5 b4@2 c5 d5@2",
  L: "[[c5,e5] ~@3 [e4,g4]@28]/2", // C Em
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.7)

// chords · trumpet
const trumpet = note("<~@67 A B C D E@2 F G ~@24>".pickRestart({
  A: "[d#4,g#5]@11 ~ [g#4,c6] [d#4,g#5] ~ [f4,a#5]", B: "~ [g#4,d#6] ~@10 [g#4,c6]!2 [a#4,c#6] [f4,g#5]",
  C: "[d#4,b5] [d#4,f4,g#5,a#5] [c4,f5] d#5 [d#4,g#5]@2 [c4,f5] ~ d#5 b4 a#4 g#4 a#4@2 g#4 a#4", // G#m D#sus4 F5 G#5 F5
  D: "c5 ~ d#5!2 ~ c5 [c4,d#5]@4 [c#4,f5] ~ [c#4,f5] [c4,d#5] ~@2", // Cm C# Cm
  E: "[~@6 g#5 ~ [f4,b5]@4 g#5 [g#4,a4,c6,c#6] [b4,d#6]@14 ~@4, ~@14 [a#4,d6] ~@17]/2", // Fdim C#maj7 B A#
  F: "~@2 [c#4,c#6] b3 [c4,c6] [g#3,g#5] [f3,f5] [d#3,d#5] [c#4,c#6] ~ [c4,c6] [g#3,g#5] [f3,f5] [d#3,d#5] [c#4,c#6] [b3,b5]", // C# C G# F D# C# C G# …
  G: "[a#4,f#6]@4 [g#4,f6]@4 [g4,d#6]@6 [f4,f#4,c#6,d6] ~", // D#m C# Cm Dmaj7
})).s("gm_trumpet").gain(0.45)

// chords · trumpet · soft notes · B Am7b5 Fmaj7
const trumpet_soft = note(`<
  ~@70
  [b4 ~@15]
  ~@2
  [~@3 b5 ~@5 [b3,b5] ~@6]
  [~@14 e4 [b3,c#4,d#4,g5,a5,b5,c6]]
  [[g#3,a3,e5,f5] ~@15]
  ~@23
>`).s("gm_trumpet").gain(0.25)

// chords · pad new age
const pad_new_age = note(`<
  ~@4 A B A B ~@8 A B A B ~@12 C D E F G H A B A B A B A B I ~@4 C D E F G J G J G J G J A B A B ~@8 C D E F G J G J G J
  G J A B A B I A B A B I K@2
>`.pickRestart({
  A: "[c5,e5,g5]@2 [c4,e4,g4]@5 ~", B: "[c4,f4,a4]@5 ~ [d4,g4,b4]@8 ~@2", C: "[g#3,c4,d#4]", D: "g#3 g3, [f3,c#4]",
  E: "g3 g#3, [d#3,c4]", F: "[g#3,a#3] [a3,c4], f3", G: "[c4,d4,e4,g4]", H: "[a3,c4,f4] ~@3", I: "[d4,g4,b4] ~@3",
  J: "[a3,c4,f4]", K: "[[c5,e5,g5] ~@3 [c4,e4,g4]@28]/2",
})).s("gm_pad_new_age").gain(0.25)

// other · synth strings 1
const synth_strings_1 = note("<~@28 A@4 ~@15 A@4 ~@16 B@8 ~@24>".pickRestart({
  A: "[g#4@5 f4 d#4@2]/2",
  B: "[g#4@10 ~ f4@2 ~@3 g#4@10 ~ f4@2 ~@3 g#4@10 ~ f4@2 ~@3 g#4@10 ~ f4@2 d#4@3, ~@13 d#4@4 ~@12 d#4@4 ~@12 d#4@4 ~@15]/8",
})).s("gm_synth_strings_1").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@4 A ~ A ~@31 A ~ A ~ A ~ A ~ B ~@16 A ~ A ~@21 A ~ A ~ B A ~ A ~ B ~@2
>`.pickRestart({
  A: "~@2 [g4,g5] ~@13", B: "~ g4 ~ c5 a4 f4 d4 g4",
})).s("gm_pizzicato_strings").gain(0.3)

// other · alto sax
const alto_sax = note(`<
  A B A C ~@32 D E ~@17 D F D G D F D G ~@4 H I J K L@2 M N ~@4 D F D G D F D G ~@12
>`.pickRestart({
  A: "g4 ~ g4!2 g4@2 e4@2 d4@2 c4@2 ~@2 [b3,c4]@2", // Cmaj7
  B: "[g3,a3]@2 [b3,c4]@2 [a3,c4]@2 [g3,c4]@2 [f3,a3,d4]@4 [e3,g3,c4]@3 ~", // Gsus2 Cmaj7 Am C5 Dm C
  C: "[g3,a3] [b3,c4] [a3,d4] [g3,e4] [f3,a3,d4]@4", D: "~@5 g5 e5 g5", E: "~ g5 ~@6", F: "c5 g5 c5 ~@5",
  G: "f5 g5 f5 ~@5", H: "[c4,g#4]@11 ~ [d#4,c5] [c4,g#4] ~ [c#4,a#4]",
  I: "~ [f4,d#5] ~@10 [f4,c5]!2 [g#4,c#5] [c#4,g#4]", // F7 F5 C#5
  J: "b4 [g#4,a#4] f4 d#4 [c4,g#4]@2 [g#3,f4] ~ d#4 b3 a#3 g#3 a#3@2 g#3 a#3", // G#sus2 Fm C#
  K: "c4 ~ d#4!2 ~ c4 [g3,d#4]@4 [g#3,f4] ~ [g#3,f4] [g3,d#4] ~@2", // Cm C# Cm
  L: "[~@6 g#4 ~ [c4,b4]@4 g#4 [d4,d#4,c5,c#5] [f4,d#5]@14 ~@4, ~@14 [e4,d5] ~@17]/2", // Cmaj7 F7 E7
  M: "~@2 c#5 b4 c5 g#4 f4 d#4 c#5 b4 c5 g#4 f4 d#4 c#5 b4",
  N: "[d#4,f#5]@4 [c#4,f5]@4 [c4,d#5]@6 [a3,a#3,b3,c#5,d5] [e3,f#3,g#3,g4,a4,b4,c5]", // D#m C# Cm Cmaj7
})).s("gm_alto_sax").gain(0.3).pan(0.3)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@37 A ~@18 B ~ C ~ B ~ C ~@7 D ~@4 E ~@4 B ~ C ~ B ~ C ~@12>".pickRestart({
  A: "~@3 g5 ~ g5 ~ g5", B: "~@3 g5 c5 g5 c5 g5", C: "~@3 g5 f5 g5 f5 g5", D: "b3 ~@15", E: "[c#3,d3,e4,f4] ~@15",
})).s("gm_alto_sax").gain(0.1).pan(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@4 A B A B ~@8 A B A B ~@12 C D E F ~@2 A B A G A B A G H ~@4 C D E F ~@8 A B A B ~@8 C D E F ~@8 A B A G H A B A G H
  I@2
>`.pickRestart({
  A: "[c5,e5] ~@3 [e4,g4]@9 ~ c4@2", B: "a3 b3 c4 b3@2 a3 g3@2", C: "~@11 g#4@5", D: "~@3 f4@6 ~@2 a#4@5",
  E: "~@3 g4@6 ~@2 c5@5", F: "~@3 f4@6 ~@2 g4@5", G: "a3 b3 c4 b3@2 c4 d4@2", H: "b3 c4 d4 b3@2 c4 d4@2",
  I: "[[c5,e5] ~@3 [e4,g4]@28]/2", // C Em
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.3)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@32 A B C D ~@15 A B C D ~@20 A B C D ~@20>".pickRestart({
  A: "~@3 c5@5 ~@2 f4@6, g#3@3 ~ f3@3 ~, ~ d#4@6 ~@2 c4@6 ~, ~ g#4@3 ~@4",
  B: "~ c#4@3 ~ f4@3, a#2@3 ~ d#3@3 ~, ~ g#3@6 ~@2 c#4@6 ~", C: "~ d#4@3 ~ g#4@3, g#3@6 ~@3 d#4@6 ~, ~ c4@6 ~ c4@6 ~@2",
  D: "~ a#3@3 ~ c4@3, c#3@6 ~@3 a3@6 ~, ~ g#3@6 ~ f3@6 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.3)

// other · rock organ
const rock_organ = note("<~@63 A@3 B ~@32>".pickRestart({
  A: "[~@7 c6 [d#6,e6] ~@17 e6@2 [c#6,d6] c6 a5 c6@2 c6 d6 a5 c6 d6 a5 c6 g5@2 a5 g5 c6@2 d6 c6, ~@9 g6@28 ~@11, ~@26 d#6 ~@17 b5 ~@3]/3", // Emaj7 Dmaj7
  B: "e6 g6 a6@2 g6@2 e6@4 g6 e6 d6 c6 [f5,g5,a5,b5] [c5,d5,e5], ~@2 g#6 ~@3 d#6 ~@9", // G7 C
})).s("gm_rock_organ").gain(0.4)

// other · rock organ · soft notes · G
const rock_organ_soft = note("<~@66 [~@15 [g4,a4,b4]] [f4 ~@15] ~@31>").s("gm_rock_organ").gain(0.25)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@28 A B C D ~@15 A B C D ~@16 A B C D A B C D ~@4 E F E F E F E F E F E F G E F E F G ~@2
>`.pickRestart({
  A: "g#3@4 ~@2 d#3@2 f3 ~ f3@2 c3@4", B: "c#3@2 ~ g#3 a#3!2 d#3!2", C: "g#3@5 ~ d#3@2 f3 ~ f3@2 c3@4",
  D: "c#3@5 ~ g#3@2 a#3@2 a#3@2 d#3@2 d#3@2", E: "~@2 c4@2 ~@2 c4@2 c4 ~ c4 ~@5", F: "~@6 c4@2 d4 ~ d4@2 b3@2 g3 ~",
  G: "b3 c4 d4 b3@2 c4 d4@2",
})).s("gm_electric_guitar_muted").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@42 B A@20 C D C D C D C D A@16 B A@5 E ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!3 ~@2", C: "x ~@2 x ~@2 x ~ x ~@5 x ~", D: "~@3 x ~@2 x ~ x ~@5 x ~", E: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@15 C B@7 C B@7 C B D B@4 E B@3 C B@7 F B@7 G B@3 H I@7 J B@3 F B@7 G E B@3 C E B@3 H K ~
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~@3", D: "~@4 x ~@5 x!4 ~@2", E: "x!2 ~ x", F: "~@4 x ~@7 x ~ x!2",
  G: "~@4 x ~@3 x ~@2 x!2 ~@3", H: "~@4 x ~@7 x!2 ~@2", I: "x!4", J: "x ~@3 x ~@3 x ~@2 x!2 ~@3", K: "x!2 ~@2",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@46 A ~@15 A ~@3 A ~@19 A ~@4 A ~@4 B ~@2>".pickRestart({
  A: "~@7 x", B: "~@10 x!2 ~@2 x ~",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@3 A B@33 C B@4 D B@3 E B@19 F G H@3 G H@2 I B@12 D B@3 E D B@3 E ~@2>".pickRestart({
  A: "~@8 x ~ x!3 ~@3", B: "x ~@2 x!2 ~ x ~ x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~ x ~@9", D: "~@3 x!2 ~ x ~ x ~@2 x!2 ~@3",
  E: "x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~", F: "x ~@2 x!2 ~ x ~@4 x!2 ~@3", G: "~ x!7", H: "x!8", I: "x!4 ~ x!3",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 [~ x ~@3 x ~@2]!33 [~ x ~@6] [~ x ~@3 x ~@2]!29 ~@8 [~ x ~@3 x ~@2]!22 ~@2>")
  .gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@37 A ~@8 B ~@44 B ~@4 B ~@2>".pickRestart({
  A: "~@7 x", B: "~ x",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A@34 B A@8 ~ A@15 ~ A@3 B ~@8 A@11 ~ A@4 ~ A@4 ~@3>".pickRestart({
  A: "~@7 x", B: "~ x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 A ~@3 A ~@7 A ~@3 A ~@3 A ~@5 B ~@4 A ~@3 A ~@2 C A ~@7 A ~@3 A ~@3 A ~@2 C A ~@2 C A ~@7 A ~@4 B ~@4 D ~
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x", D: "x!2 ~@2",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@67 [x!8]!8 ~@24>").gain(0.48)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@67 [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!8 ~@24>").gain(0.32)

// drums · ht
const ht = s("ht").struct("<~@7 [~@8 x!2 ~@4 x!2] ~@7 [~@8 x!5 ~@3] ~@83>").gain(0.56)

stack(
  epiano2, bass, acoustic_guitar_steel, trumpet, trumpet_soft, pad_new_age, synth_strings_1, pizzicato_strings,
  alto_sax, alto_sax_soft, acoustic_guitar_nylon, acoustic_guitar_nylon_2, rock_organ, rock_organ_soft,
// … 3 more lines

More by Paoli