Strudelify

Big Time

Whigfield

KeyD majorTempo96 bpm
0:00/0:00
// Big Time — Whigfield
// 96 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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(`<
  ~@4 A B A B A B A B A B A C A B A B A B A C A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B ~@4 A B A B A B A
  B A B A B A B A B A B A B A B A D E
>`.pickRestart({
  A: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
  B: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [d4,e4,a4] ~@3 [d4,e4,a4] ~", C: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@9",
  D: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~ [d4,e4,a4] ~@5 [d4,e4,a4] ~", E: "[a3,d4,f#4]@3 ~@13",
})).s("gm_piano").gain(0.44).pan(0.7)

// other · lead 3 calliope
const lead_3_calliope = note("<~@8 A B A C@2 B A D@2 ~@15 A B A D@2 ~@23 A B A E ~@8 A B A E ~@5>".pickRestart({
  A: "d5@3 d5 ~@7 b4 f#5 b4 e5@2", B: "d5@3 d5 ~@7 a4 f#5 a4 e5@2",
  C: "[d5@3 d5 ~@2 a4@2 f#5@2 ~ e5 ~@2 d5@4 d5@2 ~@7 b4 f#5 b4 e5@2]/2",
  D: "[d5@3 d5 ~@2 a4@2 f#5@2 ~ e5 ~@2 d5@4 ~@14]/2", E: "d5@3 d5 ~@12",
})).s("gm_lead_3_calliope").gain(0.35).pan(0.4)

// other · string ensemble 1 · D E B A D E B A
const string_ensemble_1 = note(`<
  ~@36
  [[d4,d5]]
  [[e4,e5] [b3,b4] [a3,a4]@2]
  [[d4,d5]]
  [[e4,e5] [b4,b5] [a4,a5]@2]
  ~@41
>`).s("gm_string_ensemble_1").gain(0.27).pan(0.6)

// other · lead 1 square
const lead_1_square = note("<~@12 A B C D ~@16 A B C D ~@14 E D ~@12 A B C D ~@13>".pickRestart({
  A: "d3", B: "d4", C: "d5", D: "d6!3 ~ d6 ~ d6!5 ~ d6 ~ d6!2", E: "d4 d5",
})).s("gm_lead_1_square").gain(0.32).pan(0.3)

// other · lead 1 square · soft notes
const lead_1_square_soft = note("<~@11 A ~@19 B ~@17 C ~@13 D ~@17>".pickRestart({
  A: "~@12 d3 ~@3", B: "~@8 d3 ~@7", C: "~@15 d4", D: "~@15 d3",
})).s("gm_lead_1_square").gain(0.05).pan(0.3)

// other · flute
const flute = note(`<
  ~@40
  [a3@2 a3@2 d4@2 d4 f#4@2 g4 f#4 e4 d4@2 ~@2]
  [b3@2 b3 ~ f#4!4 ~ e4@2 ~@5]
  [a3@2 a3@2 d4@2 d4 f#4@2 g4 f#4 e4 d4@2 ~ d4]
  [b3!4 f#4 ~ f#4!2 ~ e4 ~@6]
  ~@37
>`).s("gm_flute").gain(0.28).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@8 A B A B A B A C ~@8 A B A B A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "a3 b3, [d4,f#4]", B: "[b3,e4,g4] [d4,e4,a4]", C: "[b3,e4,g4] ~",
})).s("gm_synth_strings_1").gain(0.12)

// bass · electric bass finger
const bass = note(`<
  ~@8 A B A B A B A C ~@8 A B A B A B A B ~@12 A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B D
>`.pickRestart({
  A: "d1@2 ~ d1 d2!4 b1 ~ b1 ~@3 f#1@2", B: "e1@2 ~ e1!5 a1 ~ a1 ~@3 a1@2", C: "e1@2 ~ e1!5 ~@8", D: "d1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.5)

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

// drums · snare
const snare = s("sd").struct("<~@4 A@4 B@7 C B@7 C B@11 C A@4 B@3 C B@11 C ~@4 B@11 D B@8 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x!2 ~ x ~@4 x!2 ~ x", C: "~@4 x!2 ~ x ~@4 x ~@3", D: "~@4 x!2 ~ x ~@2 x ~ x ~ x ~",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<A@7 B A@7 C A@7 B A@11 D A@7 B A@11 E A@23 F ~>".pickRestart({
  A: "x!14 ~ x", B: "x!14 ~@2", C: "x!10 ~ x ~@4", D: "x!12 ~@4", E: "x!13 ~@3", F: "x!11 ~ x!4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<A@15 B A@7 ~ A@11 ~ A@7 ~ A@11 ~ A@23 C ~>".pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@11 x ~@4",
})).gain(0.3)

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

// drums · tambourine
const tambourine = s("tb").struct("<[~@2 x!2 ~@2 x ~]!4 ~@32 [~ x ~ x]!4 ~@16 [~@2 x!2 ~@2 x ~]!4 ~@21>").gain(0.36)

// drums · cowbell
const cowbell = s("cb").struct("<~@3 A ~@3 B ~@27 C ~@19 D ~@3 B ~@11 B ~@7 B ~>".pickRestart({
  A: "~@3 x ~@7 x ~@2 x ~", B: "~@7 x!2 ~ x ~ x ~ x ~", C: "~@3 x!3 ~@6 x ~@3", D: "~@3 x ~@8 x ~@3",
})).gain(0.42)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@15 B A@7 C A@11 D A@7 C A@11 B A@24 ~>".pickRestart({
  A: "x!16", B: "x!12 ~@4", C: "x!13 ~@3", D: "x!12 ~@2 x!2",
})).gain(1.22)

stack(
  piano, lead_3_calliope, string_ensemble_1, lead_1_square, lead_1_square_soft, flute, synth_strings_1, bass, kick,
  snare, hihat, open_hat, crash, tambourine, cowbell, cabasa
)

More by Whigfield