Strudelify

Wind It Up

The Prodigy

KeyF♯ majorTempo145 bpm
0:00/0:00
// Wind It Up — The Prodigy
// 145.2 bpm, 4/4, key F# 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: 
// note: ch 8 "sub bass" named as a bass, played on electric bass finger (its ocarina patch is not one)
// note: 934 stray notes after a silence of more than 6 bars (from bar 465) are dropped
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145.2/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 · piano
const piano = note(`<
  ~ A B C D E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F ~@20 E F E F E F E F E F E F
  E F E F E F E F E F E F E F E F E F E G ~@8 E F E F E F E F E F E F E F E F
>`.pickRestart({
  A: "[c#5,d#5]@4 d#4@2 [d#4,g#4,c5,d#5]@9 ~, [d#4,g#4]@3 ~ g#4 ~@11", // C#sus2 G# G#5
  B: "[a#4,b4]@4 b3@2 [b3,e4,g#4,b4]@9 ~, [b3,e4]@3 ~ e4 ~@11", // Bmaj7 E E5
  C: "[b4,c#5]@4 c#4@2 [c#4,f#4,a#4]@6 [c#4,f#4,a#4]@3 ~, [c#4,f#4]@3 ~ f#4 ~ c#5@9 ~", // Bsus2 F# F#5
  D: "[b3,e4,a#4]@3 b4@2 ~ [b3,e4,g#4]@7 ~@3, ~@6 b4 ~@9", // E
  E: "[d#4,g#4,c#5,d#5]@2 ~ [g#4,c#5,d#5]@2 ~ [g#4,c5,d#5] ~ [b3,e4,f#4,a#4]@2 ~ [e4,f#4,a#4]@2 ~ [e4,g#4,b4] ~, ~@3 d#4 ~ d#4@2 ~@4 b3 ~ b3@2 ~", // C#sus2 G#sus4 G# Bsus4 F#7 E
  F: "[c#4,f#4,b4,c#5]@2 ~ [f#4,b4,c#5]@2 ~ [f#4,a#4,c#5] ~ [g#3,c#4,f#4,g#4]@2 ~ [c#4,f#4,g#4]@2 ~ [c#4,f4,g#4] ~, ~@3 c#4 ~ c#4@2 ~@4 g#3 ~ g#3@2 ~", // F#sus4 F# C#sus4 C#
  G: "[c#4,f#4,b4,c#5]@2 ~ [f#4,b4,c#5]@2 ~ [f#4,a#4,c#5] ~@9, ~@3 c#4 ~ c#4@2 ~@9", // F#sus4 F#
})).s("gm_piano").gain(0.51)

// other · string ensemble 1 · D# G# B A# B
const string_ensemble_1 = note(`<
  ~
  [[d#3,d#5]]
  [[g#3,g#5]]
  [[b3,b5]@12 [a#3,a#5]@3 ~]
  [[a#3,a#5]@3 [b3,b5]@2 ~ g#3@9 ~, ~@5 g#5@3 ~@8]
  ~@116
>`).s("gm_string_ensemble_1").gain(0.46)

// other · string ensemble 2 · "more tunes on midi"
const string_ensemble_2 = note(`<
  ~ A B C D E@4 ~@20 F@4 G@6 F@2 H@3 ~@37 F@4 G@6 F@2 H@3 ~@17 F@2 I ~ J@4
>`.pickRestart({
  A: "d#4", B: "g#4", C: "b4@12 a#4@3 ~", D: "a#4@3 b4@3 g#4@9 ~", E: "[f#5,f#6]/4",
  F: "[[g#4,g#5]@2 [b4,b5] [c#5,c#6] [f#5,f#6]@12]/2", // G# B C# F#
  G: "[[g#4,g#5]@2 [b4,b5] c#6 [f#5,f#6]@12 ~@7 [b4,b5]@8 ~ g#5@2 [b4,b5] [c#5,c#6] [f#5,f#6]@12, ~@6 c#5 ~@25 [g#5,g#6]@17 ~@14 g#4@5 ~@28]/6", // G# B F# B C# F# G#
  H: "[[g#4,g#5]@4 [b4,b5]@2 [c#5,c#6]@2 [f#5,f#6]@24 [g#5,g#6]@15 ~]/3", I: "[g#4,g#5]@2 [b4,b5] [c#5,c#6] ~@4",
  J: "[[g#4,g#5]@2 [b4,b5] c#6 [f#5,f#6]@12 ~@7 [b4,b5]@8 ~, ~@6 c#5 ~@25 [g#5,g#6]@17 ~@15]/4", // G# B F# B G#
})).s("gm_string_ensemble_2").gain(0.51)

// bass · acoustic bass
const bass = note("<~@13 A B C B A B C B ~@44 A B C B A B C B A B C B A B C B ~@40>".pickRestart({
  A: "g#1@5 ~ d#2@2 f#2@3 ~ d#2@3 ~", B: "b1@7 ~ d#1@3 ~ f#1@3 ~", C: "g#1@5 ~ d#2 ~ f#2@3 ~ d#2@2 ~@2",
})).s("gm_acoustic_bass").gain(0.51)

// other · string ensemble 1 · "uk/~cph296/midi.html"
const string_ensemble_1_2 = note(`<
  ~@13 A B C ~ A B C ~@8 D ~@7 D E@2 F@2 G@2 H ~@21 A B C ~ A B C ~ A B C ~ A B C D ~@7 D E@2 F@2 G@2 H ~@25
>`.pickRestart({
  A: "d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~", B: "d#4@4 c#4@3 ~ c#4@3 ~ c#4@3 ~", C: "c#4 b3@7", D: "~@7 d#4",
  E: "[f#4@2 d#4 c#4 d#4@10 ~ d#4]/2", F: "[f#4@2 d#4 c#4 d#4@11 d#4]/2", G: "[f#4@4 d#4@2 c#4@2 d#4@21 ~ d#4@2]/2",
  H: "f#4@2 d#4 c#4 d#4@4",
})).s("gm_string_ensemble_1").gain(0.51)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@45 A@4 B@2 C D B@2 C E A@4 F B C G ~@32 A@4 F B C G ~@16>".pickRestart({
  A: "g#2@3 c#3@3 d3@3 d#3@3 f3@2 f#3@2", B: "g#2!3 c#3!3 d3!3 d#3!3 f3!2 f#3!2",
  C: "g#2@3 c#3@3 d3@3 d#3@2 ~ f3@2 f#3@2", D: "g#2@3 c#3@3 d3@3 d#3!3 f3!2 f#3!2",
  E: "g#2@3 c#3@3 d3!3 d#3!3 f3!2 f#3!2", F: "g#2 ~ g#2 c#3!3 d3!3 d#3!3 f3!2 f#3!2", G: "g#2@3 c#3@3 d3!3 d#3!3 g#3!4",
})).s("gm_lead_2_sawtooth").gain(0.36)

// bass · electric bass finger · "sub bass"
const bass_2 = note(`<
  A ~@8 B@2 C D ~@8 E F G H I J I K E F G H I J I K E F G H L J I ~@9 M N M N M N M N M G M N B@2 C D B@2 O D E F G H L
  J I K E F G H L J I K E F G H L J I ~ M N M N M N M N B@2 O D B@2 C D B@2 O D B@2 C D
>`.pickRestart({
  A: "~@6 c1 ~ c1@8", B: "g#1@4 ~@2 g#1@5 ~@5", C: "g#1@5 ~ g#1@5 ~ g#1@4", D: "~@2 g#1@4 ~@2 g#1@5 ~@3",
  E: "[d#1,g#1]@2 ~@3 [d#1,g#1]@2 ~", F: "~ [d#1,g#1]@2 ~@2 [d#1,g#1]@2 ~", G: "[d#1,g#1]@5 ~@5 [d#1,g#1]@4 ~@2",
  H: "~@2 [d#1,g#1]@3 ~ [d#1,g#1]@4 ~@6", I: "[d#1,g#1]@4 ~@6 [d#1,g#1]@3 ~@3",
  J: "~@2 [d#1,g#1]@4 ~@4 [d#1,g#1]@3 ~@3", K: "~@2 [d#1,g#1]@3 ~@2 [d#1,g#1]@3 ~@6",
  L: "[d#1,g#1]@5 ~@5 [d#1,g#1]@3 ~@3", M: "a1 ~ [d#1,g#1]@5 ~@5 [d#1,g#1]@4", N: "g#1@2 ~@3 [d#1,g#1]@2 ~, d#1 ~@15",
  O: "g#1@5 ~ g#1@4 ~@2 g#1@4",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · piano
const piano_2 = note(`<
  A ~@8 B C D E ~@8 F G H I F J H I F G H I F J H I F G H I F J H K L@8 M N@6 O@8 ~@53
>`.pickRestart({
  A: "~@2 e2!3 ~ e2!2 e2@4 ~@4", B: "f#2 ~ g#2 ~ e2@2 f#2 ~ g#2 ~ [e2,a#2]@3 g#2 f#2 ~, ~@4 a#2 ~@11",
  C: "f#2 ~ g#2 ~ [e2,a#2]@2 f#2@2 g#2 ~ [e2,a#2]@3 g#2 f#2 ~", // Edim
  D: "f#2 ~ g#2 ~ [e2,a#2]@2 f#2@2 g#2 ~ e2@2 f#2@2 g#2 ~, ~@10 a#2 ~@5", // Edim
  E: "e2@2 f#2 ~ g#2 ~ e2@2 f#2 ~ g#2 ~ [e2,g#2]!4, a#2 ~@5 a#2 ~@9", // E
  F: "f#2 ~ g#2 ~ [e2,a#2] ~ f#2 e2 g#2 e2 a#2@2 e2 g#2 f#2 e2", // Edim
  G: "f#2 e2 g#2 ~ a#2@2 ~ e2 g#2 e2 a#2@2 e2 g#2 [e2,f#2] ~, ~@4 e2 ~ f#2@2 ~@8", // Esus2
  H: "f#2 ~ g#2 ~ a#2@2 ~ e2 g#2 e2 a#2 ~ f#2@2 g#2 e2, ~@4 e2 ~ f#2@2 ~@4 e2 ~@3",
  I: "a#2 e2 f#2 ~ [e2,g#2] ~ a#2 ~ f#2 ~ [e2,g#2] ~ g#2 [e2,g#2] g#2 [e2,g#2]", // E
  J: "f#2 ~ [e2,g#2] ~ a#2@2 ~ e2 g#2 e2 a#2@2 e2 g#2 [e2,f#2] ~, ~@4 e2 ~ f#2@2 ~@8", // E Esus2
  K: "a#2 ~ [e2,f#2] e2 [e2,g#2] ~ [e2,a#2] e2 [e2,f#2] ~ [e2,g#2] e2 [e2,g#2]!4", // Esus2 E Edim Esus2 E
  L: "f#3 ~@2 f#3!2 ~@2 f#3!2 ~@2 f#3!2 ~@2 f#3",
  M: "f#3 e2 f#2 f#3 [e2,g#2,f#3] ~ e2 f#3!2 e2 g#2 f#3 [a#2,f#3] ~ e2 f#3, ~ [d#1,g#1]@2 a#2 f#2 ~@2 f#2", // E D#m G#5
  N: "[d#1,g#1,f#3] e2 f#2 f#3 [e2,g#2,f#3] ~ e2 f#3!2 e2 g#2 f#3 [a#2,f#3] ~ e2 f#3, ~ [d#1,g#1]@2 a#2 f#2 ~@2 f#2", // G#7 E D#m G#5
  O: "[[d#1,g#1,f#3] e2 f#2 f#3 [e2,g#2,f#3] ~ e2 f#3!2 e2 g#2 f#3 [a#2,f#3] ~ e2 f#3 ~@112, ~ [d#1,g#1]@2 a#2 f#2 ~@2 f#2@57]/8", // G#7 E D#m G#5
})).s("gm_piano").gain(0.41)

// chords · piano · soft notes
const piano_soft = note("<~@45 [~ f#3!2 ~@2 f#3!2 ~@2 f#3!2 ~@2 f#3!2 ~]!16 ~@60>").s("gm_piano").gain(0.2)

// chords · piano
const piano_3 = note(`<
  ~@21 A B A C A D A C A B A C A D A C A B A C A D A ~@9 E@12 ~@8 A B A C A D A C A B A C A D A C A B A C A D A ~ E@8
  ~@7 E@9
>`.pickRestart({
  A: "f#3 ~ f#3!2 [e2,f#3] ~ f#3 [e2,f#3] f#3 e2 f#3!2 [e2,f#3] ~ f#3 [e2,f#3]", // Esus2
  B: "f#3 e2 f#3!2 [e2,f#3] ~ f#3 [e2,f#3] f#3 e2 f#3!2 [e2,f#3] ~ [e2,f#3] f#3", // Esus2
  C: "f#3 e2 f#3!2 [e2,f#3] ~ f#3!3 ~ [e2,f#3] f#3!2 e2 f#3 [e2,f#3]", // Esus2
  D: "f#3 ~ [e2,f#3] f#3 [e2,f#3] ~ f#3 [e2,f#3] f#3 e2 f#3!2 [e2,f#3] ~ [e2,f#3] f#3", // Esus2
  E: "f#3 e2 f#3!2 [e2,f#3] ~ [e2,f#3] f#3!2 e2 f#3!2 [e2,f#3] ~ f#3!2", // Esus2
})).s("gm_piano").gain(0.31)

// chords · piano · soft notes
const piano_soft_2 = note("<~@21 A@23 ~@9 A@12 ~@8 A@23 ~ A@8 ~@7 A@9>".pickRestart({
  A: "~ f#3 ~@3 f#3 ~@3 f#3 ~@3 f#3 ~@2",
})).s("gm_piano").gain(0.1)

// bass · lead 2 sawtooth
const bass_3 = note("<~@45 A@4 B@2 C D B@2 C E A@4 B@2 C F ~@32 A@4 B@2 C F ~@16>".pickRestart({
  A: "g#1@3 c#2@3 d2@3 d#2@3 f2@2 f#2@2", B: "g#1!3 c#2!3 d2!3 d#2!3 f2!2 f#2!2",
  C: "g#1@3 c#2@3 d2@3 d#2@2 ~ f2@2 f#2@2", D: "g#1@3 c#2@3 d2@3 d#2!3 f2!2 f#2!2",
  E: "g#1@3 c#2@3 d2!3 d#2!3 f2!2 f#2!2", F: "g#1@3 c#2@3 d2!3 d#2!3 g#2!4",
})).s("gm_lead_2_sawtooth").gain(0.51)

// chords · rock organ
const rock_organ = note("<~@53 A@2 B C ~@4 A@2 B D ~@36 A@2 B D ~@16>".pickRestart({
  A: "[g#3,g#4,c5]!3 [c#4,c#5,f5]!3 [d4,d5,f#5]!3 [d#4,d#5,g5]!3 [f4,f5,a5]!2 [f#4,f#5,a#5]!2", // G# C# D D# F F#
  B: "[g#3,g#4,c5]@3 [c#4,c#5,f5]@3 [d4,d5,f#5]@3 [d#4,d#5,g5]@2 ~ [f4,f5,a5]@2 [f#4,f#5,a#5]@2", // G# C# D D# F F#
  C: "[g#3,g#4,c5]@3 [c#4,c#5,f5]@3 [d4,d5,f#5]!3 [d#4,d#5,g5]!3 [f4,f5,a5]!2 [f#4,f#5,a#5]!2", // G# C# D D# F F#
  D: "[g#3,g#4,c5]@3 [c#4,c#5,f5]@3 [d4,d5,f#5]!3 [d#4,d#5,g5]!3 [g#4,g#5,c6]!4", // G# C# D D# G#
})).s("gm_rock_organ").gain(0.51)

// drums · rim
const rim = s("rim").struct("<[~@12 x!4] ~@120>").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  A ~@7 B@3 ~@9 B C D C E C D C F C D C E C D C F C D C E C D C G@2 ~@7 H@12 B@2 ~@2 B@2 ~@2 C D C E C D C F C D C E C D
  C F C D C E C D C G H@8 B@2 ~@2 B@2 ~@2 I@2 H@2 I@2 H@2
>`.pickRestart({
  A: "~@6 x ~ x ~@3 x!4", B: "~@7 x", C: "x!2", D: "x ~@3 x ~@2 x", E: "x ~@2 x ~@3 x", F: "x ~@2 x ~@4", G: "x",
  H: "x!2 ~@3 x ~@2", I: "x!2 ~@3 x ~ x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@13 [~ x!3 ~ x!3]!8 ~@100>").gain(0.51)

// drums · tambourine
const tambourine = s("tb").struct("<~ [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!8 ~@112>").gain(0.51)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~ [~ x ~@3 x ~@3 x ~@3 x ~@2]!8 ~@112>").gain(0.26)

stack(
  piano, string_ensemble_1, string_ensemble_2, bass, string_ensemble_1_2, lead_2_sawtooth, bass_2, piano_2, piano_soft,
  piano_3, piano_soft_2, bass_3, rock_organ, rim, kick, hihat, tambourine, tambourine_soft
)

More by The Prodigy