Strudelify
Someday (I'm Coming Back) cover art

Someday (I'm Coming Back)

Stansfield Lisa

KeyD majorTempo128 bpm
0:00/0:00
// Someday (I'm Coming Back) — Stansfield Lisa
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 168 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J K L M N G H I J K L M N G H I J K L M F G H I J K L M F G H I J K L M F G H
  I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K
  L M F G H I J K O P F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L M F G H I J K L ~
>`.pickRestart({
  A: "e2/2", B: "[a1@7 a1]/2", C: "[d2@7 d2]/2", D: "[c2@7 ~]/2", E: "[e2@15 e2]/2",
  F: "e1@3 ~ e1@2 ~@2 e1@2 d1@2 e1@2 g1@2", G: "e1 ~ e1@2 ~@4 e1@2 d1@2 e1@2 g1@2", H: "a1 ~ a1 ~ a1 g1 a1 c2",
  I: "a1!2 ~@2 a1 g1 c2 a1", J: "d2 ~ d2 ~ d2 a1 c2 d2", K: "~ d2 ~ d2 ~ d2 ~ d2", L: "g2 ~ g2 ~ g2 g1 a1 c2",
  M: "~ g1 a1 c2 ~ a1 c2 d2", N: "e1 ~ e1 ~ e1 d1 e1 g1", O: "g1 ~ g1 ~@2 g1 a1 c2", P: "~ g1 a1 c2 g1 a1 c2 d2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  A@2 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4
  B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 B@4 D@4 B@4 E ~
>`.pickRestart({
  A: "[b3,d4]/2", B: "[c4@31 ~ d4@32, a3@63 ~]/4", C: "[e4 d4, b3]/4", D: "[~ d4, [b3,e4]@5 ~@3]/4", E: "[b3,e4]",
})).s("gm_pad_warm").gain(0.22)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@16 A@4 B@2 C@2 ~@32 A@4 B@2 C@2 ~@2 D@2 E@2 F@2 G@2 H@2 I@2 J K ~@8 G@2 H@2 I@2 J K L@4 I@2 M@6 I@2 G@2 A@4 B@2 C@2
  A@4 B@2 N@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 J ~
>`.pickRestart({
  A: "g5/4", B: "f#5/2", C: "e5/2", D: "e4/2", E: "a4/2", F: "g4/2", G: "[b4@31 ~]/2", H: "[c5@3 e5]/2", I: "d5/2",
  J: "e5", K: "g5", L: "[~@4 b5@8 g5@8 a5@7 e5@37]/4", M: "[b4@36 b5@8 g5@8 a5@7 e5@37]/6", N: "[~ g6, [b3,e5,e6]]/2",
})).s("gm_string_ensemble_2").gain(0.25)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@16 A@2 B@4 C@2 ~@32 A@2 B@4 C@2 ~@48 D@2 E@4 F@2 D@2 E@4 F@2 D@2 E@4 F@2 D@2 E@4 F@2 D@2 E@4 F@2 D@2 E@4 F@2 D@2 E@4
  G ~
>`.pickRestart({
  A: "[b4,d5,g5]/2", B: "[c5 [d5,f#5], a4]/4", C: "[b4,e5,g5]/2", D: "[b4,d5]/2", E: "[c5 d5, a4]/4", F: "[b4,e5]/2",
  G: "[b4,e5]", // E5
})).s("gm_percussive_organ").gain(0.12)

// other · alto sax
const alto_sax = note(`<
  ~@16 A@2 B@2 C D E@2 ~@32 A@2 B@2 C D F G@2 ~@46 H@2 I J K L M N@2 O P ~ Q R ~@2 S@2 T@2 ~@3 U@2 ~ V W X ~ Y Z AA A@2
  B@2 C D F AB@3 B@2 C D F AC A@2 B@2 C D F ~
>`.pickRestart({
  A: "[~@4 a4@11 ~]/2", B: "[~@6 e4 ~ b4@3 [b4,c5] a4@20]/2", C: "~@6 a4 ~ b4@6 d5 ~", D: "a4@6 b4 ~ d4@6 d4 ~",
  E: "[~ e4 e4@26 ~@4, d4 ~@15]/2", F: "d4@2 e4 e4@13", G: "[g4@2 a4@4 c5@2 b4@4 e4 ~ e4@6 ~@12]/2",
  H: "[~@6 g4 ~ b4@4 g4@2 e4@9 ~ b3@2 d4@2 e4@2 g4@2]/2", I: "~@2 f#4@4 e4@6 e4 d#4 d4 ~", J: "~@3 e4 g4@2 a4 c5",
  K: "~ b4 a4 g4@3 d5@2", L: "a4@6 g4@2 a4@5 ~ b4 ~", M: "f4 e4 d4 ~ e4 ~ d4@5 ~ e4 ~@3",
  N: "[~@2 d4@2 e4 ~ g4 ~ a4@2 g4 ~@3 g5@12 e5 ~ b4 a4 g4@2, ~@30 b4 ~]/2", O: "e4@15 ~", P: "~@12 a4@2 g4 ~",
  Q: "~@3 d5", R: "a4@5 a4 g4@2 a4@2 a4@2 ~@4, ~@6 b4 ~@9", S: "[~@6 a4 ~ b4@4 a4 ~ g4@5 ~@13]/2",
  T: "[~@12 g4 ~ g4@6 ~@12]/2", U: "[b4@2 d5 ~ e5 ~ g5@12 ~@2 a4@2 b4 g4 a4@2 g4@4 ~@2]/2",
  V: "~@6 e5@4 d5 b4 d5 b4 a4 b4", W: "a4 ~@3", X: "g4@6 e4 c4 a3@2 ~@6", Y: "g4!2 ~@2 g4 ~ g4!2 ~ g4!2 ~ g4@2 a4 ~",
  Z: "e4 g4 ~ g4!2 ~ g4!2 ~ g4!2 ~ e4@2 ~ [g4,b4]", AA: "g4 [g4,b4]!2 b4 [g4,b4] ~ b4@10",
  AB: "[g4@2 a4@4 c5@2 b4@4 e4 ~ e4@10 a4@22 ~@2]/3", AC: "g4@15 ~",
})).s("gm_alto_sax").gain(0.35)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A@2 B@2 C@2 D E F@4 C@2 G@2 H@2 I J K@2 L@2 ~@16 M N O J P Q L@2 M R S@2 T@2 U@2 H@2 I J K@2 L@2 M N O J P Q L@2 M R
  S@2 T@2 U@2 M N O J P Q L@2 M R S@2 T@2 U@2 M N O J P Q L@2 M V W@2 T@2 X@2 Y Z@2 AA AB AC AD@2 AE AF AG AA AB AC AH@2
  M R S@2 T@2 X@2 M R W@2 T@2 U@2 M AI S@2 T@2 U@2 M AI S@2 T@2 U@2 M AI S@2 T@2 AJ ~
>`.pickRestart({
  A: "[[b3,d4,e4]@21 ~ [b3,d4]@3 ~ [b3,e4]@6]/2", B: "[[a3,c4,e4]@20 ~@6 g4@5 ~, ~@22 [a3,c4,e4]@9 ~]/2",
  C: "[[d4,f#4]@25 ~ [d4,f#4]@6]/2", D: "[b3,e4,g4]@15 b4", E: "~ [b3,e4]@7 [b3,g4]@4 [b3,e4]@4, g4 ~@7",
  F: "[[b3,d4,e4]@24 ~@2 [b3,g4]@6 [a3,c4]@20 ~@6 g4@5 ~, ~@26 e4@12 ~@16 [a3,c4,e4]@9 ~]/4", // E7 Em Am
  G: "[[b3,e4,g4,b4]@13 ~@5 g4@14, ~@7 [b3,e4]@9]/2", // Em E5
  H: "[[e4,g4]@19 ~ d4 ~ [d4,e4,g4]@3 ~ g4@3 ~ g4@2, ~@13 [d4,e4]@3]/2", I: "[c4,e4]@7 ~",
  J: "~@6 [e4,g4]@3 ~ [e4,g4]@5 ~", K: "[[d4,f#4]@21 ~ [d4,f#4,a4]@4 [d4,f#4,a4]@4 ~@2]/2",
  L: "[[e4,g4,b4]@12 ~@2 [g4,b4]@7 ~ [e4,g4]@4 [e4,g4]@5 ~, ~@12 e4@9 ~@11]/2", M: "[e4,g4]@3 ~",
  N: "~@4 d4 ~ [d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4]@6", O: "[c4,e4]@7 ~, a4 ~", P: "[d4,f#4]",
  Q: "~@3 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~", R: "~@4 d4 ~ [d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4]@6, ~@3 a3@4 ~",
  S: "[[a3,a4]@9 ~ a3@9 ~@3 [e4,g4]@3 ~ [a3,e4,g4]@6, [c4,e4]@7 ~@9]/2", // A Em A7 C
  T: "[~@10 a3@12 [d4,f#4,a4]@4 [a3,d4,f#4,a4]@5 ~, [d4,f#4] ~]/2", // D
  U: "[[e4,g4,b4]@12 ~@2 [g4,b4]@7 ~ [e4,g4]@4 [e4,g4]@4 ~@2, ~@12 e4@9 ~@11]/2", // Em G Em
  V: "~@6 [d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4]@6, ~@6 a3@9 ~", // Em7
  W: "[[a3,a4]@9 ~ a3@8 ~@4 [e4,g4]@3 ~ [a3,e4,g4]@6, [c4,e4]@7 ~@9]/2", // A Em A7 C
  X: "[[e4,g4,b4]@12 ~@2 [g4,b4]@7 ~ [e4,g4]@3 ~ [e4,g4]@4 ~@2, ~@12 e4@9 ~@11]/2", // Em G Em
  Y: "[e4,g4,b4] ~ [e4,g4,b4]@2 ~@2 [e4,g4,b4]@5 ~ [e4,g4] ~ [e4,g4]@2", // Em
  Z: "[~@2 [e4,g4]@3 ~@5 [e4,g4,b4]@3 ~ [e4,b4]@2 [e4,c5] ~ [e4,g4,c5]@2 ~@2 [e4,g4,c5]@5 ~ [e4,g4] ~ [e4,g4]@2, ~@7 g4@2 ~@7]/2", // Em E5 C Em
  AA: "~@4 c5@3 ~ [e4,g4,c5] ~ [e4,g4,c5]@4 ~@2, ~@2 [e4,g4]@5 ~@9", // C Em
  AB: "[d4,f#4,a4] ~ [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@5 ~ [d4,f#4,g4] ~ [d4,f#4,a4]@2", // D Gmaj7 D
  AC: "~@2 [d4,f#4,a4]@6 [d4,f#4,a4] ~ [d4,f#4,a4]@4 ~@2", // D
  AD: "[[b3,e4,g4] ~ [b3,e4,g4]@3 ~ [e4,g4]@6 b3 ~ [b3,e4]@5 ~@3 g4@2 ~@2 [b3,e4,g4]@4 ~@2, ~@6 b3@5 ~@3 g4@6 [b3,e4]@4 ~@8]/2", // Em E5 Em E5
  AE: "[b3,e4,g4] ~ [b3,e4,g4] ~@3 [b3,e4,g4] ~ [b3,d4,g4] ~@2 [b3,e4,g4] ~@2 [b3,e4,g4] ~", // Em G Em
  AF: "~@2 [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4]@4 [b3,e4,g4]@3 ~@3", // Em
  AG: "[e4,g4,c5] ~ [e4,g4,c5]@2 ~@2 [e4,g4,c5]@5 ~ [e4,g4] ~ [e4,g4]@2", AH: "[[b3,e4,g4]@3 ~]/2",
  AI: "~@4 d4 ~ [d4,e4,g4,b4]@3 ~ [d4,e4,g4,b4]@6, ~@6 a3@9 ~", AJ: "[e4,g4,b4]@6 ~ [g4,b4], ~@3 e4",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@16 A@8 B@16 A@40 B@32 A@14 ~ C A@31 D A@7 ~>".pickRestart({
  A: "x!2", B: "x!4", C: "~ x", D: "x ~@3 x!3 ~",
})).gain(0.35)

// drums · clap
const clap = s("cp").struct("<~@16 A@15 B A@47 B A@46 ~ A@40 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~",
})).gain(0.3)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@15 A ~@23 B ~@15 C ~@7 D ~@15 E ~@15 F ~@7 G ~@7 F ~@7 H ~@7 D ~@7 H ~@7 H ~@7 H ~@7 I ~@8
>`.pickRestart({
  A: "~@4 x!5 ~ x ~@5", B: "~@10 x!2 ~@4", C: "~@3 x ~@3 x", D: "~@3 x ~@4 x!2 ~@2 x ~@3", E: "~@5 x ~@2",
  F: "~@3 x ~ x ~@2", G: "~@11 x ~@4", H: "~@3 x", I: "~@12 x ~@2 x",
})).gain(0.15)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B A B A B A C A B A B A B A B A B A B A B A C A B A B A B A D A B A B A B A C A B A B A B A C A B A B A B A B A
  B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A E A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A E A B A B A B A B A B A B A B A ~
>`.pickRestart({
  A: "x ~ x!3 ~ x ~", B: "x!5 ~ x!2", C: "x ~ x ~ x ~ x!4 ~@2 x ~@3", D: "x ~ x ~ x ~ x!4 ~@2 x!4",
  E: "x ~ x ~ x ~@3 x!2 ~@2 x ~@3",
})).gain(0.2)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@8 A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B A B A B A B A
  B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B A B A B C ~ A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B C ~ A B A B A B A B A B A B A B A ~
>`.pickRestart({
  A: "~ x ~@3 x ~ x", B: "~@5 x ~@2", C: "~ x ~@3 x ~@2",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@111 [~@3 x ~@12] ~@7 [~@5 x ~@2] ~@15 [~@5 x ~@2] ~@32>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@15 A ~@15 A ~@7 B ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@6 C D ~@38 C D ~@16
>`.pickRestart({
  A: "~@5 x ~ x", B: "~@5 x ~@2", C: "~@7 x", D: "~@3 x ~ x ~ x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@23 A ~@15 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7
>`.pickRestart({
  A: "x",
})).gain(0.3)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@8 A@15 B ~@16 A@7 C A@7 C A@7 B A@7 D A@7 C A@7 D A@7 C A@7 D A@6 E ~ A@7 B A@6 ~ E A@7 B A@6 E ~ A@14 E ~ A@6 E ~
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@6 x ~@5 x!4", C: "~@6 x ~@5 x!3 ~", D: "~@6 x ~@2 x!2 ~ x!3 ~", E: "~@3 x ~@4",
})).gain(0.65)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@8 A@16 ~@16 A@31 B A@15 B A@15 B A@6 C D A@14 ~ E A@14 F G A@14 F G A@6 F ~
>`.pickRestart({
  A: "~@2 x!2 ~@12", B: "x!4 ~@4 x ~@7", C: "~@2 x!2 ~@8 x ~@3", D: "~ x ~@6", E: "~@2 x!2 ~@8 x!4",
  F: "~@2 x!2 ~@8 x ~ x!2", G: "x!2 ~@6",
})).gain(1.11)

// drums · congas
const congas_2 = s("conga:18").struct("<~@8 A@16 ~@16 A@71 ~ A@14 ~ A@16 B A@15 B A@7 ~>".pickRestart({
  A: "~@5 x ~@2", B: "~@6 x!3 ~@3 x ~@3",
})).gain(1.11)

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

// drums · ht
const ht = s("ht").struct("<~@110 [~@14 x!2] [x!2 ~@4 x!3 ~ x ~ x ~ x ~] ~@31 [~@7 x] ~@15 [~@14 x!2] ~@8>").gain(0.25)

stack(
  bass, pad_warm, string_ensemble_2, percussive_organ, alto_sax, piano, kick, clap, snare, snare_soft, hihat,
  hihat_soft, mid_tom, open_hat, crash, bongos, congas, congas_2, congas_3, ht
)

More by Stansfield Lisa