Strudelify

Come See About Me

The Supremes

KeyD minorTempo133 bpm
0:00/0:00
// Come See About Me — The Supremes
// 133 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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 · trombone
const trombone = note(`<
  A B C B C B C B D E F@2 G@2 H I H I J@2 K B C L C M N O D I D P F@2 G@2 H I H I J@2 K B C Q C Q C Q R S T U V@2 W X H
  Y@2 Z J@2 AA@2
>`.pickRestart({
  A: "~@4 [f4,a4,c5]@2 [f4,a4,c5]@2 ~@4 [f4,bb4,d5]@3 ~", B: "[f4,a4,c5] ~@3", C: "~@12 [f4,bb4,d5]@3 ~",
  D: "~@12 [bb3,g4]@3 ~", E: "[a3,f4]@10 ~@2 [c4,f4]@3 ~",
  F: "[[d4,f4]@3 ~ [bb3,d4]@3 ~ [bb3,d4]@5 ~ [a3,d4]@10 ~@4 [d4,f4]@3 ~]/2", // Dm Bb D5 Dm
  G: "[[d4,f4]@3 ~ [bb3,d4]@3 ~ [bb3,d4]@5 ~ [a3,d4]@8 ~@2 [d4,f4]@3 ~ [f4,a4]@3 ~]/2", // Dm Bb D5 Dm F
  H: "[f4,bb4]@6 ~@2 [c4,e4]@3 ~ bb3@3 ~", I: "[a3,f4] ~@3", J: "[~@7 [bb3,d4]@4 ~ [bb3,d4]@3 ~]/2",
  K: "[a3,c4,f4]@10 ~@2 [f4,bb4,d5]@3 ~", L: "[f4,a4,c5] ~ d4@2", M: "[f4,a4,c5]@2 ~@2 d4@3 ~",
  N: "[c4,f4,a4]@4 ~@6 [bb3,d4,g4]@5 ~", O: "[a3,c4,f4] ~@3", P: "[a3,f4]@10 ~@2 [c4,f4,a4]@3 ~",
  Q: "[f4,a4,c5]@3 ~@13", R: "[f4,a4]@5 ~ [a3,d4]@6 ~@4", S: "~@8 bb3@5 ~ c4@2", T: "~@2 [a3,f4]@6 ~@4 [f4,bb4,d5]@3 ~",
  U: "[f4,a4,c5]@3 ~ [c4,f4]@3 ~", V: "[[d4,f4]@3 ~ [bb3,d4]@3 ~ [bb3,d4]@5 ~ [a3,d4]@11 ~@3 [d4,f4]@3 ~]/2",
  W: "[d4,f4]@5 ~ [bb3,d4]@2 [bb3,d4]@6 ~@2", X: "[a3,d4]@3 ~ [f4,a4]@3 ~",
  Y: "[[a3,c4]@3 ~ [f4,a4]@3 ~ [f4,a4]@5 ~ [f4,bb4]@8 ~@2 [c4,e4]@3 ~ bb3@3 ~]/2", Z: "[a3,f4]@3 ~@13",
  AA: "[[a3,c4,f4]@23 ~@9]/2", // F
})).s("gm_trombone").gain(0.51).pan(0.4)

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L K M N J O H P K C F J D A F Q F R H J@2 K M K L N J S B J K G B P J G J G J@2 K T J K M K M U
  P V D J W X Y
>`.pickRestart({
  A: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d5,f5,bb5] ~@3", // F Bb
  B: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  C: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  D: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3", // F Bb
  E: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d5,f5,bb5] ~@3", // F Bb
  F: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  G: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  H: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3", // F Bb
  I: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [e4,g4,bb4,c5] ~@3", // F C7
  J: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3", // F
  K: "[d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3 [d5,f5,bb5] ~@3", // Bb
  L: "[f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3", // Dm
  M: "[f4,a4,d5,f5] ~@3 [f4,a4,d5,f5] ~@3 [f4,a4,d5,f5] ~@3 [f4,a4,d5,f5] ~@3", // Dm
  N: "[bb4,d5,g5] ~@3 [bb4,d5,g5] ~@3 [c5,e5,a5] ~@3 [d5,f5,bb5] ~@3", // Gm Am Bb
  O: "[bb4,d5,g5] ~@3 [bb4,d5,g5] ~@3 [c4,e4,g4,a4] ~@3 [d5,f5,bb5] ~@3", // Gm Am7 Bb
  P: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3", // F
  Q: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  R: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [d5,f5,bb5] ~@3", // F Bb
  S: "[f4,g4,bb4,d5] ~@3 [f4,g4,bb4,d5] ~@3 [c5,e5,a5] ~@3 [d5,f5,bb5] ~@3", // Gm7 Am Bb
  T: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [d4,f4,bb4,d5] ~@3", // F Bb
  U: "[f4,g4,bb4,d5] ~@3 [f4,g4,bb4,d5] ~@3 [c4,e4,g4,a4] ~@3 [d5,f5,bb5] ~@3", // Gm7 Am7 Bb
  V: "[bb4,d5,g5] ~@3 [bb4,d5,g5] ~@3 [c5,e5,a5] ~@3 [d4,f4,bb4,d5] ~@3", // Gm Am Bb
  W: "[d4,f4,bb4,d5] ~@3 [d4,f4,bb4,d5] ~@3 [d4,f4,bb4,d5] ~@3 [d4,f4,bb4,d5] ~@3", // Bb
  X: "[f4,a4,f5] ~@3 [f4,a4,f5]@2 ~@2 [f4,f5]@2 ~@2 [f4,a4,f5]@2 ~@2, ~@8 a4 ~@7", // F
  Y: "[f4,a4] ~@7 [f5,a5,f6]@8, f5 ~@7", // F
})).s("gm_piano").gain(0.36).pan(0.8)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A B C D C B A B C E F G F G H I J B I F C B I B A B A D C D I@2 F G F G J E H D I F C D I@2 A I A I@2 F C I F G F G J
  I H B E F K L
>`.pickRestart({
  A: "~@4 [f4,c5] ~@11", B: "~@4 [f4,c5] ~@7 [d4,bb4] ~@3", C: "~@4 [a4,f5] ~@11", D: "~@4 [a4,f5] ~@7 [d4,bb4] ~@3",
  E: "~@4 [f4,c5] ~@7 [f4,c5] ~@3", F: "~@4 [d4,bb4] ~@7 [d4,bb4] ~@3", G: "~@4 [f4,d5] ~@7 [f4,d5] ~@3",
  H: "~@4 [bb3,g4] ~@11", I: "~@4 [a4,f5] ~@7 [a4,f5] ~@3", J: "~@4 [f4,bb4] ~@11", K: "~@4 [f4,f5] ~@7 [f4,f5] ~@3",
  L: "~ [f4,f5]", // F
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.3)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@10 A B A C D E F G C H ~@12 A C A C F E I J ~@14 H C H B K E L M C A N@2
>`.pickRestart({
  A: "f4", B: "[d5,f5]", C: "a4", D: "bb4@2 [a4,c5] [bb4,d5]", E: "[f5,a5]", F: "[g4,bb4]@2 [a4,c5] f4",
  G: "a4 [bb4,d5]", H: "[bb4,d5]", I: "[g4,bb4]@2 g4 f4", J: "[f5,a5] f4", K: "bb4@2 [a4,c5] f4",
  L: "[g4,bb4]@2 g4 [bb4,d5]", M: "[f5,a5] [bb4,d5]", N: "[~ a4@31, f5]/2",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.9)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note(`<
  ~@10 A ~ A B C ~ D C B ~@13 A B A B D ~ E F ~@15 B ~@2 G ~ H ~ B A ~@2
>`.pickRestart({
  A: "d5", B: "f5", C: "f5 ~", D: "~@3 d5", E: "~@2 c5 d5", F: "~ d5", G: "f5@2 ~ d5", H: "~@2 c5 ~",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.9)

// bass · fretless bass · "Bass"
const bass = note(`<
  A B C D E F G B H I J K L M N O P D I Q R B S B C T U B V B W@2 J K X K Y I Z D S Q E F O S G O E I S Q E S X M Q M P
  O AA D S X AB AC
>`.pickRestart({
  A: "f2@3 ~ f2@2 ~@2 f2@3 ~ bb1@3 ~", B: "f2 ~ f2 ~ bb1 ~ bb1 ~", C: "f2 ~ f2 ~ f2 ~ bb1 ~",
  D: "f2@3 ~ f2@2 ~@2 bb1@2 ~@2 bb1@2 ~@2", E: "f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 bb1@3 ~",
  F: "f2@3 ~ f2@2 ~@2 bb1@3 ~ bb1@2 ~@2", G: "f2@2 ~@2 f2@2 ~@2 f2@3 ~ bb1@2 ~@2",
  H: "f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 c2@3 ~", I: "f2@3 ~ f2@3 ~ f2@3 ~ f2@2 ~ c3",
  J: "bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~ f1", K: "d2@2 ~@2 d2@2 ~@2 d2@3 ~ d2@3 ~",
  L: "bb1 ~@2 bb1 f2@4 bb1@2 ~@2 bb1@4", M: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~ a1",
  N: "g2@2 ~@2 g2@2 ~@2 a1@3 ~ bb1@2 ~@2", O: "f2@2 ~@2 f2@2 ~@2 f2@3 ~ f2@3 ~", P: "g2 ~ g2 ~ a1 ~ bb1 ~",
  Q: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@2 ~ f2", R: "f2@3 ~ f2@2 ~@2 f2@2 ~@2 bb1@2 ~@2",
  S: "f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~ c2", T: "f2@2 ~@2 f2@2 ~@2 bb1@3 ~ bb1@2 ~@2",
  U: "f2@3 ~ f2@2 ~@2 f2@3 ~ bb1@2 ~@2", V: "f2@3 ~ f2@2 ~@2 f2@2 ~@2 bb1@3 ~", W: "f2 ~ f2 ~ f2 ~ f2 ~",
  X: "bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~ bb1@3 ~", Y: "g2@3 ~ g2@2 ~@2 a1@3 ~ bb1@2 ~@2",
  Z: "g2@3 ~ g2@2 ~@2 a1@2 ~@2 bb1@2 ~@2", AA: "g2@2 ~@2 g2@2 ~@2 a1@2 ~@2 bb1@3 ~",
  AB: "f2@3 ~ f2@3 ~ f2@2 ~@2 f2@2 ~ c2", AC: "f2 ~@2 f2 c2@3 ~ f2@7 ~",
})).s("gm_fretless_bass").gain(0.29).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  [x!4]!11
  [x ~@3 x ~@3 x ~@3 x ~@2 x]!8
  [x!4]!14
  [x ~@3 x ~@3 x ~@3 x ~@2 x]!6
  [x!4]!16
  [x ~@3 x ~@3 x ~@3 x ~@2 x]!8
  [x!4]!2
  [x!3 ~]
>`).gain(0.64)

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

// drums · hihat
const hihat = s("hh").struct("<[x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!65 [x ~@2 x!2 ~@2 x!2 ~@7]>").gain(0.56)

// drums · crash
const crash = s("cr").struct("<A ~@3 A ~@5 A ~@13 A ~@7 A ~@7 A ~@9 A ~@14 B>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@10 [~ x ~ x]!10 ~@12 [~ x ~ x]!8 ~@14 [~ x ~ x]!11 [~ x!2 ~]>").gain(0.64)

stack(
  trombone, piano, electric_guitar_clean, string_ensemble_1, string_ensemble_1_soft, bass, kick, snare, hihat, crash,
  tambourine
)

More by The Supremes