Strudelify
KeyG majorTempo111 bpm
0:00/0:00
// Slide — Goo Goo Dolls
// 111 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(111/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric guitar jazz · "Guitar1"
const electric_guitar_jazz = note(`<
  A B A B C D E@2 C D E F G@2 H@2 I@2 J D@2 I@2 J D@2 C D E@2 C D E K G@2 H@2 I@2 J D@2 I@2 J D@2 C D I L C D M@2 I@2 J
  D@2 I@2 J D@2 C D I L C D M N G@2 O@2 I@2 J D@2 I@2 J D@2 I@2 J D@2 A B A P@2
>`.pickRestart({
  A: "~@2 g4@2 d5@2 g4 ~@2 a4@2 d5@2 a4 d4@2", B: "~@2 g4@2 d5@2 g4 ~@2 g4 d5@2 ~@2 d5@2",
  C: "[e3,b3,e4]@2 [e3,b3,e4]@2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]@2", // E5 Em7
  D: "[d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5] [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5] [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2", // D
  E: "[c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5] [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5] [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2", // C
  F: "[c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 ~@2 a4 d5@2 a4 d4@2", // C
  G: "[[c4,e4,g4,d5,e5]@23 ~@3 a4 d5@2 a4 d4@2]/2", // C
  H: "[[c4,e4,g4,d5,e5]@23 ~ [d4,a4,d5,f#5]@3 ~ [d4,a4,d5,f#5]@3 ~]/2", // C D
  I: "[c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5] [g3,b3,d4,g4,d5,g5]@2", // C G
  J: "[c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5]@2 [g3,b3,d4,g4,d5,g5]!3", // C G
  K: "[c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [c4,e4,g4,d5,g5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5] [d4,a4,d5,f#5]@3 [d4,a4,d5,f#5]@2", // C D
  L: "[c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5] [d4,a4,d5,f#5]@2", // C D
  M: "[c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2", // C
  N: "[c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 ~@2 a4 d5@2 a4 d4@2", // C
  O: "[[c4,e4,g4,d5,e5]@31 ~]/2", P: "[~@2 g4@2 d5@2 g4 [g3,b3,d4,g4,d5,g5]@25]/2",
})).s("gm_electric_guitar_jazz").gain(0.72)

// other · electric guitar jazz · "Guitar2"
const electric_guitar_jazz_2 = note("<A B A B ~@7 C ~ C ~@21 C ~@37 C ~ C ~ D ~@15 A B A E ~>".pickRestart({
  A: "e4@7 d4@8 ~", B: "c4@7 g3@4 ~ f#3@3 ~", C: "~@8 d4@7 ~", D: "~@12 [c5,c6]@3 ~", E: "c4@7 ~@9",
})).s("gm_electric_guitar_jazz").gain(0.72)

// bass · electric bass finger · "Staff-1"
const bass = note(`<
  ~@12 A@2 B@2 C@3 D@2 C@3 D@2 E D F@2 E D F G A@2 B@2 C@3 D@2 H@3 D@2 I J K L I J F M H@3 D@2 H@3 D@2 I J K L I J F N
  A@4 H@3 D@2 H@3 D@2 H@3 D@2 A@2 ~@3
>`.pickRestart({
  A: "[c2@31 ~]/2", B: "[c2@23 ~ d2@3 ~ d2@3 ~]/2", C: "c2@3 ~ c2@2 c2 g1@3 ~ g1@2 g1 g1@2",
  D: "d2@3 ~ d2@3 d2@3 d2@2 d2@2 d2@2", E: "e1@3 ~ e1@3 e1@3 e1@2 e1@2 e1@2", F: "c2@3 ~ c2@3 c2@3 c2@2 c2@2 c2@2",
  G: "c2@3 ~ c2@3 c2@3 d2@2 d2@2 d2@2", H: "c2@3 ~ c2@3 g1@4 ~ g1@2 g1@2", I: "e1@15 ~", J: "d2@15 ~",
  K: "c2@7 ~ g1@7 ~", L: "c2@7 ~ d2@7 ~", M: "c2@3 ~ c2@3 c2@3 c3@2 c3@2 c3@2", N: "c2@3 ~ c2@3 ~ d2@7 ~",
})).s("gm_electric_bass_finger").gain(0.72)

// other · church organ · "Staff-2"
const church_organ = note("<~@56 A@2 B C@2 ~@37>".pickRestart({
  A: "[g6@23 ~ b6@3 a6@2 e6@3]/2", B: "g6@2 a6@2 g6@11 ~", C: "[d6@31 ~]/2",
})).s("gm_church_organ").gain(0.72)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@77 [~@2 x!7 ~@7] ~@20>").gain(0.46)

// drums · china
const china = s("cr").struct(`<
  ~@3 A B@12 C@4 D C@4 D C@8 B@4 C@4 D C@4 D C@3 D C@3 D C@3 D@2 C@4 D C@3 D C@3 D B@3 E C@4 D C@4 D C@4 D B@3 F ~
>`.pickRestart({
  A: "~@14 x!2", B: "x!16", C: "x!8", D: "x!5 ~ x!2", E: "x ~@3 x!3 ~", F: "x!8 ~@8",
})).gain(0.46)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 A@11 B ~@18 C@3 D ~@36 C@3 ~@16 C@3 E ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@3 x ~@2", C: "x!4", D: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2", E: "x ~@3 x ~@2 x ~@8",
})).gain(0.46)

stack(electric_guitar_jazz, electric_guitar_jazz_2, bass, church_organ, kick, snare, mid_tom, china, ride_bell)

More by Goo Goo Dolls