Strudelify

Back In The U.K.

Scooter

KeyA minorTempo176 bpm
0:00/0:00
// Back In The U.K. — Scooter
// 176 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 232 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/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.

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@30 A B C D A B C D A B C D A B C D C E C E C E C E C E C E C E C E ~ F@4 G@2 F@3 H F@6 G@2 F@3 H F@2 A B C D A B C D
  A B C D A B C D ~@8 C E C E C E C E ~ F@4 G@2 F@3 H F@6 G@2 F@3 H F@2 A B C D A B C D A B C D A B C D ~@24 A B C@2 A B
  C@2 A B C@2 A B C@2 A B C@2 A B C I F@4 G@2 F@3 H F@6 G@2 F@3 H ~@2
>`.pickRestart({
  A: "~ f1 ~ f1 ~ f1 ~ f1", B: "~ g1 ~ g1 ~ g1 ~ g1", C: "~ a1 ~ a1 ~ a1 ~ a1", D: "~ a1 ~ a1!2 ~ a1 ~",
  E: "~ a1 ~ a1 ~ b1 a1 b1", F: "~ c2 ~ c2 ~ c2 ~ c2", G: "~ d#2 ~ d#2 ~ d#2 ~ d#2", H: "~ g2 ~ g2 ~ g2 ~ g2",
  I: "a1 ~@3",
})).s("gm_synth_bass_1").gain(0.39)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@22 A B C D A B C E A B C D A B C E A B C D A B C E ~@41 A B C D A B C E A B C D A B C E ~@41 A B C D A B C E A B C D
  A B C D ~@72
>`.pickRestart({
  A: "[f4,f5] ~ [a4,a5] ~ [c5,c6] ~ [f4,f5] ~ [a4,a5] ~ [c5,c6] ~ [f4,f5] ~ [a4,a5] ~", // F A C F A C F A
  B: "[g4,g5] ~ [b4,b5] ~ [d5,d6] ~ [g4,g5] ~ [b4,b5] ~ [d5,d6] ~ [g4,g5] ~ [b4,b5] ~", // G B D G B D G B
  C: "[a4,a5]@2 ~@2 [a4,a5]@2 ~@2 [a4,a5]@2 ~@2 [a4,a5] ~ [a4,a5]@2", // A
  D: "~@2 [a4,a5]@2 ~@2 [a4,a5] ~ [a4,a5]@2 ~@2 [a4,a5]@2 ~@2", // A
  E: "~@2 [a4,a5]@2 ~@2 [a4,a5] ~ [a4,a5]@2 ~@2 [a4,a5]@2 [g4,g5]@2", // A G
})).s("gm_lead_2_sawtooth").gain(0.21).pan(0.6)

// other · lead 2 sawtooth · "SAW WAVE" · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@22 A B C D A B C E A B C D A B C E A B C D A B C E ~@41 A B C D A B C E A B C D A B C E ~@41 A B C D A B C E A B C D
  A B C D ~@72
>`.pickRestart({
  A: "f3 ~ a3 ~ c4 ~ f3 ~ a3 ~ c4 ~ f3 ~ a3 ~", B: "g3 ~ b3 ~ d4 ~ g3 ~ b3 ~ d4 ~ g3 ~ b3 ~",
  C: "a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3 ~ a3@2", D: "~@2 a3@2 ~@2 a3 ~ a3@2 ~@2 a3@2 ~@2",
  E: "~@2 a3@2 ~@2 a3 ~ a3@2 ~@2 a3@2 g3@2",
})).s("gm_lead_2_sawtooth").gain(0.12).pan(0.6)

// other · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  ~@62 A B C B D E F G H I J K L B C B D E F G H M N K O ~@32 A B C B D E F G H I J K L B C B D E F G H M N K O ~@63 P B
  C B D E F G H I J K L B C B D E F G H M N K O
>`.pickRestart({
  A: "~@4 [g3,g4]@3 ~ [c4,c5]@3 ~ [d4,d5]@3 ~", B: "[e4,e5]@3 ~@3 [e4,e5]@5 ~ [d4,d5]@2 [e4,e5] [d4,d5]",
  C: "[c4,c5]@3 ~@3 [c4,c5]@4 [g3,g4]@2 [c4,c5]@2 [d4,d5]@2", D: "[c4,c5]@4 ~ [g3,g4] [c4,c5] [d#4,d#5]",
  E: "[d#4,g5]@3 ~@3 [d#4,g5]@5 ~ [d4,f5]@2 [d#4,g5] [d4,f5]", // D# Dm D# Dm
  F: "[c4,d#5]@3 ~@3 [c4,d#5]@5 ~ [d4,f5]@2 [c4,d#5] [d4,f5]", G: "[e4,g5]@3 ~@3 [e4,g5]@5 ~ [d4,f5]@2 [e4,g5] [d4,f5]",
  H: "[c4,e5]@4 ~ [g3,g4] [c4,c5] [d4,d5]", // C G C D
  I: "[e4,e5] ~ [e4,e5] [c4,c5] [g3,g4]@2 [e4,e5]@2 [c4,c5]@2 [g3,g4]@2 [e4,e5]@2 [c4,c5]@2", // E C G E C G E C
  J: "[d4,d5] ~ [d4,d5] [b3,b4] [g3,g4]@2 [d4,d5]@2 [b3,b4]@2 [g3,g4]@2 [d4,d5]@2 [b3,b4]@2", // D B G D B G D B
  K: "[c4,c5] [e3,e4] [g3,g4] [c4,c5] [a3,a4] [g3,g4] [f3,f4] [c4,c5]", // C E G C A G F C
  L: "[b3,b4]@2 [c4,c5] [b3,b4] [a3,a4]@2 [b3,b4]@2 [c4,c5]@2 [g3,g4]@2 [c4,c5]@2 [d4,d5]@2", // B C B A B C G C …
  M: "[e4,e5]@2 [e4,e5] [c4,c5] [g3,g4]@2 [e4,e5]@2 [c4,c5]@2 [g3,g4]@2 [e4,e5]@2 [c4,c5]@2", // E C G E C G E C
  N: "[d4,d5]@2 [d4,d5] [b3,b4] [g3,g4]@2 [d4,d5]@2 [b3,b4]@2 [g3,g4]@2 [d4,d5]@2 [b3,b4]@2", // D B G D B G D B
  O: "[b3,b4]@2 [c4,c5] [b3,b4] [a3,a4]@2 [b3,b4]@2 [c4,c5]@3 ~@5", P: "~@5 [g3,g4] [c4,c5] [d4,d5]",
})).s("gm_harpsichord").gain(0.3).pan(0.4)

// other · piano · "A.PIANO 3"
const piano = note(`<
  ~@159 A B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C F ~@25
>`.pickRestart({
  A: "~@7 f4", B: "a4 f4 c5 f4 f5 f4 a4 g4", C: "b4 g4 d5 g4 g5 g4 b4 a4", D: "c5 a4 e5 a4 a5 a4 g5 a4",
  E: "f5 a4 e5 a4 d5 a4 c5 f4", F: "c5 a4 e5 a4 a5 a4 c5 a4",
})).s("gm_piano").gain(0.34).pan(0.6)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A@7 B@6 C@8 ~@54 D@8 ~ E@3 ~@8 F@8 ~@29 D@8 G@4 ~@8 F@8 H@40 I@7 ~@13 D@8 J@4
>`.pickRestart({
  A: "[~@31 g4@16 f#4@9, [a2,a3]]/7", B: "[~@5 a4@27]/6", C: "[~@15 a4@113]/8", D: "[c6@63 d#6@31 c6@34, g6]/8",
  E: "[b5@15 c6@28 ~@5]/3", F: "[~@63 c7@64 ~, [a5,a6]]/8", G: "[~@15 b5@16 c6@28 ~@5]/4", H: "[a6, a5 ~@127]/8",
  I: "[a6, a5 ~@111]/7", J: "[~@15 b5@16 c6@24 ~@9]/4",
})).s("gm_synth_strings_1").gain(0.17).pan(0.6)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@46 A B A B A B A C A B A B A B A C ~@41 A B A B A B A C A B A B A B A C ~@112 D
>`.pickRestart({
  A: "[a3,a4,e5] ~@2 [a3,a4,e5] ~@2 [a3,a4,e5] ~", B: "~ [a3,a4,e5] ~@2 [a3,a4,e5] ~ [a3,a4,e5] [a#3,a#4,f5]",
  C: "[a3,a4,e5] ~ [a3,a4,e5] ~ [a3,a4,e5] ~ [g3,g4,d5] ~", D: "~@12 [c4,g4,c5,g5]@3 ~",
})).s("gm_rock_organ").gain(0.19).pan(0.3)

// other · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@14 A B A B A B A B ~@32 A B A B A B A B ~@49 A B A B A B A B ~@112 C>".pickRestart({
  A: "e6 ~ a5 ~ a5 ~ e6 ~ a5 ~ a5 ~ a5 ~ a5 ~", B: "e6 ~ a5 ~ a5 ~ e6 ~ a5 ~ d6 ~ f6 ~ d6 ~", C: "~@6 [g4,c5] ~",
})).s("gm_drawbar_organ").gain(0.3).pan(0.6)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@14 A@3 B A@3 B ~@154 C@23 D C@8 ~@24>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~@3 x", C: "x!2 ~@3 x!2 ~", D: "x!2 ~@6",
})).gain(0.31)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@22 [x!16] ~@80 [x!16] ~@88 [x!16] ~@39>").gain(0.18)

// drums · hihat
const hihat = s("hh").struct("<~@14 A@3 B A@3 B ~@8 C@32 ~ C@56 ~ C@40 ~@24 C@23 D C@23 E>".pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x!2 ~@2", B: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2", C: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", D: "x",
  E: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~@3",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@14 A@8 ~@8 A@32 ~ A@56 ~ A@40 ~@24 A@23 ~ A@23 B>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct(`<
  ~@22 A ~@6 B A ~@6 C ~@8 A ~@7 A ~@7 A@2 ~@11 A ~@10 D A ~@15 A ~@7 A ~ A E F@2 B@2 A@2 ~@10 D A ~@10 D A ~@6 D A ~@3
  A@2 F B A ~@22 D A ~@6 D A ~@6 B A ~ C@2 G@2 H B A ~@7 A@2 F B A ~@2 I ~@3 I ~ A@2 D
>`.pickRestart({
  A: "x", B: "x!4", C: "~@2 x!2", D: "~@3 x", E: "~@7 x", F: "x!2", G: "~ x ~ x", H: "~ x!3", I: "~ x!2 ~",
})).gain(0.31)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@63 A B A B A B A B A B A B A B A B A B A B A B A B ~@33 A B A B A B A B A B A B A B A B A B A B A B A B ~@32 C@23 D
  C@8 ~@24
>`.pickRestart({
  A: "~@2 x ~@6 x ~@2 x ~@3", B: "~@2 x ~@6 x ~@2 x ~ x ~", C: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~", D: "x!3 ~@5",
})).gain(0.31)

// drums · lt
const lt = s("lt").struct("<~@14 [x ~@2 x ~@4]!3 [x ~@2 x ~@3 x] [x ~@2 x ~@4]!3 [x ~@2 x ~@3 x] ~@210>").gain(0.24)

stack(
  bass, lead_2_sawtooth, lead_2_sawtooth_soft, harpsichord, piano, synth_strings_1, rock_organ, drawbar_organ, kick,
  kick_soft, snare, snare_soft, hihat, open_hat, crash, tambourine, lt
)

More by Scooter