Strudelify

Pretending

Eric Clapton

KeyG majorTempo100 bpm
0:00/0:00
// Pretending — Eric Clapton
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(100/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 · glockenspiel
const glockenspiel = note("<~ A@2 B@2 C@2 D@3 ~@77>".pickRestart({
  A: "[~@10 b4@2 ~@2 c5 ~@3 d5@6 ~@2 d5@2 ~@2 d5@4 e5@4 ~@2 e5@3 ~@21, ~@30 a4 ~@33]/2",
  B: "[~@3 g4@2 b4@2 c5@2 d5@3 ~@3 d5@2 e5@11 ~@4]/2",
  C: "[~@10 b4@4 c5@4 d5@6 ~@2 d5@2 ~@2 d5@4 e5@4 ~@2 e5@3 ~@21, ~@6 g4@9 ~@49]/2",
  D: "[~@2 g4@4 b4@4 c5@4 d5@11 ~ d5@4 e5@32 c5@4 ~@30]/3",
})).s("gm_glockenspiel").gain(0.48)

// chords · piano
const piano = note("<~ A B A C D B A E ~@16 F@3 G@2 H@8 I@3 J@2 K@3 L M@4 N@3 ~@33>".pickRestart({
  A: "~@2 [g3,b3,d4]@9 ~@7 [f#3,a3,d4]@8 ~@6", B: "~@2 [g3,c4,e4]@25 ~@5", C: "~ [g3,c4,e4]@13 ~@2",
  D: "~ [g3,b3,d4]@4 ~@4 [f#3,a3,d4]@4 ~@3", E: "~ [g3,c4,e4]@10 ~@5",
  F: "[~@38 a#4@4 g4@2 ~@2 [g4,a#4,d#5]@27 ~@5 [f4,a#4]@17 d5, ~@30 d5@11 ~@55, ~@34 c5@7 ~@55]/3", // D# A#5
  G: "[~@3 a#4@2 g4@2 [g4,a#4,d#5]@13 ~ [f4,a#4,d5]@11, ~@3 c5@7 ~@54]/2", // D# A#
  H: "[~@14 [f4,a4,c5]@59 ~@5 [a3,c#4,e4]@28 ~@4 [a3,d4,f#4]@29 ~@3 [a3,d4,f#4]@28 ~@4 [c#4,e4]@28 ~@4 [g#3,c#4,e4]@4 ~@2 [g#3,c#4] ~@3 [g#3,c#4,e4] ~@5 [g#3,c#4,e4]@4 ~@2 [g#3,c#4,e4] ~@3 [g#3,c#4,e4] ~@3 [g#3,c#4,e4] ~ [a3,d4,f#4]@5 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@5 [a3,d4,f#4]@2, ~@174 a3@25 ~@57]/8", // F A D C#m C#5 C#m D
  I: "[~@4 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4,f#4]@5 ~ [a3,d4,f#4] ~@3 [a3,f#4] ~ d4 ~@9 [a3,d4,f#4] ~ e6@2 [a3,d4,f#4] ~@3 c#6@2 [a3,c#4,e4]@28 ~@22, ~@30 [a3,d4,f#4]@5 g#6@2 ~@5 d6@4 a5@25 ~@25, ~@33 a6@3 f#6@2 ~@2 e6@4 g#3 ~@51]/3", // D A D
  J: "[~@15 [e3,f3] ~@3 b4 [g4,c5] ~ [g5,a5] f#5@20 ~@4 b3@2 c#4@2 d#4@2 e4@2 f#4@7 ~@2]/2", // Fmaj7 C5 Gsus2
  K: "[~@3 [a#4,d#5,f#5]@9 ~@3 b3@4 c#4@4 d#4@8 e4@4 [g#3,c#4]@12 ~@8 [g#3,b3]@5 ~@3 [f#3,a#3]@4 ~@4 [g#3,b3]@5 ~@3 [a#3,c#4]@7 ~@10]/3", // D#m C#5 G#m F# G#m A#m
  L: "~@15 [b4,d#5,f#5]@17", // B
  M: "[~@3 b4@8 ~@4 b3@4 c#4@4 d#4@8 e4@4 [g#3,c#4]@13 ~@7 [g#3,b3]@4 ~@4 [f#3,a#3]@5 ~@3 [g#3,b3]@4 ~@4 [a#3,c#4]@4 ~@4 d#4@19 ~@5 [b4,d#5,f#5]@14 ~@3]/4", // C#5 G#m F# G#m A#m B
  N: "[~@3 b4@7 ~@5 b3@4 c#4@4 ~@8 e4@2 ~@2 [g#3,c#4]@10 ~@10 [a3,d4]@6 ~@2 [a3,c#4]@6 ~@2 [a3,d4]@4 ~@4 [c#4,e4]@7 ~@10, ~@23 d#4@13 ~@60]/3", // C#5 D5 A D5 C#m
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@26 A ~@9 B ~@4 C ~@7 D@2 ~@36>".pickRestart({
  A: "~@10 a#4 ~@21", B: "~@20 e4 ~@11", C: "~@16 [g3,a3] [b3,c4,d4] [e4,f4] [g4,a4] [d5,e5] f5 ~@10",
  D: "[~@23 [b3,f#4]@19 ~@22]/2", // B5
})).s("gm_piano").gain(0.2)

// chords · celesta
const celesta = note("<~ A B C D E F G H ~@78>".pickRestart({
  A: "~@2 [g4,b4]@11 ~@5 [f#4,a4,d5]@11 ~@3", B: "~ [g4,c5]@15, ~@2 e5@27 ~@3",
  C: "~@2 [g4,b4,d5]@13 ~@3 [f#4,a4,d5]@12 ~@2", D: "~ [g4,c5,e5]@15",
  E: "~@2 [g4,b4,d5]@13 ~@3 [f#4,a4,d5]@5 ~ [f#4,a4,d5] ~@3 [f#4,a4] ~@3, ~@14 d5 ~", F: "~@2 [g4,c5,e5]@29 ~",
  G: "~@2 [g4,b4,d5]@5 ~ [g4,b4,d5] ~@3 [g4,b4] ~@5 [f#4,a4,d5]@9 ~@3 [f#4,a4,d5] ~, ~@6 d5 ~@9", // G D
  H: "~ [g4,c5,e5]@13 ~@2", // C
})).s("gm_celesta").gain(0.1)

// bass · oboe
const bass = note("<A B C D@3 E F@2 ~@17 G H I J K L M N@2 O@2 N O@2 P Q@8 R@5 S T@7 U@2 V@8 W@7 ~@8>".pickRestart({
  A: "~ g1 a1 c2 d2 f2@2 c2@2 d2@2 ~@5", B: "~@2 g1@4 ~@2 g1@2 b1 b1@3 c2@4 d2 ~@8 g1@5, ~@19 d2@12 ~",
  C: "~@2 c2@8 g1 ~@6 g1 ~ c2@4 b1@4 ~@3 g1@2, ~@27 a1@5",
  D: "[~@2 g1@5 ~ g1@2 ~ b1@4 ~@3 d2@10 ~@2 d2@4 c2@10 ~@2 c2 ~@3 c2@10 ~@2 c2@5 g1@5 ~ g1@2 b1@3 c2@4 ~@8 g1@6, ~@15 c2@5 ~@62 d2@12 ~@2]/3",
  E: "~@2 c2@9 g1 ~@5 g1@2 c2@3 b1@4 a1@4 g1 ~",
  F: "[~@2 g1@5 ~ g1@2 b1@4 c2@4 d2@9 ~@3 d2@4 c2@10 ~@2 c2 ~@3 c2@9 ~@3 c2 ~]/2", G: "~@14 d#2@12 ~@2 d#2 ~@3",
  H: "d#2 ~ d#2 ~@7 d#2 ~ d#2 ~ a#1@12 ~@2 a#1 ~@3", I: "a#1 ~ a#1 ~@7 a#1 ~@3 d#2@12 ~@2 d#2 ~@3",
  J: "d#2 ~ d#2 ~@7 d#2 ~@3 a#1@12 ~@2 a#1 ~@3", K: "a#1 ~ a#1 ~@7 a#1 ~@3 f1@13 ~ f1 ~@3",
  L: "f1 ~ f1 ~@11 f1@13 ~ f1 ~@3", M: "f1 ~ f1 ~@11 a1@12 ~@2 a1 ~@3", N: "a1 ~ a1 ~@11 a1@12 ~@2 a1 ~@3",
  O: "a1 ~ a1 ~@11 a1@13 ~ a1 ~@3", P: "a1 ~ a1 ~@29",
  Q: "[~@19 e2@2 f#2@2 b1@32 d#2@32 e1@32 f#1@28 e2@2 f#2@2 b1@32 d#2@31 ~ e1@31 ~ f#1@9]/8",
  R: "[~@19 e2@2 f#2@2 b1@29 ~@3 d#2@29 ~@3 e1@29 ~@3 a1@29 ~@3 d2@9]/5", S: "~@3 d2 ~@3 d2@9 ~@7 b1@8 ~",
  T: "[~@27 g2@8 ~@4 g2@4 d2@9 ~@3 d2@4 g2@10 ~@2 g2@4 d2@8 g2@4 d2@3 ~ c3@8 ~@4 c3@4 g2@9 ~@3 g2@3 ~ c3@9 ~@3 c3@4 g2@8 c3@4 g2@3 ~ a2@9 ~@3 a2@4 e2@9 ~@3 e2@2 ~@2 d2@9 ~@3 d2@2 ~@2 d2@8 ~@4 d2@4 g2@5]/7",
  U: "[~@7 g2@4 d2@10 ~@2 d2@4 g2@9 ~@3 g2@4 d2@8 g2@3 ~ d2@4 g2@5]/2",
  V: "[~@7 g2@4 d2@9 ~@3 d2@4 g2@9 ~@3 g2@4 d2@7 ~ g2@4 d2@4 c3@9 ~@3 c3@4 g2@9 ~@3 g2@4 c3@9 ~@3 c3@4 g2@7 ~ c3@4 g2@3 ~ a2@10 ~@2 a2@4 e2@9 ~@3 e2@4 a2@10 ~@2 a2@4 e2@8 a2@4 e2@4 d3@9 ~@3 d3@4 c3@8 ~@4 c3@4 b2@9 ~@3 b2@4 a2@8 ~@4 a2@2 ~@2 g2@5]/8",
  W: "[~@7 g2@4 d2@10 ~@2 d2@4 g2@10 ~@2 g2@4 d2@8 g2@4 d2@3 ~ c3@8 ~@4 c3@4 g2@9 ~@3 g2@4 c3@9 ~@3 c3@4 g2@8 c3@4 g2@3 ~ a2@10 ~@2 a2@4 e2@10 ~@2 e2@2 ~@2 d2@9 ~@3 d2@2 ~@2 d2@10 ~@2 d2@3 ~ g2@9 ~@3 g2@4 d2@8 g2@4 ~@9]/7",
})).s("gm_electric_bass_finger").gain(0.55)

// other · guitar harmonics
const guitar_harmonics = note("<~@16 A@2 B@2 C D E F G H ~@61>".pickRestart({
  A: "[~@15 f#4@2 a4 b4@3 ~@9 e4 f#4]/2", B: "[~@2 f#4@2 e4@2 d4@4 ~@20 f#4@4 a4 ~ b4@4 d5@5 ~@17 f#4@2]/2",
  C: "~@2 f#4@2 e4@2 d4@3 ~@23", D: "~@2 f#4@2 a4@2 b4@8 d4@6 e4@7 ~@5",
  E: "~@2 f#4@2 a4@2 b4@5 ~@3 d4 ~ d4 ~ d4@2 e4@6 ~@6", F: "~@2 f#4@2 a4@2 b4 ~ b4@5 ~ d4 ~ d4 ~ d4@2 f#4@2 e4@5 ~@5",
  G: "~@2 f#4@2 a4 ~ a4@2 b4@3 ~@3 d4 ~ d4 ~@3 e4@6 ~@2 d4@2 f#4@2", H: "~ f#4 ~ e4 d4 ~@11",
})).s("gm_guitar_harmonics").gain(0.56)

// bass · guitar harmonics
const bass_2 = note("<~@12 A B C@3 D E@3 F D E G H ~@61>".pickRestart({
  A: "~@30 d2 ~", B: "d2 ~ c2 ~ c2 ~@25 d2 ~",
  C: "[[c2,d2] ~ c2 ~ c2 ~@25 d2@8 g1@8 b1@6 a1@10 d2@8 g1@8 b1@6 a1@9 ~ d2 ~]/3", // Csus2
  D: "~ d2 ~@2 g1@2 ~@8 b1 ~@2 b1 ~@2 a1 ~@9 d2 ~", E: "~ d2 ~@2 g1 ~@9 b1 ~@2 b1 ~@2 a1 ~@9 d2 ~",
  F: "~ d2 ~@2 g1 ~@9 b1 ~@2 b1 ~@2 a1 ~@9 d2@2", G: "~ d2 ~@2 g1 ~@9 b1 ~@2 b1 ~@2 a1@2 ~@8 d2@2",
  H: "~ d2 ~ g1@3 ~@10",
})).s("gm_guitar_harmonics").gain(0.64)

// chords · percussive organ
const percussive_organ = note("<~@41 A B C@3 ~@7 D E ~@32>".pickRestart({
  A: "~@15 [a#5,c#6]@7 ~@10", B: "~@23 [b5,d#6,f#6]@9",
  C: "[~@3 [b5,b6]@9 ~@3 b5@4 c#6@4 d#6@8 e6@4 [g#5,c#6]@13 ~@7 [g#5,b5]@5 ~@3 [f#5,a#5]@5 ~@3 [g#5,b5]@5 ~@3 [a#5,c#6]@5 ~@12]/3", // B C#5 G#m F# G#m A#m
  D: "~@23 a5 ~@3 a5 ~@3 a5", E: "~@3 a5 ~@3 a5@8 f#5@4 b5@4 ~@9",
})).s("gm_percussive_organ").gain(0.07)

// other · piano
const piano_2 = note("<~@63 A B@7 A C@2 D@3 E ~@9>".pickRestart({
  A: "~@27 b4@2 ~@3",
  B: "[~@7 b4@12 ~@4 b4 ~@3 b4@2 ~@2 b4@2 ~@6 b4@8 d5@12 b4@8 a4@4 g4@40 e4@7 ~ g4@3 ~ a4@10 ~@2 a4@11 ~ b4@4 a4@8 g4@12 f#4@4 g4@3 ~ a4@2 ~@2 a4@29 ~@12]/7",
  C: "[~@3 b4 ~@3 b4@13 ~@3 b4 ~@3 b4 ~@3 b4@4 ~@4 b4@8 d5@3 ~@9 b4@5]/2",
  D: "[~@3 a4@4 g4@40 e4@7 ~ g4@4 a4@2 ~@2 a4@4 ~@4 a4@12 b4@2 ~@6 a4@4 ~]/3", E: "~@3 g4@8 e4@7 ~ g4@2 ~@11",
})).s("gm_piano").gain(0.4)

// chords · piano
const piano_3 = note("<~@55 A@8 B@4 C@2 D@8 ~@10>".pickRestart({
  A: "[~@27 [g3,b3,d4]@32 [f#3,b3,d4]@31 ~ [g3,c4,e4]@63 ~ [a3,c4,e4]@31 ~ [a3,d4,f#4]@31 ~ [g3,b3,d4]@37]/8", // G Bm C Am D G
  B: "[~@27 [b3,d4]@32 ~@32 [c4,e4]@37, ~@27 g3@64 ~@37, ~@59 [b3,d4]@64 ~@5]/4", C: "[~@27 [c4,e4]@37]/2",
  D: "[~@27 [a3,d4,f#4]@62 ~@2 [g3,b3,d4]@28 ~@4 [f#3,b3,d4]@32 [g3,c4,e4]@63 ~ [c4,e4]@32 [g3,c4]@5, ~@219 a3@37]/8", // D G Bm C C5
})).s("gm_piano").gain(0.48)

// chords · piano · soft notes
const piano_soft_2 = note("<~@64 A@6 ~@6 B@2 ~@9>".pickRestart({
  A: "[~@59 g3@58 ~@6 a3@63 ~@6, ~@27 f#3@64 ~@101]/6", B: "[~@27 e4@29 ~@8]/2",
})).s("gm_piano").gain(0.24)

// other · tremolo strings
const tremolo_strings = note("<~@80 A B C D E F@2>".pickRestart({
  A: "~@15 c5@2 ~@2 d#5@11 ~@2", B: "~@11 f4@4 g#4@3 a#4@4 ~ c5 ~@3 c5@3 a#4@2",
  C: "~@2 g#4 ~@3 g#4 ~@3 g#4 ~@3 g#4 ~@3 g#4@4 a#4@4 c5@5 ~", D: "~@2 c5@7 ~@14 f5@5 c5 ~ c5 ~", E: "~@7 c5@2 d#5@6 ~",
  F: "[~@11 a#4@2 ~@10 c5@2 ~@2 c5@3 a#4@4 g#4@2 ~@2 g#4@9 ~@8 a#4 ~@3 a#4@4 ~]/2",
})).s("gm_tremolo_strings").gain(0.48)

// other · muted trumpet
const muted_trumpet = note(`<
  ~@80
  [~@6 f5@9 ~@17]
  [~@7 d#5@13 ~@12]
  [~@7 c5@13 ~@12]
  [~@6 a#4@13 ~@13]
  [~@6 f5@13 ~@13]
  [~@3 d#5@5 ~@8]
  [~@3 c5@6 ~@2 a#4@4 ~]
>`).s("gm_muted_trumpet").gain(0.49)

// chords · timpani
const timpani = note("<~@80 A@7>".pickRestart({
  A: "[~@23 [d#3,g3,a#3]@32 [c#3,f3,g#3]@32 [d#3,g3,a#3]@32 [f3,g#3,c4]@32 [d#3,g3,a#3]@32 [c#3,f3,g#3]@31 ~ [d#3,g3,a#3]@6 ~@3]/7", // D# C# D# Fm D# C# D#
})).s("gm_timpani").gain(0.19)

// bass · soprano sax
const bass_3 = note("<~@78 A ~ B C D E B F G>".pickRestart({
  A: "~@23 d2@3 ~@6", B: "~@3 f2 ~@3 f2@8 c2@8 d#2@8 ~", C: "~@3 d#2 ~@3 d#2@10 ~@2 d#2 ~@3 c#2@8 ~",
  D: "~@3 c#2 ~@3 c#2@9 ~@3 c#2@3 ~ d#2@8 ~", E: "~@3 d#2 ~@3 d#2@8 c2@4 d#2@4 f2@8 ~",
  F: "~@3 d#2 ~@3 d#2@9 ~@3 d#2 ~@3 c#2@8 ~", G: "~@3 c#2 ~@3 c#2@10 ~@2 c#2@3 ~ d#2@8 ~",
})).s("gm_electric_bass_finger").gain(0.48)

// drums · kick
const kick = s("bd").struct("<A B C B C D B E D ~@2 F G@13 H I@2 J K@2 L M@8 N ~@11 O@2 P Q R@22 S ~ P@7>".pickRestart({
  A: "~@9 x ~@6", B: "~ x ~@7 x ~@6", C: "~ x ~@7 x ~ x ~@4", D: "~ x ~@3 x ~@3 x ~@3 x ~@2", E: "~ x ~@7 x ~@3 x ~@2",
  F: "~@15 x", G: "~@2 x!2 ~@3 x!2 ~ x!2 ~@3 x", H: "~@2 x!2 ~@12", I: "~@7 x ~@2 x ~ x ~ x!2",
  J: "x!2 ~@5 x ~@2 x ~ x ~ x!2", K: "x!2 ~@3 x ~ x ~@2 x ~ x ~ x!2", L: "x!2 ~@5 x!2 ~ x ~ x ~ x!2",
  M: "x!2 ~@3 x!3 ~@2 x ~ x ~ x!2", N: "x!2 ~@3 x!2 ~@9", O: "~@23 x ~@8", P: "~@3 x ~@3 x ~@15 x ~@8", Q: "~@27 x ~@4",
  R: "~@7 x ~@3 x ~@15 x ~@4", S: "~@7 x ~@3 x ~@20",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct(`<
  ~@12
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!13
  [~ x ~@14]
  ~@30
  [~@3 x ~@15 x ~@12]!23
  [~@31 x]
  [~@15 x ~@15 x]!6
  [~@15 x ~@16]
>`).gain(0.36)

// drums · snare
const snare = s("sd").struct("<A B C@6 D E ~@16 F@14 ~@12 G H I ~@32>".pickRestart({
  A: "~@5 x ~@7 x!3", B: "x ~@4 x ~@7 x ~@2", C: "~@5 x ~@7 x ~@2", D: "~@10 x ~@7 x ~@6 x!2 ~ x ~ x ~", E: "x",
  F: "~@7 x ~@7 x", G: "~@23 x ~@8", H: "~@31 x", I: "~@15 x ~@16",
})).gain(0.46)

// drums · clap
const clap = s("cp").struct("<~@79 [~@31 x] [~@15 x ~@15 x]!6 [~@15 x ~@16]>").gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@53 [~@5 x ~@5 x ~@20] ~@33>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@25 A B@4 C D B@4 E B@3 F G H I@3 J I@6 K L M N@22 O ~@8>".pickRestart({
  A: "~@15 x", B: "x!16", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!4",
  D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~",
  E: "x!3 ~ x!3 ~ x!5 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", F: "x!7 ~@9", G: "~@15 x ~@7 x ~@7 x",
  H: "~@7 x ~@15 x ~@7 x", I: "~@7 x ~@7 x ~@7 x ~@7 x", J: "~@7 x ~@14 x ~@8 x", K: "~@7 x ~@7 x ~@7 x ~@3 x ~@3 x",
  L: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", M: "~@27 x ~@3 x", N: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x",
  O: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@12",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@53 [~@15 x ~ x ~ x ~@12] ~@33>").gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@56 [~@23 x ~@8]!23 ~@8>").gain(0.26)

// drums · crash
const crash = s("cr").struct("<~ [~ x ~@14] ~@3 [~ x ~@14] ~@81>").gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@52 [~@31 x] [~@7 x ~@24] ~@33>").gain(0.46)

// drums · ride
// … 82 more lines

More by Eric Clapton