Strudelify

Rock DJ

Robbie Williams

KeyD majorTempo103 bpm
0:00/0:00
// Rock DJ — Robbie Williams
// 103 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · string ensemble 1 · "Untitled"
const string_ensemble_1 = note(`<
  ~@5 A@6 B@2 C@4 D@4 E@8 F ~@3 A@2 G@2 A@2 H@2 I@8 E@8 J@8 F ~@11 K@8 J@16 L
>`.pickRestart({
  A: "[~ c4@3 [f#3,d4]@4, ~@4 a3@27 ~]/2", B: "[~@4 c4@12 ~@14 d3 e3, ~@4 a3@27 ~, ~ [f#3,d4], ~@29 c3@2 ~]/2",
  C: "[d3@61 ~ d3 e3, ~@61 c3@2 ~]/4",
  D: "[~@48 f#2 [g2,a2] b2 c3 e3 f#3 [g3,a3] b3 [c4,d4] e4 [f#4,g4] [a4,b4] [c5,d5] [e5,f#5] [g5,a5] [b5,c6], d3@52 d3@5 ~@7]/4", // Gsus2 Csus2 Gmaj7 Asus2 Csus2 Esus2 Gsus2 Cmaj7
  E: "[e6@28 d6@64 d6@32 [d6,e6] [a5,b5,c6] [d5,e5,f#5,g5] [g4,a4,b4,c5], d6 ~@127]/8", F: "e4 ~@7, f#4 ~@15",
  G: "[~@4 c4@12 ~@7 a4 c5 d5 ~@6, ~@4 a3@27 ~, ~ [f#3,d4]]/2", // D
  H: "[~@4 c4@12 ~@3 a4 d5 e5 d5 c5 ~@6 d3 e3, ~@4 a3@27 ~, ~ [f#3,d4], ~@29 c3@2 ~]/2", // D
  I: "[~@32 a5@22 g5@2 f#5@2 d5@2 ~@2 d3 e3 ~@10 d5@2 c5@2 a4@10 a4@2 ~@2 c5@2 ~@2 g4@16 f#2 [g2,a2] b2 c3 e3 f#3 [g3,a3] b3 [c4,d4] e4 [f#4,g4] [a4,b4] [c5,d5] [e5,f#5] [g5,a5] [b5,c6], d3@60 a4@14 ~@38 a4@9 ~@7, ~@61 c3@2 ~ d3@52 d3@5 ~@7]/8", // Gsus2 Csus2 Gmaj7 Asus2 Csus2 Esus2 Gsus2 Cmaj7
  J: "[e6@28 d6@64 d6@32 [d6,e6] [a5,b5,c6] [d5,e5,f#5,g5] [g4,a4,b4,c5], f#4 ~@127]/8", // Dsus2 Am Em7 Cmaj7
  K: "[e6@28 d6@64 d6@32 [d6,e6] [a5,b5,c6] [d5,e5,f#5,g5] [g4,a4,b4,c5]]/8", L: "e4@6 f#4 ~@9, f#4 ~@15",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.2)

// other · string ensemble 1 · "Untitled" · soft notes
const string_ensemble_1_soft = note("<~@5 A ~ A ~ A ~ A ~@5 B ~@15 A ~ A ~ A ~ A ~@5 B ~@56>".pickRestart({
  A: "~ [g3,e4]@3", B: "c7 ~@7",
})).s("gm_string_ensemble_1").gain(0.14).pan(0.2)

// bass · electric bass finger · "Untitled"
const bass = note(`<
  ~ A@4 B C D C B C E C F C F C G C E C H I H J H I H J A@4 B C D C B C E C F C F C G C E C H I H J H I H J H I H J H I
  H J K L K L K M N@2 A@4 H I H J H I H J H I H J H I H J H I H J H I H J O
>`.pickRestart({
  A: "d1 ~ d1 ~ d1 ~ d1 ~", B: "a1 ~@5 g1 ~", C: "d1 ~@7", D: "a1 ~@5 c1 ~", E: "c1 ~@5 g1 ~", F: "d1 ~@5 c1 ~",
  G: "d1 ~@5 a1 ~", H: "d1@3 ~ d1@4 c1@2 d1 ~ d1@2 c1@2", I: "d1@2 d1@2 d1 ~ d1@2 f#1@2 d1@2 g1@4",
  J: "d1 ~ d1@2 d2 ~ d2@2 c2 ~ c2@2 g#1@4", K: "d2@2 ~@2 d2@3 ~@3 c2@2 ~@2 c2@2", L: "g1 g2 d2 c#2 c2@4",
  M: "g1@2 g2@2 g1@2 ~ g1 g1@2 ~@2 a1@2 b1@2", N: "[c2@27 ~ b2@3 ~]/2", O: "e1@3 d1 ~@4",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · piano · "Untitled"
const piano = note(`<
  ~ A@4 B C D C B C E C F C F C G C E C H@8 A@4 B C D C B C E C F C F C G C E C H@16 I@4 J@2 ~@2 A@4 H@24 K
>`.pickRestart({
  A: "[d2,d3] ~ [d2,d3] ~ [d2,d3] ~ [d2,d3] ~", B: "a2 ~@5 g2 ~", C: "d2 ~@7", D: "a2 ~@5 c2 ~", E: "c2 ~@5 g2 ~",
  F: "d2 ~@5 c2 ~", G: "d2 ~@5 a2 ~", H: "[[a3,c4,e4]@9 ~ [c4,e4,g4]@3 ~ [b3,d4,f#4]@17 ~]/2",
  I: "[[a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4]@5 ~ [g3,c4,e4]@3 ~ [g3,b3,d4]@8 [g3,b3,d4] ~ [g3,a3,c4,e4]@3 ~ [g3,a3,c4,e4]@2 ~@2]/2", // D7 C G Am7
  J: "[[a3,c4,d4,f#4]@2 ~@2 [a3,c4,d4,f#4]@5 ~ [g3,c4,e4]@3 ~ [g3,b3,d4]@18]/2", // D7 C G
  K: "[g3,a3,c4,e4]@6 [f#3,a3,c4,d4] ~@9", // Am7 D7
})).s("gm_piano").gain(0.33).pan(0.7)

// bass · lead 2 sawtooth · "Untitled"
const bass_2 = note(`<
  ~@21 A B A C A B A C ~@20 A B A C A B A C A B A C A B A C ~@12 A B A C A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "d1@3 ~ d1@4 c1@2 d1 ~ d1@2 c1@2", B: "d1@2 d1@2 d1 ~ d1@2 f#1@2 d1@2 g1@4",
  C: "d1 ~ d1@2 d2 ~ d2@2 c2 ~ c2@2 g#1@4",
})).s("gm_lead_2_sawtooth").gain(0.63)

// other · english horn · "Untitled"
const english_horn = note("<~@41 [~@12 c4@2 d4 ~]!3 [~@6 c4 d4] [~@12 c4@2 d4 ~]!3 ~@54>")
  .s("gm_english_horn").gain(0.19).pan(0.3)

// other · muted trumpet · "Untitled"
const muted_trumpet = note("<~@57 A B C D A B C E ~@20 A B C D A B F ~@10>".pickRestart({
  A: "d3@3 ~ d3@4 c3@2 d3 ~ d3@2 c3@2", B: "d3@2 d3@2 d3 ~ d3@2 f#3@2 d3@2 g3@4",
  C: "d3@3 ~ d3@4 [c3,a4,d5]@2 d3 ~ d3@2 c3@2", D: "d3 ~ d3@2 d4 ~ d4@2 c4 ~ c4@2 g#3@4",
  E: "d3 ~ d3@2 d4 ~ d4@2 c4 ~ c4@2 g#3@2 f#3@2", F: "d3@3 ~ d3@4 [c3,a4,d5]@2 d3 ~ d3@2 ~@2",
})).s("gm_muted_trumpet").gain(0.28).pan(0.6)

// other · distortion guitar · "Untitled"
const distortion_guitar = note("<~@92 A B@2 C@2 D@2 E@2 ~>".pickRestart({
  A: "a4@2 c5 d4@5", B: "[a4@2 c5 a4@4 c5 a4@2 g5@4 f#5@4 d5@3 c5 a4@4 f#4@5 ~]/2", C: "[e4@2 d4 e4 g4@2 e4 d4@9]/2",
  D: "[e4@3 a4 g4 f#4 d4@4 g4@2 f#4@2 d4@2]/2", E: "[e4@14 d4@17 ~]/2",
})).s("gm_distortion_guitar").gain(0.3).pan(0.6)

// chords · percussive organ · "Untitled"
const percussive_organ = note(`<
  ~@49 A B A B A B A B A B A B A B C D ~@12 A B A B A B A B A B A B A B C D A B A B A B C D ~
>`.pickRestart({
  A: "c6 d6 e6 c6 g6 c6 d6 e6 c6 d6 e6 c6 g6 c6 d6 e6", B: "a5 c6 d6 a5 f#6 a5 c6 d6 a5 c6 d6 a5 g6 f#6 e6 d6",
  C: "c6 d6 e6 c6 g6 c6 d6 e6 c6 d6 e6 c6 g6 c6 d6 e6, ~@3 b5",
  D: "~ c6 d6 ~ f#6 ~ c6 d6 ~ c6 d6 ~ g6 f#6 e6 ~, a5@3 a5@2 a5@3 a5@3 a5@5",
})).s("gm_percussive_organ").gain(0.31).pan(0.6)

// chords · percussive organ · "Untitled" · soft notes
const percussive_organ_soft = note(`<
  ~@13 A@4 B@4 A@8 ~@12 A@4 B@4 C D E D A@4 C D E D F@4 G@4 H@2 I@2 ~@4 C D E D A@4 C D E D F@4 C D E D F@4 J
>`.pickRestart({
  A: "[[g4,c5,e5] [b4,d5,f#5] [c5,e5,g5] [b4,d5,f#5], a4]/4", // C Bm C Bm
  B: "[[g4,c5,e5]@2 [b4,d5,f#5]@2 [c5,e5,g5]@2 [b4,d5,f#5] ~, a4@7 ~]/4", C: "[g4,a4,c5,e5]", D: "[b4,d5,f#5]",
  E: "[c5,e5,g5]", F: "[[g4,c5,e5]@16 [b4,d5,f#5]@16 [c5,e5,g5]@16 [b4,d5,f#5]@15 d6, a4]/4",
  G: "[[a4,d5,f#5]@5 e5@2 [b4,d5]@4 d5 [g4,a4,c5,e5] ~ [g4,a4,c5,e5] ~, c5@14 ~@8 b4 ~@9, ~@5 g4@7 ~@4]/2", // D Bm Am7
  H: "[[a4,d5,f#5]@5 e5@2 [b4,d5]@9, c5@7 ~@9, ~@5 g4@11]/2", I: "[[g4,c5,e5]@29 ~@3]/2",
  J: "[g4,a4,c5,e5]@6 [f#4,a4,c5,d5] ~@9", // Am7 D7
})).s("gm_percussive_organ").gain(0.2).pan(0.6)

// chords · electric guitar clean · "Untitled"
const electric_guitar_clean = note(`<
  ~@5 A@5 B C A D@7 E D@7 F ~@4 A@5 B C A D@7 E D@7 F D@7 F G H F I J K ~@6 D@7 F D@7 F D@7 F ~
>`.pickRestart({
  A: "~@4 [d4,a4,c5]!2 ~@6 [d4,a4,c5]!2 ~@2", B: "~@4 [d4,a4,c5]!2 ~@6 [d4,c5]!2 ~@2",
  C: "~@4 [d4,c5]!2 ~@6 [d4,a4,c5]!2 ~@2", D: "~@4 [d4,a4,c5]!3 ~@5 [d4,a4,c5]!3 ~", E: "~@4 [d4,a4,c5]!3 ~@9",
  F: "~@4 [d4,a4,c5]!3 ~@4 [d4,a4,c5]!4 ~", G: "~@4 [d4,a4,c5]!3 ~@3 [d4,a4,c5]!2 ~ [d4,a4,c5] ~@2",
  H: "~@4 [d4,a4,c5]!3 ~@4 [d4,a4,c5]!3 ~@2", I: "~@4 [d4,a4,c5]!3 ~@2 [d4,a4,c5]!2 ~ [d4,a4,c5] ~@3",
  J: "~@4 [d4,a4,c5]!3 ~@2 [d4,a4,c5]!3 ~@4", K: "~@4 [d4,a4,c5] ~@11",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.1)

// chords · string ensemble 1 · "Untitled"
const string_ensemble_1_2 = note(`<
  ~ A@5 B A B A B A B C D E D C D E F C D E D C D E D A@5 B A B A B A B C D E D C D E F C D E D C D E D C D E D C D E D
  G@2 H@2 I@2 J@2 A@4 C D E D C D E D C D E D C D E D C D E D C D E D ~
>`.pickRestart({
  A: "[a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~", // Am
  B: "[f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~ [f#3,a3,c4,d4] ~", // D7
  C: "[a3,c4,e4]", D: "[b3,d4,f#4]", E: "[c4,e4,g4]", F: "[b3,d4,f#4] ~",
  G: "[[a4,d5,f#5]@5 e5@2 [b4,d5]@4 d5 [g4,a4,c5,e5]@4, c5@14 ~@8 b4 ~@9, ~@5 g4@7 ~@4]/2", // D Bm Am7
  H: "[[a4,d5,f#5]@5 e5@2 [b4,d5]@4 [b4,d5] [g4,a4,c5,e5]@4, c5@7 ~@9, ~@5 g4@7 ~@4]/2", // D Bm Am7
  I: "[[a4,d5,f#5]@5 e5@2 [b4,d5]@9, c5@7 ~@9, ~@5 g4@11]/2", J: "[[g4,c5,e5]@29 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.29).pan(0.3)

// chords · string ensemble 1 · "Untitled"
const string_ensemble_1_3 = note(`<
  ~ A@3 B C D C D C D C D E F E F E F E G E F E F E F E F A@3 B C D C D C D C D E F E F E F E G E F E F E F E F E F E F
  E F E F ~@8 A@3 B E F E F E F E F E F E F E F E F E F E F E F E F H
>`.pickRestart({
  A: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", B: "d3 ~ e3 ~ a3 ~ d4 ~ e4 ~ e4 ~ e4 ~ e4 ~",
  C: "[e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~", // Em
  D: "[d4,a4] ~ [d4,a4] ~ [d4,a4] ~ [d4,a4] ~ [d4,a4] ~ [d4,a4] ~ [d4,a4] ~ [d4,a4] ~", // D5
  E: "[a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~", // Am
  F: "[f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~", // Bm7
  G: "[f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~ [f#3,a3,b3,d4] ~@7", // Bm7
  H: "[a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~ [a3,c4,d4,e4] ~@9", // Am
})).s("gm_string_ensemble_1").gain(0.31).pan(0.6)

// chords · electric guitar muted · "Untitled"
const electric_guitar_muted = note(`<
  ~@5 A B C D A E F G H I H I H I H J H I H I H I H I ~@4 A B C D A E F G H I H I H I H J H I H I H I H I H I H I H I H
  I ~@12 H I H I H I H I H I H I H I H I H I H I H I H I ~
>`.pickRestart({
  A: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [e3,a3,c4] ~", // A5 Am
  B: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [f#3,a3,c4] ~ [a3,d4] ~ [a3,d4] ~", // D5 F#dim D5
  C: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [e3,a3,c4] ~ [a3,e4] ~ [a3,e4] ~", // A5 Am A5
  D: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [f#3,a3,c4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // D5 F#dim D5
  E: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [f#3,a3,c4] ~ [a3,d4] ~ [d3,a3,d4] c3", // D5 F#dim D5
  F: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [e3,a3,c4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~", // A5 Am A5
  G: "[a3,d4] ~ [f#3,a3,c4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // D5 F#dim D5
  H: "[c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~", // C
  I: "[d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~", // D
  J: "[d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~@9", // D
})).s("gm_electric_guitar_muted").gain(0.12)

// chords · electric guitar clean · "Untitled"
const electric_guitar_clean_2 = note(`<
  ~@5 A B A B A B A B A B A B A B A B 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 B A B A B A B A
  B ~@12 A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]!2 ~@8", B: "~@2 [a3,c4,d4]!2 ~@2 [a3,c4,d4]!2 ~@8",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.9)

// chords · piano · "Untitled"
const piano_2 = note(`<
  ~ A@4 B C B C B C B C B D B D B D B E B D B D B D B D A@4 B C B C B C B C B D B D B D B E B D B D B D B D B D B D B D
  B D ~@8 A@4 B D B D B D B D B D B D B D B D B D B D B D B D ~
>`.pickRestart({
  A: "~@2 [c4,d4,e4] ~@3 [c4,d4,e4] ~@3 [c4,d4,e4] ~@3 [c4,d4,e4] ~", // C
  B: "~@2 [a3,c4,d4,e4] ~@3 [a3,c4,d4,e4] ~@3 [a3,c4,d4,e4] ~@3 [a3,c4,d4,e4] ~", // Am
  C: "~@2 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~@3 [a3,c4,d4,f#4] ~", // D7
  D: "~@2 [a3,b3,d4,f#4] ~@3 [a3,b3,d4,f#4] ~@3 [a3,b3,d4,f#4] ~@3 [a3,b3,d4,f#4] ~", // Bm7
  E: "~@2 [a3,b3,d4,f#4] ~@3 [a3,b3,d4,f#4] ~@9", // Bm7
})).s("gm_piano").gain(0.24).pan(0.1)

// chords · piano · "Untitled"
const piano_3 = note(`<
  ~@16 A@2 ~@2 B@3 C@4 D@2 ~@15 A@2 ~@2 B@3 C@4 E@4 C@4 D@2 F@2 G@2 H@2 I@2 ~@3 B@3 C@4 E@4 C@4 E@4 C@4 D@2 ~
>`.pickRestart({
  A: "[~@2 [b4,g5]@2 [a4,f#5]@2 [g4,e5] [g4,d5]@2 ~@7]/2", B: "[~@8 d4@15 ~@3 [d4,g4]@4 [d4,f#4]@8 ~@6 d4@2 d4@2]/3",
  C: "[[e4,g4]@10 [d4,g4]@4 [d4,f#4]@7 ~@3 d4@14 ~@4 [d4,g4]@4 [d4,f#4]@10 ~@4 d4@4]/4", // Em G5 D G5 D
  D: "[[e4,g4]@5 [d4,g4]@2 [d4,f#4]@4 ~@5]/2", // Em G5 D
  E: "[[e4,g4]@10 [d4,g4]@4 [d4,f#4]@8 ~@2 d4@15 ~@3 [d4,g4]@4 [d4,f#4]@8 ~@6 d4@2 d4@2]/4", // Em G5 D G5 D
  F: "[[d3,d4]@5 [c3,c4]@2 [g2,g3]@4 [a2,a3] [c3,c4] [a2,a3] [c3,c4] [a2,a3]]/2", // D C G A C A C A
  G: "[[d3,d4]@5 [c3,c4]@2 [g2,g3]@5 [c3,c4] [a2,a3] [c3,c4] [a2,a3]]/2", H: "[[d3,d4]@5 [c3,c4]@2 [g2,g3]@5 ~@4]/2",
  I: "[~@3 g4, g3, ~ c4@3, ~ e4]/2",
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~ A@19 B A@27 B A@21 C D ~ A@28 E>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x!2 ~@2", D: "~@6 x!3 ~ x!2 ~@4", E: "x ~@2 x ~@4",
})).gain(0.41)

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

// drums · clap
const clap = s("cp").struct("<~@13 A@7 B A@8 ~@12 A@7 B A@21 C ~@6 A@24 ~>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x!2 ~@2",
})).gain(0.21)

// drums · snare
// … 56 more lines

More by Robbie Williams