Strudelify
Forever in Blue Jeans cover art

You Don't Bring Me Flowers

Forever in Blue Jeans

Neil Diamond

KeyA majorTempo93 bpm
0:00/0:00
// Forever in Blue Jeans — Neil Diamond
// 93 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(93/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 · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F G H@2 I@2 J K H L H@2 I M J K H N O P Q R S T U V@2 H@2 I@2 J K H L H@2 I@2 J K H N W P Q R S T U V@2
  H@2 I@2 J K H@2 I@2 J K H@2 I@2 J K X@2 ~@2
>`.pickRestart({
  A: "[b3@2 e3 ~ a2 ~ e3 ~ a2 ~ e3 ~ a2 ~ e3 ~ a2 ~ e3 ~ [a2,b3] ~ [e3,c#4] ~ [a2,b3]@2 [e3,c#4] ~ a2 ~ e3 ~, a2 ~@2 c#4@3 a3@5 ~ a3@7 ~@8 b3@2 a3@3, ~@13 c#4@7 ~@12, ~@15 a4@5 ~@12]/2", // Asus2 C#m Asus2 C#m
  B: "[d3,b3]@3 ~ d3@2 a3@2 ~@4 d3@2 a3@2, ~@3 c#4@3 ~@2 d3@2 a3@3 ~@3, ~@9 d4@7, ~@11 a4@5", // G
  C: "d3@2 [a3,d4] ~ [d3,b3,d4] ~ [a3,d4] ~ [d3,b3,d4] ~ [c#4,e4] ~ [d3,b3,d4] ~ [a3,d4] ~", // D5 G D5 G C#m G D5
  D: "a2 ~ e3 ~ a2 ~ b3@2 b2 ~ d3 ~ b2 ~ d3 ~, e4, ~@3 c#4@3 e3 ~@2 a3@2 b3@5",
  E: "c#3 ~ g#3 ~ c#3 ~ b3@2 ~@2 b2 ~@3 [b2,c#4]@2, e4@11 e4@5, ~@3 c#4@3 g#3 ~ e2@3 ~ e2@3 ~, ~@9 g#3@2 ~@2 b3@2 ~", // Bsus2
  F: "a2 ~ e3 ~ a2 ~ e3 ~ a2 ~ e3 ~ a2 ~ e3 ~, a3@5 a3@11, ~@7 c#4@9",
  G: "~ b3 d4 a3 c4 ~@2 g3, e4@2 ~@3 g3@2 ~, ~@3 b3", H: "a2 [e3,a3,c#4] a2 [e3,a3,c#4] a2 [e3,a3,c#4] a2 [e3,a3,c#4]",
  I: "d3 [a3,d4,a4] d3 [a3,d4,a4] d3 [a3,d4,a4] d3 [a3,d4,a4]", // D5
  J: "a2 [e3,a3,c#4] a2 [e3,a3,c#4] b2 [f#3,b3,d4,f#4] b2 [f#3,b3,d4,f#4]", // A Bm
  K: "c#3 [g#3,c#4,e4,g#4] ~ [g#3,c#4,e4,g#4] e2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4], ~ c#3 ~ e2", // C#m E
  L: "[g#3,b3,e4] [f#3,a3,d4] [e3,g3,c4] [e3,g#3,b3]", // E D C E
  M: "d3 [a3,d4,a4] d3 [a3,d4,a4] d3 [a3,d4,a4] ~ [a3,d4,a4], ~@3 d3", // D5
  N: "[a2,e3,a3,c#4] [e3,a3,c#4] a2 [e3,a3,c#4] a2 [e3,a3,c#4] a2 [e3,a3,c#4]", // A
  O: "[a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  P: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,e4,g4] ~", // A A7
  Q: "[a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f4] ~", // A7 D Dm
  R: "[a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // Dm A
  S: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  T: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [f#3,a3,d4] ~", // A G D
  U: "[f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [g3,a3,d4] ~ [g3,a3,d4] ~ [g3,a3,d4] ~ [g3,a3,d4] ~ [g3,a3,d4] ~", // D Gsus2
  V: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // E
  W: "[e3,a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  X: "[[a2,a3,c#4]@13 ~@3, e3 ~@15]/2", // A
})).s("gm_acoustic_guitar_nylon").gain(0.48)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@7 A B C D@2 E F B A B C D@2 E F B@3 C B C@2 G@2 H I B C D@2 E F B A B C D@2 E F B@3 C B C@2 G@2 H I B C D@2 E F B C
  D@2 E F B C D@2 E J K@3 ~
>`.pickRestart({
  A: "e1@3 ~ f#1@3 ~ g1@3 ~ g#1@3 ~", B: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~", C: "a1@3 ~ a1@3 ~ a1@3 ~ a1@4",
  D: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", E: "a1@3 ~ a1@3 ~ b1@3 ~ b1@3 ~", F: "c#2@3 ~ c#2@3 ~ e2@3 ~ e2@3 ~",
  G: "[a1@3 ~ a1 ~ g1@5 ~ g1@2 d2@5 ~ d2 ~ d2@5 ~ d2@3 ~]/2", H: "e2@3 ~ e2@3 ~ e2@3 ~ e2@4",
  I: "e1 ~ e1 ~ e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1@2", J: "c#2@3 ~ c#2@3 ~ e2@3 ~ e1@3 ~", K: "[a1@17 ~@7]/3",
})).s("gm_acoustic_bass").gain(0.56)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@15 A B@2 C@2 D E F G H@7 I J B@2 C@2 K E F L B@2 C@2 M E F G H@7 N O B@2 C@2 D E B@2 C@2 K E B@2 C@2 D E P@3 ~
>`.pickRestart({
  A: "[e1,g#3,b3,e4]@4 [f#1,f#3,a3]@4 [g1,e3,g3,c4]@3 ~ [g#1,e3,g#3,b3]@4, ~@2 d4 ~@5", // E F#m C E
  B: "a1 [c#4,e4,a4] a1 [c#4,e4,a4] a1 [c#4,e4,a4] a1 [c#4,e4,a4]", // A
  C: "d2 [d4,f#4,a4] d2 [d4,f#4,a4] d2 [d4,f#4,a4] d2 [d4,f#4,a4]", // D
  D: "a1@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 b1@2 [b3,d4,f#4]@2 b1@2 [b3,d4] ~, ~@2 a1@2 ~@3 f#4", // A Bm
  E: "c#2 [c#4,e4,g#4] ~ [c#4,e4,g#4] e2 [g#3,b3,e4] e2 [g#3,b3,e4], ~ c#2 ~@2", // C#m E
  F: "a1 [a3,c#4,e4] a1 [a3,c#4,e4] a1 [a3,c#4,e4] a1 [a3,c#4,e4]", // A
  G: "[a1,a3,c#4] [a3,c#4,e4] a1 [a3,c#4,e4] a1 [a3,c#4,e4] a1 [a3,c#4,e4]", // A
  H: "[[a3,c#4]@2 [b3,d4]@2 [a3,c#4]@2 [a3,c#4,e4]@22 ~@2 [a3,e4,g4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f4]@9 ~ [a3,c#4,e4]@29 ~ [g3,b3,d4]@7 ~ [f#3,a3,d4]@7 ~ [g3,a3,d4]@8 ~@2]/7", // A Bm A A7 D Dm A G …
  I: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~, [g#3,b3,e4]@15 ~", // E
  J: "[e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3] ~ [g#3,b3,e4] ~ [e2,b3,e4] ~ [e2,g#3,e4] ~, ~@4 e4 e2 g#3 b3", // E E5 E
  K: "a1 [a3,c#4,e4] ~ [a3,c#4,e4] b1 [b3,d4,f#4] b1 [b3,d4,f#4], ~ a1 ~@2", // A Bm
  L: "[e1,g#3,b3]@4 [f#1,f#3,a3]@4 [g1,e3,g3,c4]@3 ~ [g#1,e3,g#3,b3]@4, e4 ~ d4 ~@5", // E F#m C E
  M: "a1 [a3,c#4,e4] ~ [a3,c#4,e4] b1 [b3,d4,f#4] b1 [b3,f#4], ~@4 a1@4 ~@6 d4 ~", // A Bm B5
  N: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~, [g#3,b3,e4]", // E
  O: "[e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3,e4] ~ [e2,g#3,b3] ~ [e2,b3,e4] ~, ~@2 e4 ~@3 e4 g#3", // E E5
  P: "[[a1,a3,c#4,e4]@17 ~@7]/3", // A
})).s("gm_epiano2").gain(0.48)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@16 A B C D ~@4 E@4 F@3 ~@2 A B C D ~@4 A B C D ~@4 E@4 F@3 ~@2 A B C D ~@2 A B C D ~@2 A B C D ~@6
>`.pickRestart({
  A: "~@5 b4 a4 e4", B: "c#4 ~", C: "~@5 b4 a4 f#4", D: "d4 ~",
  E: "[~@8 [a3,c#4]@2 [b3,d4]@2 a3@2 e4@16 [c#4,g4]@7 ~ [d4,f#4]@7 ~ [d4,f4]@10 ~@8, ~@12 c#4@17 ~@35]/4", // A Bm C#dim D Dm
  F: "[[a3,c#4] ~ [b3,d4] ~ [a3,c#4] ~ [c#4,e4]@16 [d4,g4]@7 ~ [d4,f#4]@7 ~ [d4,g4]@10]/3", // A Bm A C#m G5 D G5
})).s("gm_string_ensemble_1").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[x!4]!76 x ~@3>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@24 A@8 B A@5 C A D A@5 C A D A@8 B A@5 E A@5 F A@5 E ~@4>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~@2 x ~ x ~@2 x", D: "x!4", E: "~ x!2 ~", F: "~@4 x ~@5 x!2 ~@4",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!8]!68 ~@4>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A@2 ~@8 B ~@24 C ~@5 D ~@5 E ~@5 D ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~@3 x!2 ~@2 x!2 ~ x ~ x ~@3", D: "~@5 x ~ x", E: "~@3 x",
})).gain(0.57)

// drums · congas
const congas = s("conga:13").struct("<~@15 [~@7 x] [~ x ~ x]!16 [~ x ~@2] [~ x ~ x]!24 [~ x ~@2] [~ x ~ x]!21 ~>")
  .gain(1.6)

// drums · congas
const congas_2 = s("conga:18").struct("<~@15 [~@12 x!2 ~@2] ~@16 [~@12 x!2 ~@2] ~@24 [~@12 x!2 ~@2] ~@22>").gain(1.6)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@16 A@2 B A B A B A B A B A B A B A C A@2 B A B A B A@3 B A B A B A B A B A B A B A C A@2 B A B D A@2 B A B A@3 B A B
  E B A B F
>`.pickRestart({
  A: "x ~@7 x ~@5 x!2", B: "~@8 x ~@5 x!2", C: "~@8 x ~ x!2 ~@2 x!2", D: "x ~@7 x ~@6 x", E: "x!2", F: "x",
})).gain(1.6)

stack(acoustic_guitar_nylon, bass, epiano2, string_ensemble_1, kick, snare, hihat, mid_tom, congas, congas_2, congas_3)

More by Neil Diamond