Strudelify
KeyE majorTempo172 bpm
0:00/0:00
// Clumsy — Our Lady Peace
// 172 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 185 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(172/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@3 B@6 C@5 D@3 E@2 F@3 G@3 H I J@2 K@2 L@2 ~@152>".pickRestart({
  A: "[~@20 e5@8 f#5@7 g#5@13, ~@13 a4@35]/3",
  B: "[~@7 e5@9 f#5@7 ~@21 e5@6 f#5@8 g#5@8 b5@27 ~@3, g#4@17 ~ a4@28 ~@2, ~@23 g#5@19 ~@54]/6",
  C: "[~@8 e5@7 ~@25 e5@7 f#5@8 ~@17 e5@8, ~@4 a4@11 g#4@16 f#4@32 ~ a4@16, ~@24 e5@9 ~@23 g#5@11 ~@13]/5",
  D: "[~@8 e5@7 ~@9 e5@7 f#5@9 g#5@8, g#4@15 f#4@32 ~]/3", E: "[~@8 g#5@7 ~@9 g#5@8, a4@15 g#4@16 ~]/2",
  F: "[~ g#5 f#5 e5 ~ e5, f#4@32 a4@15 ~]/3", G: "[~@3 g#5 f#5 e5, g#4@15 f#4@32 ~, ~@8 e5@9 ~@31]/3", H: "~ e5, a4",
  I: "~ e5, a4@3 ~", J: "[~@8 e5@7 f#5@9 g#5@8, e4]/2", K: "[~@8 g#5@7 ~@9 e5@8, a4@15 g#4@11 ~@6]/2",
  L: "[f#4@13 ~@3]/2",
})).s("gm_piano").gain(0.31)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@9 A@6 B@2 C@2 D@4 E@2 F@2 G@2 H I J@2 K@2 L@2 K@2 M@2 N O P ~ Q@7 R S T@2 U V@3 W X Y@3 C@2 D@4 E@2 F@2 G@2 H I J@2
  K@2 L@2 K@2 M@2 N O P ~ Q@7 R S T@2 U V@3 W X Z AA AB AC AD AE AF AG AH AI AJ AG AK AL@4 ~@9 AM@8 R S T@2 U V@3 W V@3
  W V@3 W V@3 W V@3 W V@3 W V@3 W V@3 W AN@4
>`.pickRestart({
  A: "[f#1@15 e1@17 b1@32 f#1@15 e1@17]/6", B: "[b1@31 ~]/2", C: "[f#1@15 e1@17]/2", D: "[b1@31 f#1@16 e1@17]/4",
  E: "b1/2", F: "[f#1@15 a1@16 ~]/2", G: "[e1@15 b1@17]/2", H: "f#1", I: "a1", J: "[b1@25 ~@7]/2", K: "a1!4",
  L: "g#1!4", M: "b1!4", N: "f#1@4 f#1@4 f#1@3 ~ e1@2 f#1@2", O: "~@2 f#1@2 ~@2 f#1 f#1@4 e1@5",
  P: "f#1@3 ~ f#1@2 ~@2 f#1@3 e1@2 f#1@3",
  Q: "[c#2@15 a1@2 ~@2 a1@12 e1@11 ~ e1@4 b1@15 ~ c#2@11 ~ c#2@3 ~ a1@2 ~@2 a1@12 e1@12 e1@4 ~]/7", R: "b1 e1",
  S: "a1@4 a1@11 ~", T: "[c#2@3 ~ c#2@11 b1@16 ~]/2", U: "f#1@2 ~ f#1@11 ~@2",
  V: "[a1@11 ~ a1@3 e1@16 b1@12 ~ b1@3 ~]/3", W: "f#1@11 ~ f#1@3 ~", X: "a1@15 ~", Y: "[e1@14 ~ b1@31 ~@2]/3",
  Z: "e1@7 ~", AA: "~@3 g1@2 ~@2 g1@4 ~ e1@4", AB: "f#1@15 ~", AC: "~@4 a1@2 ~@2 a1@4 b1@3 ~",
  AD: "g#1@4 f#1@3 ~ e1@3 f#1@3 ~@2", AE: "~@3 g1@2 ~@3 g1@4 e1@4", AF: "f#1@13 ~@3", AG: "~@2 a1 ~ a1@2 b1 ~",
  AH: "g#1@2 f#1 ~ e1@2 f#1@2", AI: "~@4 g1@2 ~@2 g1@3 ~ e1@3 ~", AJ: "f#1@7 ~", AK: "g#1@3 ~ f#1@3 ~ e1@4 f#1@4",
  AL: "[~@4 g1@3 ~ g1@3 ~ e1@3 f#1@7 ~ f#1@6 ~@2 f#1@12 e1@12 ~ e1@7 ~, ~@31 e1 ~@32]/4",
  AM: "[~@13 c#2@18 a1@2 ~@2 a1@12 e1@11 ~ e1@4 b1@15 ~ c#2@11 ~ c#2@3 ~ a1@2 ~@2 a1@12 e1@12 e1@4 ~]/8",
  AN: "[a1@11 ~ a1@3 e1@16 b1@30 ~@3]/4",
})).s("gm_electric_bass_finger").gain(0.46)

// chords · acoustic guitar steel · "acoustic guitar"
const acoustic_guitar_steel = note(`<
  ~@8 A B C D E B C D E B C D E B C D E F G H I F J K ~@32 A B C D E B C D E F G H I F J K ~@105
>`.pickRestart({
  A: "~@6 [f#2,b2,e3,f#3,b3,e4]!2", B: "[f#2,e3,f#3,b3,e4]@7 [e2,b2,e3,g#3,b3,e4], b2@3 ~",
  C: "[e2,b2,e3,g#3,b3,e4]@11 ~ [b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]@2", D: "[f#3,b3,e4]@7 [b2,f#3,b3,e4], b2@3 ~",
  E: "[b2,f#3,b3,e4]@11 ~ [f#2,b2,e3,f#3,b3,e4]@2 [f#2,b2,e3,f#3,b3,e4]@2", // Bsus4 Esus2
  F: "[f#2,b2,e3,f#3,b3,e4]@6 ~ [a2,e3,a3,b3,e4]", G: "[a2,e3,a3,b3,e4]@6 ~ [e2,b2,e3,b3,e4]",
  H: "[b2,b3,e4]@6 ~ [b2,f#3,b3,e4], [e2,e3]@7 ~", I: "[f#3,b3,e4]@6 [f#2,b2,e3,f#3,b3,e4]!2, b2@5 ~@3",
  J: "[a2,e3,e4]@6 [b2,f#3,b3,e4]!2, [a3,b3]@5 ~@3", K: "[b2,f#3,b3,e4]",
})).s("gm_acoustic_guitar_steel").gain(0.33)

// chords · overdriven guitar · "overdrive guitar"
const overdriven_guitar = note("<~@33 A@2 B@2 A@2 C@2 D@3 ~@37 A@2 B@2 A@2 C@2 D@3 ~@93>".pickRestart({
  A: "[a2,e3]!8", B: "[g#2,e3]!8", C: "[b2,f#3]!8", D: "[f#2,c#3]!8",
})).s("gm_overdriven_guitar").gain(0.36)

// chords · distortion guitar · "Dist. guitar"
const distortion_guitar = note(`<
  ~@45 A@7 B@4 C@5 D@4 ~@28 A@7 B@4 E@7 F@2 G H I@2 J K L@2 M@2 N O@3 ~@9 P@8 B@4 C@5 Q@24 R@8
>`.pickRestart({
  A: "[~@8 d#4@3 ~@4 g2@2 ~@6 b3@4 ~@28 d#4@4 e4@4 ~@8 d#4@4 ~@12 b3@4 c#4@4 ~@8 b3@8 b2, c#3@14 ~ a2@13 ~@3 e2@13 ~@31 e4@8 ~@29, ~@3 g#3@12 ~@4 e3@13 ~@3 b2@12 b2@14 ~@2 c#3@15 ~ a2@13 ~@3 e2@16 ~, ~@11 e4@9 ~@7 c#4@6 ~@6 b3@12 f#3@12 ~@3 g#3@13 ~@3 e3@13 ~@4 b2@11 ~@2]/7",
  B: "[~@3 f#3@4 ~ c#4@3 ~ b3@3 ~@8 d#4@4 ~@13 b3@3 c#4@4 b2@4 [b2,f#3]@4 ~@9, ~@7 e2@6 ~@6 e3@9 e4@5 ~@2 g#3@12 b3@12 ~@5, ~@11 b2@4 a2@16 c#3@17 ~@16]/4", // B5
  C: "[c#4@2 ~@2 c#4@7 ~@4 e4@3 ~@5 c#5@4 ~@9 e4@3 c#5@4 ~@8 e4@2 ~@2 c#5@4 ~@8 e4@4 c#5@4 b4@4 e4, f#2@15 a2@16 e2@15 ~@5 f#3@12 ~@4 c#3@13, ~@19 e4@2 ~@7 b4@8 ~@7 b4@8 ~@8 b4@8 ~@13, ~@20 e3@11 ~@4 b2@11 ~ b2@16 f#2@16 ~]/5",
  D: "[~@7 c#5@4 ~@8 e4@4 c#5@4 ~@5 [b2,f#3]@28 ~@4, a2@15 e2@14 ~@35, ~@3 e4@4 ~@4 b4@8 ~@8 b4@29 ~@8, ~@4 e3@13 ~@2 b2@10 ~@35]/4", // B5
  E: "[c#4@2 ~@2 c#4@7 ~@4 e4@3 ~@5 c#5@4 ~@9 e4@3 c#5@4 ~@8 e4@2 ~@2 c#5@4 ~@8 e4@4 c#5@4 b4@4 ~@8 c#5@4 ~@8 e4@4 c#5@4 ~@5, f#2@15 a2@16 e2@15 ~@5 f#3@12 ~@4 c#3@13 ~@4 e3@13 ~@2 b2@10 ~@3, ~@19 e4@2 ~@7 b4@8 ~@7 b4@8 ~@8 b4@8 ~@12 e4@2 ~@2 e4@4 ~@4 b4@8 ~@13, ~@20 e3@11 ~@4 b2@11 ~ b2@16 f#2@16 ~ a2@15 e2@14 ~@3]/7",
  F: "[~@3 g4@2 ~@2 g4@4 e4@3 ~ f#4@11 ~@6]/2", G: "~@4 a4 ~@3 a4@3 b4@3 ~@2", H: "g#4@3 ~ f#4@4 e4@4 f#4@3 ~",
  I: "[~@3 g4 ~@3 g4@4 e4@4 f#4@14 ~@3]/2", J: "~@4 a4@2 ~@2 a4@3 b4@2 ~@3", K: "g#4@4 f#4@4 e4@3 f#4@2 ~@3",
  L: "[~@3 g4@2 ~@2 g4@4 e4@3 ~ f#4@10 ~@7]/2", M: "[~@3 a4 ~@3 a4@4 b4 ~@3 g#4@4 f#4@4 ~ e4@4 f#4@3 ~]/2",
  N: "~@3 g4@2 ~@3 g4@4 e4@3 ~", O: "[f#4@6 ~ f#4@5 ~@2 e4 f#4@12 ~ e4@18 ~@2]/3",
  P: "[~@24 d#4@3 ~@12 b3@4 ~@28 d#4@4 e4@4 ~@8 d#4@4 ~@12 b3@4 c#4@4 ~@8 b3@8 b2, ~@13 c#3@14 e4@8 e3@12 e2@13 ~@31 e4@8 ~@29, ~@19 g#3@12 a2@12 c#4@6 ~@2 b2@12 b2@14 ~@2 c#3@15 ~ a2@13 ~@3 e2@16 ~, ~@55 b3@12 f#3@12 ~@3 g#3@13 ~@3 e3@13 ~@4 b2@11 ~@2]/8",
  Q: "[~@7 c#5@4 ~@9 e4@3 c#5@4 ~@8 e4@2 ~@2 c#5@4 ~@8 e4@4 c#5@4 b4@4 ~@8 c#5@4 ~@9 e4@3 c#5@4 ~@8 e4@2 ~@2 c#5@4 ~@8 e4@4 c#5@4 b4@4 e4, a2@16 ~@3 b2@11 ~ b2@16 f#2@16 ~ a2@16 ~@3 b2@11 ~ b2@16 f#2@16 ~, ~@3 e4@2 ~@7 b4@8 ~@7 b4@8 ~@8 b4@8 ~@12 e4@2 ~@2 e4@2 ~@7 b4@8 ~@7 b4@8 ~@8 b4@8 ~@13, ~@4 e3@11 e2@15 ~@5 f#3@12 ~@4 c#3@13 ~@4 e3@11 e2@15 ~@5 f#3@12 ~@4 c#3@13]/8",
  R: "[~@7 c#5@4 ~@9 e4@3 c#5@4 ~@8 e4@2 ~@2 c#5@4 ~@8 e4@4 c#5@4 b4@4 ~@8 c#5@4 ~@9 e4@3 c#5@4 ~@5 f#3@28 ~@4, a2@16 ~@3 b2@11 ~ b2@16 f#2@16 ~ a2@16 ~@3 b2@11 ~ b2@29 ~@4, ~@3 e4@2 ~@7 b4@8 ~@7 b4@8 ~@8 b4@8 ~@12 e4@2 ~@2 e4@2 ~@7 b4@8 ~@7 b4@8 ~@29, ~@4 e3@11 e2@15 ~@5 f#3@12 ~@4 c#3@13 ~@4 e3@11 e2@15 ~@34]/8",
})).s("gm_distortion_guitar").gain(0.41)

// chords · electric guitar clean · "Clean guitar"
const electric_guitar_clean = note("<~@65 A B C D E F G H I J@2 K I L@3 ~@46 M N O P Q N R S T@3 ~@47>".pickRestart({
  A: "~ [f#3,b3,e4]@5 ~@2 [f#3,b3,e4] ~ [b3,e4] ~@3 [f#3,b3,e4] ~", // Esus2 E5 Esus2
  B: "~@2 [f#3,b3,e4] ~@3 [f#3,b3,e4] ~ [f#3,b3,e4] ~@3 [f#3,b3,e4]@2 ~@2", // Esus2
  C: "[f#3,b3,e4]@6 ~@2 [f#3,b3,e4]@3 ~@3 [f#3,b3,e4] ~", // Esus2
  D: "~@2 [f#3,b3,e4] ~@3 [f#3,b3] ~ [f#3,b3] ~@3 [f#3,b3,e4] ~@3", // Esus2 B5 Esus2
  E: "[f#3,b3,e4]@6 ~@2 [f#3,e4]@2 ~@4 [e3,b3,e4] ~, ~@2 b3 ~", // Esus2 F#7 E5
  F: "~@2 [e3,b3,e4] ~@3 [e3,b3] e4 [e3,b3,e4] ~@3 [e3,b3,e4] ~@3", G: "[f#3,b3,e4] ~@7 [f#3,b3,e4]@4 ~@2 [f#3,b3] e4",
  H: "~@2 [f#3,b3,e4] ~@3 b3 ~ [f#3,b3,e4] ~@3 [f#3,b3,e4] ~@3", I: "[f#3,b3,e4]@6 ~@2 [f#3,b3,e4] ~@5 [e3,a3,e4] ~",
  J: "[~@2 [e3,a3,e4] ~@3 [a3,e4] ~ [e3,a3,e4] ~@3 [e3,a3,e4] ~@3 e3@2 ~@6 [e3,g#3,e4] ~@5 [e3,g#3,e4] ~, ~@15 [g#3,e4]@3 ~@14]/2", // A5 E C#m
  K: "~@2 [f#3,b3,e4] ~@3 [f#3,b3] ~ [f#3,b3,e4] ~@3 [f#3,b3,e4] ~@3", // Esus2 B5 Esus2
  L: "[~@2 [a3,d4] ~@3 [a3,e4] ~ [e3,a3,e4] ~@2 [e3,a3,e4] ~@4 [f#3,b3]@26 ~@6, ~@15 e4@26 ~@7]/3", // D5 A5 B5
  M: "[e3,a3] ~@3 a3 ~@3 [e3,a3] ~@3 [e3,a3] ~@3", N: "[e3,a3] ~@3 [e3,a3] ~@3 [e3,a3] ~@3 [e3,a3] ~@3",
  O: "[e3,g#3] ~@2 [e3,g#3] ~@3 g#3 e3 ~@3 [e3,g#3] ~@3", P: "[e3,g#3] ~@3 [e3,g#3] ~@3 [e3,g#3] ~@2 g#3 e3 ~@2 e3",
  Q: "a3 ~@2 [e3,a3] ~@3 [e3,a3] ~@3 [e3,a3] ~@4", R: "b3 ~@2 [f#3,b3] ~@3 [f#3,b3] ~@3 [f#3,b3] ~@3 [f#3,b3]",
  S: "~@3 [f#3,b3] ~@3 [f#3,b3] ~@3 [f#3,b3] ~@4", T: "[[g#3,c#4]@35 ~@13]/3",
})).s("gm_electric_guitar_clean").gain(0.31)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B C B C B A B A B A B@2 A ~@2 A B C B C B A B A B A D E F E@3 F A B A B A B A B A B A B ~@2 A B C B C B A B A B
  A B@2 A B A@2 B C B C B A B A B A D E F E@3 F A B A B A B A B A B A D A G A D A G A D A G A G A D A G ~@10 E F E@3 F 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 A B A B A B A B ~@2
>`.pickRestart({
  A: "~@2 x ~@5 x ~@6 x", B: "~@4 x ~@2 x", C: "~ x ~@2 x ~@2 x", D: "~@3 x ~@12", E: "~@7 x ~@8", F: "~@7 x ~@6 x ~",
  G: "~@2 x!3 ~ x ~ x ~ x ~@5",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@17 A ~ B ~@3 A ~ A ~ A ~@2 A ~@2 A ~ B ~@3 A ~ A ~ A C D ~ D@3 ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ B ~@3 A ~ A ~ A ~@2 A
  ~ A@2 ~ B ~@3 A ~ A ~ A C D ~ D@3 ~ A ~ A ~ A ~ A ~ A ~ A C A ~ A C A ~ A C A ~ A ~ A C A ~@11 D ~ D@3 ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@7 x ~ x ~@6", D: "~@9 x ~@3 x ~@2",
})).gain(0.25)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 A ~@47 A ~@17 A ~ B ~ A ~ B ~ A ~ B ~ B ~ A ~ B ~@58>".pickRestart({
  A: "~@3 x ~@12", B: "~@6 x!2",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@31 A ~@12 B ~@18 A ~@15 A ~@12 B ~@17 B ~@3 B ~@3 B ~@5 B ~@11 C ~@46 A ~
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~@3 x",
})).gain(0.5)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B ~@34 A B A B A B A B A B A B A B ~@106
>`.pickRestart({
  A: "x ~ x ~@4 x", B: "~ x ~ x ~@4",
})).gain(1.17)

// drums · congas
const congas = s("conga:13").struct("<~@9 [~@2 x!2]!22 ~@33 [~@3 x] [~@2 x!2]!14 ~@106>").gain(1.59)

// drums · congas
const congas_2 = s("conga:18").struct("<~@10 A B A B ~@2 A B ~@2 A B A B ~@40 A B ~@2 A B A B ~@113>".pickRestart({
  A: "~@6 x!2", B: "x",
})).gain(1.59)

stack(
  piano, bass, acoustic_guitar_steel, overdriven_guitar, distortion_guitar, electric_guitar_clean, kick, snare,
  snare_soft, hihat, mid_tom, crash, bongos, congas, congas_2
)

More by Our Lady Peace