Strudelify
Play Me cover art

Not Sweet Caroline

Play Me

Neil Diamond

KeyD majorTempo205 bpm
0:00/0:00
// Play Me — Neil Diamond
// 205 bpm, 6/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(205/6)

// 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 · "Arpeggio"
const acoustic_guitar_steel = note(`<
  A@8 B@8 C@8 D@8 E@7 ~@4 F@8 G@8 H@6 ~@3 I@8 J@8 G@8 K@8 L@8 M@4 ~@3 N@4 ~@3 O@5 P Q@2 R ~
>`.pickRestart({
  A: "[~@47 a3, d3 d3 d3 d3 d3 d3 d3 d3, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 ~@4, ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8 ~@8 a3@7 ~ d4@8]/8",
  B: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d2@8 [e2,a3]@8 [f#2,d4]@8, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8", // A5 D
  C: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8",
  D: "[~@47 a4, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 [d2,d3]@8 [e2,a3]@8 [f#2,d4]@8 d3@23 ~, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g4@8 g4@8 ~@4, ~@168 g2@8 a4@7 ~ d5@8]/8", // D A5 D
  E: "[~@41 a3, d3@23 ~ d3@23 ~ [b2,d3]@7 ~ [a2,a4]@7 ~ [g2,d4]@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ a3@8 d3@7 ~ a3@7 ~ d4@8, ~@4 g4@8 g4@8 a4@7 ~ g4@8 g4@8 a4@7 ~ g4@8 g4@8 a3@8 f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 d4@7 ~ f#3@8 f#3@8 ~@4, ~@8 a4@7 ~ d5@8 ~@8 a4@7 ~ d5@8 ~@120]/7", // Bm A G5
  F: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8",
  G: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 [d2,d3]@8 [e2,a3]@8 [f#2,d4]@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 ~@4]/8", // D A5 D
  H: "[~@116 a3@7 ~@21, [b2,d3]@8 [a2,a3]@8 [g2,d4]@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ a3@8 d3@7 ~ a3@7 ~ d4@8 ~@24, ~@4 g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 d4@7 ~ f#3@8 f#3@8 ~@28]/6", // Bm A G5
  I: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 [d2,d3]@8 [e2,a3]@8 [f#2,d4]@8, ~@4 f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8", // D A5 D
  J: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 ~@4]/8",
  K: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8",
  L: "[~@47 a3, d3@7 ~ a3@7 ~ d4@8 [d2,d3]@8 [e2,a3]@8 [f#2,d4]@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 [g2,d3]@8 [f#2,a3]@8 [e2,d4]@8 d3@7 ~ a3@7 ~ d4@8, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 ~@4]/8", // D A5 D G5 F#m E7
  M: "[~@68 a3@7 ~@21, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ a3@8 d3@7 ~ a3@7 ~ d4@8 ~@24, ~@4 g3@8 g3@8 a3@7 ~ f#3@8 f#3@8 d4@7 ~ f#3@8 f#3@8 ~@28]/4",
  N: "[~@68 a3@7 ~@21, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 ~@24, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 ~@28]/4",
  O: "[~@29 a3, d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8 d3@7 ~ a3@7 ~ d4@8, ~@4 f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ f#3@8 f#3@8 a3@7 ~ g3@8 g3@8 a3@7 ~ g3@8 g3@8 ~@4]/5",
  P: "~ [g3,b3]@11 ~ [f#3,a3]@11, [b2,d3]@12 [a2,d3]@11 ~", // G F#m Bm D5
  Q: "[~@2 g3@17 ~@21 f#4@8, a2@15 ~@4 a2@16 d4@13, ~ [c#3,e3]@17 ~@5 d3@25, ~@26 f#3@21 ~, ~@30 a3@17 ~]/2", // C#m
  R: "~ [f#4,a4,d5]@11, [d3,f#3], ~ [a3,d4]@23", // D D5
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0)

// chords · acoustic guitar steel · "Acoustic Guitar-Bend"
const acoustic_guitar_steel_2 = note("<~@7 A ~@10 A ~@6 B ~ C ~ C ~@2 D ~ A ~@24 A ~@46 A ~@25>".pickRestart({
  A: "a3@7 ~@17", B: "~@2 [d4,f#4]@9 ~, f#2, ~ [a2,d3]@22 ~, ~@2 f#3@21 ~, ~@3 a3@20 ~",
  C: "~ f#4@10 ~, ~ [f#3,a3,d4]@20 ~@3", D: "~ [d4,g4,b4]@18 ~@5, b3@17 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.33)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@22 A B@7 C D@3 E B F B C D G D H B F B F B@7 C D@4 E B F B C D G D H B F B F B@3 C D@3 E B@3 F B@3 C D@3 B D@2 B@7 C
  D@4 E B F B C D G D H B F C D G D H B@5 ~@5
>`.pickRestart({
  A: "~@2 a1", B: "d2@15 ~ a1@8", C: "d2@7 ~ e2@8 f#2@8", D: "g2@2 d2", E: "g2 f#2 e2", F: "g1@15 ~ a1@8",
  G: "a2@15 ~ d2@8", H: "a2@15 ~ a1@8",
})).s("gm_acoustic_bass").gain(0.4)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@23 A@4 B C@3 D@4 E F E ~ G H I J E F B F K@6 L@2 M@5 E F E N G H I J E F B F B O B P F@4 Q@3 F R@2 S@2 T@6 U@3 V K@2
  L@2 M@5 E F E ~ G H I J E@2 N G H I J W@4 X@2 Y@4
>`.pickRestart({
  A: "[[d4,f#4,a4]@87 ~ [b3,d4,g4]@8]/4", B: "[d4,f#4,a4]", C: "[d4,f#4,a4]/3", D: "[b3,d4,g4]/4", E: "[a3,d4,f#4]",
  F: "[b3,d4,g4]", G: "[d3,g3,b3] ~@3", H: "[e3,a3,c#4] ~@3", I: "[g3,b3,d4] ~@3", J: "[a3,c#4,e4] ~@3",
  K: "[[d4,f#4,a4]@39 ~ [b3,d4,g4]@8]/2", L: "[d4,f#4,a4]/2", M: "[b3,d4,g4]/5", N: "[a4,f#5]@4 [g4,e5]@4 [f#4,d5]@3 ~",
  O: "[d4,f#4,a4]@15 ~ [b3,d4,g4]@8", P: "[d4,f#4,a4,c5]", Q: "[a3,d4,f#4]/3", R: "[[a3,d4,f#4,a4]@5 [g3,b3,d4,g4]]/2",
  S: "[~ c5, [a3,d4,f#4,a4]]/2", T: "[b4@2 ~@3 b5, [g3,b3,d4,g4] [g3,b3,d4,g4,d5], ~@48 b4@48 g5@47 ~]/6",
  U: "[[d4,f#4,a4]@3 ~]/3", V: "~@2 [b3,d4,g4]", W: "[~@6 [a3,d4,f#4] [b3,d4,g4]@5, [a3,d4,f#4] ~, ~@3 c4@4 ~@5]/4",
  X: "[[b3,g4]@3 [a3,f#4], d4]/2", Y: "[[e3,a3,c#4,e4] [f#3,a3,d4,f#4]@4 ~]/4",
})).s("gm_string_ensemble_2").gain(0.25)

// other · string ensemble 2 · "Strings 2"
const string_ensemble_2_2 = note("<~@46 A@8 B@2 C@7 ~@30 D@3 E@7 F@5 G H@2 ~@21>".pickRestart({
  A: "[~@118 f#6@24 g6@25 a6@24 a6, ~@22 a5@97 ~@73, ~@71 d6@120 ~]/8", B: "[~@7 g6@8 f#6@8 g6@25]/2",
  C: "[~@4 f#6@4 d6@63 b5@24 a5@24 g5@24 f#5@24 ~]/7", D: "[f#5@3 g5@2 f#5@3 d5@8 g5@7 a5@49]/3",
  E: "[~@7 d4 ~@7 g4@8 ~ d4@8 ~@8 g5@7 [a5,a6]@72 [d6,f#6]@8 [e6,g6]@9 [f#6,a6]@7 g6@25, ~@7 a3@8 ~@8 a4@17 ~@128, ~@8 d4@16 ~@8 d5@15 ~@121]/7", // A D Em F#m
  F: "[~@4 f#6@4 ~@62 b5@8 d6@8 g5@7 f#5@9 e5@8 d5@10, ~ d6@8 ~@6]/5", G: "g5 f#5 e5", H: "[f#5@7 e5@9 d5@32]/2",
})).s("gm_string_ensemble_2").gain(0.36)

// chords · flute · "Flute/Harp"
const flute = note("<~@88 A B@3 ~@25 C@2 ~@13>".pickRestart({
  A: "~@11 b3@4 g4@4 ~ f#4@4", B: "[d4@3 b3@4 ~ g3@3 b3@4 d4@45 ~@12]/3",
  C: "[~@22 a5@7 ~@19, g4@6 f#5@5 ~ f#5@5 ~ f#5@6 ~@24, ~@2 d5@6 a4@6 g5@5 ~ g5@4 ~@24, ~@4 e5@5 ~ e5@6 d5@8 ~@24]/2",
})).s("gm_flute").gain(0.36)

// other · viola
const viola = note("<~@42 A@2 B C D@3 ~@4 E@4 F@6 ~@41 G@3 ~ H@2 I ~@21>".pickRestart({
  A: "[~@11 d3, ~@23 f#3@25]/2", B: "g3@7 e3", C: "~@7 d3, a3@23 ~", D: "[g3@16 a3@33 ~@23]/3",
  E: "[~@23 d3@8 ~ e3@8 f#3@7 g3@48 g3]/4", F: "[~@3 f#3@4 d3@137]/6", G: "[g3@4 f#3@4 d3@45 ~@19]/3", H: "[d3@47 ~]/2",
  I: "d3@9 e3@7 f#3@8",
})).s("gm_viola").gain(0.33)

// drums · kick
const kick = s("bd").struct("<~@23 A@16 ~@4 A@21 ~@4 A@43 ~@4 A@3 ~@4 A@5 ~@5>".pickRestart({
  A: "x!2 ~",
})).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@39 A@4 ~@21 A@4 ~@43 A@4 ~@3 A@4 ~@10>".pickRestart({
  A: "~@2 x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A@16 ~@4 A@21 ~@4 A@43 ~@4 A@3 ~@4 A@5 ~@5>".pickRestart({
  A: "~@4 x!2",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@22 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@4 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@4 A ~@7 A
  ~@6 A ~@10
>`.pickRestart({
  A: "~@5 x",
})).gain(0.15)

// drums · high tom
const high_tom = s("ht").struct("<~@23 A@16 ~@4 A@21 ~@4 A@43 ~@4 A@3 ~@4 A@5 ~@5>".pickRestart({
  A: "~ x",
})).gain(0.35)

// drums · bongos
const bongos = s("bongo:4").struct("<~@23 A@16 ~@4 A@21 ~@4 A@36 ~ A@6 ~@4 A@3 ~@4 A@5 ~@5>".pickRestart({
  A: "~@2 x",
})).gain(0.78)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@23 A@16 ~@4 A@21 ~@4 A@36 ~ A@6 ~@4 A@3 ~@4 A@5 ~@5>".pickRestart({
  A: "~ x",
})).gain(0.78)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@23 A@16 ~@4 A@14 B A@6 ~@4 A@43 ~@4 A@3 ~@4 A@4 C D E ~@3>".pickRestart({
  A: "x!3", B: "~ x!2", C: "x!6", D: "x!2", E: "x ~ x",
})).gain(0.75)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@23 A@16 ~@4 A@21 ~@4 A@43 ~@4 A@3 ~@4 A@4 ~@6>".pickRestart({
  A: "~ x ~ x ~ x",
})).gain(0.5)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, string_ensemble_2, string_ensemble_2_2, flute, viola, kick,
  low_tom, mid_tom, open_hat, high_tom, bongos, bongos_2, cabasa, cabasa_soft
)

More by Neil Diamond