0:00/0:00
// Broadway — Goo Goo Dolls
// 136 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 129 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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.
// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
A@6 B C D E F G F H I D E J A@2 K@4 L@2 A@2 M C A@2 K@4 L@2 N@4 M O P Q R S@2 B T M@2 U A@10 M C A@6 V C N@2 W X Y@2 Z
AA M AB P Q R S@2 B T M@2 U A@4 AC AD AE AD N@2 W X Y@2 Z AA AC AD AC AF AG AH@7 AI@3 ~ N@2 ~
>`.pickRestart({
A: "[[c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]!3 [c4,e4,g4,c5,e5]@3 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]!4]/2", // C
B: "f4@2 f4!6", C: "f4!2 f4@2 f4!4", D: "a3 g4 e5 c5 g3 g4 e5 c5", E: "f3 g4 e5 c5 g4 e5 c5 g4",
F: "c4 g4 e5 c5 g3 g4 e5 c5", G: "f3 g4 e5 c4!2 g4 e5 c5", H: "g3 g4 e5 c5 g4 e5 c5 g4",
I: "e5 c5 g4 e5 c5 g4 [c5,e5] g4", J: "d4 a4 e5 c5 f4 g4 e5 c5",
K: "[[c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]!3 ~@3 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]!4, f4 f4, ~@7 [c4,e4,g4,c5,e5]@3 ~@6]/2", // C
L: "[[c4,e4,f4,g4,c5,e5]@2 [c4,e4,f4,g4,c5,e5]@2 [c4,e4,f4,g4,c5,e5]!3 f4 f4!4 [c4,e4,f4,g4,c5,e5]!3 [c4,e4,g4,c5,e5], ~@7 [c4,e4,g4,c5,e5]@3 [c4,e4,g4,c5,e5]@2 ~@4]/2", // C
M: "f4@2 f4@2 f4!4", N: "f4", O: "f4!7 ~",
P: "[c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]!2 [g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5] [f3,c4,f4,a4,c5,e5]", // C Fmaj7
Q: "[f3,c4,f4,a4,c5,e5]!2 [f3,c4,f4,a4,c5,e5]@2 [f3,c4,f4,a4,c5,e5]!4", // Fmaj7
R: "[a3,e4,g4,c5,e5]@2 [a3,e4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]!4", S: "f4@2 f4!2 f4@2 f4!2", T: "f4!8", U: "f4!2",
V: "f4@5 f4@3 ~@2 f4@3 f4@2 f4@3 f4@3 f4@3", W: "[f3,c4,d4,g4,c5,e5]", X: "~ [c4,d4,c5]@23, [f3,g4,e5]",
Y: "[a3,e4,g4,c5,e5]", Z: "~ [f3,c5]@23, [c4,f4,g4,e5]", AA: "[f3,c4,f4,g4,c5,e5]", AB: "f4 f4@3 f4!4",
AC: "f4@2 f4@2 f4 f4@2 f4", AD: "f4 f4@2 f4!5", AE: "f4@6 f4@5 f4@3 ~ f4@6 f4@3",
AF: "f4@3 f4@5 f4@3 f4@3 ~ f4@3 f4@3 f4@3", AG: "f4@6 f4!2",
AH: "[f4@18 ~@5 [c4,e4,g4,c5,e5]@6 [c4,e4,g4,c5,e5]@3 [c4,e4,g4,c5,e5]@3 [g3,d4,g4,c5,e5]@6 [g3,d4,g4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@6 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [f3,c4,f4,a4,c5,e5]@3 [a3,e4,g4,c5,e5]@6 [a3,e4,g4,c5,e5]@6 [g3,d4,g4,c5,e5]@3 [g3,d4,g4,c5,e5]@3 [g3,d4,g4,c5,e5]@3 [g3,d4,g4,c5,e5]@3 f4@6 f4@3 f4@3 f4@6 f4@3 f4@3 f4@6 f4@3 f4@3 f4@6 f4@3 f4@3 f4@6 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4]/7", // C Fmaj7 Am7 C
AI: "[~@2 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@6 f4@6 f4@3 f4@3 f4@3 f4@3 f4@6 f4@6 f4@3 f4@3 f4@3 f4@3 ~]/3",
})).s("gm_acoustic_guitar_steel").gain(0.4)
// chords · distortion guitar
const distortion_guitar = note(`<
~@3 A B C D E F G ~@8 B H I J K@2 L M N O ~ P Q R S T U V W X Y@2 ~@2 Z AA ~@3 AB AC AD AE ~@3 AF AG AH AI I@2 ~ AJ I
AK AL AM AN AO AP AQ AR ~ AS AT AU AV ~@6 AW AX ~@2 AY AZ BA BB BC AK ~ L BD BE BF BG BH BI BJ BK AU AV ~ BL BM BN BO
BP BQ BR BS BT BU BV I@2 BW BX BY BZ CA@2 ~ CB CC@2 ~
>`.pickRestart({
A: "~@5 b4 c5 g5", B: "g5", C: "g5 [c5,g5] ~ c5 d5 e5 d5 c5", D: "a4@2 c5 a4 d5 c5 a4 g4", E: "g4", F: "a4 g4",
G: "f4", H: "g5 e5 ~@2 e5 f5 g5 c6", I: "c5", J: "[d5,a5] [c5,g5] ~ [f5,g5] ~ [e5,g5]!2 c6", K: "e5", L: "~@7 c5",
M: "c6 g5!2 d5!2 c5!3", N: "[c5,g5,c6]", O: "[c5,g5,c6] ~@7", P: "~ [g4,c5] a4 f4 [c5,e5] a4 ~ g4",
Q: "[g4,c5,g5,c6]", R: "[g4,c5,g5,c6] ~@3 d5 c5 a4 g4", S: "[c5,e5]", T: "~@5 [c5,e5] d5 c5",
U: "[d5,f5] [e5,g5]@3 [e5,g5]@3 [f5,a5]", V: "~ [e5,g5] ~ [d5,f5] ~ c5 a4 g4", W: "~ e5 c5 ~ d5 c5!2 g4",
X: "g4!2 g4@2 g4!4", Y: "a4", Z: "~@2 [c5,e5] ~ [c5,e5] [c5,d5] ~ [c5,d5]",
AA: "~ [c5,d5] ~ [c5,f5] [c5,e5] [c5,f5] [c5,e5] ~", AB: "~@5 [g5,c6] [a5,d6] [g5,c6]", AC: "[g5,c6] ~",
AD: "~ g5!2 ~ a5 g5 ~ a5", AE: "~ g5 a5 ~ a5 g5 f5 e5", AF: "~ c5 g5 c5 g5 c5!2 [d5,g5]",
AG: "~ [c5,d5] ~ [d5,g5]!2 [e5,g5] ~@2", AH: "~ c5 g5 c5!2 g5 c5 f5", AI: "~ [c5,e5] ~ [c5,d5]!2 [c5,e5] d5 c5",
AJ: "~@4 [d5,g5]!2 ~ g4", AK: "c5 ~", AL: "g3 a3 c4 ~ e4 g4 ~ g4", AM: "g4 a4 c5 ~@2 [e5,g5] [d5,g5] [c5,g5]",
AN: "[c5,g5]", AO: "[c5,g5]@2 ~@3 [g4,c5] a4 g4", AP: "[c5,g5]!2", AQ: "[c5,g5] ~ [d5,f5]!3 [c5,e5] ~ [c5,e5]",
AR: "c6", AS: "e5@2 f5@3 ~ g5@3 c6@3 e5@3 f5@6 [g5,c6]@3",
AT: "[g5,c6]@6 [g5,d6]@3 ~@4 g5@2 [g5,c6]@6 [g5,d6]@3, ~@4 d6 ~@3", AU: "[a5,e6]", AV: "[a5,e6]@3 ~",
AW: "d5@3 c5@2 e5@3 ~@10 d5@3 g5@3", AX: "g5@2 d5@3 a5@3 d5@3 ~ [d5,a5]@2 ~ [a5,c6]@3 ~@6, ~@11 c6@3 d5@3 ~@7",
AY: "~@6 [e5,a5]@3 [e5,g5]@3 ~@2 e5@3 ~ d5@2 c5@3 ~", AZ: "~ f5 ~ e5 e5@3 e5, ~@2 c5@3 ~@19",
BA: "~@6 [e5,a5]@2 ~ g5@3 ~@4 d5@3 ~@5, ~@8 e5@3 ~@4 g5@3 ~@6", BB: "~@2 f5 e5 ~ c5 a4@2, ~@14 e5@3 ~@7",
BC: "~@3 c5@3 ~@4 c5@2 [c5,e5]@3 g4@3 a4@2 c5@3 ~, ~@2 f5@3 ~@4 f5@3 ~@12", // C
BD: "g5@2 c5@3 ~ e5@3 c5@3 d5@3 e5@3 c5@3 f5@3", BE: "c5@3 e5@3 c5@3 d5@3 d5@2 e5@3 ~ d5@3 c5@3",
BF: "g5@2 c5@3 e5@3 ~ c5@3 d5@2 e5@3 c5@3 ~@2 f5@2", BG: "c5@3 e5@2 c5@3 ~ d5@3 d5@3 e5@3 ~@3 f5@3",
BH: "f5 e5 [c5,f5] ~ d5 c5 a4 g4", BI: "g4 a4 ~ [c5,f5]!2 [d5,f5] ~@2",
BJ: "[f5,a5]@3 ~ g5@3 ~ [d5,f5]@3 ~@4 [e5,g5]@3 ~@3 [f5,a5]@3, ~ e5 ~@6", // F Dm Em F
BK: "~@3 [g5,b5]@3 ~@3 [g5,c6]@3 [a5,d6]@2 ~ g5@3 ~@3 [g5,d6]@3, ~@14 d6@3 ~@7", BL: "g5@8 g5@3 ~ c5@5 g5@6 ~",
BM: "g5@2 c5@2 g5 c5@2 g5", BN: "g5 c5@2 b4!2 c5 g5@2", BO: "g5@2 g5@2 g5 c5 g5 c5",
BP: "g5@3 c5@3 g5@2 b4@3 ~@2 b4@2 c5@3 c5@6", BQ: "g5@3 ~ c5@2 c5@6 g5@3 c5@6 b5@3", BR: "b5 c6 b5 a5!2 g5 e5@2",
BS: "[a5,c6]@5 e5@3 ~@4 [a5,c6]@3 [g5,c6]@3 e5@3 [g5,c6]@3", BT: "[g5,c6]@6 e5@3 ~@3 e5@2 d5@3 d5@3 ~ c5@3",
BU: "g3 a3 c4 ~ e4 g4 a4 c5", BV: "c5@2 d5@3 ~ [d5,f5]@3 ~@3 [d5,f5]@2 ~ f5@3 a4@3 g4@3, ~@14 c5@3 ~@7",
BW: "~@5 [e5,a5]@3 [e5,g5]@3 ~@3 e5@3 ~ d5@2 c5@3 ~", BX: "~@2 [c5,f5]@3 ~@3 e5@3 e5@9 e5@3 ~",
BY: "~@5 [e5,a5]@3 [e5,g5]@3 ~@4 d5@3 ~@6, ~@14 g5@3 ~@7", BZ: "~@5 f5@3 e5@3 ~@3 [c5,e5]@3 a4@6 ~",
CA: "[~@2 [c5,f5]@3 ~@4 c5@2 [c5,e5]@3 g4@3 a4@3 c5@3 c5@12 ~@13, ~@8 f5@3 ~@37]/2", // F5 C
CB: "[c5,f5]@6 [c5,e5]@3 ~@3 d5@2 c5@3 ~ a4@3 g4@3", CC: "[g4,c5]",
})).s("gm_distortion_guitar").gain(0.4)
// chords · electric guitar jazz · Dm7 Fmaj7 C
const electric_guitar_jazz = note(`<
~@51
[~ b4 c5 e5 b4 c5 e5 b4]
[c5 e5 b4 c5 e5@4]
~@72
[[d4,a4,c5,f5,a5] ~ [f4,c5,e5,a5,c6] ~]
[[g5,c6,e6]]!2
~
>`).s("gm_electric_guitar_jazz").gain(0.19)
// drums · kick
const kick = s("bd").struct(`<
A B C D E F G H I ~@9 J K L M N O P Q ~@4 R S T U V W X Y ~@4 Z AA AB AC ~ AD ~ AE AF AG@2 AH ~ AI ~@2 AJ ~ AK AG@2 AL
~@7 AM ~@9 AN AO T AP AQ AR AS AT AU AV AW AX AG AY AZ T ~ BA ~ AM BB ~@8 BC BD BE BF BG ~@14
>`.pickRestart({
A: "~@2 x ~@3 x ~@5 x ~@2 x ~@2 x ~@2 x ~ x", B: "~@4 x ~@7 x ~@2 x ~@2 x ~@2 x ~@2",
C: "~@4 x ~@6 x ~@2 x ~@2 x ~@2 x ~@3", D: "~@4 x ~@7 x ~@2 x ~@2 x ~@3 x ~", E: "~@4 x ~@6 x ~@2 x ~@3 x ~@2 x ~@2",
F: "~@4 x ~@5 x ~@2 x ~@2 x ~@2 x ~@3 x", G: "~@6 x ~@2 x ~@2 x ~@6 x ~@4", H: "~ x ~@6 x ~@2 x ~@2 x ~@6 x ~@2",
I: "x!2 ~@6", J: "~@4 x!4", K: "~@4 x ~@6 x ~@2 x ~@2 x ~@2 x ~@2 x", L: "~@5 x ~@6 x ~@2 x ~ x ~@2 x ~@2 x",
M: "~@6 x ~@5 x ~@6 x ~@2 x ~", N: "~@4 x ~@2 x ~@8 x ~@2 x ~@4", O: "~@2 x ~@4 x ~@5 x ~@2 x ~@3 x ~ x ~",
P: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@4", Q: "~ x ~@2 x ~@19", R: "~@19 x ~@2 x ~",
S: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~ x ~@2", T: "x!5 ~@3", U: "x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~ x ~@3",
V: "x ~@2 x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2", W: "~ x!3 ~ x!3", X: "~@4 x ~@2 x ~ x ~@3 x ~ x ~@3 x ~@4",
Y: "~@7 x ~ x ~@3 x ~ x ~@2 x ~@5", Z: "~@11 x ~@5 x ~@5 x", AA: "~@4 x ~@5 x ~@4 x ~@8", AB: "~@10 x ~@8 x ~@4",
AC: "~@9 x ~@4 x ~@2 x ~ x ~@4", AD: "~@23 x", AE: "~@13 x ~@5 x ~@4", AF: "~ x ~@4 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2",
AG: "x!8", AH: "x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@8", AI: "~ x ~@4", AJ: "~@7 x ~@16", AK: "~@2 x!6",
AL: "x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@7", AM: "~@2 x", AN: "~@16 x ~@2 x ~@4",
AO: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@5 x ~@5", AP: "~@4 x ~@4 x ~@2 x ~@5 x ~@2 x ~@2",
AQ: "~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~", AR: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~",
AS: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", AT: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x",
AU: "~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x", AV: "~@2 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2 x ~@2", AW: "x ~ x!6",
AX: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2", AY: "x ~ x ~ x!4", AZ: "~ x ~ x!5",
BA: "x ~@4 x ~@5 x ~@2 x ~ x ~@3 x ~@3", BB: "~@20 x ~@2 x", BC: "~@6 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x",
BD: "~@2 x ~@2 x ~@5 x ~ x ~@6 x ~@2 x", BE: "~@5 x ~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
BF: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~", BG: "~ x ~@2 x ~@2 x ~@16",
})).gain(0.47)
// drums · rim
const rim = s("rim").struct("<~@37 [x ~@12 x ~ x ~@5 x ~@2] ~@91>").gain(0.37)
// drums · snare
const snare = s("sd").struct("<~@44 [~ x ~@2 x ~@8 x ~@10] ~@67 [~ x ~@4] ~@16>").gain(0.53)
// drums · clap
const clap = s("cp").struct("<~@69 [~ x] ~@59>").gain(0.47)
// drums · low tom
const low_tom = s("lt").struct("<~@22 A B ~@33 C D ~@8 D ~@3 E ~@10 F ~@26 G ~ H ~@17>".pickRestart({
A: "~ x ~@11 x ~@10", B: "~@19 x ~@4", C: "~@11 x", D: "x", E: "~@5 x ~@6", F: "~@5 x ~@2", G: "~ x ~", H: "~@23 x",
})).gain(0.47)
// drums · hihat
const hihat = s("hh").struct(`<
~@8 A B C ~ D@5 E F ~@6 G H I D@2 J K L M N L O P Q R S T U ~@2 V W X Y Z ~ AA AB AC ~ AD AE AF AG AH AI AE@2 AJ AK AL
AM AN AO AP AQ O AR AG AS Q AT AU AV AW AX AY AZ BA BB BC BD BE@2 BF BG AO AE@2 BH BI BJ BK BL BH BM BN BO BP BQ BR BS
BT BU BV ~@2 BW ~ BX ~ BY AA BZ CA CB CC@2 CD CE CF ~@3
>`.pickRestart({
A: "~@9 x ~@6 x ~@5 x ~", B: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", C: "~@7 x ~@4", D: "~ x ~ x",
E: "~@2 x ~@3 x!2", F: "x!2 ~@6", G: "~@19 x ~@4", H: "~@7 x ~@11 x ~@4", I: "~@5 x ~@10 x ~@7", J: "~@3 x ~@7 x",
K: "x ~@4 x ~@2 x ~@3", L: "x!2", M: "x ~@3 x ~@2 x", N: "~@8 x ~@2 x ~@12", O: "x", P: "~@13 x ~ x ~@2 x ~@5",
Q: "~@23 x", R: "~@2 x ~@3 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2", S: "~ x ~ x ~ x ~@10 x ~@7", T: "x ~ x ~@2 x!2 ~",
U: "~ x ~@4 x ~@10 x ~@6", V: "~@6 x ~@6 x ~@2 x ~@2 x ~@2 x ~", W: "~@4 x ~@2 x ~ x ~@5 x ~@2 x ~ x ~@3",
X: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@3", Y: "~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@5 x", Z: "~@5 x ~@2 x ~@2 x ~@12",
AA: "~ x!2 ~ x!3 ~", AB: "~ x ~ x ~@2 x ~@5 x ~@2 x ~@8", AC: "x ~ x ~ x!3 ~", AD: "~@3 x ~@2 x!2", AE: "~ x!3 ~ x!3",
AF: "~@4 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4", AG: "~@6 x!2", AH: "x ~ x!2 ~ x!3", AI: "~@3 x ~@2 x ~ x ~@5 x ~@3 x ~@5",
AJ: "~@3 x ~@3 x ~@2 x ~@4 x ~@2 x ~@5", AK: "~ x ~ x ~@2 x ~@4 x ~@9 x ~@2", AL: "~@3 x!2 ~@2 x ~@4", AM: "~ x",
AN: "x!2 ~ x ~@2 x ~", AO: "~@2 x!2 ~ x!3", AP: "~ x!3 ~@2 x!2", AQ: "~ x ~ x!2 ~ x!2", AR: "~@3 x ~@2 x!2 ~@4",
AS: "~ x ~@6 x ~@15", AT: "~ x ~ x ~@4", AU: "~@4 x ~@7 x ~@2 x ~@5 x ~@2", AV: "~ x ~@2",
AW: "~@4 x ~@2 x ~@3 x ~@5 x ~ x ~@3 x", AX: "~@2 x ~ x ~@2 x", AY: "x ~@2 x ~@2 x ~@8 x ~@3 x ~@4",
AZ: "~ x ~@2 x ~@4 x ~@2 x ~@2 x ~@2 x ~@5", BA: "~@3 x ~@2 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x",
BB: "~@4 x ~@4 x ~@2 x ~@5 x ~@2 x ~@2", BC: "~@3 x ~@2 x ~@3 x ~ x ~@5 x ~@2 x ~@2",
BD: "x ~@6 x ~ x ~@2 x ~@6 x ~@2 x ~", BE: "~ x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~", BF: "~@5 x ~@4 x ~@3 x ~@5 x ~@2 x",
BG: "~@2 x ~@7 x ~@2 x ~@4 x ~@2 x ~@2", BH: "~@5 x!3", BI: "~ x ~@2 x!4", BJ: "x!3 ~ x!4",
BK: "~@3 x ~@5 x ~@5 x ~ x ~@3 x ~@2", BL: "x ~@4 x ~@5 x ~ x ~@2 x ~@3 x ~@3", BM: "x ~@10 x ~@2 x ~@6 x ~@2",
BN: "~ x ~ x ~ x ~@2", BO: "~ x ~@8 x ~", BP: "x ~@4 x ~@3 x ~@2 x ~@6 x ~@2 x ~", BQ: "~@3 x ~@4 x ~@10 x ~@3 x",
BR: "~@2 x ~@4 x ~@5 x ~@2 x ~@5 x ~", BS: "~ x ~@2 x ~ x ~ x ~@7 x ~@2 x ~@2 x ~",
BT: "~ x ~ x ~ x ~ x ~@2 x ~@4 x ~@2 x ~ x ~@3", BU: "~@4 x ~@6 x ~@12", BV: "~@12 x ~@3 x ~@2 x ~@4",
BW: "~@10 x ~@2 x ~@2 x ~@7", BX: "~@6 x ~@2 x ~@6 x ~@5 x ~", BY: "~@2 x ~ x ~@4 x ~@8 x ~@5", BZ: "x ~ x!2 ~@3 x",
CA: "x ~@15 x ~@2 x ~@3 x", CB: "~@10 x ~@2 x ~@10", CC: "x!2 ~ x!3 ~ x", CD: "x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x",
CE: "~@3 x ~@4 x ~@4 x ~@5 x ~@4", CF: "~ x ~@5 x ~@4 x ~@4 x ~@6",
})).gain(0.37)
// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A B ~@17 C ~@24 D ~@31 E ~ F ~@15>".pickRestart({
A: "~ x", B: "x", C: "~ x ~@4", D: "~@23 x", E: "~@7 x ~@9 x ~@4 x ~", F: "~@2 x ~@2 x ~@6",
})).gain(0.47)
// drums · open hat
const open_hat = s("oh").struct(`<
~@9 A B C D@5 E F ~@6 G H I D@2 J K L M N L O P Q ~ R S ~@3 T U V W X ~ Y Z AA AB AC AD AE AF AG AD@3 AH AI AJ AK S AD
AL@2 AM AN ~ AO AP AQ AR AS ~ AT S F AU ~ AV AW@3 AX AY AD@3 AZ BA@2 ~@2 BB BC BD BE BF BG ~@3 BH BI BJ BK ~@2 BL BM
BN Y BO BP BQ BR@3 BS BT BU ~@2
>`.pickRestart({
A: "~@11 x", B: "~@10 x ~@5 x ~@6 x", C: "~@2 x!6", D: "x!2 ~ x!3 ~ x", E: "x!2 ~ x!3 ~@2", F: "~ x ~@2",
G: "~@8 x ~ x ~@2 x ~@8 x ~", H: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~", I: "~ x ~@5 x ~@2 x ~@2 x ~@5 x ~ x ~@2",
J: "x ~@2 x ~@5 x ~@3 x ~ x ~@3 x ~@4", K: "~@3 x ~@2 x ~@6 x ~@5 x ~ x ~@2", L: "~ x!3 ~ x!3",
M: "~@3 x ~@2 x ~@10 x ~@5 x", N: "~@3 x ~ x ~@8 x ~@3 x ~ x ~@3", O: "~@3 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@4",
P: "x ~@6 x ~ x ~@11 x ~@2", Q: "x ~@2 x ~@2 x ~@2 x ~@7 x ~@6", R: "~@7 x ~@14 x ~", S: "~ x", T: "x!2 ~@6",
U: "~ x ~@10 x ~@10 x", V: "~@11 x ~@11 x", W: "~@7 x ~@4", X: "~@2 x ~@10 x ~@5 x ~@4", Y: "~@3 x ~@3 x",
Z: "~@3 x ~@2 x!2", AA: "~@3 x ~@5 x ~@12 x ~", AB: "~@11 x ~@2 x ~@9", AC: "~ x ~@3 x ~@2", AD: "x!2",
AE: "x ~@4 x ~@6", AF: "~@13 x ~@2 x ~@7", AG: "~ x ~@2 x ~@3", AH: "x ~@3 x ~@2 x", AI: "~@9 x ~@5 x ~ x ~@6",
AJ: "x ~@2 x ~@13 x ~@2 x ~@3", AK: "~@6 x ~ x ~@6 x ~@2 x ~@2 x ~@2", AL: "x ~@4 x ~@2", AM: "~@3 x ~@2 x ~@16 x",
AN: "~@3 x ~@5 x ~@9 x ~@2 x ~", AO: "~@4 x ~ x ~@9 x ~@2 x ~@2 x ~",
AP: "~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@3", AQ: "~ x ~@4 x ~@10 x ~ x ~@3 x", AR: "~@3 x",
AS: "x ~@3 x ~@11 x ~@2 x ~@2 x ~", AT: "~@2 x!2", AU: "x", AV: "~@5 x ~@2", AW: "~ x ~@2 x ~", AX: "~@7 x ~@9 x ~@6",
AY: "~@5 x ~@18", AZ: "x!3 ~", BA: "~@3 x ~@4", BB: "~@3 x ~ x ~@2 x ~ x ~@13", BC: "~ x!2 ~@5",
BD: "~ x ~ x ~ x ~@2", BE: "~@4 x ~@2 x ~@2 x ~ x ~@11", BF: "~ x ~@6", BG: "x ~@2 x ~@4 x ~@3", BH: "~@20 x ~@2 x",
BI: "~ x ~@10", BJ: "~@6 x ~@2 x ~@2 x ~@5 x ~ x ~@2 x", BK: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~ x ~@4",
BL: "~@13 x ~@5 x ~@4", BM: "~@2 x ~@2 x ~@2 x ~@4 x ~ x ~@8", BN: "~@11 x ~@9 x ~@2", BO: "~@3 x ~@12 x ~@7",
BP: "~@2 x ~@2 x ~@6", BQ: "~@3 x ~@3 x ~@10 x ~@5", BR: "~ x ~ x", BS: "~@6 x ~@4 x ~@5 x ~@4 x ~",
BT: "~@2 x ~@2 x ~@4 x ~", BU: "~@6 x!2",
})).gain(0.47)
// drums · crash
const crash = s("cr").struct("<~@33 A ~@20 B ~@10 C ~@49 D ~@9 C E ~@2>".pickRestart({
A: "~@3 x ~@4", B: "~@17 x ~@2 x ~@3", C: "~@23 x", D: "~@3 x", E: "~@5 x ~@18",
})).gain(0.53)
// drums · high tom
const high_tom = s("ht").struct("<~@65 [~@23 x] ~@61 [~ x ~@22] ~>").gain(0.47)
// drums · ride
const ride = s("rd").struct("<~@35 x ~@29 [~@23 x] ~@60 [~@11 x ~@12] ~@2>").gain(0.47)
// drums · cowbell
const cowbell = s("cb").struct("<~@112 [~@11 x] [~@5 x ~@18] ~@15>").gain(0.42)
stack(
acoustic_guitar_steel, distortion_guitar, electric_guitar_jazz, kick, rim, snare, clap, low_tom, hihat, mid_tom,
// … 2 more lines
More by Goo Goo Dolls
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.