Strudelify

It's All Gone

Chris Rea

KeyG majorTempo115 bpm
0:00/0:00
// It's All Gone — Chris Rea
// 115 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 167 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 · string ensemble 1 · "Jp strings"
const string_ensemble_1 = note(`<
  A@8 ~@27 B C D@2 B E@3 ~@12 F@2 G@4 H@2 B C D@2 B E@3 ~@16 B C D@2 B E@3 ~@15 I@6 J@8 K@16 L@3 F@2 M@2 N@8 O@2 P@6 Q@4
>`.pickRestart({
  A: "[g4,a4,d5]/8", B: "[a3,c4,e4,a4] [g3,b3,d4,g4]", C: "[f3,a3,c4,f4] [g3,b3,d4,g4]",
  D: "[[a3,c4,e4,a4]@8 [g3,b3,d4,g4]@7 ~ [f3,a3,f4]@8 [g3,b3,d4,g4]@8, ~@15 c4@8 ~@9]/2", // Am G F G
  E: "[[f3,a3,c4,f4]@8 [g3,b3,d4,g4]@7 [a3,c4,e4,a4]@8 [g3,b3,d4,g4]@8 ~ [a3,f4]@8 [g3,b3,d4,g4]@5 ~@3, ~@31 [f3,c4]@9 ~@8]/3", // F G Am G Dm G F5
  F: "[a3,c4,e4]/2", G: "[[g3,b3,d4]@31 [a3,c4,e4]@32 ~]/4", H: "[[g3,b3,d4]@29 ~@3]/2",
  I: "[~@15 [f3,a3,c4]@27 [a3,c4,e4]@3 [g3,b3,d4]@32 ~@2 [f3,a3,c4]@17]/6", // F Am G F
  J: "[~@10 [a3,c4,e4]@3 ~ b3@30 ~@3 [f3,a3,c4]@26 ~ [a3,c4,e4]@3 [g3,b3,d4]@31 ~@3 [f3,a3,c4]@17, ~@13 [g3,d4]@31 ~@84]/8", // Am F Am G F G5
  K: "[~@10 [a3,c4,e4]@3 [g3,b3,d4]@31 ~@3 [f3,a3,c4]@26 ~ [a3,c4,e4]@3 [g3,b3,d4]@31 ~@3 [f3,a3,c4]@17]/8", // Am G F Am G F
  L: "[~@10 [a3,c4,e4]@3 [g3,b3,d4]@32 ~@3]/3", M: "[g3,b3,d4]/2",
  N: "[[a3,c4,e4]@31 ~ [g3,b3]@31 ~ [a3,c4]@31 ~ b3@25 ~@7, ~@31 d4@32 e4@32 [g3,d4]@25 ~@8]/8", // Am G Am G5
  O: "[[a3,c4,e4]@31 ~]/2", P: "[[g3,b3,d4]@31 [a3,c4,e4]@32 [g3,b3,d4]@32 ~]/6",
  Q: "[[a3,c4,e4]@31 [g3,b3,d4]@29 ~@4]/4", // Am G
})).s("gm_string_ensemble_1").gain(0.25)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@5 A B C@2 D E@2 F G H@2 F G ~ I J K L I M N L I M N L I M N L O P Q R Q S Q T U F G H@2 F G E@2 F G@2 I M N L I M N
  L O P Q R Q S Q T U F G H@2 F G E@2 F G E@2 F G@2 O P Q R Q S Q T U F G H@2 F G E@2 F G E@2 F G V@3 W X Y Z X AA Y AB
  X AC Y AB X AC Y AB X AC Y AB X AC Y AB X AC AD AB X AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ
  BA BB ~
>`.pickRestart({
  A: "e3 g3 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~@3", B: "~@3 g2 ~@2 g2 ~ g2 ~ g2 ~ g2 ~@3", C: "[f2@27 ~@5]/2",
  D: "e3 g3 g2 ~ g2 ~ g2 ~ g2 ~@7", E: "[~@10 [e2,e3]@3 ~ f2@2 f2@2 f2 ~ f2 ~ f2 ~ f2 ~@5 f2 ~, ~@7 f3@3 ~@6]/2",
  F: "~@2 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~@2 g3, ~@7 e3", G: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~@7",
  H: "[g2 ~ g2 ~ g2 ~ g2 ~@3 [e2,e3]@3 ~ f2@2 f2@2 f2 ~ f2 ~ f2 ~ f2 ~@5 f2 ~, ~@7 f3@3 ~@6]/2", // E
  I: "f2 ~ f2 ~ f2 ~ f2 ~ f2@5 ~ d3 f3", J: "f2 ~ f2 ~ f2 ~ f2 ~ f2@4 ~@2 e3 g3",
  K: "[g2,a2] ~ g2 ~ g2 ~ g2 ~ g2@5 ~ e3 g3", L: "g2 ~ g2 ~ g2 ~ g2 ~ g2@5 ~ g2@2",
  M: "[e2,f2] ~ f2 ~ f2 ~ f2 ~ f2@4 ~@2 e3 g3", N: "g2 ~ g2 ~ g2 ~ g2 ~ g2@5 ~ e3 g3",
  O: "f2 ~ f2@3 ~ f2 ~ e2 ~ e2@4 e2@2", P: "d2 ~ d2@3 ~ d2@2 g2 ~ g2@4 g2@2", Q: "f2 ~ f2@3 ~ f2@2 e2 ~ e2@3 ~ e2@2",
  R: "d2 ~ d2@3 ~ d2@2 g2@2 g2@3 ~ g2@2", S: "d2 ~ d2@3 ~ d2@2 g2 ~ g2@3 ~ g2@2", T: "d2 ~ d2@3 ~ d2@2 g2@3 ~@5",
  U: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~@5 f2 ~", V: "[~@10 e2@4 f2@17 f3@15 f2@2]/3", W: "g2@14 [e3,g3] ~", X: "g2", Y: "f2",
  Z: "f3@14 f2 f#2", AA: "g3@14 g2 ~", AB: "f3@5 ~ f3@8 [f2,f#2] ~", AC: "g3@4 ~@10 g2 ~", AD: "d2", AE: "g3 ~@3",
  AF: "f2 ~ f2 ~ f2@3 ~ f2@6 ~@2", AG: "f2 ~ f2 ~ f2@3 ~ f2@3 ~ e3@2 g3@2", AH: "g2@3 ~ g2@3 ~ g2@7 ~",
  AI: "g2 ~ g2@3 ~ g2@7 ~ g2@2", AJ: "f2@3 ~ f2@3 ~ f2@6 ~@2", AK: "f2@3 f2@2 ~ f2@5 ~@3 e3 g3",
  AL: "g2@3 ~ g2@3 ~ g2@6 ~@2", AM: "g2 ~ g2@3 ~ g2@6 ~@2 g2@2", AN: "f2@3 ~ f2@2 ~@2 f2@6 f2 ~",
  AO: "f2 ~ f2@3 ~ f2@7 ~ e3 g3", AP: "g2@3 ~ g2@3 ~ g2@5 ~ g2 ~", AQ: "g2 ~ g2@3 ~ g2@6 ~@4",
  AR: "f2@3 f2 ~ f2 ~@2 f2 ~@7", AS: "f2@3 f2 ~@2 f2 ~ f2 ~@5 e3 g3", AT: "g2@2 ~@2 g2@2 ~@2 g2 ~@7",
  AU: "g2@2 ~ g2 ~@2 g2 ~ g2 ~@7", AV: "f2@3 ~ f2@2 ~@2 f2@2 ~@6", AW: "f2@2 ~ f2 ~@2 f2 ~ f2@3 ~ e3@2 g3@2",
  AX: "g2 ~ g2 ~ g2 ~@3", AY: "g2 ~@2 g2 ~@2 g2 ~ g2@8", AZ: "f2@2 ~@2 f2 ~@3 f2 ~@7",
  BA: "f2@2 ~ f2 ~@2 f2 ~ f2 ~@3 e3@2 g3@2", BB: "g2@3 ~ g2@2 ~@10",
})).s("gm_fretless_bass").gain(0.72)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@2 A@8 B@6 C@3 ~@23 B@6 D@7 ~@15 B@6 E@8 C@3 ~@7 B@6 E@16 F@6 G@16 H@5 ~@24
>`.pickRestart({
  A: "[~@5 e5 g5 a5@14 e6@2 d6@14 e5 g5 a5@14 e6@2 d6@9]/8",
  B: "[~@10 [g4,g5]@4 [a4,a5]@12 [g4,g5]@4 [a4,a5]@4 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@7 [g4,g5]@4 [a4,a5]@12 [g4,g5]@4 [a4,a5]@2]/6", // G A G A G A E D …
  C: "[~@2 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@13]/3", // G A E D
  D: "[~@2 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@7 [g4,g5]@4 [a4,a5]@12 [g4,g5]@4 [a4,a5]@4 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@13]/7", // G A E D G A G A …
  E: "[~@2 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@7 [g4,g5]@4 [a4,a5]@12 [g4,g5]@4 [a4,a5]@4 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@7 [g4,g5]@4 [a4,a5]@12 [g4,g5]@4 [a4,a5]@2]/8", // G A E D G A G A …
  F: "[~@2 [g4,g5]@4 [a4,a5]@4 [e5,e6]@4 [d5,d6]@21 ~@7 e4@2 g4@2 a4@28 e5@4 d5@18]/6", // G A E D
  G: "[~@5 e4 g4 a4@14 e5@2 d5@12 ~@2 e4 g4 a4@14 e5@2 d5@9]/8", H: "[~@5 e4 g4 a4@14 e5@2 d5@12 ~@5]/5",
})).s("gm_brass_section").gain(0.18).pan(0.7)

// chords · piano · "E.Piano"
const piano = note(`<
  ~@11 A@2 B C A@2 D E A F G H A I G@2 A I G@2 A I G@2 J K L M N O P O A@2 B C A@2 D C A@2 D@2 A I G@2 A I G@2 J K L M N
  O P O A@2 B C A@2 D C A@2 D C A@2 D@2 J K L M N O P O A@2 B C A@2 D C A@2 D C A@2 D ~@27 Q R@2 ~@3 S@2 T@2 S@2 T@2 S@2
  T U S@2 T@2 S@2 V T S@2 W ~
>`.pickRestart({
  A: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!2", // Am
  B: "[g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4] [g3,b3,c4,d4]", // G
  C: "[g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]@2 ~@2 [a3,c4,e4]@2", // G Am
  D: "[g3,b3,c4,d4] ~ [g3,b3,d4]!3 ~ [b3,d4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2, ~@3 g3 ~@4", // G Bm G
  E: "[g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,d4] [g3,b3,d4]", // G G5 G
  F: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!3 ~ [c4,e4]!2 [a3,c4,e4] ~ [a3,c4,e4]!2, ~@5 a3 ~@2", // Am C Am
  G: "[g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2", // G
  H: "[g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!3 ~ [g3,b3,d4]@2", // G
  I: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!3 ~ c4!2, ~@7 [a3,e4]", // Am A5
  J: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [c4,e4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~ [b3,d4]!2, ~@3 a3 ~@3 g3", // Am C G Bm
  K: "[f3,a3,c4] ~ [f3,a3,c4]!3 ~ [a3,c4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2, ~@3 f3 ~@4", // F Am G
  L: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!2 [b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2", // Am Bm G
  M: "[f3,a3,c4] ~ [f3,a3,c4]!3 ~ [f3,a3,c4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2", // F G
  N: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!2 [g3,b3,d4] ~ [g3,b3,d4] [b3,d4]!2 ~ [g3,b3,d4]!2, ~@11 g3@2 ~@3", // Am G Bm G
  O: "[f3,a3,c4] ~ [f3,a3,c4]!3 ~ [f3,a3,c4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~@3", // F G
  P: "[a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4]!2 [g3,b3,d4] ~ [g3,b3,d4]!3 ~ [g3,b3,d4]!2", Q: "~@7 d4",
  R: "[[a#4,c#5]@2 [b4,d5]@6 ~@2 d5!2 [b4,c5] [g4,a4] f4 d4@15 ~@2]/2", // A#m Bm Cmaj7 Gsus2
  S: "~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~", // Am
  T: "~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~", // G
  U: "~@2 [g3,b3,d4] ~@2 g3 [b3,d4] ~ [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~", // G Bm G
  V: "~@2 [g3,b3,c4,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~", W: "~@2 [g3,b3,d4] ~@13",
})).s("gm_piano").gain(0.56)

// chords · electric guitar jazz · "Jazz guitar"
const electric_guitar_jazz = note(`<
  ~@26 A ~@8 B C B C B D B D ~@11 E F ~@7 G H G H G H G I ~@16 G H G H G H G I ~@72
>`.pickRestart({
  A: "~@8 b3@2 d4 b3 d4 b3 d4 [d#4,e4]", B: "f3 a3 c4 e4@2 c4 a3 c4 e3 g3 b3 d4 ~ b3 g3 b3",
  C: "d3 f3 a3 c4 ~ a3 f3 a3 e3 g3 b3 d4@2 b3 g3 b3", D: "d3 f3 a3 c4 ~ a3 f3 a3 e3 g3 b3 d4@2 b3 g3 ~",
  E: "~@4 g4 a4 b4@2", F: "a4@7 ~@9", G: "~@4 [c4,e4] ~ [c4,e4] ~@5 [b3,d4] ~ [b3,d4] ~",
  H: "~@4 [a3,c4] ~ [a3,c4] ~@5 [b3,d4] ~ [b3,d4] ~", I: "~@4 [a3,c4] ~ [a3,c4] ~@9",
})).s("gm_electric_guitar_jazz").gain(0.11)

// other · distortion guitar · "Dist.guitar"
const distortion_guitar = note("<~@10 A@6 B@3 ~@23 A@6 C@7 ~@15 A@6 D@4 E@7 ~@7 A@6 F@8 B@3 ~@56>".pickRestart({
  A: "[~@10 [g3,g4]@4 [a3,a4]@12 [g3,g4]@4 [a3,a4]@4 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@7 [g3,g4]@4 [a3,a4]@12 [g3,g4]@4 [a3,a4]@2]/6", // G A G A G A E D …
  B: "[~@2 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@13]/3", // G A E D
  C: "[~@2 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@7 [g3,g4]@4 [a3,a4]@12 [g3,g4]@4 [a3,a4]@4 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@13]/7", // G A E D G A G A …
  D: "[~@2 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@7 [g3,g4]@4 a3@12 [g3,g4]@4 [a3,a4]@2, ~@23 a4 ~@8]/4", // G A E D G A
  E: "[~@2 [g3,g4]@4 a3@4 [e4,e5]@4 d5@28 g3@4 a3@12 [g3,g4]@4 a3@4 [g3,g4]@4 a3@4 e4@4 d4@21 ~@13, ~@6 a4@8 d4@21 ~@7 g4 ~@3 a4 ~@15 a4@8 a4@8 d5 ~@33, ~@37 e5@3 ~@16]/7", // G E G
  F: "[~@2 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@7 [g3,g4]@4 [a3,a4]@12 [g3,g4]@4 [a3,a4]@4 [g3,g4]@4 [a3,a4]@4 [e4,e5]@4 [d4,d5]@21 ~@7 [g3,g4]@4 [a3,a4]@12 [g3,g4]@4 [a3,a4]@2]/8", // G A E D G A G A …
})).s("gm_distortion_guitar").gain(0.18).pan(0.2)

// other · distortion guitar · "Dist.guitar" · soft notes
const distortion_guitar_soft = note("<~@79 A@8 ~@80>".pickRestart({
  A: "[[c5,e5]@19 c5@11 [g4,b4]@28 ~ [g4,b4,d5]@4 c5@32 ~ [g4,b4]@21 ~@11, a4@14 ~@5 e5@7 ~@37 e5@27 ~@5 d5@22 ~@11, ~@19 a4@3 ~@41 a4@15 ~@50]/8", // C G
})).s("gm_distortion_guitar").gain(0.1).pan(0.2)

// other · piano · "E.piano"
const piano_2 = note("<~@143 A B ~ C D@2 E F G H I J K L M ~@9>".pickRestart({
  A: "g5@3 [f#5,g5] ~@2 [f#5,g5] ~@2 g5 ~@2 g5 ~@3, f#5 ~@15", B: "g5@13 ~@3", C: "~@9 b4@3 d5@4, ~ g4",
  D: "[c5@2 a4 ~@7 a4@17 ~@5, ~@10 g#4 ~@21]/2", E: "~@7 b4", F: "d5@7 [b4,c5] [c5,d5] b4 a4@5 ~",
  G: "e5@7 ~, d#5 ~@15", H: "e5@9 ~@3 e5 f5 e5 c5, d#5 ~@15", I: "d5@2 g4 ~ g4@9 ~@3",
  J: "b4 c5 [g4,b4] ~ b4 [b4,c5] g4 ~ b4 c5 [g4,b4] ~ c5 b4 g4 ~", K: "a4@2 e5!2 ~ e5 ~ e5 ~@8",
  L: "~@3 a4 e5 ~ e5 ~@5 e5 ~ a4 e5", M: "d5@2 g4!2 ~ g4 ~ g4 ~@8",
})).s("gm_piano").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A B C@2 D C@4 E@23 F E@3 F E@3 F E@19 F E@3 F E@3 F E@3 F E@11 F E@3 F E@3 F E@3 F E@3 ~@32 G E@22 H ~
>`.pickRestart({
  A: "~@5 x ~ x", B: "x!2 ~ x", C: "~ x ~ x", D: "~@2 x ~@2 x!3", E: "x!2", F: "x ~@3 x!2 ~ x", G: "x ~@2 x!2 ~@3",
  H: "x",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<~@141 [~ x] ~@25>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@19 [~ x ~ x]!91 ~@33 [~ x ~ x]!22 [~ x ~@2] ~>").gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@139 [~ x!15] x ~@26>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@119 [~@2 x!2 ~@12] ~@22 [~@3 x] ~@24>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@3 [x!8]!107 ~@32 [~ x ~ x!2 ~@2 x ~ x ~@6] [x!8]!22 [x!3 ~@5] ~>").gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@119 [~ x ~@2] ~@47>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A B ~@2 A ~@27 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@36 B ~@23
>`.pickRestart({
  A: "~@5 x ~ x", B: "x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@14 [~@4 x!6 ~@6] ~@152>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@63
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!7
  [x ~ x!3 ~ x!3 ~@7]
  ~@16
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!7
  [x ~ x!3 ~ x!3 ~@7]
  ~@72
>`).gain(0.56)

stack(
  string_ensemble_1, bass, brass_section, piano, electric_guitar_jazz, distortion_guitar, distortion_guitar_soft,
  piano_2, kick, rim, snare, snare_soft, low_tom, hihat, mid_tom, crash, ride, tambourine
)

More by Chris Rea