Strudelify
Put It There cover art

Flowers In The Dirt

Put It There

McCartney

KeyD majorTempo178 bpm
0:00/0:00
// Put It There — McCartney
// 178 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 12 "HARPSICHRD" harpsichord (copy of ch 1 "STEEL GTR" acoustic guitar steel); ch 11 "HARPSICHRD" harpsichord (copy of ch 3 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(178/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 D@3 E@2 F@2 G@2 H@2 I J K@2 L@2 M@2 N O P J Q@2 R@2 S T U@2 V@2 W X Y Z AA@2 AB@2 AC AD AE@5 E@2 F@2 G@2
  H@2 I J K@2 L@2 M@2 N O P J Q@2 R@2 S T U@2 V@2 W X Y Z AF@2 AG@2 ~
>`.pickRestart({
  A: "[~@4 e3@3 ~@13 [d3,a3]@3 ~ d3@4 e3@4, c3@7 ~ b2@7 ~ a2@7 ~@9, ~@4 [g3,d4]@7 ~ [d3,g3,d4]@7 ~ d4@11 ~]/2", // D5 G5
  B: "[~@4 e3@3 ~@21 [a3,d4]@4, c3@7 ~ b2@7 ~ a2@7 ~@9, ~@4 [g3,d4]@7 ~ d3@12 d3@8, ~@12 [g3,d4]@7 ~ [a3,d4]@7 ~@5]/2", // D5 G5 D5
  C: "[~@4 [g3,d4]@4 ~@4 [g3,d4]@4 ~@4 [d3,a3]@3 ~ d3@4 e3@4, c3@7 ~ b2@7 ~ a2@7 ~@9, ~@4 e3@3 ~@5 d3@8 d4@11 ~]/2", // G5 D5
  D: "[~@4 e3@3 ~@5 d3@4 d3@19 ~@13, c3@7 ~ b2@6 ~@34, ~@4 [g3,d4]@7 ~ d4@23 ~@13, ~@12 g3@7 ~@29]/3", // G5
  E: "[~@4 [g3,b3]@3 ~@5 [d3,g3,b3]@4 ~@12 [g3,b3]@4, g2@6 ~@2 b2@12 [d3,g3,b3]@7 ~ d3@2 ~@2, ~@16 g2@6 ~@2 b2@7 ~]/2", // G
  F: "[~@14 [a3,d4] ~, d3@12 [d3,a3,d4]@8 [d3,a3,d4]@7 ~ d3@4, ~ [a3,d4]@2 ~@5, ~@8 a2@8 a2@7 ~ a2@8]/2", // D5
  G: "[~ [d3,g3,b3] ~@5 [g3,b3], g2@7 ~ b2@15 ~ b2@7 ~, ~@12 [d3,g3,b3]@7 ~ [d3,g3,b3]@7 ~ d3@2 ~@2, ~@8 g2@3 ~@5]/2", // G
  H: "[~@4 a2@2 ~@8 [a3,d4] ~, d3@15 ~ d3@16, ~@4 [a3,d4]@7 ~ [a3,d4]@7 ~ [a3,d4]@7 ~@5, ~@3 a2]/2", // D5
  I: "~@2 b2 [g3,b3], g2@7 ~@9, ~@4 [d3,g3,b3]@7 ~ d3@2 ~@2", J: "~@2 b2 [g3,b3], d3@15 ~, ~@4 [g3,b3]@7 ~@5",
  K: "[~@6 d3@2 ~@6 [a3,d4] ~, d3@3 ~ d3@3 d3, ~@4 [a3,d4]@8 [a3,d4]@8 [a3,d4]@7 ~@5, ~@8 a2@7 ~@9 a2@7 ~]/2", // D5
  L: "[~@3 d3 ~@2 b2 [g3,b3], g2@7 ~ b2@7 ~ d3@15 ~, ~@4 [d3,g3,b3]@7 ~ [g3,b3]@7 ~ [g3,b3]@7 ~@5]/2", // G
  M: "[~@5 [a3,d4] d3 c#3, d3@2 d3 ~, ~@4 [a3,d4]@8 [a3,d4]@7 ~@13, ~@8 a2@7 ~@17]/2", // D5
  N: "~@4 b3@4 ~@4 [f#3,b3,d4]@3 ~, b2@7 ~ f#2@6 ~@2, ~@4 [f#3,d4]@7 ~@5", // Bm D
  O: "~@4 e3@2 ~@6 [a3,c#4]@3 ~, a2@3 ~ e3@3 ~, ~@4 [a3,c#4]@7 ~@5", // A
  P: "~@3 [d3,g3,b3], g2@7 ~ b2@6 ~@2, ~ [d3,g3,b3]@2 ~", // G
  Q: "[~@12 [a3,d4]@3 ~@5 e3@3 ~@5 [a3,c#4]@3 ~, d3@9 ~@3 e3@3 ~, ~@4 [a3,d4]@7 ~@9 [a3,c#4]@7 ~@5, ~@8 a2@8 a2@7 ~@9]/2", // D5 A D5 A
  R: "[~@12 g3@4 ~@8 g2@2 ~@2 a2@3 ~, g2@8 g2@8 g2@7 ~@9, ~@4 [d3,g3,b3]@7 ~ [d3,b3]@7 ~ [d3,g3,b3]@11 ~]/2", // G
  S: "~@12 [f#3,b3,d4]@3 ~, b2@3 ~ f#2@3 ~, ~@4 [f#3,b3,d4]@7 ~@5", // Bm
  T: "~@4 e3@3 ~@5 [a3,c#4]@3 ~, a2@7 ~ e3@6 ~@2, ~@4 [a3,c#4]@7 ~@5", // A
  U: "[~@3 d3 ~@3 [g3,b3], g2@7 ~ b2@7 ~ d3@15 ~, ~@4 [d3,g3,b3]@7 ~ [g3,b3]@7 ~ [g3,b3]@7 ~@5, ~@12 b2@3 ~]/2", // G
  V: "[~@12 [a3,d4]@3 ~@13 [a3,c#4]@2 ~@2, d3@8 d3@10 ~@2 [e3,a3,c#4]@7 ~@5, ~@4 [a3,d4]@8 ~@4 a2@8 a2@7 ~]/2", // D5 A D5
  W: "~@8 f#2@3 ~ a2@4, b2@7 ~@9, ~@4 [f#3,b3,d4]@9 ~@3", X: "~@3 [d3,g3,b3], g2@7 ~ g2@6 ~@2, ~@4 [d3,g3,b3]@7 ~@5",
  Y: "~@6 [a3,d4] ~, d3!2, ~@4 [a3,d4]@7 ~@5", Z: "~@12 [a3,c#4]@3 ~, a2@4 a2@3 ~, ~@4 [a3,c#4]@7 ~@5, ~@6 e3@5 ~@5",
  AA: "[~@28 [a3,d4] ~@3, d3@8 d3@8 d3@8 d3@7 ~, ~@4 [a3,d4]@7 ~ [a3,d4]@7 ~ [a3,d4]@7 ~@5]/2", // D5
  AB: "[~@4 e3@2 ~@6 g3@4 ~@4 d3@4 d3@4 e3@3 ~, c3@7 ~ b2@7 ~ a2@13 ~@3, ~@2 [g3,d4]@3 ~ [d3,d4]@4 [a3,d4]@6]/2", // G5 D D5
  AC: "e3 ~@3 [e3,g3,d4]@4 ~@4 [g3,d4]@4, c3@7 ~ b2@6 ~@2, ~@6 d3 ~", // Em7 G5
  AD: "~@4 d3@3 ~@5 [a3,d4]@4, a2@6 ~@2 d3@7 ~, ~@2 [a3,d4]@3 ~@3", // D5
  AE: "[~@4 e3@2 ~@6 g3@4 ~@4 d3@4 d3@4 [e3,a3]@3 ~@5 e3@2 ~@2 b2@3 ~ a2@2 b2 ~ d3@30 ~@2, c3@7 ~ b2@7 ~ a2@14 ~@2 c3@7 ~@41, ~@4 [g3,d4]@6 ~@2 [d3,d4]@8 [a3,d4]@8 d4@6 ~@2 d4@15 ~@29, ~@36 g3@11 ~@33]/5", // A5 G5 D D5
  AF: "[~@8 b2@4 a2@4 ~@12 [g3,d4] ~@3, b2@8 ~@8 g2@8 g2@7 ~, ~@4 [g3,d4]@7 ~ [g3,d4]@7 ~ [g3,d4]@7 ~@5]/2", // G5
  AG: "[d3,a3,d4]/2", // D5
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@9 A@2 B@2 A@2 B@2 A C B@2 A C B D E F A C B F G H E I A C J K L G J M J N O P O P O P Q R@2 A@2 B@2 A@2 B@2 A C B@2
  A C B D E F A C B F S T E I A C J K U G J V W S X@2 ~
>`.pickRestart({
  A: "g1@5 ~@3 b1@5 ~@3", B: "d2@5 ~@3 a1@5 ~@3", C: "d2@5 ~@3 b1@5 ~@3", D: "d2@4 ~@4 d2@3 ~ c#2@4",
  E: "b1@6 ~@2 f#1@5 ~@3", F: "a1@5 ~@3 e2@6 ~@2", G: "g1@5 ~@3 g1@5 ~@3", H: "g2@2 a2@2 g2@2 d2@2 g1@2 ~@2 a1@3 ~",
  I: "a1@5 ~@3 d#2@5 ~@3", J: "d2@5 ~@3 d2@5 ~@3", K: "a1 ~ a1 ~", L: "b1@7 ~ f#1@3 ~ a1@3 ~", M: "a1@3 ~@5 a1@7 ~",
  N: "d2 ~ d2 ~", O: "c2@5 ~@3 b1@7 ~", P: "a1@7 ~ d2@5 ~@3", Q: "c2@5 ~@3 b1@3 ~ a1@2 b1@2", R: "[d2@7 ~]/2",
  S: "g1@5 ~@3 g1@4 ~@4", T: "g2 ~ a2@2 g2@2 d2@2 g1@3 ~ a1@2 ~@2", U: "b1@5 ~@3 f#1@2 ~@2 a1@4", V: "a1@4 ~@4 a1@7 ~",
  W: "b1@8 b1@3 ~ a1@4", X: "[d2@13 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A B A C A B D E@2 F G@8 H@7 I J K@3 L@8 M@7 A B A C A B D N@2 F G@8 H@7 I J K@3 L@8 O@7 P@2 ~
>`.pickRestart({
  A: "g4@7 ~ d4@8", B: "d4@8 a4@7 ~", C: "d4@3 ~ e4 f#4@2 ~", D: "g4@7 ~ d4@5 ~@3",
  E: "[~@16 [a3,d4,f#4]@15 ~, f#4 ~, ~@7 d3@9]/2", F: "~@3 d4, [g3,g4]@7 ~ [g3,g4]@8, ~@4 d4@7 ~@5",
  G: "[~@16 e4 ~@63 e4 ~@43 d4@4, [g3,g4]@8 [g3,g4]@7 ~ a3@8 [a3,f#4]@8 [a3,f#4]@8 [a3,f#4]@8 [g3,g4]@8 [g3,g4]@7 ~ [g3,g4]@8 [g3,g4]@7 ~ a3@8 [a3,f#4]@8 [a3,f#4]@8 [a3,f#4]@8 [g3,g4]@8 [g3,g4]@7 ~, ~@4 d4@7 ~ d4@8 d4@8 d4@8 d4@8 d4@8 d4@7 ~ d4@8 d4@7 ~ d4@8 d4@8 d4@8 d4@8 d4@8 d4@7 ~@5, ~@17 f#4@7 ~@57 f#4@7 ~@40]/8", // G D G D G
  H: "[~@16 e4 ~@63 e4 ~@27 d4@3 ~, [g3,g4]@8 [g3,g4]@7 ~ a3@8 [a3,f#4]@8 [a3,f#4]@8 [a3,f#4]@8 [g3,g4]@8 [g3,g4]@7 ~ [g3,g4]@8 [g3,g4]@7 ~ a3@8 [a3,f#4]@8 [a3,f#4]@8 [a3,f#4]@8, ~@4 d4@7 ~ d4@8 d4@8 d4@8 d4@8 d4@8 d4@7 ~ d4@8 d4@7 ~ d4@8 d4@8 d4@8 d4@8 ~@4, ~@17 f#4@7 ~@57 f#4@7 ~@24]/7", // G D G D
  I: "~@3 d4, ~ b3@3, ~ d4@2 ~, ~ f#4", J: "~@3 c#4, ~ a3@3, ~ c#4@2 ~, ~ e4",
  K: "[~@12 d4@8 ~@8 d4@7 ~@9 d4@4, ~@4 g3@31 ~ a3@12, ~ d4@2 ~@2 d4@2 ~@2 d4@2 ~, ~@8 g4@16 g4@11 ~@5 f#4@8]/3",
  L: "[~@12 c#4@7 ~@9 d4@7 ~@9 d4@7 ~@9 d4@8 ~@8 c#4@7 ~@9 d4@7 ~@9 d4@7 ~@9 d4@4, ~@4 a3@14 ~@2 g3@16 g3@15 ~@5 f#4@10 ~@6 e4@11 ~@5 g4@15 ~ g4@11 ~@5 f#4@8, ~@4 c#4@8 ~@8 d4@8 ~@8 d4@8 ~@8 b3@15 ~ a3@14 ~@2 g3@16 g3@15 ~ a3@12, ~@8 e4@11 ~@5 g4@15 ~ g4@11 ~ d4@8 ~@8 c#4@8 ~@8 d4@8 ~@8 d4@8 ~@8 d4@8 ~@4]/8",
  M: "[~@12 c#4@4 ~@12 d4@8 ~@8 d4@7 ~@9 d4@7 ~@9 c#4@7 ~@9 d4@7 ~@9 d4@2 ~@2, ~@4 a3@14 ~@2 b3@15 ~ b3@14 ~@2 a3@16 a3@14 ~@2 a3@16 a3@11 ~, ~ c#4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 c#4@2 ~@2 d4@2 ~@2 d4@2 ~, ~@8 e4@9 ~@7 f#4@10 ~@6 g4@11 ~@5 f#4@10 ~@6 e4@11 ~@5 f#4@16 f#4@6 ~@2]/7",
  N: "[d3,a3,d4,f#4]/2", // D
  O: "[~@12 c#4@4 ~@12 d4@8 ~@8 d4@7 ~@9 d4@7 ~@9 c#4@7 ~@9 d4@7 ~@9 d4@2 ~@2, ~@4 a3@14 ~@2 b3@15 ~ b3@14 ~@2 a3@16 a3@14 ~@2 b3@16 b3@11 ~, ~ c#4@2 ~@2 d4@2 ~@2 d4@2 ~@2 d4@2 ~@2 c#4@2 ~@2 d4@2 ~@2 d4@2 ~, ~@8 e4@9 ~@7 f#4@10 ~@6 g4@11 ~@5 f#4@10 ~@6 e4@11 ~@5 g4@16 g4@6 ~@2]/7",
  P: "f#4/2",
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.7)

// other · clarinet
const clarinet = note("<~@69 A@2 B@3 C@2 D@3 E@2 F G H@2 ~@8>".pickRestart({
  A: "[~@8 d5@2 c#5@3 ~ b4@16 ~@2]/2", B: "[~@3 a4@2 ~ a4@2 b4@4 a4@2 g4@19 ~@3 b3@4 b3@4 c#4@4]/3",
  C: "[d4@7 ~ d4@4 f#4@9 ~@3 c#4@4 f#4@4]/2", D: "[g4 b4@2 g4@6 ~@3 d5 c#5@2 b4@7 ~@2]/3",
  E: "[~@4 a4@2 a4@2 b4@4 a4@3 g4@14 ~@3]/2", F: "~ b3!2 c#4", G: "d4@2 d4@4 d4@5 d4@5",
  H: "[e4@7 ~ d4@2 c#4@3 ~ b3@16 ~@2]/2",
})).s("gm_clarinet").gain(0.38).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@45 A B A C A B D E@2 ~@39>".pickRestart({
  A: "g4@8 d4@7 ~", B: "d4@8 a4@7 ~", C: "d4@7 ~ e4@2 f#4@3 ~@3", D: "g4@2 d4 ~", E: "[a4@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.8)

// other · violin
const violin = note("<~@45 A B A C A B D E@2 ~@39>".pickRestart({
  A: "d4@4 b3@3 ~", B: "a3@6 ~@2 f#4@7 ~", C: "a3@8 d4@5 ~@3", D: "d4@8 b3@5 ~@3", E: "[f#4@15 ~]/2",
})).s("gm_violin").gain(0.33).pan(0.6)

// other · viola
const viola = note("<~@45 A B A C A B A D@3 ~@38>".pickRestart({
  A: "g3@3 ~ g3@4", B: "f#3 d4", C: "f#3@5 ~@3 g3@2 a3@4 ~@2", D: "[d4@11 ~@5]/3",
})).s("gm_viola").gain(0.38)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@45 A B A C A C D E@2 ~@39>".pickRestart({
  A: "c3@7 ~ b2@7 ~", B: "a2@4 d3 ~ e3 ~", C: "a2@4 d3@3 ~", D: "c3@8 b2@5 ~@3", E: "[f#4@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@7 [x!2]!83 x ~@2>").gain(0.38)

// drums · rim
const rim = s("rim").struct("<~@52 A@3 B A C A@2 D E A@3 D A@3 F A C A@3 D A C A@3 D A@8 G ~@2>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@2 x!2", D: "~@3 x ~@2 x ~", E: "x!2", F: "~ x ~ x ~@2 x ~", G: "x",
})).gain(0.33)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@7 [~ x ~ x ~ x ~ x]!83 ~@3>").gain(0.83)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@7 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@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@3 B
  A@3 B A@3 C ~@2
>`.pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x",
})).gain(0.27)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  ~@7 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@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@3 B
  A@3 B A@3 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.16)

stack(
  acoustic_guitar_steel, bass, acoustic_guitar_steel_2, clarinet, string_ensemble_1, violin, viola, string_ensemble_1_2,
  kick, rim, cabasa, shaker, shaker_soft
)

More by McCartney