Strudelify
Seven Days cover art

1997 · Share My World

Seven Days

Mary J. Blige

KeyG♯ minorTempo123 bpm
0:00/0:00
// Seven Days — Mary J. Blige
// 123 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 172 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · epiano2 · "E. Piano"
const epiano2 = note(`<
  ~@10 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 A@2 B@2 C@2 F@2 G@2 B@2 C@2 H@2
  G@2 B@2 C@2 H@2 G@2 B@2 C@2 H@2 G@2 B@2 C@2 H@2 G@2 B@2 C@2 I@2 G@2 B@2 C@2 J@2 G@2 B@2 C@2 I@2 G@2 B@2 C@2 J@2 G@2
  B@2 C@2 H@2 G@2 B@2 C@2 H@2 G@2 B@2 C@2 H@2 G@2 B@2 C@2 H@2 G@2 K@2 ~@14
>`.pickRestart({
  A: "[~@6 [f#3,b3,d#4]@11 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@10, g#2@27 ~@5]/2", // B
  B: "[~@6 [e3,g#3,b3,d#4]@11 ~ [e3,g#3,b3,d#4] ~@3 [g#3,b3,d#4]@10, c#2@31 ~, ~@22 e3@5 ~@5]/2", // Emaj7 G#m
  C: "[~@6 [e3,a3,b3,c#4]@11 ~ [e3,c#4]@2 ~@2 [e3,a3,b3,c#4]@10, a2@27 ~@5, ~@18 [a3,b3] ~@13]/2", // A C#m A Asus2
  D: "[~@6 [g#3,c4]@8 ~@2 [g#3,c4]@5 ~ [a#3,c#4]@5 ~ [c4,d#4]@4, g#2@13 ~ g#2@14 ~@4, ~@6 d#3@5 ~@5 d#3@15 ~]/2", // G# A#m Cm
  E: "[~@6 [g#3,c4]@8 ~@2 [d#3,g#3,c4]@15 ~, g#2@13 ~ g#2@14 ~@4, ~@6 d#3@5 ~@21]/2", // G#
  F: "[~@6 d#3@5 ~@3 g#2@18, g#2@13 ~@19, ~@3 [g#3,c4]@10 ~@3]/2", // G#
  G: "[~@6 [f#3,b3,d#4]@11 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@10, g#2@15 ~]/2", // B
  H: "[~@6 [g#3,c4]@8 ~@2 [g#3,c4]@5 ~ [a#3,c#4]@5 ~ [c4,d#4]@4, g#2@7 g#2@9, ~@6 d#3@5 ~@5 d#3@15 ~]/2", // G# A#m Cm
  I: "[~@6 [g#3,c4]@8 ~@2 [d#3,g#3,c4]@15 ~, g#2@7 g#2@9, ~@6 d#3@5 ~@21]/2", // G#
  J: "[~@6 d#3@5 ~@3 g#2@18, g#2@7 ~@9, ~@3 [g#3,c4]@10 ~@3]/2", // G#
  K: "[~@6 [e3,g#3,b3,d#4]@11 ~ [e3,b3] ~@3 b3@10, c#2@31 ~, ~@22 e3@5 ~@5]/2", // Emaj7 E5
})).s("gm_epiano2").gain(0.35)

// chords · epiano2 · "E. Piano" · soft notes
const epiano2_soft = note(`<
  ~@11 A ~ B ~@2 C ~@2 A ~ B ~@2 C ~@2 A ~ B ~@2 C ~@2 A ~ B ~@2 C ~@2 A ~ B ~@2 C ~@2 A ~ B ~@2 D@2 ~ E@5 C ~@2 E@5 C
  ~@2 E@5 C ~@2 E@5 C ~@2 E@5 C ~@2 E@5 D@2 ~ E@5 C ~@2 E@5 D@2 ~ E@5 C ~@2 E@5 C ~@2 E@5 C ~@2 E@5 C ~@2 F@5 G@2 H I@8
  ~
>`.pickRestart({
  A: "~@7 g#2", B: "~@3 e3", C: "~@12 d#3@3 ~", D: "[~@12 d#3@13 ~@7]/2", E: "[~@11 e3 ~@8, ~@7 g#2@33]/5",
  F: "[~@34 [g#3,d#4] ~@9 e3@4 ~@6 [e3,a3,b3,c#4]@11 ~ [e3,c#4]@2 ~@2 [e3,a3,b3,c#4]@10, ~@7 g#2@33, ~@38 [g#3,d#4]@10 a2@27 ~@5, ~@66 [a3,b3] ~@13]/5", // G#5 A C#m A G#5 Asus2
  G: "[~@6 d#3@5 ~ d#3@2 ~@2 [g#3,c4]@5 ~ [a#3,c#4]@5 ~ [c4,d#4]@4, g#2@7 g#2@9, ~@6 [g#3,c4]@8 ~@2 d#3@15 ~]/2", // G# A#m Cm G#
  H: "~@3 [f#3,b3,d#4]@5, g#2", I: "[~@2 [f#3,b3,d#4] ~@11 g#2@114, ~@3 [f#3,b3,d#4]@5 ~@56]/8",
})).s("gm_epiano2").gain(0.2)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A B C D E F G H I@2 J K L M N O G P Q R S T U V W X J K L M N O G P Q R S T U V W X Y Z AA AB AC AD AE AF Y Z AA AB AC
  AD AE AF J K L M N O G P Q R S T U V W X J K L M N O G P Q R S T U V W X Y Z AA AB AC AD AE AF Y Z AA AB AC AD AE AF Y
  Z AA AB AC AD AE AF Y Z AA AB AC AD AE AF J K L M N O G P Q R S T U V W X J K L M N O G P Q R S T U V W X J K L M N O
  G P Q R ~@8
>`.pickRestart({
  A: "g#1@7 d#2", B: "g#2@3 d#2", C: "c#2@7 d#2", D: "c#2@5 b1 c#2 b1", E: "a1@3 e2", F: "a2@6 e2@6 a1@3 ~", G: "g#1",
  H: "~@2 g#2@2 f#2@2 d#2@2 c#2@2 d#2@2 c#2@2 b1 ~", I: "[g#1@27 ~@5]/2", J: "g#1@13 ~ d#2@2",
  K: "g#2@2 f#2@2 ~@2 g#2@6 f#2@2 d#2 ~", L: "c#2@6 ~ d#2", M: "c#2 ~ c#2@2 ~@6 b1@2 c#2@2 b1 ~", N: "a1@6 ~ e2",
  O: "b2 ~ a2 e2 a1 e2 b1 a1", P: "~ g#2 f#2 d#2 c#2 d#2 c#2 b1", Q: "g#1@13 ~ f#1@2", R: "g#1!2 ~@4 d#2 d2",
  S: "c#2@4 ~ c#2 b1 c#2", T: "~ c#2 ~@3 b1 c#2 b1", U: "a1@13 ~ a1@2", V: "a2@2 a1@2 ~@6 a1@2 b1@2 a1 ~",
  W: "g#1@15 ~", X: "~@2 g#2@2 f#2@2 d#2@2 c#2@2 d#2@2 c#2 ~ b1@2", Y: "g#1@3 d#2 g#2@2 ~ f#2",
  Z: "~@4 g#2@3 ~ f#2@3 ~ d#2@2 d2 ~", AA: "c#2@8 c#3@6 c#2 ~", AB: "c#2@4 c#3@3 ~@3 b2@2 g#2@2 f#2@2",
  AC: "f#2@3 ~@5 b2@4 ~@2 f#2 ~", AD: "b1@2 ~@2 b2@6 a2@2 g#2@2 f#2 ~", AE: "g#1@4 g#2@3 g#1",
  AF: "c2@2 g#2 ~ g#2@2 c#2@2 g#2 ~ g#2@2 d#2@3 ~",
})).s("gm_acoustic_bass").gain(0.57)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A@4 B@2 C@4 ~@16 A@4 B@2 D@2 E@6 F@2 ~@32 A@4 B@2 D@2 E@6 F@2 ~@32 A@4 B@2 D@2 E@6 F@2 A@4 B@2 D@2 E@6 F@2 A@4 G@2
  ~@12
>`.pickRestart({
  A: "[[g#3,b3], f#3 ~]/4", B: "[[a3,c#4], b3@29 ~@3]/2", C: "[g#3@32 g#3@27 ~@5, c4@59 ~@5]/4", D: "[g#3,c4]/2",
  E: "[~ d#4 c#4, b3@47 ~, g#3@61 ~@3 a3@30 ~@2]/6", F: "[[g#3,c4]@15 ~]/2", G: "[c#4, b3@29 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.27)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note(`<
  ~@2 A@2 ~@24 A@2 ~@46 A@2 ~@46 A@2 ~@14 A@2 ~@14 A@2 B@2 C@2 D@2 E ~@7
>`.pickRestart({
  A: "d#4/2", B: "a3/2", C: "[g#3,c4]/2", D: "[g#3,b3]/2", E: "d#4 ~@15",
})).s("gm_string_ensemble_1").gain(0.05)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note("<A@6 B@2 ~@18 A@6 B@2 A@6 B@2 ~@32 A@6 B@2 A@6 B@2 ~@82>".pickRestart({
  A: "[~@12 b3@2 f#4@4 ~@2 b3@2 ~@6 b3@2 f#4@4 ~@2 b3@2 ~@6 b3@2 ~@6 b3@2 d#4@4 g#3@2 b3@6 ~@2 b3@2 ~ b3 ~@2 a3@2 b3@2 ~@4 a3@2 b3@2 ~@4 a3@2 b3@4, ~@2 a#3@6 ~@2 a#3@6 ~@2 a#3@7 ~ a#3@4 ~@4 g#3@7 ~ g#3@6 ~@2 g#3@4 ~@12 a3@5 ~@25, ~@4 b3@4 ~@62 c#4@5 ~@3 c#4@6 ~@2 c#4@6 ~@4, ~@3 f#4@3 ~@5 f#4@3 ~@5 d#4@3 ~ d#4@3 ~@22]/6",
  B: "[~@7 c4@2 ~@2 c4@4 ~, ~@2 g#3@7 ~ g#3@7 ~ g#3@5 ~@9, ~@4 a#3@5 ~@3 a#3@5 ~@3 a#3@6 ~@6, ~@3 c4@3 ~@10]/2",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.2)

// other · electric guitar jazz · "Solo Guit"
const electric_guitar_jazz = note(`<
  ~@124 A B C D E ~ F G H I J K L M N O P Q R S T ~ U V W X Y@2 ~ Z ~@18
>`.pickRestart({
  A: "~@5 d#4 ~@2", B: "g#4@6 d#4 f#4 ~ g#4 ~@6", C: "~@2 d#4 f#4 ~ g#4@2 f#4@2 f#4@2 ~ e4 ~ e4@2",
  D: "~ c#4@2 ~ c#4@9 ~@3", E: "~@2 c#4 d#4 ~@2 d#4@2 ~@8", F: "~@6 c#4 d#4@7 c#4@2",
  G: "~@2 b3@2 ~@2 g#3@5 ~ c#4@2 ~@2", H: "~@6 c#4 b3 d#4@3 c#4 b3 ~ d#4@2", I: "~ c#4 b3 d#4@3 ~ c#4 b3 d#4@4 ~@3",
  J: "~@10 c#4 ~ [c#4,d#4] ~ b3 c#4", K: "b3 g#3 ~ f#3 d#3 ~ f#3 d#3 c#3 d#3 c#3 ~ d#3 f#3 ~@2",
  L: "~@5 f#3 g#3!2 ~@2 g#3 ~ f#3 g#3 ~@2", M: "~ g#3@3 ~@12", N: "~@10 g#3@2 ~ g#3 ~ g#3", O: "b3@2 g#3 ~@11 c#4 b3",
  P: "~ c#4 d#4 ~ d#4@3 c#4 d#4 c#4 b3 ~ c#4 b3 ~@2, ~@4 c#4 ~@11", Q: "b3 ~ c#4 d#4 b3 ~ b3@2 ~@8",
  R: "~@10 b3 c#4@2 b3 ~@2", S: "~@10 f#3 [f#3,g#3] d#3@2 f#3@2", T: "g#3@6 f#3@2 g#3@2 f#3 ~ b3@2 ~@2",
  U: "~@14 d#4 ~", V: "~@2 d#4@2 f#4 ~ g#4@3 ~ g#4@4 f#4 d#4, ~@6 f#4 ~@9",
  W: "~ f#4 g#4 f#4 g#4@2 f#4 d#4 ~ f#4@5 ~@2", X: "~@6 d#4@4 c#4 d4 d#4 [c#4,d4] ~ c#4, ~@6 c#4 ~@9",
  Y: "[d#4@2 ~ c#4@2 c#4@2 b3 ~ b3@2 g#3 ~@2 g#3@7 f#3 g#3 b3 ~ g#3 f#3 g#3@2 f#3@2 ~]/2",
  Z: "~@6 f#3 ~ f#3@2 g#3 ~ g#3@2 f#3 ~",
})).s("gm_electric_guitar_jazz").gain(0.53).pan(0.4)

// other · electric guitar jazz · "Solo Guit" · soft notes
const electric_guitar_jazz_2 = note("<~@124 A ~@2 B C ~@7 D ~@3 B E ~@2 F@2 ~@3 G H ~@21>".pickRestart({
  A: "~@13 f#4@2 ~", B: "~@14 c#4 ~", C: "~@9 d#4@7", D: "~@15 f#3", E: "~@2 g#3 ~", F: "[~@7 g#3@4 ~@5]/2",
  G: "~@14 d#4 ~", H: "d4 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.23).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A B A@3 C A B A B A@3 C A B A B A@3 C A B A B A@3 C A B A D A C A C A B A D A C A C A B A B A@3 C A B A B A@3 C A
  B A B A@3 C A B A B A@3 C A B A D A C A C A B A D A C A C A B A D A C A C A B A D A C A C A B A B A@3 C A B A B A@3 C
  A B A B A@3 C A B A B A@3 C A B A B A@3 C A B A B ~@8
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "x!2 ~@6", D: "x!2 ~@4 x ~",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct("<~@10 [~ x]!154 ~@8>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@10 A B 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@7 B 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@7 B
  A@7 B ~@8
>`.pickRestart({
  A: "x!4", B: "x ~ x!3 ~ x ~",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13 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 ~@10
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(0.31)

// drums · tambourine
const tambourine = s("tb").struct("<~@10 [x!4]!154 ~@8>").gain(0.2)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@14 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A
  ~@13
>`.pickRestart({
  A: "~@7 x",
})).gain(2.01)

stack(
  epiano2, epiano2_soft, bass, string_ensemble_1, string_ensemble_1_soft, acoustic_guitar_steel, electric_guitar_jazz,
  electric_guitar_jazz_2, kick, snare, hihat, open_hat, tambourine, claves
)