Strudelify

It's All Over Now Baby Blue

Them

KeyD majorTempo107 bpm
0:00/0:00
// It's All Over Now Baby Blue — Them
// 107 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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 · electric bass finger
const bass = note(`<
  A B C D E F C G E B H I E F J G K L M I@2 L M G N O P Q R S T U V W X Y Z AA AB Y AC AD AE Y V AF AG Y V O P AH R S T
  AI V AJ AK AL AM AN AO AA AP AN@2 AA AQ G AR AD AS AT AU AD AS Y AU AV@2 AW R AX AY AZ BA AV@2 AW R AX AY AZ BA AX AY
  AZ BA AX AY AZ BA AX AY AZ BB
>`.pickRestart({
  A: "~@6 e2 g2", B: "a2@4 ~@2 a2@5 ~ e2@2 g2@2", C: "a2@4 ~@2 a2@5 ~ a2@2 g2@2", D: "d2@5 ~ d2@5 ~ a1@2 c2@2",
  E: "d2@5 ~ d2@5 ~ d2@2 e2@2", F: "a2@5 ~ a2@5 ~ e2@2 g2@2", G: "d2@5 ~ d2@5 ~ a1@2 c2 ~",
  H: "a2@5 ~ a2@5 ~ a2@2 g2@2", I: "d2@5 ~ d2@5 ~ a1 ~ c2@2", J: "a2@4 ~@2 a2@5 ~ a2 ~ g2@2",
  K: "d2@5 ~ d2@4 a1@2 c2@2 d2@2", L: "e2@4 ~@2 e2@5 ~ e2@2 f#2@2", M: "g2@4 ~@2 g2@5 ~ g2@3 ~",
  N: "d2@5 ~ d2@5 ~ a1 ~ c2 ~", O: "f#1@5 ~ f#2@4 f#2 ~ f#2@3 ~", P: "f#2@5 ~ f#2@4 f#2 ~ f#2@3 ~",
  Q: "a2@5 ~ a2@3 ~ a2 ~ a2@3 ~", R: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2", S: "e2@4 ~@2 e2@4 b1@2 e2@2 f#2 ~",
  T: "g2@5 ~ g2@4 d2 ~ g2@2 d2@2", U: "d2@5 ~ d2@4 a1@2 b1 ~ c2 ~", V: "d2@5 ~ d2@6 a1@2 b1 ~", W: "e2@3 a2@3 e2@2",
  X: "a2@3 a2@2 e2 a2 e2", Y: "d2@5 ~ d2@6 a1@2 b1@2", Z: "d2@5 ~ d2@4 a1@2 b1@2 a1 ~", AA: "a2@5 ~ a2@6 e2@2 g2@2",
  AB: "a2@5 ~ a2@9 ~", AC: "d2@5 ~ d2@6 d2@3 ~", AD: "e2@5 ~ e2@5 ~ e2@2 f#2@2", AE: "g2@5 ~ g2@6 g2@3 ~",
  AF: "e2@5 ~ e2@5 ~ e2@3 ~", AG: "g2@5 ~ g2@5 ~ g2@2 a2@2", AH: "a2@5 ~ a2@3 ~ a2 ~ a2@2 a2@2",
  AI: "d2@5 ~ d2@6 a1 ~ b1 ~", AJ: "a2@6 e2@2 a2@4 e2@2 a2 ~", AK: "g2@5 ~ d2@2 g2@4 d2@2 g2@2",
  AL: "a2@3 e2@2 a2 e2 a2", AM: "g2@3 d2@2 g2 d2 g2", AN: "d2@5 ~ d2@6 a1@2 c2@2", AO: "d2@5 ~ d2@6 a1@2 c2 ~",
  AP: "a2@5 ~ a2@6 e2@2 g2 ~", AQ: "a2@5 ~ a2@5 ~ a2 ~ a2@2", AR: "d2@5 ~ d2@6 a1@2 d2@2", AS: "g2@5 ~ g2@6 d2@2 g2@2",
  AT: "d2@5 ~ d2@6 a1 ~ c2@2", AU: "d2@5 ~ d2@6 a1 ~ b1@2", AV: "f#2@5 ~ f#2@4 f#2 ~ f#2 ~ f#2 ~",
  AW: "a2@5 ~ a2@4 a2 ~ a2 ~ a2 ~", AX: "e2@5 ~ e2@4 b1@2 e2@2 f#2@2", AY: "g2@5 ~ g2@4 d2@2 g2@3 ~",
  AZ: "d2@5 ~ d2@6 d3@2 c3@2", BA: "d2@5 ~ d2@4 d2@2 d2 ~ d2 ~", BB: "d2@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · epiano1
const epiano1 = note(`<
  ~@5 A@2 B C@4 D@4 E F@2 G@6 H I J K L M N@2 O@2 P@2 Q@2 R@2 S@2 G@6 H I J K L M N@2 T U V@2 W X Y@3 D@4 E F@2 G@6 H I
  J K L M N@2 H I J K L M N@2 L M N@2 L M Z@2 AA AB AC@2
>`.pickRestart({
  A: "[~@4 d5 e5 ~@6 d5 e5 ~ e5, a4@4 e5@4 ~@4 d5@4 a4@4 e5@5 ~@3 d5@4, ~ d5@2 a4@4 e5@2 d5@2 a4@5]/2",
  B: "~@6 e4 a4, d4 a4 e4 ~, ~ e4@2 d4@2 a4@2 ~",
  C: "[~@14 a4 ~@9 d5@2 e5@2 ~@12 d5@2 e5@2 ~@16 e4@2 a4@2, d4@4 a4@4 e4@4 e4@6 d5@4 a4@8 e5@4 d5@4 a4@10 d4@5 ~ d4@5 ~@5, ~@2 e4@4 d4@4 a4@4 ~@2 a4@4 e5@4 ~@4 d5@4 a4@4 e5@5 ~@3 d5@4 ~@2 e4@4 ~@2 e4@4 ~@4, ~@23 e5@2 ~ a4@2 ~ a4@2 ~]/4",
  D: "[~@14 a4 ~@9 d5@2 e5@2 ~@12 d5@2 e5@2 ~@16 e4@2 a4@2, d4@4 a4@4 e4@4 e4@6 d5@5 ~@5 d5@5 ~ d5@5 ~@5 d5@4 ~@2 e4@4 ~@2 e4@4 ~@4, ~@2 e4@4 d4@4 a4@4 ~@2 a4@6 a4@9 ~ a4@5 ~ a4@10 d4@5 ~ d4@5 ~@5, ~@20 e5@4 ~@6 e5@4 ~@2 e5@5 ~@5 e5@4 ~@2 a4@4 ~@2 a4@4 ~@2]/4",
  E: "~@14 a4 ~, d4 a4 e4!2, ~ e4@2 d4@2 a4@2 ~",
  F: "[e4 ~@3 g4 b4 ~@2 d4 ~ b4 ~@2 g4 d4 g4, ~@2 g4@4 e4@5 ~@3 b4@4 g4@4 ~@2 b4@6 ~@2, ~@4 b4@5 ~@3 e5@5 ~@5 d5@6 ~@4]/2",
  G: "[~ f#4 a4 ~@2 f#4 d4 f#4 ~@5 f#4 ~@4 b4 ~@2 g4 e4 g4 ~@2 b4 ~@2 g4 d4 g4 ~@2 a4 ~@2 f#4 d4 f#4 ~@2 a4 ~@2 f#4 d4 f#4, d4@4 a4@3 ~ d4@6 d4@2 e4@5 ~@3 d4@5 ~@3 d4@4 ~@4 d4@5 ~@3, ~@3 d5@7 a4@2 a4@3 ~@5 b4@5 ~@3 b4@4 ~@4 a4@5 ~@3 a4@3 ~, ~@9 f#4@3 ~@3 f#4@2 g4@3 ~@5 g4@3 ~@5 f#4@2 ~@6 f#4@3 ~@4, ~@11 d5@5 ~@3 e5@5 ~@3 d5@6 ~@2 d5@7 ~ d5@4 ~]/6",
  H: "~ a#4 c#5 ~ c#5 a#4 f#4 a#4, f#4@5 ~ f#5@5 ~@5", I: "~ a#4 c#5 ~ c#5 a#4 f#4 a#4, f#4@2 ~ f#5@2 ~@3",
  J: "~ c#5 e5 ~ e5 c#5 a4 c#5, a4@2 ~ a5@3 ~@2", K: "a4 ~ e5 ~@2 c#5 ~ c#5, ~ c#5@2 a5@5, ~@4 e5@3 ~, ~@3 a4",
  L: "~@3 e5@3 e5@2, e4, ~ g4@3", M: "~@2 b4 ~ b4 g4 d4 g4, d4 ~, ~ g4@2 d5@5",
  N: "[~@2 a4 ~@2 f#4 d4 f#4 ~@5 f#4 d4 f#4, d4@5 ~@3 d4@5 ~@3, ~ f#4@3 a4@5 f#4@3 ~@4, ~@3 d5@6 ~ a4@2 a4@3 ~, ~@11 d5@4 ~]/2",
  O: "[~@24 b4 ~ d5@2 e5@2 d5 ~, a4@4 e5@4 d5@4 a4@4 e5@4 d5@4 a4@7 ~, ~ d5@2 a4@2 e5@2 d5@2 a4@2 e5@2 ~@3]/2",
  P: "[~@13 e4 ~ e4, d4 a4 e4 d4 a4 e4 d4@2, ~ e4@2 d4@2 a4@2 e4@2 d4@2 a4@2 ~ a4@2]/2",
  Q: "[~@22 e5@2 ~@2 d5@2 e5@2 d5 ~, a4 e5 d5 a4 e5 d5 ~@2, ~@2 d5@4 a4@4 e5@4 d5@4 a4@4 ~@2 a4@7 ~]/2",
  R: "[~@26 e4@2 a4@2 e4 ~, d4@4 a4@4 e4@4 d4@4 a4@4 e4@4 d4@7 ~, ~ e4@2 d4@2 a4@2 e4@2 d4@2 a4@2 ~@3]/2",
  S: "[~@4 g4 b4 ~@2 d4 ~ b4 ~@2 g4 d4 g4, e4@4 b4@5 ~@3 e5@5 ~@5 d5@6 ~@4, ~@2 g4@4 e4@5 ~@3 b4@4 g4@4 ~@2 b4@6 ~@2]/2",
  T: "~@4 d6 e6 ~ e6, a5 e6 ~ d6, ~ d6@2 a5@4 ~", U: "~ c#6 ~@2 c#6 d6 c#6 d6, g5 d6 ~@2, ~@3 g5@4 ~",
  V: "[~ d6 ~@2 d6 e6 ~@3 c#6 ~@2 c#6 d6 c#6 d6, a5@2 e6@2 ~@2 d6@2 g5@2 ~ g5@5, ~@3 a5@4 e6@2 ~ d6@2 ~@4]/2",
  W: "~@4 e5 ~@2 a5, a5@3 a5@3 ~@2, ~ e5@2 ~@3 e5@2, ~@2 d5@2 ~ d5@2 ~",
  X: "~@4 e4 ~@2 d5, a4@2 d4@2 ~ d4@2 ~, ~ e4@2 a4@2 ~ a4@2",
  Y: "[~@4 d5 e5 ~@6 d5 e5 ~@8 e4 a4, a4@4 e5@4 ~@4 d5@4 a4@4 e5@5 ~@3 d5@4 ~@2 e4@4 ~@2 e4@4 ~@4, ~@2 d5@4 a4@8 e5@4 d5@4 a4@10 d4@5 ~ d4@5 ~@5, ~@15 e5@2 ~ a4@2 ~ a4@2 ~]/3",
  Z: "[~@15 d5, d5@2 a5@2 e5@2 d5@2 a5@2 e5@2 d5@3 ~, ~ e5@2 d5@2 a5@2 e5@2 d5@2 a5@2 e5@2 ~, ~@7 a5]/2",
  AA: "~ b5 ~@2 g5 ~@2 [b5,c6], g5@4 ~ e5@2 ~, ~@2 e6@5 ~, ~@3 b5@2 ~ g5@2", // Cmaj7
  AB: "~@2 b5 ~@2 g5 ~ g5, d5@3 d5, ~ g5@3 b5@3 ~, ~@3 d6@5",
  AC: "[~@2 a4 ~@2 f#4 d4 f#4 ~ f#4@3 ~@4, d4@5 ~@3 d4@5 ~@3, ~ f#4@3 a4@5 ~@7, ~@3 d5@6 ~@7]/2",
})).s("gm_epiano1").gain(0.21)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@5 A@2 B@2 A@2 B@2 A@2 B@2 C D E B C F B@2 G@2 A@2 C F B H A@2 B@2 A@2 B@2 C D I H C F B H G@2 A@2 C F B H A J A J B
  H A@2 B@2 A@2 B@2 C D I H C F B H G@2 A@2 C F B H G@2 A@2 C F B@2 C F B@2 C F B@2 C F B K
>`.pickRestart({
  A: "[a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4] ~", // A
  B: "[d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4] ~", // D
  C: "[e3,g3,b3,e4]@3 ~ [e3,g3,b3,e4]@5 ~ [e3,g3,b3,e4]@3 ~ [e3,g3,b3,e4] ~", // Em
  D: "[g2,d3,g3,b3,g4]@3 ~ [g2,d3,g3,b3,g4]@5 ~ [g2,d3,g3,b3,g4]@3 ~ [g2,d3,g3,b3,g4] ~", // G
  E: "[d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4] ~", // D
  F: "g2@3 ~ [g2,d3,g3,b3,g4]@5 ~ [g2,d3,g3,b3,g4]@3 ~ [g2,d3,g3,b3,g4] ~", // G
  G: "[f#2,c#3,f#3,a#3,f#4]@3 ~ [f#2,c#3,f#3,a#3,f#4]@5 ~ [f#2,c#3,f#3,a#3,f#4]@3 ~ [f#2,c#3,f#3,a#3,f#4] ~", // F#
  H: "[d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@2", // D
  I: "[d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 ~@2 [d3,a3,d4,f#4] ~", // D
  J: "[g2,d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~@5 [g2,d3,g3,b3,g4]@3 ~ [g2,d3,g3,b3,g4] ~, ~@4 g2@5 ~@7", // G
  K: "[d3,a3,d4,f#4]@3 ~@13", // D
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@17 A B ~@2 C@2 D ~@5 C@2 D ~@9 A B ~@2 C@2 D ~@5 C@2 D ~@15 A B ~@2 C@2 D ~@5 C@2 D ~@5 C@2 D ~ C@2 E@2 C@2 D ~ C@2
  D ~
>`.pickRestart({
  A: "~@2 g4 ~ g4@2 ~@6 b3@3 ~, b3@4 ~@2 b3@4 e4@5 ~, ~@8 g4@7 ~",
  B: "~@2 g4@2 g4@2 ~@6 b3@2 d4 ~, b3@5 ~ b3@4 d4@4 ~@2, ~@8 g4@7 ~",
  C: "[~@4 f4 ~@5 e4@2 b3@2 ~@2 [b3,g4]@10 ~@2 d4@2 g3 ~, b3@4 e4@4 g4@7 g2@14 ~@3, ~ g4@2 b3@2 ~@2 e4 [d3,g3]@7 ~, ~@26 b3@5 ~]/2", // Em G5
  D: "d4@5 ~@3",
  E: "[d4@10 ~@10 f#4@2 ~@6 d4@2 f#4 ~, ~@15 a3@2 ~ a3@6 ~@2 a3@5 ~, ~@16 [d4,f#4]@3 d4@7 ~@6, ~@11 f#4@3 ~@2]/2", // D
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.6)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~@33 A@8 B C D@2 B C D@2 E@2 F@2 B C D@2 G H G I@3 A@8 B C D@2 B C D@2 E@2 F@2 B C D@2 E@2 F@2 B C D@2 B C D@2 B C D@2
  B C J@2
>`.pickRestart({
  A: "[[e4,c#5]@2 d4 d5 [e4,c#5]@2 d4 d5, a4, ~ f#4 ~ f#4]/8", B: "[e4,g4,b4]@15 ~", C: "[d4,g4,b4]@15 ~",
  D: "[d4@8 d5@7 ~, [f#4,a4]@15 ~]/2", E: "[~@16 f#5@15 ~, [f#4,a#4,c#5]@31 ~]/2",
  F: "[~@16 e5@15 ~, [e4,a4,c#5]@31 ~]/2", G: "[e5,a5,c#6]", H: "[d5,b5], g5@7 ~",
  I: "[[g5,b5]@7 ~ [f#5,a5,d6]@16, d5]/3", J: "[d4@8 d5@3 ~@5, [f#4,a4]@11 ~@5]/2",
})).s("gm_drawbar_organ").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@38 A B C@8 D C@3 D C@25 D@5 C@4 D@4 C@3 D@12 E>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@2 x ~", C: "x ~@2 x ~@2 x ~", D: "x!8", E: "x!2 ~@6",
})).gain(0.33)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@25 [x ~@2 x ~@2 x ~]!13 [x ~@2 x] x ~@67>").gain(0.19)

// drums · snare
const snare = s("sd").struct("<~@5 A@43 B C@4 A@4 C D@2 E A@16 F G C@3 D A@4 C D C D A@15 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x!7", C: "~@2 x ~@2 x!2 ~", D: "~@2 x ~@2 x!3", E: "~@2 x!2 ~@2 x ~", F: "~ x!2 ~@3 x ~",
  G: "~ x!2 ~@3 x!2",
})).gain(0.38)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@53 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C B D B C B E ~@4 A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A@3 E
>`.pickRestart({
  A: "~ x ~@6", B: "~ x!2 ~@5", C: "~ x!2 ~@4 x", D: "x!3 ~@4 x", E: "x!2 ~@6",
})).gain(0.1)

// drums · tambourine
const tambourine = s("tb").struct("<~ [x!8]!105 [x!2 ~@6]>").gain(0.24)

stack(
  bass, epiano1, acoustic_guitar_steel, acoustic_guitar_steel_2, drawbar_organ, kick, kick_soft, snare, hihat,
  hihat_soft, tambourine
)

More by Them