Strudelify

Desiree

Neil Diamond

KeyC majorTempo120 bpm
0:00/0:00
// Desiree — Neil Diamond
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · brass section · "Unnamed-001"
const brass_section = note(`<
  ~@2 A B C D E@2 F G H I J@3 K@2 L M N@3 O P@2 Q ~@17 R E@2 F S H T U@3 V W X M Y Z AA AB AC@2 Q ~@33
>`.pickRestart({
  A: "c4@2 c4@2 e4@2 g4@2 [c4,c5]@7 ~", B: "~@2 c4@2 [c4,f4,a4]@3 ~ [c4,e4,g4]@7 ~",
  C: "c4@2 c4@2 e4@2 g4@2 [c4,e4,c5]@7 ~", D: "~@2 c4@2 [c4,f4,a4]@3 ~ [c4,e4,g4,c5]@7 ~",
  E: "[c4@2 c4@2 e4@2 g4@2 [a3,c4,e4,a4]@15 ~@3 a4@2 a4@2 a4@2]/2", F: "a4@2 g4@2 g4@3 ~@9",
  G: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@3 g4@2 g4@2 f4@2, ~@8 [g3,c4,e4]@7 ~", H: "e4@2 e4@5 ~@9",
  I: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@3 a4@2 a4@2 a4@2, ~@8 [g3,c4,e4]@7 ~", // C F C
  J: "[a4@2 g4@3 ~ g4@4 c5@2 c5@2 c5@4 g4@2 g4@2 g4@4 e4@2 e4@2 e4@4 f4@2 f4@3 ~@9]/3",
  K: "[~@10 a4@2 a4@2 a4@4 g4@2 g4@7 ~@3 c4@2]/2", L: "~ c4 [a3,c4,f4] g3 ~ g4!3, ~@8 [g3,c4,e4]@7 ~",
  M: "f4@2 e4@2 e4@7 ~@3 g3 a3",
  N: "[c4@2 c4@2 [a3,c4,f4]@2 e4@2 ~@2 a4@2 a4@2 a4@4 g4@2 g4@2 g4@4 c5@3 ~ c5@4 g4@3 ~ g4@5 ~@3 e4!2, ~@8 [c4,e4,g4]@7 ~@33]/3", // F C
  O: "e4@2 f4@2 e4@2 d4@5 ~@5", P: "[~@2 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2 e4@7 ~ g3 a3 c4@5 ~ g3 a3]/2",
  Q: "c4 g3 c4 d4 e4 g4 c5 ~", R: "~@2 [c4,e4,g4]@2 [c4,f4,a4]@3 ~ [c4,e4,g4,c5]@7 ~",
  S: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@3 g4@2 g4@2 f4@2, ~@8 [g3,c4,e4,c5]@7 ~", // C F C
  T: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@5 a4@2 a4@2, ~@8 [g3,c4,e4]@7 ~", // C F C
  U: "[a4@2 g4@2 g4@2 g4@4 c5@2 c5@2 c5@4 g4@2 g4@2 g4@4 e4@2 e4@2 e4@4 f4@2 f4@3 ~@9]/3", V: "~@5 a4!3",
  W: "a4@2 g4@2 g4@7 ~@3 c4@2", X: "~ c4 [a3,c4,f4] g3 ~@2 g4!2, ~@8 [g3,c4,e4]@7 ~",
  Y: "c4!2 [a3,c4,f4] e4 ~ a4!3, ~@8 [c4,e4,g4]@7 ~", Z: "a4@2 g4@3 ~ g4@4 c5@3 ~ c5@2",
  AA: "c5@2 g4@3 ~ g4@2 g4@3 ~@3 e4!2", AB: "e4@2 f4@2 ~@2 d4@5 ~@5",
  AC: "[~@6 f4@2 f4@2 f4@2 f4@2 e4@7 ~ g3 a3 c4@5 ~ g3 a3]/2",
})).s("gm_brass_section").gain(0.48).pan(0.3)

// chords · vibraphone · "Unnamed-001"
const vibraphone = note(`<
  ~@25 A@3 B@2 C D E F@3 G H I J E K L ~@20 A@3 B@2 C D E F@3 G H I J E M@3 N O E P E M@3 N O E P E Q@2
>`.pickRestart({
  A: "[~@14 [d4,b4,d5]@4 [e4,c5,e5]@2 [e4,c5,e5]@7 ~ c5@2 [f4,a4,f5]@4 [e4,g4,e5]@2 [e4,g4,e5]@11 ~]/3", // G C F Em
  B: "[[d4,d5]@2 [e4,e5]@3 ~ [c4,c5]@2 [d4,d5]@3 ~ e5 c5 [d4,d5]@4 [e4,e5]@2 [c4,c5]@3 ~ [d4,b4]@2 [e4,c5]@2 [c4,a4]@2 [c4,a4]@2]/2", // D E C D E C G C …
  C: "[b3,g4]@2 [b3,g4]@5 ~@9", D: "~@4 [d4,b4]!2 [c4,a4]!2", E: "[c4,a4]@2 [b3,g4]@2 [b3,g4]@3 ~@9",
  F: "[~@6 [b3,d4,b4]@2 [c4,e4,c5]@2 [d4,f4,d5]@3 ~ [d4,f4,d5]@4 [e4,g4,e5]@2 [e4,g4,e5]@3 ~@5 [c4,e4,c5]@2 [f4,a4,f5]@4 [e4,g4,e5]@2 [e4,g4,e5]@3 ~@9]/3", // Bm C Dm Em C F Em
  G: "[d4,f4,d5]@3 [e4,g4,e5]@2 [c4,e4,c5]@3 [d4,f4,d5]@3 [e4,g4,e5]@2 [c4,e4,c5]@3", // Dm Em C Dm Em C
  H: "[f4,a4,f5]@3 [e4,g4,e5]@2 [c4,e4,c5]@3 [e4,c5]@3 ~ [c4,c5]@2 [a3,a4]@2", I: "[a3,a4]@2 [g3,g4]@2 [g3,g4]@3 ~@9",
  J: "~@3 [d4,b4]!3 [c4,a4]!2", K: "~@6 [d4,f4]@2 [d4,f4]!2 [d4,f4]@3 ~ e4@2",
  L: "d4@2 e4@2 [c4,e4]@2 g4@2 [c4,e4,c5]@7 ~", // C
  M: "[~@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@3 ~ [f4,d5,f5]@4 [e4,c5,e5]@2 [e4,c5,e5]@3 ~@5 [c4,e4,c5]@2 [f4,a4,f5]@4 [e4,g4,e5]@2 [e4,g4,e5]@3 ~@5 [c4,c5]@2 [d4,d5]@2]/3", // Dm C F Em C D
  N: "[f4,f5]@3 [e4,e5]@2 [c4,c5]@3 [f4,f5]@3 [e4,e5]@2 [c4,c5]@3", // F E C F E C
  O: "[f4,f5]@3 [e4,e5]@2 [c4,c5]@3 [e4,c5]@3 ~ [c4,c5]@2 [a3,a4]@2", P: "~@3 [b3,d4,b4]!3 [a3,c4,a4]!2",
  Q: "[~@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@2 [f4,d5,f5]@3 ~ [f4,d5,f5]@4 [e4,c5,e5]@2 [e4,c5,e5]@3 ~@5 [c4,e4,c5]@2 ~@2]/2", // Dm C
})).s("gm_vibraphone").gain(0.48).pan(0.3)

// other · brass section · "Unnamed-002"
const brass_section_2 = note("<A@6 B C A@6 D@2 A@6 D@2 E F ~@16 A@2 ~@2 A@6 D@2 A@6 D@2 E F ~@33>".pickRestart({
  A: "c2 c3 c2 c3 c2 c3 c2 c3", B: "c2!2 e2 g2 a2!4", C: "a2!8", D: "g2 g3 g2 g3 g2 g3 g2 g3",
  E: "c3@2 c3@2 c3@2 g2 a2 c3@2 c3@2 c3@2 g2 a2", F: "c3@2 g2@2 c3@2 g2@2 a2@3 ~ b2@3 ~",
})).s("gm_brass_section").gain(0.44)

// bass · acoustic bass · "Unnamed-002"
const bass = note(`<
  ~@26 A@2 B C D E F G A@2 B C D E F H ~@2 I J ~@18 A@2 B C D E F G A@2 B C D E F K A@2 B C D E F K A@2 B C D E F K L
>`.pickRestart({
  A: "[c3,g3]!2 [c3,a3]!2 [c3,g3]!2 [c3,a3]!2", B: "[c3,g3]!4 [c3,a3]!4",
  C: "[c3,b3]@2 [c3,b3]@2 [c3,b3]@2 [c3,b3]@2 [c3,c4]@3 ~ [f2,f3]@3 ~", D: "[g2,d3]!2 [g2,b2] [g2,g3]@2 [g2,g3]!3",
  E: "[g2,d3]@2 [g2,d3]@2 [g2,b2]@2 [g2,d3]@4 [g2,f3]@3 ~ [g2,f3]@2", F: "[g2,g3]!8",
  G: "[g2,g3]@2 [g2,g3]@2 [g2,g3]@2 [g2,g3]@2 [a2,a3]@3 ~ [b2,b3]@3 ~", H: "[g2,f3]!8",
  I: "[c2,c3]!2 [e2,e3] [g2,g3] [a2,a3]!4", J: "[a2,a3]!8", K: "[g2,g3]!4 [a2,a3]!2 [b2,b3]!2",
  L: "[c3,g3]!2 [c3,a3]!2 [c3,g3]!2 [c3,a3] ~", // C5 F C5 F
})).s("gm_acoustic_bass").gain(0.44)

// chords · synth brass 2 · "Unnamed-004"
const synth_brass_2 = note("<~@2 A B A B C@2 ~@89>".pickRestart({
  A: "c3@2 c3@2 e3@2 g3@2 [c3,c4]@7 ~", B: "~@2 c3@2 [c3,f3,a3]@3 ~ [c3,e3,g3]@7 ~",
  C: "[c3@2 c3@2 e3@2 g3@2 [a2,c3,e3,a3]@15 ~@9]/2", // Am
})).s("gm_synth_brass_2").gain(0.41).pan(0.8)

// other · electric guitar jazz · "Unnamed-004"
const electric_guitar_jazz = note(`<
  ~@7 A B ~ C D E@3 F@2 G H I@3 J K@2 L@3 M@2 N O P Q@3 R S P T P U V ~@54
>`.pickRestart({
  A: "~@5 a4!3", B: "a4@2 g4@2 g4@3 ~@9", C: "e4@2 e4@5 ~@9",
  D: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@3 a4@2 a4@2 a4@2, ~@8 [g3,c4,e4]@7 ~", // C F C
  E: "[a4@2 g4@3 ~ g4@4 c5@2 c5@2 c5@4 g4@2 g4@2 g4@4 e4@2 e4@2 e4@4 f4@2 f4@3 ~@9]/3",
  F: "[~@10 a4@2 a4@2 a4@4 g4@2 g4@7 ~@3 c4@2]/2", G: "~ c4 [a3,c4,f4] g3 ~ g4!3, ~@8 [g3,c4,e4]@7 ~",
  H: "f4@2 e4@2 e4@7 ~@3 g3 a3",
  I: "[c4@2 c4@2 [a3,c4,f4]@2 e4@2 ~@2 a4@2 a4@2 a4@4 g4@2 g4@2 g4@4 c5@3 ~ c5@4 g4@3 ~ g4@5 ~@3 e4!2, ~@8 [c4,e4,g4]@7 ~@33]/3", // F C
  J: "e4@2 f4@2 e4@2 d4@5 ~@5", K: "[~@2 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2 e4@5 ~@13]/2",
  L: "[c3@2 g2@2 c3@2 d3@2 e3@2 g3@2 c4@2 d4@4 e4@2 e4@7 ~ c4@2 f4@4 e4@2 e4@7 ~@5]/3",
  M: "[d4@2 e4@3 ~ c4@2 d4@3 ~ e4 c4 d4@4 e4@2 c4@3 ~ b3@2 c4@2 a3@2 a3@2]/2", N: "g3@2 g3@5 ~@9", O: "~@4 b3!2 a3!2",
  P: "a3@2 g3@2 g3@3 ~@9", Q: "[~@6 b3@2 c4@2 d4@3 ~ d4@4 e4@2 e4@3 ~@5 c4@2 f4@4 e4@2 e4@3 ~@9]/3",
  R: "d4@3 e4@2 c4@3 d4@3 e4@2 c4@3", S: "f4@3 e4@2 c4@3 c4@3 ~ c4@2 a3@2", T: "~@3 b3!3 a3!2",
  U: "~@6 f3@2 f3!2 f3@3 ~ e3@2", V: "d3@2 e3@2 c3@3 ~@9",
})).s("gm_electric_guitar_jazz").gain(0.41).pan(0.8)

// chords · french horn · "Unnamed-004"
const french_horn = note("<~@9 A ~@33 B C@2 ~@16 D E ~@33>".pickRestart({
  A: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~ [g3,c4,e4]@7 ~", B: "~@2 [c3,e3,g3]@2 [c3,f3,a3]@3 ~ [c3,e3,g3]@7 ~",
  C: "[c3@2 c3@2 e3@2 g3@2 [a2,c3,e3,a3]@15 ~@9]/2", D: "~@6 g2 a2 c3@5 ~ g2 a2", E: "c3 g2 c3 d3 e3 g3 c4 ~",
})).s("gm_french_horn").gain(0.41).pan(0.8)

// other · piano · "Unnamed-004"
const piano = note("<~@45 A B C D E F@3 A G H I J K L M N O ~@34>".pickRestart({
  A: "~@5 a4!3", B: "a4@2 g4@2 g4@3 ~@9", C: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@3 g4@2 g4@2 f4@2, ~@8 [g3,c4,e4]@7 ~",
  D: "e4@2 e4@5 ~@9", E: "~@2 [g3,c4,e4]@2 [a3,c4,f4]@3 ~@5 a4@2 a4@2, ~@8 [g3,c4,e4]@7 ~",
  F: "[a4@2 g4@2 g4@2 g4@4 c5@2 c5@2 c5@4 g4@2 g4@2 g4@4 e4@2 e4@2 e4@4 f4@2 f4@3 ~@9]/3", G: "a4@2 g4@2 g4@7 ~@3 c4@2",
  H: "~ c4 [a3,c4,f4] g3 ~@2 g4!2, ~@8 [g3,c4,e4]@7 ~", I: "f4@2 e4@2 e4@7 ~@3 g3 a3",
  J: "c4!2 [a3,c4,f4] e4 ~ a4!3, ~@8 [c4,e4,g4]@7 ~", K: "a4@2 g4@3 ~ g4@4 c5@3 ~ c5@2",
  L: "c5@2 g4@3 ~ g4@2 g4@3 ~@3 e4!2", M: "e4@2 f4@2 ~@2 d4@5 ~@5", N: "~@3 f4!2 f4@2 e4", O: "e4@5 ~@11",
})).s("gm_piano").gain(0.41).pan(0.8)

// other · harpsichord · "Unnamed-004"
const harpsichord = note("<~@63 A@3 B@2 C D E F@3 G H E I E J@3 ~@5 J@3 ~@5 K@2>".pickRestart({
  A: "[~@14 d4@4 e4@2 e4@7 ~ c4@2 f4@4 e4@2 e4@7 ~@5]/3",
  B: "[d4@2 e4@3 ~ c4@2 d4@3 ~ e4 c4 d4@4 e4@2 c4@3 ~ b3@2 c4@2 a3@2 a3@2]/2", C: "g3@2 g3@5 ~@9", D: "~@4 b3!2 a3!2",
  E: "a3@2 g3@2 g3@3 ~@9", F: "[~@6 b3@2 c4@2 d4@3 ~ d4@4 e4@2 e4@3 ~@5 c4@2 f4@4 e4@2 e4@3 ~@9]/3",
  G: "d4@3 e4@2 c4@3 d4@3 e4@2 c4@3", H: "f4@3 e4@2 c4@3 c4@3 ~ c4@2 a3@2", I: "~@3 b3!3 a3!2",
  J: "[~@2 f4@2 f4@2 f4@2 f4@2 f4@3 ~ f4@4 e4@2 e4@3 ~@5 c4@2 f4@4 e4@2 e4@3 ~@9]/3",
  K: "[~@2 f4@2 f4@2 f4@2 f4@2 f4@3 ~ f4@4 e4@2 e4@3 ~@5 c4@2 ~@2]/2",
})).s("gm_harpsichord").gain(0.41).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@26 [x!2 ~ x!2 ~@3]!66 ~@5>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@26 [~ x ~ x]!66 ~@5>").gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@6 [x!8]!88 ~@3>").gain(0.4)

stack(
  brass_section, vibraphone, brass_section_2, bass, synth_brass_2, electric_guitar_jazz, french_horn, piano,
  harpsichord, kick, snare, pedal_hat
)

More by Neil Diamond