Strudelify

Where Are You Now

Britney Spears

KeyA majorTempo60 bpm
0:00/0:00
// Where Are You Now — Britney Spears
// 60 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 16 "Staff-8" cello (copy of ch 13 "Staff-5" epiano2)
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · "Staff-4"
const epiano2 = note(`<
  A B C D E F G H I@5 J K L M N O P Q R B C D E F G H I@5 J K L M N O P Q ~@3 S T U V W X Y Z AA AB AC AD AE AF Y Z AA
  AB AC AD AE AG
>`.pickRestart({
  A: "~@15 a4", B: "[e4,a4]@2 a4 [e4,b4]@2 [e4,c#5]@2 [f#4,a4,c#5]@2 b4 [c#4,f#4,a4]@5 ~",
  C: "[c#4,e4,a4]@2 g#4 [c#4,e4,a4]@3 e5 [f#4,a4,e5]@3 d5 [f#4,a4,d5]@4 c#5", // A F#m7 D
  D: "[f#4,a4,d5]@2 c#5 [f#4,a4,d5]@2 e5@2 [e4,a4,b4]@8 a4", // D Esus4
  E: "[e4,g#4]@2 a4 [e4,a4,b4]@2 [e4,b4,c#5]@2 [e4,a4,c#5]@8 a4", // E Esus4 C#m7 A
  F: "[e4,b4]@2 a4 [e4,b4]@2 [e4,c#5]@2 [f#4,a4,c#5]@8 ~", // E5 C#m F#m
  G: "[e4,g#4,c#5]@2 g#4 [c#4,e4,a4]@3 e5 [f#4,a4,e5]@3 d5 [f#4,a4,d5]@4 c#5", // C#m A F#m7 D
  H: "[f#4,a4,d5]@2 c#5 [f#4,a4,d5]@2 e5@2 [e4,a4,b4]@8 ~", // D Esus4
  I: "[[e4,g#4]@3 [e4,a4]@3 [e4,b4] a4 [g#4,b4,e5]@3 ~ [g#4,b4,e5]@3 [a4,c#5,e5]@2 c#5@3 a4@3 a4 [f#4,a4,d5]@2 e5 [f#4,a4,d5]@2 c#5@2 [e4,a4,b4]@3 g#4@2 f#4@2 e4@2 [e4,b4,e5]@3 ~ [e4,b4,e5]@3 [a4,c#5,e5]@2 c#5 b4 [c#4,a4]@4 a4 [f#4,a4,d5]@2 e5 [f#4,a4,d5]@2 c#5@2 d4@4 ~ e4@3 ~ d4@3 ~ a3@2 b3@2, ~@63 b4@12 ~@5]/5", // E A5 E5 E A D Esus4 E5 …
  J: "[g#3,g#4]@3 [a3,a4]@3 [e4,e5]@2 [e4,a4,c#5]@7 ~", K: "[c#4,e4,g#4]@3 [c#4,e4,a4]@3 [e4,e5]@2 [e4,a4,c#5]@7 ~",
  L: "[c#4,e4,g#4]@3 [c#4,e4,a4]@3 [e4,e5]@2 [f#4,a4,d5]@7 a4", // C#m A E D
  M: "[f#4,a4,c#5]@3 f#4 f#4@2 [e4,e5]@2 [e4,a4,b4]@7 ~, ~@3 [a4,d5]@3 ~@10", // F#m E Esus4 D5
  N: "[b4,e5,a5]@3 [b4,d5,g#5]@2 [b4,f#5]@2 [a4,c#5,e5]@8 a4", // Esus4 G#dim B5 A
  O: "[f4,g#4,c#5]@2 d5 [f4,g#4,c#5]@2 b4@2 [c#4,f#4,a4]@8 ~", P: "[a3,d4,f4]@3 e4@3 d4@2 [c#4,e4,a4]@7 a4",
  Q: "[d4,f#4,a4,c#5]@2 d5 [e4,g#4,c#5]@2 [e4,g#4,b4]@2 [c#4,e4,a4]@8 ~", R: "a4@2 a4 b4@2 c#5@2 [e4,a4,c#5]@8 a4",
  S: "~@8 [f#3,b3,c#4]@2 f#4 f#4@3 [b4,c#5]@2", T: "[f#4,a#4,c#5]@2 c#5 [f#4,b4,d#5]@3 [c#5,e5] [b4,d#5,f#5]@8 d#5",
  U: "[a#4,d#5,g5]@2 g5 [b4,g#5]@3 [c#5,a#5] [g#5,b5]@3 g#5@5 ~, ~@7 d#5@8 ~", // D# E F# G#m
  V: "[b4,g5]@3 [a4,f#5]@3 [g4,e5]@2 [b4,d#5,f#5]@7 ~", // Em D C B
  W: "[g#4,b4,d#5]@2 e5 [f#4,a#4,d#5]@3 c#5@2 d#5 c#5 b4@5 ~, ~@8 [d#4,f#4]@7 ~", // G#m D#m
  X: "[b3,b4]@3 [c4,c5]@3 [g4,g5]@2 [g4,c5,e5]@7 ~", Y: "[e4,g4,b4]@3 [e4,g4,c5]@3 [g4,g5]@2 [g4,c5,e5]@7 ~",
  Z: "[e4,g4,b4]@3 [e4,g4,c5]@3 [g4,g5]@2 [a4,c5,f5]@7 c5", // Em C G F
  AA: "[a4,c5,e5]@3 a4 a4@2 [g4,g5]@2 [g4,c5,d5]@7 ~, ~@3 [c5,f5]@3 ~@10", // Am G Gsus4 F5
  AB: "[d5,g5,c6]@3 [d5,f5,b5]@2 [d5,a5]@2 [c5,e5,g5]@8 c5", AC: "[g#4,b4,e5]@2 f5 [g#4,b4,e5]@2 d5@2 [e4,a4,c5]@8 ~",
  AD: "[c4,f4,a4]@3 g4@3 f4@2 [e4,g4,c5]@7 c5", AE: "[f4,a4,c5,e5]@2 f5 [g4,b4,e5]@2 [g4,b4,d5]@2 [e4,g4,c5]@8 ~",
  AF: "[g4,b4]@3 [g4,c5]@3 [g4,d5,g5]@2 [g4,c5,e5]@7 ~", AG: "[g4,b4]@3 [g4,c5]@3 [g4,d5,g5]@2 ~@8",
})).s("gm_epiano2").gain(0.4)

// other · epiano2 · "Staff-5"
const epiano2_2 = note("<A B C D E B C D F G H I J@6 K@8 B C D F G H I J@6 L@8 M N O@2 P Q@4 R S@7 ~@3>".pickRestart({
  A: "~@8 a2@7 ~", B: "g#2@7 ~ f#2@7 ~", C: "e2@7 ~ d2@7 ~", D: "b2@7 ~ e2@7 ~", E: "e2@3 f#2@3 g#2@2 a2@7 ~",
  F: "e2@3 f#2@3 g#2@2 c#3@7 ~", G: "f#2@7 ~ b2@7 ~", H: "e2@7 ~ g#2@7 ~", I: "a2@7 ~ d2@7 ~",
  J: "[~@24 a2@7 ~ g#2@7 ~ f#2@7 ~ e2@7 ~ d2@7 ~ b2@7 ~ e2@7 ~ e2@3 f#2@3 g#2@2 a2@7 ~, f2]/6",
  K: "[~@8 f#2@7 ~ d2@3 a2 d3@2 d2@2 a2@7 ~ d2@3 ~ e2@3 ~ a2@7 ~@9 a2@7 ~ g#2@7 ~ f#2@7 ~ e2@7 ~ d2@7 ~ b2@7 ~ e2@7 ~ e2@3 f#2@3 g#2@2 a2@7 ~, f2]/8",
  L: "[~@8 f#2@7 ~ d2@3 a2 d3@2 d2@2 a2@7 ~ d2@3 ~ e2@3 ~ a2@7 ~@65 f#2@3 g#2@3 a#2@2 b2@7 ~, f2]/8",
  M: "g2@7 ~ g#2@7 ~", N: "e2@7 ~ b2@7 ~", O: "[e2@3 ~ f#2@3 ~ b2@15 ~ c3@7 ~]/2", P: "b2@7 ~ a2@7 ~",
  Q: "[g2@7 ~@9 d3@7 ~ g2@7 ~ g2@3 a2@3 b2@2 c3@7 ~ g#2@7 ~ a2@7 ~, ~ f2@7]/4", R: "~@3 c3 f3@2 ~@2 c3@7 ~, f2@3 f2@5",
  S: "[~@4 g2@3 ~ c3@7 ~ g2@3 a2@3 b2@2 c3@7 ~ b2@7 ~ a2@7 ~ g2@7 ~@9 d3@7 ~ g2@7 ~ g2@3 a2@3 ~@26, f2 f2]/7",
})).s("gm_epiano2").gain(0.48)

// other · epiano2 · "Staff-5" · soft notes
const epiano2_soft = note("<~@62 A B C@2 D>".pickRestart({
  A: "~@6 b2@2 c3@7 ~", B: "g#2@7 ~ a2@7 ~", C: "[~@3 c3 f3@2 ~@2 c3@7 ~@5 g2@3 ~ c3@7 ~, f2@19 ~@13]/2",
  D: "g2@3 a2@3 b2@2 ~@8",
})).s("gm_epiano2").gain(0.24)

// chords · piano · "Staff-7"
const piano = note(`<
  A B C D E B C D F G H G I A J K L M N O P A B C D E B C D F G H G I A J K L M N O P ~@25
>`.pickRestart({
  A: "~@8 [e4,a4,c#5]@7 ~", B: "[e4,a4]@7 ~ [f#4,a4,c#5]@7 ~", C: "[c#4,e4,a4]@7 ~ [f#4,a4,e5]@7 ~",
  D: "[f#4,a4,d5]@7 ~ [e4,a4,b4]@7 ~", E: "[e4,g#4]@7 ~ [e4,a4,c#5]@7 ~", F: "[e4,g#4]@7 ~ [g#4,b4,e5]@7 ~",
  G: "[a4,c#5,e5]@7 ~ [f#4,a4,d5]@7 ~", H: "[e4,a4,b4]@7 ~ [e4,b4,e5]@7 ~", I: "[d4,b4]@7 ~@9",
  J: "[c#4,e4,g#4]@7 ~ [e4,a4,c#5]@7 ~", K: "[c#4,e4,g#4]@7 ~ [f#4,a4,d5]@7 ~", L: "[f#4,a4,c#5]@7 ~ [e4,a4,b4]@7 ~",
  M: "[b4,e5,a5]@7 ~ [a4,c#5,e5]@7 ~", N: "[f4,g#4,c#5]@7 ~ [c#4,f#4,a4]@7 ~", O: "[a3,d4,f4]@7 ~ [c#4,e4,a4]@7 ~",
  P: "[d4,f#4,a4,c#5]@3 ~ [e4,g#4,c#5]@3 ~ [c#4,e4,a4]@7 ~", // Dmaj7 C#m A
})).s("gm_piano").gain(0.32)

// chords · acoustic guitar steel · "Staff-7" · B D#m G#5 G#m B G#m F#sus4 Bsus2 …
const acoustic_guitar_steel = note(`<
  ~@42
  [b3@2 b3 c#4@3 d#4 [f#3,b3,d#4]@6 ~ a#4 b4]
  [[d#4,f#4,a#4]@5 ~ a#4 g#4 [g#3,d#4] b3 ~ a#3 [g#3,b3]@3 ~]
  [[b3,d#4,f#4]@2 f#4 g#4 [b3,d#4,f#4]@2 e4 d#4 e4 d#4 e4 b4@4 ~, ~@8 [g#3,b3]@7 ~]
  [e4@2 d#4 e4 c#4@2 c#4 d#4 [f#3,b3,c#4]@2 f#4 f#4@3 [b4,c#5]@2, [g#3,b3]@7 ~@9]
  ~@21
>`).s("gm_acoustic_guitar_steel").gain(0.48)

// chords · acoustic guitar nylon · "Staff-7"
const acoustic_guitar_nylon = note("<~@46 A B C D E F G H I J K L M F G N ~@5>".pickRestart({
  A: "[f#4,a#4,c#5]@7 ~ [b4,d#5,f#5]@7 ~", B: "[a#4,d#5,g5]@7 ~ [d#5,g#5,b5]@7 ~", C: "[b4,g5]@7 ~ [b4,d#5,f#5]@7 ~",
  D: "[g#4,b4,d#5]@3 ~ [f#4,a#4,d#5]@3 ~ [d#4,f#4,d#5]@7 ~", E: "~@8 [g4,c5,e5]@7 ~",
  F: "[e4,g4,b4]@7 ~ [g4,c5,e5]@7 ~", G: "[e4,g4,b4]@7 ~ [a4,c5,f5]@7 ~", H: "[a4,c5,e5]@7 ~ [g4,c5,d5]@7 ~",
  I: "[d5,g5,c6]@7 ~ [c5,e5,g5]@7 ~", J: "[g#4,b4,e5]@7 ~ [e4,a4,c5]@7 ~", K: "[c4,f4,a4]@7 ~ [e4,g4,c5]@7 ~",
  L: "[f4,a4,c5,e5]@3 ~ [g4,b4,e5]@3 ~ [e4,g4,c5]@7 ~", M: "[g4,b4]@7 ~ [g4,c5,e5]@7 ~", N: "[a4,c5,e5]@7 ~@9",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · acoustic guitar nylon · "Staff-7" · soft notes · Gsus4 Csus2 C E Am F C Fmaj7 …
const acoustic_guitar_nylon_2 = note(`<
  ~@61
  [~@8 [g4,c5,d5]@7 ~]
  [[d5,g5,c6]@7 ~ [c5,e5,g5]@7 ~]
  [[g#4,b4,e5]@7 ~ [e4,a4,c5]@7 ~]
  [[c4,f4,a4]@7 ~ [e4,g4,c5]@7 ~]
  [[f4,a4,c5,e5]@3 ~ [g4,b4,e5]@3 ~ [e4,g4,c5]@7 ~]
  [[g4,b4]@7 ~@9]
>`).s("gm_acoustic_guitar_nylon").gain(0.08)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B C B C B C B C B C B C B C B@2 C B C B C B C B C B C B C B C B C B C@2 B C B C B C B A B C B C B C B C
  B C B ~@5
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x!2 ~@2 x ~@3",
})).gain(0.2)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@62 [x!2 ~@2 x ~@3] [x!2] [x!2 ~@2 x ~@3] [x!2] [x!2 ~@6]>").gain(0.05)

// drums · snare
const snare = s("sd").struct("<[~@3 x] [~ x ~ x]!48 [~ x ~@2] [~@3 x] [~ x ~ x]!10 [~ x ~@2] ~@5>").gain(0.2)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@61 [~@3 x] [~ x ~ x]!4 [~ x ~@2]>").gain(0.05)

// drums · open hat
const open_hat = s("oh").struct("<[~@2 x!2] [x!4]!48 [x!3 ~] [~@2 x!2] [x!4]!11 ~@5>").gain(0.2)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@62 [x!4]!4 [x!2 ~@2]>").gain(0.05)

stack(
  epiano2, epiano2_2, epiano2_soft, piano, acoustic_guitar_steel, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick,
  kick_soft, snare, snare_soft, open_hat, open_hat_soft
)

More by Britney Spears