0:00/0:00
// Move On — ABBA
// 97 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 2 "Honky Tonk Piano" epiano2 (copy of ch 8 "Piano 2" piano); ch 7 "Steel Guitar 2" acoustic guitar steel (copy of ch 4 "Steel Guitar" acoustic guitar steel)
// note: Full arrangement: all 151 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(97/3)
// 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.
// bass · electric bass finger · "Bass"
const bass = note(`<
A B C D E@8 F@8 G@8 H@4 I@7 J K L M N O P Q@2 R S T U V W X V@2 W X Y V W X@3 Y L Z@2 AA L AB AC AD AE Z@2 AA L AB AC
AF AG W AH AI AJ W AK AL@8 AM@8 AN@7 AO AP@4 AQ AR@2 AS AT@6 AU@8 AV@8 AW@7 AX
>`.pickRestart({
A: "~@11 eb3@5", B: "~@12 eb3@11 d3@9", C: "~@14 d3@11 c3@7", D: "~@16 c3@11 g2@5",
E: "[~@17 g2@11 ~ eb3@21 eb3@11 d3@21 d3@11 c3@21 c3@11 f2@21 f2@11 bb2@21 bb2@11 bb2@21 bb2@11 bb2@21 bb2@11 eb3@3]/8",
F: "[~@18 eb3@11 f3@21 f3@11 bb2@21 bb2@11 bb2@21 bb2@11 eb3@21 eb3@11 f3@21 f3@11 bb2@21 bb2@11 bb2@21 bb2@11 eb3@3]/8",
G: "[~@18 eb3@11 f3@21 f3@11 bb2@21 f2@11 bb2@21 bb2@11 eb3@21 eb3@11 f3@21 f3@11 f3@21 f3@11 f3@21 f3@11 bb2@3]/8",
H: "[~@18 f2@11 bb2@32 eb3@8 eb3@2 eb3@21 ~ eb3@8 eb3@3 eb3@21 bb2@3]/4",
I: "[~@5 bb2@3 bb2@11 f2@11 bb2@32 f3@8 f3@3 f3@21 c3@8 c3@3 c3@21 ~ g3@8 g3@2 g3@11 d3@11 g2@21 ~ bb2@10 eb3@8 eb3@3 eb3@21 ~]/7",
J: "eb3@8 eb3@2 eb3@21 ~", K: "bb2@8 bb2@3 bb2@11 f2@10", L: "bb2", M: "~ f3@8 f3@2 f3@21", N: "~ c3@8 c3@3 c3@20",
O: "~ d3@8 d3@3 d3@20", P: "~@2 f3@8 f3@2 f3@11 f2@9", Q: "~@2 bb2@21 bb2@9", R: "~ bb2@21 bb2@10",
S: "~ eb3@21 eb3@10", T: "~ f3@21 f3@10", U: "bb2@21 bb2@10 ~", V: "bb2@21 bb2@11", W: "eb3@21 eb3@11",
X: "f3@21 f3@11", Y: "bb2@21 f2@11", Z: "eb3@8 eb3@3 eb3@21", AA: "bb2@8 bb2@3 bb2@10 f2@11", AB: "f3@8 f3@3 f3@21",
AC: "c3@8 c3@3 c3@21", AD: "g3@8 g3@3 g3@10 d3@11", AE: "g2@21 bb2@11", AF: "d3@8 d3@3 d3@21",
AG: "f3@8 f3@3 f3@10 f2@11", AH: "d3@21 d3@11", AI: "c3@21 c3@11", AJ: "g2@21 g2@11", AK: "d3@21 d3@10 ~",
AL: "[c3@21 c3@10 f2@21 f2@10 ~ bb2@21 bb2@10 ~ bb2@21 bb2@10 bb2@21 bb2@10 ~ eb3@21 eb3@10 ~ f3@21 f3@10 bb2@21 bb2@10 ~ bb2@3]/8",
AM: "[~@18 bb2@10 ~ eb3@21 eb3@10 f3@21 ~ f3@10 bb2@21 bb2@10 ~ bb2@21 bb2@10 eb3@21 ~ eb3@10 f3@21 f3@10 ~ bb2@21 f2@10 bb2@6]/8",
AN: "[~@16 bb2@10 eb3@21 eb3@10 ~ f3@21 f3@10 f3@21 ~ f3@10 f3@21 f3@10 ~ bb2@21 f2@10 bb2@32 eb3@8]/7",
AO: "eb3@3 eb3@21 eb3@8", AP: "[eb3@2 eb3@21 ~ bb2@7 bb2@3 bb2@10 ~ f2@10 bb2@32 f3@8 f3@2 f3@21 ~ c3@7 c3@2]/4",
AQ: "~ c3@21 g3@8 g3@2", AR: "[~ g3@10 d3@10 ~ g2@21 bb2@10 ~ eb3@7 eb3@3]/2", AS: "eb3@21 eb3@8 eb3@3",
AT: "[eb3@21 bb2@8 bb2@2 bb2@10 ~ f2@10 ~ bb2@31 f3@8 f3@3 f3@21 c3@8 c3@2 c3@21 ~ d3@8 d3@2 d3@21 f3@8 f3@3 f3@2]/6",
AU: "[~@8 f2@10 ~ eb2@8 eb2@2 eb2@21 ~ eb2@8 eb2@2 eb2@21 bb2@8 bb2@3 bb2@21 bb2@32 f3@8 f3@2 f3@21 c3@8 c3@3 c3@21 g3@8 g3@3 g3@10 d3@10 ~ g2@15]/8",
AV: "[~@6 bb2@10 eb3@8 eb3@3 eb3@21 eb3@8 eb3@3 eb3@21 bb2@8 bb2@2 bb2@10 ~ f2@10 bb2@32 f3@8 f3@3 f3@21 c3@8 c3@2 c3@21 f3@8 f3@3 f3@21 f3@8 f3@3 f3@7]/8",
AW: "[~@3 f2@10 ~ eb2@8 eb2@2 eb2@21 eb2@8 eb2@3 eb2@21 bb2@8 bb2@3 bb2@21 bb2@31 f3@8 f3@3 f3@21 c3@8 c3@3 c3@21 g3@8 g3@2 g3@10]/7",
AX: "~ d3@10 ~@21",
})).s("gm_electric_bass_finger").gain(0.25)
// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
~@4 A B C D E@5 F@4 G@2 H@4 I@6 J@7 K@3 L M N O P Q R@2 S T U V W X Y Z AA AB AC AD AE AF Y AG@3 AH AI AJ AK M AL AM
AN AO AP AJ AK M AL AM AQ AR AS AT AU AV AW AX AY AZ BA@7 BB@8 BC@6 BD@4 BE@4 BF@4 BG@5 BH@2 BI@5 BJ@8 BK@2 BL@3 BM@3
>`.pickRestart({
A: "~@29 [g3,g4]@3", // G
B: "~@2 [g3,g4]@3 [g3,g4]@2 [g3,g4]@3 ~@3 [g3,g4]@2 [g3,g4]@3 [eb4,a4]@3 ~@2 [eb4,a4]@3 [eb4,a4]@3 [f4,c5]@3", // G Ebdim F5
C: "~@2 [f4,c5]@3 [f4,c5]@2 [bb3,bb4]@3 ~@3 [bb3,bb4]@2 [bb3,bb4]@3 [bb3,bb4]@3 [bb3,bb4]@2 d4@3 d4@3 [bb3,eb4]@3", // F5 Bb Eb5
D: "~@2 [bb3,f4]@3 [bb3,g4]@2 [bb3,g4]@3 ~@3 [bb3,g4]@2 [bb3,g4]@3 [c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@3 [c4,a4]@3", // Bb5 Eb F
E: "[~@2 [c4,a4]@3 [c4,a4]@2 [c4,a4]@3 ~@3 [c4,a4]@2 [c4,a4]@3 [c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@3 [d4,bb4]@5 [d4,bb4]@3 [d4,bb4]@2 [d4,bb4]@3 ~@3 [eb4,bb4]@5 [eb4,bb4]@11 [d4,bb4]@5 [d4,bb4]@3 [d4,bb4]@2 [d4,bb4]@3 ~@3 [eb4,bb4]@5 [eb4,bb4]@11 [d4,bb4]@32 [c4,eb4,d5]@32 [c4,bb4]@3]/5", // F Gm Eb5 Gm Eb5 Gm Cm C7
F: "[~@2 [c4,a4]@5 c4@11 c4@5 [c4,a4]@5 ~ d4@16 eb4@5 eb4@11 [d4,f4,d5]@32 d5@10 c5@16 bb4@5 ~ [c4,bb4]@3, ~@7 g4@16 ~@6 bb4@21 ~@43 [eb4,g4]@32 ~@3]/4", // F Dm C7 Eb
G: "[~@2 [c4,a4]@5 [c4,g4]@11 [c4,a4]@11 d4@16 eb4@5 eb4@11 d4@3, ~@29 bb4@21 ~@14]/2", // F C5 F
H: "[~@7 [g4,d5]@21 ~ g4@32 f5@10 d5@11 eb5@11 [f4,d5]@21 ~@11 [d4,f4,d5]@3, ~@61 a4@32 ~@35]/4", // G5 Dm
I: "[~@7 c5@5 ~ bb4@5 c5@8 d5@3 d5@10 c5@16 bb4@5 ~ bb4@5 a4@5 g4@16 a4@5 ~ bb4@5 a4@5 g4@16 a4@5 ~ bb4@5 a4@5 g4@16 a4@5 ~ [d4,bb4]@21 ~@11 [bb3,d4,f4]@3, ~@7 [d4,f4]@21 ~ [eb4,g4]@32 c4@32 c4@32 c4@32 ~@35]/6", // Gm Bb Dm Eb
J: "[~@2 g4@5 bb4@5 ~ c5@5 d5@5 f5@5 ~ g5@10 g5@11 f5@5 ~ eb5@5 g5@11 g5@11 f5@10 [bb4,d5,f5]@32 ~ g5@5 f5@5 eb5@5 ~ d5@5 c5@5 ~ bb4@5 c5@11 c5@11 bb4@5 g4@5 c5@11 c5@11 bb4@11 bb4, ~@7 [d4,f4]@11 [f4,bb4]@11 [g4,bb4]@32 [g4,bb4]@32 ~@33 [bb4,d5]@10 [f4,bb4]@11 [d4,f4]@11 [c4,a4]@21 ~ c4@10 eb4@32 ~@2]/7", // Bb Dm Bb5 Gm Bb Bb5 Dm F
K: "[~ a4@3 [bb3,g4]@21 ~@11 g4@5 ~ bb4@5 c5@5 ~ d5@5 f5@5 g5@11 g5@11 f5@5 eb5@5 ~, ~@31 [bb3,d4,f4]@11 [d4,g4]@11 [f4,bb4]@10 [g4,bb4]@32 ~]/3", // Eb Bb G5 Bb5 Gm
L: "g5@10 g5@11 f5@11, [g4,bb4]", M: "[bb4,d5,f5]",
N: "g5@5 ~ f5@5 eb5@5 d5@5 ~ c5@5 bb4@5, [bb4,d5]@11 [f4,bb4]@11 [d4,f4]@10", // Bb Bb5 Dm
O: "~ c5@10 c5@11 bb4@5 ~ g4@4, ~ [c4,a4]@21 c4@10", P: "~ c5@11 c5@11 g4@5 bb4@4, ~ [eb4,g4]@21 ~ eb4@9",
Q: "~ c5@11 c5@11 g4@5 bb4@4, ~ [f4,a4]@21 ~ c4@9", // F
R: "[~@2 c5@10 d5@11 c5@5 ~ [eb4,a4,d5]@5 d5@3 c5@2 d4@16 eb4@5 eb4@4, ~@2 [c4,a4]@21 ~@16 bb4@21 ~@4]/2", // D F
S: "~@2 d4@15 eb4@5 ~ eb4@9", T: "~@7 d5@5 c5@5 bb4@5 c5@5 ~ d5@4, ~ d4@10 ~ [d4,f4]@20",
U: "~ d5@10 ~ c5@15 bb4@5, ~ [c4,eb4]@31", V: "~ bb4@5 a4@5 g4@16 a4@5, ~ c4@31",
W: "d4@16 eb4@5 eb4@10 ~, bb4@21 ~@11", X: "~@5 d5@5 ~ c5@5 bb4@5 c5@5 ~ d5@5, d4@11 [d4,f4]@21",
Y: "d5@11 c5@16 bb4@5, [eb4,g4]", Z: "bb4@5 a4@5 ~ g4@10 a4@11, c4", AA: "d4@16 eb4@5 eb4@11, bb4@21 ~@11",
AB: "~@5 bb5@5 ~ a5@5 f5@5 g5@8 a5@3, d4@11 [bb4,d5]@21", AC: "a5@11 g5@11 ~@5 f5@5, bb4",
AD: "f5@5 c5@5 ~ d5@10 eb5@11, a4", AE: "[f4,d5]@21 ~@11", AF: "~@5 d5@5 ~ c5@5 bb4@5 c5@8 d5@3, ~@11 [d4,f4]@21",
AG: "bb4@5 a4@5 ~ g4@16 a4@5, c4", AH: "[d4,bb4]@21 ~@11",
AI: "~@5 g4@5 ~ bb4@5 c5@5 d5@5 ~ f5@5, [bb3,d4,f4]@11 [d4,f4]@10 [f4,bb4]@11", // Bb Dm Bb5
AJ: "g5@11 g5@10 f5@5 ~ eb5@5, [g4,bb4]", AK: "g5@11 g5@10 f5@11, [g4,bb4]",
AL: "g5@5 f5@5 ~ eb5@5 d5@5 c5@5 ~ bb4@5, [bb4,d5]@11 [f4,bb4]@10 [d4,f4]@11", // Bb Bb5 Dm
AM: "c5@11 c5@10 bb4@5 ~ g4@5, [c4,a4]@21 c4@11", AN: "c5@11 c5@10 bb4@11, eb4", AO: "bb4@3 a4@2 [bb3,g4]@21 ~@6",
AP: "~@5 g4@5 ~ bb4@5 c5@5 d5@5 ~ f5@5, [bb3,d4,f4]@11 [d4,g4]@10 [f4,bb4]@11", // Bb G5 Bb5
AQ: "c5@11 c5@10 g4@5 ~ bb4@5, [eb4,g4]@21 eb4@11", AR: "c5@11 c5@10 g4@5 ~ bb4@5, [f4,a4]@21 c4@11",
AS: "c5@11 d5@10 c5@5 ~ [eb4,a4,d5]@5, [c4,a4]@21 ~@11", AT: "d5@3 c5@2 g4@11 g4@11 g4@5, ~@5 bb4@21 ~@6",
AU: "g4@3 f4@8 f4@10 f4@11", AV: "f4@3 eb4@8 eb4@10 eb4@11", AW: "eb4@3 d4@8 db4@5 d4@5 ~@3 d4@5 ~@3, ~@21 db4@5 ~@6",
AX: "[g3,g4]@3 ~@3 [g3,g4]@2 [g3,g4]@3 [g3,g4]@3 ~@2 [g3,g4]@3 [g3,g4]@3 [eb4,a4]@3 ~@2 [eb4,a4]@3 [eb4,a4]@2", // G Ebdim
AY: "[f4,c5]@3 ~@3 [f4,c5]@2 [f4,c5]@3 [bb3,bb4]@3 ~@2 [bb3,bb4]@3 [bb3,bb4]@2 [bb3,bb4]@3 [bb3,bb4]@3 d4@2 d4@3", // F5 Bb
AZ: "[bb3,eb4]@3 ~@2 [bb3,f4]@3 [bb3,g4]@2 [bb3,g4]@3 ~@3 [bb3,g4]@2 [bb3,g4]@3 [c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@3", // Eb5 Bb5 Eb F
BA: "[[c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@2 [c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@3 [c4,a4]@3 ~@2 [c4,a4]@3 [c4,a4]@2 [d4,bb4]@5 ~ [d4,bb4]@2 [d4,bb4]@3 [d4,bb4]@3 ~@2 [eb4,bb4]@5 [eb4,bb4]@11 [d4,bb4]@5 [d4,bb4]@3 [d4,bb4]@3 [d4,bb4]@3 ~@2 [eb4,bb4]@5 [eb4,bb4]@10 ~@6 d5@5 c5@5 bb4@5 c5@5 ~ d5@5 d5@10 ~ c5@15 bb4@5 ~ bb4@5 a4@5 g4@16 a4@5 d4@16 eb4@5 eb4@10 ~ d4@3, ~@94 d4@10 ~ [d4,f4]@21 [c4,eb4]@32 c4@31 bb4@21 ~@14]/7", // F Gm Eb5 Gm Eb5 Dm Cm
BB: "[~@2 d5@5 ~ c5@5 bb4@5 c5@5 d5@5 ~ d5@10 c5@16 bb4@5 bb4@5 ~ a4@5 g4@10 ~ a4@10 d4@16 eb4@5 eb4@10 ~@6 bb5@5 a5@5 ~ f5@5 g5@8 a5@2 a5@10 ~ g5@10 ~@6 f5@5 f5@5 c5@5 ~ d5@10 eb5@10 ~ [f4,d5]@21 ~@16, ~@8 [d4,f4]@21 [eb4,g4]@31 c4@32 bb4@21 ~@11 d4@10 [bb4,d5]@21 bb4@32 a4@32 ~@37]/8", // Dm Eb Bb
BC: "[d5@5 c5@5 bb4@5 ~ c5@7 d5@3 d5@10 ~ c5@16 bb4@5 bb4@5 a4@5 g4@16 a4@5 bb4@5 ~ a4@5 g4@16 a4@5 bb4@5 a4@5 ~ g4@16 a4@5 [d4,bb4]@21 ~@10 [bb3,d4,f4]@6 g4@2, ~@5 [d4,f4]@21 [eb4,g4]@32 c4@31 c4@32 c4@32 ~@39]/6", // Gm Bb Dm Eb
BD: "[~@3 bb4@5 c5@5 ~ d5@5 f5@5 g5@10 ~ g5@10 f5@5 ~ eb5@5 g5@10 g5@10 ~ f5@10 ~ [bb4,d5,f5]@31 g5@5 f5@4, ~@3 [d4,f4]@10 ~ [f4,bb4]@10 [g4,bb4]@32 [g4,bb4]@32 ~@31 [bb4,d5]@9]/4", // Bb Dm Bb5 Gm Bb
BE: "[~@2 eb5@5 d5@5 c5@5 ~ bb4@5 c5@10 c5@10 ~ bb4@5 g4@5 ~ c5@10 c5@10 ~ bb4@10 bb4@3 a4@2 [bb3,g4]@21 ~@11 g4@5, ~@2 [f4,bb4]@10 [d4,f4]@10 ~ [c4,a4]@21 c4@10 ~ eb4@32 ~@31 [bb3,d4,f4]@10]/4", // Eb Bb5 Dm F Bb
BF: "[bb4@5 ~ c5@5 d5@5 f5@5 ~ g5@10 g5@10 ~ f5@5 eb5@5 g5@10 ~ g5@10 f5@10 ~ [bb4,d5,f5]@32 g5@5 f5@5 [f4,bb4,eb5], [d4,g4]@10 ~ [f4,bb4]@10 ~ [g4,bb4]@31 [g4,bb4]@32 ~@32 [bb4,d5]@10 ~]/4", // Bb Ebsus2 G5 Bb5 Gm Bb
BG: "[~@4 d5@5 ~ c5@5 bb4@5 c5@10 ~ c5@10 bb4@5 ~ g4@5 c5@10 c5@10 ~ g4@5 bb4@5 ~ c5@10 c5@10 ~ g4@5 bb4@5 c5@10 ~ d5@10 c5@5 ~ [eb4,a4,d5]@5 d5@3 c5@2 [eb4,g4]@5 [eb4,g4]@3, ~@10 [d4,f4]@10 [c4,a4]@21 c4@10 ~ [eb4,g4]@21 eb4@10 ~ [f4,a4]@21 c4@10 [c4,a4]@21 ~@24]/5", // D Eb Dm F Eb F
BH: "[[eb4,g4]@3 [g4,bb4]@5 [g4,bb4]@3 [g4,bb4]@2 [f4,a4]@5 ~@6 [g4,bb4]@3 [g4,bb4]@2 [g4,bb4]@5 [g4,bb4]@3 [g4,bb4]@3 [f4,a4]@5 [eb4,g4]@5 [f4,a4]@5 ~ [f4,a4]@2 [f4,a4]@3 [eb4,g4]@3]/2", // Eb Gm F Gm F Eb F Eb
BI: "[~@2 [d4,f4]@16 g5@5 f5@5 ~ eb5@5 d5@5 c5@5 bb4@5 ~ c5@10 c5@10 ~ bb4@5 g4@5 c5@10 ~ c5@10 bb4@10 ~ bb4@3 a4@2 bb3@21 ~@11 g4@5 [d4,g4,bb4]@5, ~@18 [bb4,d5]@10 ~ [f4,bb4]@10 [d4,f4]@10 ~ [c4,a4]@21 c4@10 eb4@32 ~@32 [bb3,d4,f4]@10 ~@5]/5", // Dm Gm Bb Bb5 Dm F Bb
BJ: "[c5@5 ~ d5@5 f5@5 g5@10 ~ g5@10 f5@5 ~ eb5@5 g5@10 ~ g5@10 f5@10 ~ [bb4,d5,f5]@31 g5@5 ~ f5@5 eb5@5 d5@5 c5@5 ~ bb4@5 c5@10 ~ c5@10 bb4@5 g4@5 ~ c5@10 c5@10 ~@6 bb4@5 c5@10 ~ c5@10 g4@5 ~ bb4@5 c5@10 ~ d5@7, ~@6 [f4,bb4]@10 [g4,bb4]@32 [g4,bb4]@32 ~@31 [bb4,d5]@10 ~ [f4,bb4]@10 [d4,f4]@10 ~ [c4,a4]@21 c4@10 ~ [eb4,g4]@21 [eb4,g4]@10 [c4,a4]@21 c4@10 ~ [c4,a4]@18]/8", // Bb Bb5 Gm Bb Bb5 Dm F Eb …
BK: "[~@3 c5@3 [eb4,a4,d5]@8 d5@2 c5@3 [eb4,g4]@5 [eb4,g4]@3 [eb4,g4]@3 [g4,bb4]@5 [g4,bb4]@2 [g4,bb4]@3 [f4,a4]@5 ~@6 [g4,bb4]@2 [g4,bb4]@3 [g4,bb4]@5 [g4,bb4]@3]/2", // D Eb Gm F Gm
BL: "[[g4,bb4]@2 [f4,a4]@5 ~ [eb4,g4]@5 [f4,a4]@5 [f4,a4]@3 [f4,a4]@3 [eb4,g4]@5 [d4,f4]@16 g5@5 f5@5 eb5@5 ~ d5@5 c5@5 bb4@5 c5@10 ~ c5@9, ~@45 [bb4,d5]@10 [f4,bb4]@10 ~ [d4,f4]@10 [c4,a4]@20]/3", // Gm F Eb F Eb Dm Bb Bb5 …
BM: "[~@2 bb4@5 g4@5 c5@10 ~ c5@10 bb4@10 ~ bb4@2 a4@3 bb3@21 ~@26, ~ c4@5 eb4@16 ~@26]/3",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0)
// other · piccolo · "Picolo"
const piccolo = note("<~@5 A@3 B@2 ~@77 C D E F@2 ~@59>".pickRestart({
A: "[~@7 g6@11 a6@11 c7@15 ~ bb6@5 bb6@5 d6@5 ~ c6@5 d6@3 eb6@13 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6]/3",
B: "[~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 a6 ~ bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6@6 ~@29]/2",
C: "~@11 g6@10 a6@11", D: "c7@10 ~ bb6@5 ~ bb6@5 ~@5 d6@5", E: "c6@5 d6@3 eb6@13 bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6",
F: "[~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 ~ a6 bb6 a6 bb6 ~ a6 bb6@6 ~@27]/2",
})).s("gm_piccolo").gain(0.16).pan(0)
// other · flute
const flute = note("<~@5 A@3 B@2 ~@141>".pickRestart({
A: "[~@8 g6@10 a6@11 c7@15 ~ bb6@5 bb6@5 ~ d6@5 c6@5 d6@3 eb6@13 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~]/3",
B: "[bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6 a6 ~ bb6 a6 bb6 ~ a6 bb6@6 ~@29]/2",
})).s("gm_flute").gain(0.16).pan(1)
// chords · piano · "Piano 2"
const piano = note(`<
A@5 B@6 ~@17 C@8 D E F G H I J K L@4 M N O P Q R S P T U V W X R Y@3 Z AA AB AC H AD AE AF AG AH AB AC H AD AE AI AJ
AK AL AM AN AO AP AQ AR@2 AS@6 AT@8 AU@6 AV@8 AW@4 AX@5 AY@2 AZ@4 BA@5 BB@6 BC@3 BD@3
>`.pickRestart({
A: "[~@22 g4@11 g4@11 ~ g4@11 g4@3 f4@8 f4@11 f4@11 ~ f4@3 eb4@8 eb4@11 eb4@11 eb4@3 d4@8 ~ db4@5 d4@6 db4@6 d4@5 bb3@3, ~@22 bb3@34 bb3@34 bb3@33 bb3@34 ~@3]/5",
B: "[~@8 g4@11 [eb4,a4]@10 c5@16 bb4@5 ~ bb4@5 d4@5 eb4@5 ~ f4@2 g4@13 ~ [c4,a4]@42 d4@16 eb4@5 ~ eb4@10 d4@16 eb4@5 ~ eb4@11 ~@2, ~@29 f4@21 ~@11 bb3@21 ~@43 bb4@64 ~@3]/6", // Ebdim F
C: "[~@35 g4@5 bb4@5 c5@5 ~ d5@5 f5@5 g5@11 g5@11 f5@5 eb5@5 ~ g5@10 g5@11 f5@11 [bb4,d5,f5]@32 g5@5 ~ f5@5 eb5@5 d5@5 ~ c5@5 bb4@5 ~ c5@10 c5@11 bb4@5 g4@5 ~ c5@11 c5@10 bb4@11 bb4, ~@29 [bb3,d4,f4]@11 [d4,f4]@11 [f4,bb4]@10 [g4,bb4]@32 ~ [g4,bb4]@32 ~@32 [bb4,d5]@11 [f4,bb4]@11 [d4,f4]@11 [c4,a4]@21 c4@11 eb4@32 ~]/8", // Bb Dm Bb5 Gm Bb Bb5 Dm F
D: "~@2 a4@3 [bb3,g4]@21 ~@6", E: "~@5 g4@5 bb4@5 ~ c5@5 d5@5 f5@5 ~, [bb3,d4,f4]@10 [d4,g4]@11 [f4,bb4]@11",
F: "g5@11 g5@10 f5@5 ~ eb5@5, [g4,bb4]", G: "g5@11 g5@11 f5@10, [g4,bb4]", H: "~ [bb4,d5,f5]@31",
I: "~ g5@5 f5@5 ~ eb5@5 d5@5 c5@5 ~ bb4@4, ~ [bb4,d5]@11 [f4,bb4]@10 [d4,f4]@10", // Bb Bb5 Dm
J: "~ c5@11 c5@11 bb4@5 g4@4, ~ [c4,a4]@21 ~ c4@9", K: "~@2 c5@10 c5@11 g4@5 bb4@4, ~@2 [eb4,g4]@21 eb4@9",
L: "[~@2 c5@11 c5@10 g4@5 ~ bb4@5 c5@11 d5@11 c5@5 [eb4,a4,d5]@5 ~ d5@2 c5@3 d4@16 eb4@5 eb4@5 d4@16 eb4@5 eb4@9, ~@2 [f4,a4]@21 c4@11 [c4,a4]@21 ~@17 bb4@21 ~@35]/4", // D F
M: "~@7 d5@5 c5@5 ~ bb4@5 c5@5 d5@4, ~ d4@5 [d4,f4]@10", N: "~ d5@5 c5@8 bb4@2, ~ [c4,eb4]@15",
O: "~ bb4@5 a4@5 ~ g4@16 a4@4, ~ c4@31", P: "~ d4@16 eb4@5 eb4@10, ~ bb4@21 ~@10",
Q: "~@6 d5@5 c5@5 ~ bb4@5 c5@5 d5@5, ~ d4@10 [d4,f4]@21", R: "~ d5@10 c5@16 bb4@5, ~ [eb4,g4]@31",
S: "~ bb4@5 a4@5 g4@11 a4@10, ~ c4@31", T: "~@6 bb5@5 a5@5 ~ f5@5 g5@8 a5@2, ~ d4@10 [bb4,d5]@21",
U: "~ a5@10 g5@11 ~@5 f5@5, ~ bb4@31", V: "~ f5@5 c5@5 d5@11 eb5@10, ~ a4@31", W: "~ [f4,d5]@21 ~@10",
X: "~@6 d5@5 c5@5 ~ bb4@5 c5@8 d5@2, ~@11 [d4,f4]@21", Y: "~ bb4@5 a4@5 g4@16 a4@5, ~ c4@31", Z: "~ [d4,bb4]@21 ~@10",
AA: "~@6 g4@5 bb4@5 ~ c5@5 d5@5 f5@5, ~ [bb3,d4,f4]@10 [d4,f4]@11 [f4,bb4]@10", // Bb Dm Bb5
AB: "~ g5@10 g5@11 f5@5 eb5@5, ~ [g4,bb4]@31", AC: "~ g5@10 g5@11 f5@10, ~ [g4,bb4]@31",
AD: "~ g5@5 f5@5 eb5@5 ~ d5@5 c5@5 bb4@5, ~ [bb4,d5]@10 [f4,bb4]@11 [d4,f4]@10", // Bb Bb5 Dm
AE: "~ c5@10 c5@11 bb4@5 g4@5, ~ [c4,a4]@21 c4@10", AF: "~ c5@10 c5@11 bb4@10, ~ eb4@31",
AG: "~ bb4@2 a4@3 [bb3,g4]@21 ~@5", AH: "~@6 g4@5 bb4@5 ~ c5@5 d5@5 f5@5, ~ [bb3,d4,f4]@10 [d4,g4]@11 [f4,bb4]@10",
AI: "~ c5@10 c5@11 g4@5 bb4@5, ~ [eb4,g4]@21 eb4@10", AJ: "~ c5@10 c5@11 g4@5 bb4@5, ~ [f4,a4]@21 c4@10",
AK: "~ c5@10 d5@11 c5@5 [eb4,a4,d5]@5, ~ [c4,a4]@21 ~@10", AL: "~ d5@2 c5@3 g4@11 g4@10 g4@5, ~@6 bb4@21 ~@5",
AM: "~ g4@2 f4@8 f4@11 f4@10", AN: "~ f4@2 eb4@8 eb4@11 eb4@10",
AO: "~ eb4@2 d4@8 db4@5 ~ d4@5 ~@3 d4@5 ~@2, ~@22 db4@5 ~@5", AP: "~@11 g4@11 [eb4,a4]@10, ~ bb3@21 ~@10",
AQ: "~ c5@15 bb4@5 ~ bb4@5 d4@5, ~ f4@21 ~@10", AR: "[eb4@5 f4@3 g4@13 [c4,a4]@42 ~, bb3@21 ~@43]/2",
AS: "[d4@15 eb4@5 ~ eb4@10 d4@16 eb4@5 eb4@10 ~@6 d5@5 c5@5 ~ bb4@5 c5@5 d5@5 ~ d5@10 c5@16 bb4@5 bb4@5 ~ a4@5 g4@16 a4@5 d4@16 eb4@5 eb4@10 ~ d4@2, bb4@63 d4@10 [d4,f4]@21 ~ [c4,eb4]@31 c4@32 bb4@21 ~@13]/6", // Dm Cm
AT: "[~@3 d5@5 c5@5 bb4@5 ~ c5@5 d5@5 d5@10 ~ c5@16 bb4@5 bb4@5 a4@5 ~ g4@10 a4@10 ~ d4@15 eb4@5 ~ eb4@10 ~@6 bb5@5 a5@5 f5@5 g5@8 a5@3 a5@10 ~ g5@10 ~@5 f5@5 ~ f5@5 c5@5 d5@10 ~ eb5@10 [f4,d5]@21 ~@16, ~@8 [d4,f4]@21 [eb4,g4]@32 c4@32 bb4@21 ~@10 d4@10 ~ [bb4,d5]@21 bb4@32 a4@32 ~@36]/8", // Dm Eb Bb
AU: "[d5@5 ~ c5@5 bb4@5 c5@8 d5@3 d5@10 c5@16 bb4@5 bb4@5 ~ a4@5 g4@16 a4@5 bb4@5 a4@5 ~ g4@15 a4@5 ~ bb4@5 a4@5 g4@16 a4@5 [d4,bb4]@21 ~@11 [bb3,d4,f4]@5 g4@2, ~@6 [d4,f4]@21 [eb4,g4]@31 c4@32 c4@32 c4@32 ~@38]/6", // Gm Bb Dm Eb
AV: "[~@4 bb4@5 c5@5 d5@5 f5@5 ~ g5@10 g5@10 ~ f5@5 eb5@5 g5@10 ~ g5@10 f5@10 ~ [bb4,d5,f5]@32 g5@5 f5@5 eb5@5 ~ d5@5 c5@5 bb4@5 c5@10 ~ c5@10 ~ bb4@5 g4@5 c5@10 ~ c5@10 bb4@10 ~ bb4@2 a4@3 [bb3,g4]@21 ~@11 g4@4, ~@4 [d4,f4]@10 [f4,bb4]@10 ~ [g4,bb4]@31 [g4,bb4]@32 ~@32 [bb4,d5]@10 [f4,bb4]@10 ~ [d4,f4]@10 [c4,a4]@21 ~ c4@10 eb4@32 ~@31 [bb3,d4,f4]@10]/8", // Bb Eb Dm Bb5 Gm Bb Bb5 Dm …
AW: "[~ bb4@5 c5@5 ~ d5@5 f5@5 g5@10 ~ g5@10 f5@5 eb5@5 ~ g5@10 g5@10 ~ f5@10 [bb4,d5,f5]@32 g5@5 f5@5 ~, ~ [d4,g4]@10 ~ [f4,bb4]@10 [g4,bb4]@32 [g4,bb4]@32 ~@31 [bb4,d5]@10 ~]/4", // Bb G5 Bb5 Gm Bb
AX: "[eb5@5 d5@5 c5@5 ~ bb4@5 c5@10 c5@10 ~ bb4@5 g4@5 c5@10 ~ c5@10 ~ g4@5 bb4@5 c5@10 ~ c5@10 g4@5 ~ bb4@5 c5@10 d5@10 ~ c5@5 [eb4,a4,d5]@5 d5@3 c5@3 [eb4,g4]@5 [eb4,g4]@2, [f4,bb4]@10 [d4,f4]@10 ~ [c4,a4]@21 c4@10 [eb4,g4]@21 ~ eb4@10 [f4,a4]@21 c4@10 ~ [c4,a4]@21 ~@23]/5", // D Eb Bb5 Dm F Eb F
AY: "[~ [eb4,g4]@2 [g4,bb4]@5 ~ [g4,bb4]@2 [g4,bb4]@3 [f4,a4]@5 ~@5 [g4,bb4]@3 [g4,bb4]@3 [g4,bb4]@5 [g4,bb4]@3 [g4,bb4]@2 [f4,a4]@5 ~ [eb4,g4]@5 [f4,a4]@5 [f4,a4]@3 [f4,a4]@2 [eb4,g4]@3]/2", // Eb Gm F Gm F Eb F Eb
AZ: "[~@3 [d4,f4]@16 g5@5 f5@5 eb5@5 d5@5 ~ c5@5 bb4@5 c5@10 ~ c5@10 bb4@5 ~ g4@5 c5@10 c5@10 ~ bb4@10 ~ bb4@2 a4@3 bb3@9, ~@19 [bb4,d5]@10 [f4,bb4]@10 ~ [d4,f4]@10 [c4,a4]@21 c4@10 ~ eb4@32 ~@14]/4", // Dm Bb Bb5 Dm F
BA: "[~@22 g4@5 ~ bb4@5 c5@5 d5@5 ~ f5@5 g5@10 g5@10 ~ f5@5 eb5@5 ~ g5@10 g5@10 ~ f5@10 [bb4,d5,f5]@32 g5@5 f5@5 [f4,bb4,eb5]@6, ~@17 [bb3,d4,f4]@10 ~ [d4,g4]@10 [f4,bb4]@10 ~ [g4,bb4]@32 [g4,bb4]@32 ~@31 [bb4,d5]@10 ~@6]/5", // Bb Ebsus2 Bb G5 Bb5 Gm Bb
BB: "[d5@5 c5@5 bb4@5 ~ c5@10 c5@10 ~ bb4@5 g4@5 c5@10 ~ c5@10 ~@6 bb4@5 c5@10 c5@10 ~ g4@5 bb4@5 ~ c5@10 d5@10 ~ c5@2 [eb4,a4,d5]@8 d5@3 c5@3 [eb4,g4]@5 [eb4,g4]@2 [eb4,g4]@3 [g4,bb4]@5 [g4,bb4]@3 [g4,bb4]@3 [f4,a4]@5 ~@5 [g4,bb4]@3 [g4,bb4]@2 [g4,bb4]@5 ~ [g4,bb4]@2, ~@5 [d4,f4]@10 ~ [c4,a4]@21 c4@10 [eb4,g4]@21 [eb4,g4]@10 ~ [c4,a4]@21 c4@10 ~ [c4,a4]@21 ~@60]/6", // D Eb Gm F Gm Dm F Eb …
BC: "[[g4,bb4]@3 [f4,a4]@5 [eb4,g4]@5 ~ [f4,a4]@5 [f4,a4]@3 [f4,a4]@2 [eb4,g4]@5 [d4,f4]@16 g5@5 ~ f5@5 eb5@5 d5@5 c5@5 ~ bb4@5 c5@10 ~ c5@8, ~@45 [bb4,d5]@10 ~ [f4,bb4]@10 [d4,f4]@10 ~ [c4,a4]@19]/3", // Gm F Eb F Eb Dm Bb Bb5 …
BD: "[~@2 bb4@5 g4@5 ~ c5@10 c5@10 ~ bb4@10 bb4@3 a4@3 bb3@21 ~@25, ~@2 c4@10 ~ eb4@32 ~@51]/3",
})).s("gm_piano").gain(0.2).pan(1)
// drums · kick
const kick = s("bd").struct(`<
~@4 A B@23 C A B D E F G H I J K L M@2 N O@2 P Q P O@2 N M@15 ~ M@22 R J@2 S G@2 T D@2 U V@2 W X@2 Y Z@2 AA AB@2 AC AD
AE AF AG@2 AH AI@2 AJ AK AL AM AN AO@2 AP AQ@2 AR@2 AS AT@2 AU AV@2 AW AX@2 AY AZ@2 BA BB@2 BC BD@2 BE ~
>`.pickRestart({
A: "~@29 x ~@2", B: "~@5 x ~ x ~@21 x ~@2", C: "~@5 x ~ x ~@24", D: "~@5 x ~@2 x ~@20 x ~@2",
E: "~@5 x ~@2 x ~@21 x ~", F: "~@3 x!2 ~@10 x", G: "~@6 x ~@2 x ~@20 x ~", H: "~@6 x ~@2 x ~@21 x",
I: "~@7 x ~ x ~@21 x", J: "~@7 x ~@2 x ~@20 x", K: "~@7 x ~@2 x ~@21", L: "x ~@3 x!2 ~@10", M: "x ~@7 x ~@2 x ~@20",
N: "~ x ~@7 x ~ x ~@20", O: "~ x ~@7 x ~@2 x ~@19", P: "~ x ~@3 x!2 ~@9", Q: "~@2 x ~@7 x ~@2 x ~@18",
R: "x ~@7 x ~ x ~@20 x", S: "~@7 x ~ x ~@20 x ~", T: "~@6 x ~ x ~@20 x ~@2", U: "~@5 x ~ x ~@20 x ~@3",
V: "~@4 x ~@2 x ~@20 x ~@3", W: "~@4 x ~ x ~@20 x ~@4", X: "~@3 x ~@2 x ~@20 x ~@4", Y: "~@3 x ~ x ~@20 x ~@5",
Z: "~@2 x ~@2 x ~@20 x ~@5", AA: "~@2 x ~ x ~@20 x ~@6", AB: "~ x ~@2 x ~@20 x ~@6", AC: "~ x ~ x ~@20 x ~@7",
AD: "~@3 x", AE: "x ~@2 x ~@20 x ~@7", AF: "x ~ x ~@21 x ~@6 x", AG: "~@2 x ~@20 x ~@7 x", AH: "~ x ~@21 x ~@6 x ~",
AI: "~ x ~@20 x ~@7 x ~", AJ: "x ~@21 x ~@6 x ~@2", AK: "x ~@20 x ~@7 x ~@2", AL: "x ~@20 x ~@7 x ~ x",
AM: "~@21 x ~@6 x ~@2 x", AN: "~@20 x ~@7 x ~@2 x", AO: "~@10 x ~@3 x!2", AP: "~@19 x ~@7 x ~@2 x ~",
AQ: "~@19 x ~@7 x ~ x ~@2", AR: "~@18 x ~@7 x ~@2 x ~@2", AS: "~@9 x ~@3 x!2 ~", AT: "~@17 x ~@7 x ~@2 x ~@3",
AU: "~@17 x ~@7 x ~ x ~@4", AV: "~@16 x ~@7 x ~@2 x ~@4", AW: "~@8 x ~@3 x!2 ~@2", AX: "~@15 x ~@7 x ~@2 x ~@5",
AY: "~@15 x ~@7 x ~ x ~@6", AZ: "~@14 x ~@7 x ~@2 x ~@6", BA: "~@7 x ~@3 x!2 ~@3", BB: "~@13 x ~@7 x ~@2 x ~@7",
BC: "~@13 x ~@7 x ~ x ~@8", BD: "~@12 x ~@7 x ~@2 x ~@8", BE: "~@6 x ~@3 x!2 ~@4",
})).gain(0.17)
// drums · rim
const rim = s("rim").struct(`<
~@5 A@24 ~ A@3 B@3 C@3 D@3 E@3 F@2 E@3 D@16 ~ D@23 C@3 B@3 A@3 G@3 H@3 I@3 J@3 ~ K@2 L@3 M@3 N@3 O@3 P@3 Q@3 R@3 S@3 T
U@2 V@3 W@3 X@3 ~
>`.pickRestart({
A: "~@13 x ~@18", B: "~@7 x ~@8", C: "~@15 x ~@16", D: "~ x", E: "~@17 x ~@14", F: "~@9 x ~@6", G: "~@3 x ~@4",
H: "~@11 x ~@20", I: "~@5 x ~@10", J: "~@9 x ~@22", K: "~ x ~@2", L: "~@7 x ~@24", M: "~@3 x ~@12", N: "~@5 x ~@26",
O: "~ x ~@6", P: "~@3 x ~@28", Q: "~ x ~@14", R: "~ x ~@30", S: "x", T: "x ~@30 x", U: "~@31 x", V: "~@15 x",
W: "~@29 x ~@2", X: "~@7 x",
})).gain(0.25)
// drums · snare
const snare = s("sd").struct(`<
~@5 A@24 ~ A B@3 C@3 D@3 E@3 F@5 E@3 D@15 ~ D@23 C@3 B@3 A@4 G@3 H@3 I@3 J@2 ~ K@3 L@3 M@3 N@3 O@3 P@3 Q@3 R@3 S@3 T@3
U@3 V@4 W@2
>`.pickRestart({
A: "~@9 x ~@6", B: "~@19 x ~@12", C: "~@5 x ~@2", D: "~@21 x ~@10", E: "~@11 x ~@4", F: "~@23 x ~@8",
G: "~@17 x ~@14", H: "~ x", I: "~@15 x ~@16", J: "~@7 x ~@8", K: "~@13 x ~@18", L: "~@3 x ~@4", M: "~@11 x ~@20",
N: "~@5 x ~@10", O: "~@9 x ~@22", P: "~ x ~@2", Q: "~@7 x ~@24", R: "~@3 x ~@12", S: "~@5 x ~@26", T: "~ x ~@6",
U: "~@3 x ~@28", V: "~ x ~@14", W: "~ x ~@30",
})).gain(0.22)
// drums · hihat
const hihat = s("hh").struct(`<
~@4 A B@23 C A B D E F G H I J K L M@2 N O@2 P Q R S@2 T U@15 ~ U@22 V W@2 X Y@2 Z AA@2 AB AC AD AE AF AG AH AI AJ AK
AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB@2 BC BD@2 BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV
BW@2 BX BY
>`.pickRestart({
// … 63 more lines
More by ABBA
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.