Strudelify

There She Goes

Sixpence None the Richer

KeyB♭ majorTempo119 bpm
0:00/0:00
// There She Goes — Sixpence None the Richer
// 119 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(119/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 · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B@8 C D C D E F@2 B@4 C D C D E G H@2 I F@2 C D E F@2 B@4 C D C D E J K L M N@2 O@2 P Q R S F@2 B@4 C D C D E T@2
  U@4 V@2 ~
>`.pickRestart({
  A: "[[f3,bb3,f4]!2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 bb4@14]/2", // Bb5 F5 Ebsus2 F
  B: "[[eb3,bb3,f4]!2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 bb4@14]/2", // Ebsus2 Bb5 F5 Ebsus2 F
  C: "[eb3,bb3,f4]!2 [c4,eb4]@3 ~ [g3,c4,g4]@2 [g3,c4,g4]!2 [bb3,f4]@2 [bb3,f4]@2 [bb3,f4]@2, ~@2 c3@7 ~ bb2@6", // Ebsus2 Cm C5 Bb5
  D: "[bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~ bb4@7", // Bb5 Ebsus2
  E: "[eb3,bb3,f4]!2 ~@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2", // Ebsus2 F5
  F: "[[f3,c4,f4]@2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 bb4@14]/2", // F5 Bb5 F5 Ebsus2 F
  G: "[f3,c4,f4] [bb2,f3,bb3,f4]@7", H: "[~@14 bb3@7 ~ bb3@3 ~ a3@2 a3@2 a3@2]/2", I: "a3 g3!4 f3 [f3,c4,f4]!2",
  J: "[f3,c4,f4]@2 [g3,bb3,f4]@3 ~ [g3,bb3,f4]@2 [g3,bb3,f4]@3 ~ [g3,bb3,f4]@2 [g3,bb3,f4]@2", // F5 Gm7
  K: "[g3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2", // Gm7 Ebsus2
  L: "[eb3,bb3,f4]@2 [g3,bb3,f4]@3 ~ [g3,bb3,f4]@2 [g3,bb3,f4]@3 ~ [g3,bb3,f4]@2 [g3,bb3,f4]@2", // Ebsus2 Gm7
  M: "[g3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [f3,c4,f4]@3 ~ [f3,c4,f4]@2", // Gm7 Ebsus2 F5
  N: "[~@2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [f3,c4,f4]@2 [f3,c4,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 bb4@14]/2", // Bb5 F5 Ebsus2 F5 F
  O: "[[f3,c4,f4]!2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 bb4@14]/2", // F5 Bb5 F5 Ebsus2 F
  P: "[eb3,bb3,f4]!2 [c4,eb4]@3 ~ [g3,c4,g4]@2 [g3,c4,g4]!2 [c4,eb4]@3 ~ [g3,c4,g4]@2, ~@2 c3@7 ~ c3@6", // Ebsus2 Cm C5 Cm C5
  Q: "[g3,c4,g4]!2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2, ~@2 g2@7 ~ g2@6", // C5 Bb
  R: "[bb3,d4]@2 [bb3,eb4]@3 ~ [g3,bb3,g4]@2 [g3,bb3,g4]!2 [bb3,eb4]@3 ~ [g3,bb3,g4]@2", // Bb Eb5 Gm Eb5 Gm
  S: "[g3,bb3,g4]!2 ~@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2", // Gm F5
  T: "[[f3,c4,f4]@2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 eb3@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 ~@14]/2", // F5 Bb5 F5 Ebsus2 F
  U: "[[eb3,bb3,f4]!2 [f3,bb3,f4]@3 ~ [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 [f3,c4,f4]!2 eb3@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@2 [eb3,bb3,f4]@3 ~ [eb3,bb3,f4]@2 [eb3,bb3,f4]@2, ~@2 bb2@7 ~ [c3,a4]@8 ~@14]/2", // Ebsus2 Bb5 F5 Ebsus2 F
  V: "[[eb3,bb3,f4] ~ [eb3,bb3,f4] [bb2,f3,bb3,f4]@28 ~]/2", // Ebsus2 Bb5
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A B C ~ A B C ~ D@2 E@2 F G@4 H@2 E@4 F I@5 J K L M N O P O P O Q R S L M T@5 U V W X Y Z@2 N O P O P O Q R S L M
  N AA N AA N AA AB@3
>`.pickRestart({
  A: "~ [f3,f4] [f3,f4,bb4] [f3,f4,a4] [f3,f4] [f3,f4,c5] [f3,f4,bb4] [f3,f4,a4]", B: "[f3,f4,bb4] [f3,f4]!7, ~ bb4@7",
  C: "[f3,f4] ~@7", D: "[~ c4@2 bb3@2 bb4@2 bb3@2 eb4@2 bb3!3 g3 bb3]/2",
  E: "[bb3 c4@2 bb3@2 bb4@2 bb3@2 eb4@2 bb3!3 g3 bb3]/2", F: "bb3 ~ f4!6",
  G: "[f4 f4@2 bb4@2 f4 a4 f4@2 eb4 bb3 f4 bb4@2 f4@2]/2", H: "[f4 f4@2 bb4@2 f4 a4 f4@2 eb4 bb3 f4 bb4 d4@3]/2",
  I: "[~@32 f4 bb4 f4 c5 f4 a4 f4 bb4, f4@2 f4@2 f4@2 f4@2 f4 g4 f4 g4 f4 g4@11 f4 g4 f4 g4 f4 g4@4 ~@7, ~ bb4@6 bb4@7 f4 bb4 f4 bb4@5 f4 bb4@10 ~@7, ~@3 c5@15 f4 c5@14 ~@7, ~@5 a4@15 f4 a4@9 f4 a4@2 ~@7]/5",
  J: "f4 g4 f4 g4 f4 g4 f4 bb4", K: "f4 g4 bb4@2 c5@2 bb4 g4", L: "f4 g4 bb4@2 g4 bb4@2 g4",
  M: "bb4 g4 a4 [a4,c5]!4 [g4,c5], ~ c5@2 ~@5", N: "[f4,c5] bb4 f4 c5 f4 a4 f4 bb4", O: "f4 g4 f4 g4 f4 g4 f4 g4",
  P: "f4 bb4 f4 c5 f4 a4 f4 bb4", Q: "f4 g4 bb4@2 c5@2 f4!2", R: "g4@2 bb4@2 c5@2 f4!2", S: "g4@2 bb4@2 c5@2 bb4 g4",
  T: "[[f4,c5] bb3@4 a3@4 g3@4 f3@4 bb2@8 g3@4 a3@2 a3@2 [f4,bb4]!4 [f4,a4]!3]/5", U: "[f4,a4] [eb4,bb4]!4 [f4,a4]!3",
  V: "[f4,a4] [f4,bb4]!4 [f4,a4]!3", W: "[f4,a4] [eb4,bb4]!7", X: "[eb4,bb4] g4 c5!6", Y: "bb4 g4 c5!2 bb4 c5!2 bb4",
  Z: "[g4@3 f4 g4@3 g4@2 g4 a4 [a4,c5]!4 [g4,c5], ~@9 c5@2 ~@5]/2", AA: "f4 g4 a4 [a4,c5]!4 [g4,c5], ~ c5@2 ~@5",
  AB: "[[f4,c5]@3 [bb3,f4,bb4]@32 ~@13]/3", // F5 Bb5
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.3)

// chords · electric guitar jazz
const electric_guitar_jazz_2 = note(`<
  ~@2 A B C ~ A B C ~@5 D E F G F G F H@4 I J K L M L K N O P Q F G F G F H@4 I R@5 S@2 T U V W@2 Q F G F G F H@4 I X Y
  G Y G Z AA@3
>`.pickRestart({
  A: "~ f4 [f4,bb4] [f4,a4] f4 [f4,c5] [f4,bb4] [f4,a4]", B: "[f4,bb4] f4!7, ~ bb4@7", C: "f4 ~@7", D: "~@2 [c4,a4]!6",
  E: "[c4,bb4] [bb3,f4]@2 [bb3,bb4] bb3 [c4,f4] [c4,a4] [c4,f4]", // C7 Bb5 Bb F5 F F5
  F: "c4 [bb3,eb4] bb3 [bb3,f4] [bb3,bb4]@2 [bb3,f4] bb3", // Eb5 Bb5 Bb Bb5
  G: "[bb3,f4] [bb3,f4]@2 [bb3,bb4] bb3 [c4,f4] [c4,a4] [c4,f4]", // Bb5 Bb F5 F F5
  H: "[[bb3,f4] eb4@4 d4@4 [bb3,eb4] bb3 [bb3,f4] [bb3,bb4]@2 [bb3,f4] bb3]/2", I: "[bb3,f4] ~ [c4,a4]!6",
  J: "[c4,bb4] bb4 f4 c5 f4 a4 f4 bb4", K: "f4 g4 f4 g4 f4 g4 f4 bb4", L: "f4 bb4 f4 c5 f4 a4 f4 bb4",
  M: "f4 g4 f4 g4 f4 g4 f4 a4", N: "f4 g4 bb4@2 c5@2 bb4 g4", O: "f4 g4 bb4@2 g4 bb4@2 g4", P: "bb4 [a4,c5]!6 [g4,c5]",
  Q: "[f4,c5] [bb3,f4]@2 [bb3,bb4] bb3 [c4,f4] [c4,a4] [c4,f4]", // F5 Bb5 Bb F5 F F5
  R: "[[c4,a4] f4@4 a4@4 [f4,bb4]@8 [bb3,f4]@8 [bb3,g4]@4 [c4,f4]@2 [c4,a4]@2 bb3!4 c4!3]/5", S: "c4 bb3!4 c4!3",
  T: "c4 [eb3,bb3] [f3,bb3] [g3,bb3] [a3,bb3] bb3 [bb3,c4] [bb3,d4]", U: "[bb3,eb4] g4 c5!6, ~ [c4,eb4]@7",
  V: "bb4 g4 c5!2 bb4 c5!2 bb4, ~ [bb3,d4]@7", // Bb
  W: "[~@3 f4 g4@3 g4@2 [a4,c5]!6 [g4,c5], g4@3 ~@13, ~@2 [bb3,eb4]@15 ~@15]/2", // Am C5 Eb5
  X: "[c4,a4] [bb3,f4]@2 [bb3,bb4] bb3 [c4,f4] [c4,a4] [c4,f4]", Y: "c4 eb4 bb3 [bb3,f4] [bb3,bb4]@2 [bb3,f4] bb3",
  Z: "c4 eb4 bb3 [bb3,f4] [bb3,bb4]@2 bb3!2, ~@3 f4", AA: "[[bb3,f4]@3 [f3,d4]@32 ~@13]/3",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.8)

// bass · electric bass finger
const bass = note(`<
  ~@14 A B C D C D E F G F H I J@3 K L E F G M B C D C D E F G F H I N O P Q R Q R S T U V W L C D C D E F G F H I B X D
  X D X Y@2 ~
>`.pickRestart({
  A: "~@2 f2!6", B: "f1@2 bb1@5 ~ bb1@2 f2@5 ~", C: "bb1@2 eb2@5 ~ eb2@2 eb2@2 a1@3 ~", D: "a1@2 bb1@5 ~ bb1@2 f2@5 ~",
  E: "bb1@2 eb2@5 ~ eb2@2 eb2@2 d2@3 ~", F: "d2@2 c2@5 ~ g1@2 bb1@5 ~", G: "f1@2 eb2@5 ~ eb2@2 eb2@2 bb1@2 eb2@2",
  H: "f1@2 eb2@5 ~ eb2@2 eb2@2 d2@2 c2@2", I: "bb1 ~ f2!6", J: "[f1@2 bb1@31 ~@15]/3", K: "~@6 f2!2",
  L: "f2@2 bb1@5 ~ bb1@2 f2@5 ~", M: "d2 ~ f2!6", N: "f2 g2@7", O: "~ eb2@7", P: "~@2 g2@11 ~ bb2@2",
  Q: "~@2 eb2@7 ~ f2@3 ~ a1@2", R: "~@2 bb1@5 ~ bb1@2 f2@3 ~ d2@2", S: "~ eb2 f2 g2 [eb2,a2] [eb2,bb2] [d2,c3] [d2,d3]",
  T: "[d2,eb3] c2 c3 c2!5", U: "bb1 g1!7", V: "bb1 eb2!7", W: "eb2 ~ f2 a2 bb2 c3 f3 c3", X: "bb1 ~ eb2!4 a1!2",
  Y: "[a1@3 bb1@28 ~]/2",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@30 A B C B ~ A B A B A B C B C B ~ D ~ D ~ A E A F G H I J A B A B A B C B C B ~ A B A B A B ~@3
>`.pickRestart({
  A: "~@2 [f3,bb3,f4] ~@5", B: "~@5 [eb3,bb3,f4] ~@2", C: "~ g3 [g3,c4] ~@5", D: "~ d4@7", E: "~@5 [f3,c4,f4] ~@2",
  F: "~@3 g3 a3 [eb3,bb3,f4] c4 d4", G: "~ g3 [g3,c4] ~@2 g3 [g3,c4] ~", H: "~@2 [g3,g4]!3 ~ [g3,g4]!2",
  I: "[g3,g4] [g3,c4]!2 c4!2 [g3,c4]!2 c4", J: "c4 ~@7",
})).s("gm_overdriven_guitar").gain(0.16)

// other · electric guitar jazz
const electric_guitar_jazz_3 = note("<~@36 A B C ~ C ~@8 D E F ~@7 G F G F G F ~@5 A B A B ~@4>".pickRestart({
  A: "~@3 g4 f4 g4 f4 d4", B: "f4", C: "~@3 g4 f4 g4 f4@2", D: "~@10 f4@3 ~ eb4@2", E: "d4@2 d4@3 ~@5 f4@3 ~ eb4@2",
  F: "d4@2 d4@3 ~@11", G: "~@4 f4!2 eb4!2",
})).s("gm_electric_guitar_jazz").gain(0.32)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B C B C B C B C B C A D E ~ F B C B C A B C B C B C B C B C A D G@2 H I@2 J K L M@2 N B C B C B C B C B C A B N
  B N B N O ~@2
>`.pickRestart({
  A: "x!8", B: "x!2 ~@3 x ~@2", C: "x!2 ~@4 x ~", D: "x!2 ~@6", E: "~@7 x", F: "~@6 x!2", G: "~ x ~@6",
  H: "~ x ~@3 x ~ x", I: "~ x ~@2 x!2 ~ x", J: "~ x ~@2 x!2 ~@2", K: "~ x ~@2 x ~ x!2", L: "x!2 ~@3 x!2 ~",
  M: "~ x ~@3 x!2 ~", N: "~ x!7", O: "x ~@2 x ~@12",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@54 x ~@20 x ~@2>").gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@53 [~@4 x ~ x!2] ~@24>").gain(0.4)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@14 A ~@10 A ~@3 B ~@4 A ~@10 A ~@11 A ~@10 A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~@3 x",
})).gain(0.2)

// drums · ride bell
const ride_bell = s("rd").struct("<~@27 [~@7 x] ~@19 [~ x ~@6] ~@30>").gain(0.4)

stack(
  acoustic_guitar_steel, electric_guitar_jazz, electric_guitar_jazz_2, bass, overdriven_guitar, electric_guitar_jazz_3,
  kick, snare, low_tom, open_hat, mid_tom, crash, crash_soft, ride_bell
)

More by Sixpence None the Richer