Strudelify
Home cover art

Sheryl Crow

Home

Crow Sheryl

KeyD minorTempo88 bpm
0:00/0:00
// Home — Crow Sheryl
// 88 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 piano (copy of ch 2 piano, 0.108 beats late)
// note: Full arrangement: all 204 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass
const bass = note(`<
  A@2 B@2 C@2 D@2 E F G H I F G H J@2 K@2 J@2 K@2 L@2 M@2 N@2 O@2 E P Q R@2 S T U V@2 W@2 X Y Z@2 AA@2 AB@2 AC AD AE AF
  AG AH AI@2 AJ@2 AK@2 AL@2 AM@2 AN@2 AO@2 AP@2 AQ@2 AR@2 AO@2 AS@2 O@2 I AT AU@2 AV AW AX AY AZ@2 BA@2 BB@2 BC@2 BD@2
  BE@2 BF@4 BG@2 BH BI BJ BK BL BM BN BO BP BQ BR BS BT@2 ~@80
>`.pickRestart({
  A: "[g1@6 ~ d1@9]/2", B: "[g1@4 g1@3 d1@7 d1@2]/2", C: "[g1@4 g1 g1@2 d1@5 d1@2 d1@2]/2",
  D: "[g1@4 g1!2 ~ d1@6 d1!3]/2", E: "g1@3 g1", F: "d1", G: "bb1@7 ~", H: "c2", I: "g1", J: "[g1@7 d1@9]/2",
  K: "[bb1@7 c2@9]/2", L: "[g1@5 g1@2 ~@6 d2!2 ~, ~@7 d1@9]/2", M: "[g1@2 g1@2 g1 g1@2 d1@7 f1 g1]/2",
  N: "[g1@4 g1!2 ~@7 d2!2 ~, ~@7 d1@9]/2", O: "[g1@4 g1 g1@2 d1@6 d1!3]/2", P: "d1@3 d1", Q: "bb1 ~",
  R: "[c2@5 c2@2 c2@2 ~@2 g1@3 g1@2]/2", S: "d1@3 d1@5", T: "bb1@3 ~@3 bb1@2", U: "c2@3 c2@5",
  V: "[g1@7 d1@5 d1 d1@3]/2", W: "[bb1@6 ~ c2@7 c2@2, ~@7 b1 ~@8]/2", X: "g1@5 g1@2 ~", Y: "d1@5 d1 d1@2, e1 ~@7",
  Z: "[bb1@6 bb1 c2@5 ~ c2!2 ~]/2", AA: "[g1@4 g1!2 ~ d1@9]/2", AB: "[g1@3 ~ g1!2 ~ d1@7 g1 ~]/2", AC: "bb1@3 ~",
  AD: "c2@7 ~", AE: "f1@3 f1@2 f1 f1@2", AF: "g1@3 g1!5", AG: "c1@3 c1@2 c1!3", AH: "bb1@3 bb1 ~@2 bb1!2", AI: "d2!8",
  AJ: "[g1@5 g1!2 d1@6 d1 d1@2]/2", AK: "[~ bb1@5 ~ c2@7 [bb1,c2] ~, ~ db2 ~@14]/2",
  AL: "[g1@5 g1!2 d1@7 d1@2, ~@7 e1 ~@8]/2", AM: "[bb1@2 bb1@4 ~ c2@8 bb1]/2", AN: "[g1@5 g1 ~ d1@6 d1 d1@2]/2",
  AO: "[g1@4 g1 f1 g1 d1@6 d1!3]/2", AP: "[g1@4 g1 f1 g1 d1@7 d1@2]/2", AQ: "[g1@4 g1 g1@2 d1@3 d1@3 ~ d1!2]/2",
  AR: "[g1@7 d1@6 d1!3]/2", AS: "[g1@4 g1 g1@2 d1@3 d1@3 d1!3]/2", AT: "d1@5 [d1,e1] d1@2",
  AU: "[bb1@5 ~ bb1@3 c2@4 c2 c2@2]/2", AV: "~@3 g1@2 g1 g1@2", AW: "d1@3 d1@2 d1 d1@2", AX: "bb1@3 bb1@2 bb1 bb1@2",
  AY: "c1@3 c1@2 c1 c1@2", AZ: "[g1@4 g1 g1@2 d1@3 d1@2 d1 d1@3]/2", BA: "[bb1@5 bb1 ~ c1@2 c1 c1@2 c1!4]/2",
  BB: "[g1@4 g1 g1@2 d1@2 ~ d1@2 [c1,d1] d1@2 d1]/2", BC: "[bb1@4 bb1!2 ~ c2@5 ~ c2 ~ c2]/2",
  BD: "[g1@12 g1@2 ~ g1@6 d2@18 d2@2 ~ d2@2 ~ d2@3]/2", BE: "[g1@11 ~ g1@2 ~ g1@6 d2@16 ~@5 d2@2 ~ d2@3]/2",
  BF: "[g1@11 ~ g1@2 ~ g1@6 d2@16 ~@2 d2@2 ~ d2@2 ~ d2@3]/2", BG: "[g1@10 ~@5 g1@3 g1@3 ~@2 d2@19 d2@6]/2",
  BH: "bb1@5 ~ bb1@2", BI: "c2@5 c2!3", BJ: "g1@15 g1@5 ~ g1@3", BK: "d2@14 ~ d2@6 d2@3", BL: "~@9 bb1@2 ~",
  BM: "c2@3 c2@2 ~ c2@2", BN: "g1@5 g1 g1@2", BO: "d2@14 ~@4 d2@2 ~ d2@3", BP: "~@18 bb1@2 ~ bb1@3",
  BQ: "c2@11 ~ c2@2 ~ c2@2 ~ c2@6", BR: "g1@15 g1@2 ~ g1@6", BS: "d2@13 ~@2 d2@2 ~ d2@2 ~ d2@3",
  BT: "[bb1@15 ~@3 bb1@3 c2@22 ~@5]/2",
})).s("gm_fretless_bass").gain(0.48).pan(0.4)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  ~@34 A B@2 ~ C ~@18 D ~@4 E F ~@2 E ~@8 G ~@10 H ~@7 E ~@4 I ~@3 J ~@4 K ~ H ~@2 L@2 M ~ J N ~@3 O ~@81
>`.pickRestart({
  A: "~@4 bb1@3 ~", B: "[~@23 g1@9 ~@16]/2", C: "~@3 bb1@2 bb1 ~@2", D: "~@4 bb1!2 ~@2", E: "~@6 bb1 ~", F: "~@7 bb1",
  G: "~@5 d1 ~@2", H: "~@5 bb1 ~@2", I: "~@4 c2 ~@3", J: "~@15 d2@2 ~@7", K: "~@6 g1 ~@5",
  L: "[~@22 bb1@15 ~@2 bb1@3 ~@6]/2", M: "~@5 c2 ~@2", N: "bb1@13 ~@2 bb1@2 ~@7", O: "~@15 bb1@2 ~@7",
})).s("gm_fretless_bass").gain(0.24).pan(0.4)

// chords · piano
const piano = note(`<
  A@2 B@2 C@2 D@2 E F G H I F J K I L M@2 I N O@2 A@2 B@2 C@2 D@2 I F G H I F J K I L M@2 I N O@2 P@2 Q@2 R S T U V W@2
  X Y@2 Z@2 AA@2 AB@4 AC@2 AD@2 AE@2 A@2 B@2 C@2 AF@2 E F G H I F J K I L M@2 I N O@2 A@2 B@2 C@2 D@2 I F G H I F J K I
  L M@2 I N O@2 ~@80
>`.pickRestart({
  A: "[[d3,g3,b3]@10 ~@2 [d3,g3]@3 [e3,g3]@3 ~@3 [d3,a3]@22 ~@5, ~@12 b3@6 ~@3 f3@19 ~@8]/2", // G G5 Em D5
  B: "[[d3,g3,b3]@10 ~@2 d3@3 e3@3 ~@3 a3@18 ~@6 f3@2 ~, ~@12 [g3,b3]@6 ~@3 d3@25 ~@2, ~@21 f3@16 ~@2 f3@5 ~@4, ~@42 a3@5 ~]/2", // G
  C: "[[d3,g3,b3]@10 ~@2 d3@3 e3@3 ~@3 f3@22 ~@5, ~@12 b3@9 a3@16 ~@11, ~@12 g3@6 ~@3 d3@19 ~@8]/2", // G
  D: "[[d3,g3,b3]@10 ~@2 [d3,g3]@3 e3@3 ~@3 f3@18 ~@6 a3@2 ~, ~@12 b3@6 ~@3 a3@21 f3@5 ~, ~@21 d3@16 ~@2 d3@6 ~@3]/2", // G G5
  E: "[d3,g3,b3]@5 ~", F: "[d3,f3,a3]@3 ~", G: "[bb2,d3,f3]@3 ~", H: "g3@7 ~, e3@3 ~, c3@2 ~", I: "[d3,g3,b3]@19 ~@5",
  J: "[bb2,d3,f3]@19 ~@5", K: "[c3,e3,g3]@19 ~@5", L: "[d3,f3,a3]@19 ~@5",
  M: "[[bb2,d3,f3]@18 ~@3 [c3,e3,g3]@15 g3@5 ~ c3@5 ~]/2", N: "[d3,f3,a3]@15 d3@2 ~ [d3,f3,a3]@3 ~@3",
  O: "[[bb2,d3,f3]@17 ~@4 [c3,e3,g3]@21 ~@6]/2", // Bb C
  P: "[[d3,g3,b3]@10 ~@2 d3@3 e3@4 ~@2 [d3,f3,a3]@24 ~@3, ~@12 [g3,b3]@7 ~@2 b3 ~@26]/2", // G Dm G
  Q: "[[d3,g3,b3]@10 ~@2 [d3,g3]@3 e3@3 ~@3 [d3,f3,a3]@17 ~ [f3,a3]@2 ~ [d3,f3,a3]@2 ~@4, ~@2 b3 ~@5, ~@15 g3 ~@23 d3 ~@8]/2", // G G5 Dm F Dm
  R: "[bb2,d3,f3]@6 [bb2,d3,f3] ~", S: "[c3,e3,g3]@9 [c3,e3,g3]@8 ~ [c3,e3,g3]@4 ~@2", T: "[c3,f3,a3]@9 [c3,f3,a3]@2 ~",
  U: "[d3,g3,b3]@17 ~ [d3,g3,b3]@4 ~@2", V: "[c3,e3,g3]@8 ~ [c3,e3,g3] ~@2",
  W: "[[bb2,d3,f3]@15 [bb2,d3,f3] ~@2 [bb2,d3,f3]@3 ~@3 [f3,a3]@9 [d3,f3,a3]@8 ~ [d3,f3,a3]@5 ~, ~@23 d3@9 ~@16]/2", // Bb F Dm
  X: "d3@3 f3@3 a3@2 ~ f3@5 d3@6 ~@4, ~@4 d3@3 ~@5",
  Y: "[[d3,g3,b3]@18 ~@3 f3@18 ~@3 f3@4 ~@2, ~@7 a3@7 ~@2, ~@21 d3@17 ~ d3@7 ~@2]/2", // G
  Z: "[[d3,f3]@17 ~@4 [c3,g3]@20 ~ [c3,e3,g3]@4 ~@2, bb2@14 ~@7 e3@18 ~@9]/2", // Dm C5 C
  AA: "[~ d3@15 ~@5 d3@18 ~@3 f3@4 ~@2, [g3,b3]@19 ~@2 a3@22 ~@5, ~@21 f3@20 ~@7, ~@39 d3@7 ~@2]/2", // G
  AB: "[d3@17 ~@4 [c3,e3,g3]@19 ~@2 e3@4 ~@2 [d3,g3]@11 ~ [d3,g3]@3 [e3,g3]@3 ~@3 [f3,a3]@18 ~@3 a3@5 ~, f3@14 ~@27 [c3,g3]@4 ~@2 b3@11 ~@2 b3@6 ~@3 d3@23 ~@4, ~@87 f3@5 ~@4]/4", // C G5 Em F C5
  AC: "[[d3,g3,b3]@10 ~@2 [d3,g3]@2 ~ [e3,g3]@3 ~@3 [d3,f3,a3]@17 ~ a3@2 ~ f3@3 a3 ~@2, ~@12 b3@6 ~@21 d3@7 ~@2]/2", // G G5 Em Dm
  AD: "[[d3,g3,b3]@10 ~@2 [d3,g3,b3]@3 [e3,g3,b3]@3 ~@3 [d3,a3]@20 ~@4 f3@2 ~, ~@21 f3@17 ~@4 d3@4 ~@2, ~@11 a3]/2", // G Em D5
  AE: "[[d3,g3,b3]@10 ~@2 [d3,g3,b3]@3 [e3,b3]@3 ~@3 [d3,f3,a3]@17 ~ a3@3 f3@3 a3 ~@2, ~@15 g3 ~@23 d3@6 ~@3, ~@39 f3 ~@8]/2", // G E5 Dm
  AF: "[[g3,b3]@11 ~ [d3,g3]@3 e3@3 ~@3 f3@18 ~@6 a3@2 ~, d3@9 ~@3 b3@6 ~@3 a3@21 f3@5 ~, ~@21 d3@16 ~@2 d3@6 ~@3]/2", // G G5
})).s("gm_piano").gain(0.27).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  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 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 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 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 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 B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~@3 x!2 ~ x", B: "~ x ~@3 x ~ x",
})).gain(0.4).pan(0.4)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "~@23 x",
})).gain(0.08).pan(0.4)

// drums · snare
const snare = s("sd").struct("~ x ~ x").gain(0.4).pan(0.4)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(0.08).pan(0.4)

stack(bass, bass_soft, piano, kick, kick_soft, snare, clap)

More by Crow Sheryl