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: 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@8 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@8 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@8 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@22 ~, ~ [d3,f#3]@11, ~@3 a3@20 ~",
  C: "~ [d4,f#4]@10 ~, ~ [f#3,a3]@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 G H I H J B K B F B@7 C D@4 E B F B G H I H J B K 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 G H I H J B K G H I H J B@2 L@3 ~@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: "d2 e2 f#2", H: "g2@15 ~ d2@8", I: "a2@15 ~ d2@8", J: "a2@15 ~ a1@8", K: "g1@2 a1", L: "d2@2 a1",
})).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@2 L@4 M@2 N@5 E F E O P H I J E F B F B Q B R F@4 S@3 F T@2 U@2 V@6 W@3 X
  L@2 M@2 N@5 E F E ~ G H I J E@2 Y G H I J Z@4 AA@2 AB@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]@5 [b3,d4,g4]]/2", L: "[[d4,f#4,a4]@39 ~ [b3,d4,g4]@8]/2", M: "[d4,f#4,a4]/2", N: "[b3,d4,g4]/5",
  O: "[a4,f#5]@4 [g4,e5]@4 [f#4,d5]@3 ~", P: "[d3,g3,b3]@7 ~@17", Q: "[d4,f#4,a4]@15 ~ [b3,d4,g4]@8",
  R: "[d4,f#4,a4,c5]", S: "[a3,d4,f#4]/3", T: "[[a3,d4,f#4,a4]@5 [g3,b3,d4,g4]]/2", U: "[~ c5, [a3,d4,f#4,a4]]/2",
  V: "[b4@2 ~@3 b5, [g3,b3,d4,g4] [g3,b3,d4,g4,d5], ~@48 b4@48 g5@47 ~]/6", W: "[[d4,f#4,a4]@3 ~]/3",
  X: "~@2 [b3,d4,g4]", Y: "[a4,f#5]@7 ~ [g4,e5]@7 ~ [f#4,d5]@6 ~@2",
  Z: "[~@6 [a3,d4,f#4] [b3,d4,g4]@5, [a3,d4,f#4] ~, ~@3 c4@4 ~@5]/4", AA: "[[b3,g4]@3 [a3,f#4], d4]/2",
  AB: "[[e3,a3,c#4,e4] [f#3,a3,d4,f#4]@4 ~]/4", // A D
})).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@3 f#5@2 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: "[~@2 f#6@2 d6@31 b5@4 d6@4 g5@4 f#5@4 e5@4 d5@5]/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