Strudelify

Shocked

Kylie Minogue

KeyA majorTempo124 bpm
0:00/0:00
// Shocked — Kylie Minogue
// 124 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 2 "Ch  2" Harpsi 1 -> harpsichord; ch 5 "Ch  5" Brs Sect 2 -> brass section; ch 7 "Ch  7" Syn Bass 3 -> synth bass 1
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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.

// other · piano · "Ch  1"
const piano = note("<~@70 A B A B A B A B ~@35>".pickRestart({
  A: "a5!2 a4!2 a5!2 a4 a5 ~ a5 a4!2 a5!2 a4 ~", B: "a5!2 a4!2 a5!2 a4 a5 ~ a4 ~ a4 a5!2 a4 ~",
})).s("gm_piano").gain(0.36)

// chords · piano · "Ch  4"
const piano_2 = note(`<
  ~@2 A B C D E B C D F G H I F G H I F G F G F G F G ~@2 A B C D E B C D F G H I F G H I F G F G F G F G ~@2 A B C D A
  B C D A B C D E B C D ~@8 F G F G F G F G ~@2 A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] ~ [g#3,b3,e4] [b3,e4] ~ [g#3,b3,e4]@2 ~ [g#3,b3,e4] ~ [g#3,b3,e4]!2 ~", // E E5 E
  B: "[g3,b3,d4,e4]@2 ~ [g3,b3,d4,e4] ~ [g3,b3,d4,e4]!2 ~ [g3,b3,d4,e4]@2 ~ [g3,b3,d4,e4] ~ [g3,b3,d4]!2 ~, ~@13 e4@2 ~", // Em7 G
  C: "[a3,c#4,e4]@2 ~ [a3,c#4,e4] ~ [a3,c#4]!2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4] ~ [a3,c#4]!2 ~, ~@5 e4@2 ~@6 e4@2 ~", // A
  D: "[g3,c4,e4]@2 ~ [g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4] ~ [g3,c4,e4]!2 ~, a3 ~@15", // C
  E: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] ~ [b3,e4]!2 ~ [g#3,b3,e4]@2 ~ [g#3,b3,e4] ~ [g#3,b3,e4]!2 ~, ~@5 g#3@2 ~@9", // E E5 E
  F: "[a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4]@3 ~", G: "[a3,d4,f#4]@5 ~ [b3,d4,g4]@5 ~ [a3,d4,f#4]@3 ~",
  H: "[a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4]@2 ~@2", I: "g4@6 ~@6 d4@3 ~, a3@15 ~, d4@11 ~@5, ~@6 f#4@9 ~",
})).s("gm_piano").gain(0.46)

// other · brass section · "Ch  5"
const brass_section = note(`<
  ~@2 A B@2 C A B@2 C ~@8 D@8 ~@2 A B@2 C A B@2 C ~@8 D@8 ~@2 A B@2 C A B@2 C A B@2 C A B@2 C ~@8 D@8 ~@2 A B@2 C A B@2
  C A B@2 C A B@2 C A B@2 C A B@2 C ~
>`.pickRestart({
  A: "g#5", B: "a5/2", C: "g5@15 ~", D: "a5",
})).s("gm_brass_section").gain(0.51)

// chords · pad poly · "Ch  6"
const pad_poly = note(`<
  ~@2 A B@3 A B@3 ~@18 A B@3 A B@3 ~@18 A B@3 A B@3 A B@3 A B@3 ~@18 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 C
>`.pickRestart({
  A: "[b3,e4,g#4]@15 ~", // E
  B: "[e4@6 g4@6 f#4@3 ~ g4 c#4@14 ~ [c4,g4]@3 ~ [c4,e4,g4] ~@3 [c4,e4,g4]@4 [c4,e4,g4] ~@3, a4@2 ~, [b3,d4]@16 ~ e4@19 ~@12]/3", // C5 C Bm
  C: "[g#3,b3,e4] ~@3", // E
})).s("gm_pad_poly").gain(0.46)

// bass · synth bass 1 · "Ch  7"
const bass = note(`<
  ~@2 A B C D A B C D E@8 F G F G F G F G H@2 A B C D A B C D E@8 F G F G F G F G H@2 A B C D A B C D A B C D A B C D I
  J I K L M N O F G F G F G F G H@2 A B C D A B C D A B C D A B C D A B C D A B C D P
>`.pickRestart({
  A: "e2@2 ~ e2 ~ e2!2 ~ e2@2 ~ e2 ~ e2!2 ~", B: "g2@2 ~ g2 ~ g2!2 ~ g2@2 ~ g2 ~ g2!2 ~",
  C: "a2@2 ~ a2 ~ a2!2 ~ a2@2 ~ a2 ~ a2!2 ~", D: "c3@2 ~ c3 ~ c3!2 ~ c3@2 ~ c3 ~ c3!2 ~",
  E: "[a2@3 ~ a2 ~ a2!2 ~ a2 ~ a2!2 ~@3 d3@2 ~@2 d3@2 g2!2 ~ g2 ~ g2 g2@2 ~ g2, ~@15 a2@2 ~@15]/2",
  F: "a2@2 a2!2 ~ a2 ~ a2 ~ a2 ~ a2@3 ~ a2", G: "d3 ~ d3!2 ~ g2 ~ g2 ~ g2 ~ g2!2 ~@2 g2",
  H: "a2@2 ~ a2 ~ a2 a2@2 ~ a2 ~ a2!2 ~ a2 ~", I: "a2 ~ a2 ~ a2@2 ~ a2 ~ a2 ~ a2 a2@3 ~",
  J: "~ d3 ~ d3!2 ~ g#2 g2 ~ g2 ~ g2!2 ~ g2 g#2", K: "[c#3,d3] ~ d3 ~ d3 ~ g#2 g2 ~ g2 ~ g2 g2@3 ~",
  L: "a2!2 ~ a2!2 ~ a2!2 ~ a2!2 ~ a2 ~ a2 ~", M: "d3!2 ~ d3!2 ~ g#2 g2 ~ g2 ~ g2!2 ~ g2 g#2",
  N: "a2 ~ a2 ~ a2@2 ~ a2 ~ a2 ~ a2!2 ~ a2 c#3", O: "d3 ~ d3 ~ d3 ~ g#2 g2 ~ g2 ~@2 g2@3 ~", P: "e2@3 ~@13",
})).s("gm_synth_bass_1").gain(0.58)

// drums · kick
const kick = s("bd").struct("<[x!4]!112 x>").gain(0.8)

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

// drums · hihat
const hihat = s("hh").struct("<[x!16]!112 ~>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~@25 A ~@25 A ~@33 A ~@25>".pickRestart({
  A: "~@8 x!2 ~@6",
})).gain(0.72)

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

stack(piano, piano_2, brass_section, pad_poly, bass, kick, snare, hihat, mid_tom, crash)

More by Kylie Minogue