0:00/0:00
// Let's Dance — Cats
// 134 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(134/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.
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
A B C D A E F G F H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD F AE AF AG F AH F AI A AJ AK AL G AM AK AN AO AP
AQ AR AS A AT M AU AV AW AX AY AZ BA A AS BB BC AK AB BB BD BE BF BG BH F BI BJ BK BE BL BM BN F BO BP BQ G BR BS BH G
H BT BU BV BR BW AY G BX M BY BZ CA
>`.pickRestart({
A: "a1@5 ~@3 a1 ~ a1@3 ~ e1 ~", B: "d2@5 ~ d2 ~@3 d2@3 ~ d2@2", C: "a1@5 ~ e1@2 a1 ~ a1@2 ~@2 a1 ~",
D: "e1@4 ~@4 e1 ~ e1@2 ~@2 e1@2", E: "a1 ~ a1@2 ~@2 c#2@3 ~ d2@2 d#2@2 e2 ~", F: "a1@5 ~@3 a1 ~ a1@3 ~ a1 ~",
G: "a1@5 ~@3 a1 ~ a1@2 ~@2 e1 ~", H: "a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1 ~", I: "e1@4 ~@4 e1 ~ e1@3 ~ b1@2",
J: "e1@2 ~ e1 ~ e1 ~ e1", K: "e2@5 ~@3 b1 ~ b1@3 ~ b1 ~", L: "e2 ~ e2@3 ~ e2@2 ~@2 e2@2 ~@2 b1 ~",
M: "e2@5 ~@3 e2 ~ e2@2 ~@2 b1 ~", N: "e2 ~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 b1 ~", O: "e2@8 e1 ~ e1@3 ~ e1 ~",
P: "e2@3 ~@3 e2@2 ~@2 e2@3 ~ e1@2", Q: "a1@5 ~@3 a1 ~ a1 ~@3 e1 ~", R: "a1@5 ~ a1@3 ~ c#2@2 d2@2 e2@2",
S: "a1@5 ~@3 a1 ~ a1@3 ~ e1@2", T: "a1 ~ a1@2 ~@2 a1@2 ~@2 a1@3 ~ e1@2", U: "a1@5 ~@3 a1 ~ a1@2 ~@2 a1 ~",
V: "a1 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1 ~", W: "d2@5 ~@3 d2 ~ d2@3 ~ a1@2", X: "d2 ~ d2@3 ~ d2@2 ~@2 d2@2 ~@2 d2@2",
Y: "a1@4 ~@2 e1@2 a1 ~ a1@3 ~ a1 ~", Z: "e1@2 ~ e1 ~ e1 f#1 e1", AA: "a1@4 ~@4 a1 ~ a1@2 ~@2 a1 ~",
AB: "d2 ~ d2@2 ~@2 d2@2 ~@2 f#2@2 g2@2 a2@2", AC: "a1@4 ~@4 a1 ~ a1@3 ~ a1 ~", AD: "e1@4 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~",
AE: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1@2", AF: "a1@5 ~@3 a1 ~ a1@3 ~ a1@2", AG: "e1@4 ~@2 e1@2 ~@2 e1@3 ~ e1@2",
AH: "d2 ~ d2@2 ~@2 d2@4 f#2@2 g2@2 a2@2", AI: "e1@2 ~ e1 ~ e1 e2 e1", AJ: "a1 ~ a1@3 ~ c#2@3 ~ d2@4 e2@2",
AK: "d2@5 ~@3 d2 ~ d2@2 ~@2 a1 ~", AL: "d2 ~ d2@2 ~@2 d2@3 ~ f#2@2 g2@2 a2@2",
AM: "a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2", AN: "d2@5 ~@3 d2 ~ d2@2 ~@2 d2 ~", AO: "e2@3 ~@13", AP: "e1 ~ e1 ~",
AQ: "e1@4 e2@4 e1@4 e2@3 ~", AR: "a1@5 ~@3 a1 ~ a1@2 ~@4", AS: "a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 e1 ~",
AT: "a1 ~ a1@3 ~ a1@2 ~@2 c#2@2 ~@2 d2@2", AU: "e2@5 ~ e2 ~@3 e2@2 ~@2 b1 ~", AV: "e2@5 ~@3 e2 ~ e2@3 ~ b1 ~",
AW: "e2 ~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 b1@2", AX: "e2@7 ~ e1 ~ e1@3 ~@3", AY: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@3 ~ g#1 ~",
AZ: "a1@4 ~@4 a1 ~ a1@2 ~@2 e1 ~", BA: "a1 ~ a1@3 ~ a1@2 ~@2 c#2@2 d2@2 e2@2", BB: "a1@5 ~@3 a1 ~ a1@3 ~@3",
BC: "a1 ~ a1@3 ~ a1@2 ~@2 a1@3 ~ c#2@2", BD: "e1 ~ e1@2 ~@2 e1 ~ e1 ~ e1@2 ~@2 e1 ~", BE: "a1@5 ~@3 a1 ~ a1@5 ~",
BF: "d2 ~ d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2 ~", BG: "a1@5 ~ e1 ~ a1 ~ a1@3 ~ a1 ~",
BH: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~", BI: "e1 ~ e1@4 e2@3 ~ e1@4 e2@2", BJ: "a1@4 ~@2 e1 ~ a1 ~ a1@3 ~ a1 ~",
BK: "e1@4 ~@4 e1 ~ e1@3 ~ e1@2", BL: "d2 ~ d2@2 ~@2 d2 ~@3 d2@4 e2@2", BM: "a1@5 ~ e1 ~ a1 ~ a1@3 ~ a1@2",
BN: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2", BO: "a1 ~ a1@3 ~ c#2@2 ~@2 d2@2 ~@2 d#2@2",
BP: "e2@5 ~ e2 ~ e2 ~ e2@3 ~ e2 ~", BQ: "e2 ~ e2@2 ~@2 e2 ~@3 e2@4 e1@2", BR: "a1 ~ a1@3 ~ c#2@3 ~ d2@3 ~ d#2 ~",
BS: "e2@4 ~@2 e2 ~ e2 ~ e2@2 ~@2 b1 ~", BT: "e1@4 ~@4 e1 ~ e1@2 ~@4", BU: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1 ~",
BV: "a1@9 ~ a1@2 ~@2 e1 ~", BW: "e2@5 ~@3 e2 ~ e2@3 ~ b1@2", BX: "a1 ~ a1@2 ~@2 a1 ~@3 a1@3 ~ c#2@2",
BY: "e2 ~ e2@3 ~ e1@2 ~@2 e1@2 ~@2 e1 ~", BZ: "a1@2 ~@3 d2@3", CA: "a1 ~@3",
})).s("gm_electric_bass_finger").gain(0.54)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<A B C D E F ~@13 G@2 ~@2 H I ~@16 H J ~@60 K L>".pickRestart({
A: "[c#4,e4]@3 ~ [b3,c#4,d#4,e4] ~ [c#4,e4]@5 ~ [b3,c#4,e4]@2 a3 ~, b3 ~@15", B: "b3 a3@6 ~, d4@15 ~, a3 ~@15",
C: "[c#4,e4]@3 ~ [c#4,e4]@3 ~ [c#4,e4]@3 ~ [b3,e4]@2 a3 ~, [b3,d#4] ~@3 b3 ~@11", // C#m E5 B
D: "[b3,c#4,e4] ~ b3@7 ~ b3@2 c#4@2 e4 ~, ~@2 e4@11 ~@3", // C#m7
E: "~@4 b3 c#4@2 ~ [c#4,e4]@3 ~ [b3,e4]@2 a3 ~, ~@4 e4@3 ~ b3 ~@7", F: "~ a4@7, b3@11 ~@5, ~ c#4@15",
G: "[~@6 [f#4,a4]@4 e4 ~ b3@2 ~@2 a3@12 ~@4, ~@6 e4 ~@5 e4@17 ~@3, ~@14 c#4@15 ~@3]/2", // F#m
H: "~@4 f#4@4 e4@2 ~@2 [c#4,e4]@2 b3 a3, ~@2 a4@3 ~@3, ~@4 e4 ~@7 b3 ~@3", I: "b3@2 a3@11 ~@3, d4@13 ~@3",
J: "b3@2 a3@11 ~@3, d4@13 ~@3, a3 ~@15", K: "~@6 [a3,c#4] [b3,d4] [c#4,e4] ~ [d4,f#4]@4 ~@2", L: "[a3,c#4,a4]@13 ~@3",
})).s("gm_overdriven_guitar").gain(0.39).pan(0.3)
// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
A B C@8 D@2 E@6 F@6 G@2 H@4 I@7 J K L@3 M@2 N@2 G@2 O ~@14 P@4 M@2 Q@3 R K S T@2 U V@2 B W@2 X@2 Y@2 Z@2 AA@2 X@2 AA@2
X@2 Y@2 X@2 AA@2 AB@2
>`.pickRestart({
A: "[e3,a3,c#4]", B: "[f#3,a3,d4]@15 ~", C: "[[a3,c#4]@15 ~ [g#3,b3]@14 ~@2 [a3,c#4]@94 ~@2, e3]/8",
D: "[[g#3,b3,d4]@15 ~]/2", E: "[[g#3,b3,e4]@95 ~]/6", F: "[[e3,a3,c#4]@47 ~]/6", G: "[[f#3,a3,d4]@15 ~]/2",
H: "[[a3,c#4]@15 ~ b3@16 c#4@15 ~ [f#3,d4]@15 ~, e3@47 ~@17, ~@16 g#3@14 ~@2 a3@31 ~]/4", // A D
I: "[[a3,c#4]@15 ~ b3@16 [a3,c#4]@14 ~@2 [g#3,e4]@15 ~ [a3,c#4]@15 ~ [g#3,b3]@16 [a3,c#4]@14 ~@2, e3@55 ~, ~@16 g#3@14 ~@17 b3@16 ~@49]/7", // A C#m A G#m A
J: "[f#3,a3,d4]@7 ~, d#4 ~@15", K: "[e3,a3,c#4]@15 ~",
L: "[[g#3,b3]@15 ~ a3@23 ~ g3@6 ~@2, e3@23 ~, ~@16 c#4@31 ~]/3", M: "[[f#3,a3,d4]@31 ~]/2",
N: "[a3@23 ~ g3@6 ~@2, [e3,c#4]@31 ~]/2", O: "[g#3,b3,e4]@3 ~@5", P: "[[e3,a3,c#4]@63 ~]/4",
Q: "[[a3,c#4]@15 ~ b3@16 [a3,c#4]@15 ~, e3@23 ~, ~@8 g#3@7 ~@9]/3", R: "[f#3,a3,d4]@7 ~", S: "[e3,g#3,b3]@15 ~",
T: "[[a3,c#4]@15 ~ [g#3,b3]@15 ~, e3@15 ~]/2", U: "[e3,a3,c#4]@7 ~", V: "[[g#3,b3]@14 ~@2 [a3,c#4]@15 ~, e3@15 ~]/2",
W: "[[a3,c#4]@15 ~ [g#3,b3]@15 ~, e3@31 ~]/2", X: "[[e3,a3,c#4]@15 ~]/2", Y: "[[e3,g#3,b3]@31 ~]/2",
Z: "[[e3,a3,c#4]@31 ~]/2", AA: "[[e3,g#3,b3]@15 ~]/2", AB: "[e3,a3,c#4]@3 ~@5",
})).s("gm_synth_strings_2").gain(0.3)
// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~@26 A B@2 C D@3 ~ E B@2 F G@4 H@2 I J K@2 L ~ M ~@18 E B@2 F N@3 ~ E B@2 C O@4 P@4 Q@4 P@4 R@7 S
>`.pickRestart({
A: "a5@11 ~ a5 b5 c#6 d6", B: "e6/2", C: "f#6", D: "e6/3", E: "a5@13 b5 c#6 d6", F: "f#6@15 ~", G: "[e6@61 ~@3]/4",
H: "[f#6@30 g#6 f#6]/2", I: "e6", J: "f#6 e6@15", K: "f#6/2", L: "e6@3 ~@13",
M: "[e4,g#4,e5] ~@3 [e4,g#4,e5] ~@3 [e4,e5]@2 ~@2 [e4,g#4,e5]@2 ~@2, ~@8 g#4 ~@7", N: "[e6@43 ~@5]/3",
O: "[e6@55 ~@9]/4", P: "[e6@31 ~]/4", Q: "[e6@63 ~]/4", R: "[e6@101 ~@11]/7", S: "[c#6,a6] ~@3",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.6)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
A B C D@3 E F E@2 G H I J@2 K L M@2 A N F O@2 P@2 Q R N S A T@2 U V W@2 X Y Z@2 AA AB@4 AC AD AE AF AG@5 AH AI AJ AK@3
AL@8 AM@4 AN@3 AO@2 AP@2 AQ AR@5 AS@7 AT@8 AU@3 AV
>`.pickRestart({
A: "~@4 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@2", // A
B: "~@4 [a2,f#3,a3,d4,f#4]@4 ~@2 [a2,f#3,a3,d4,f#4]@3 ~ [a2,f#3,a3,d4,f#4]@2, ~@14 c#4 ~", // D
C: "~@4 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@2", // A
D: "[~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,g#3,b3,e4]@2 ~@4 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@4 [a2,e3,a3,c#4,e4]@4, ~@7 e3@2 ~@15]/3", // E A
E: "~@2 [a2,e3,a3,c#4,e4]@2 ~ [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]", // A
F: "~@4 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2", // A
G: "~@2 e3 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@2", // E
H: "~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@2", // E
I: "~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ e2 ~ [e2,b2,e3,g#3,b3,e4]@4", // E
J: "[~@4 [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,e3,g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@4 ~@2 b3 ~ b2@2 b2@2, ~@14 [e2,b2,e3]@3 ~@11 [e2,e3,g#3,b3,e4]@4]/2", // E E5 E
K: "~@4 [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@2", // E
L: "~@4 [e2,b2,e3,g#3,b3,e4]@5 ~@3 [g#3,e4] ~ [g#3,e4] ~, ~@3 [e2,b2,e3], ~@6 b3 ~", // E C#m E5
M: "[~@4 [b2,g#3,b3,e4] ~ [g#3,b3,e4] ~ b2 ~ [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,g#3,b3,e4]@2 ~@4 [a2,e3,a3,c#4,e4]@5 ~ [a2,c#4,e4] ~ [a2,e3,a3,c#4,e4]@4, ~@2 [e2,e3]@2 ~@3 e3@2 ~@7]/2", // E A E
N: "~@4 [a2,e3,a3,c#4,e4]@5 ~@3 [a2,e3,a3,c#4,e4]@4", // A
O: "[~@4 [e3,a3,c#4,e4]@6 ~@2 [a2,e3,a3,c#4,e4]@7 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,g3,c#4,e4]@2 ~@2 [a2,e3,g3,c#4,e4]@2, ~ a2 ~@6]/2", // A A7
P: "[~@4 [a2,d3,a3,d4,f#4]@4 ~@2 a2 ~ [a2,d3,f#4]@7 ~ [a2,d3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@3 ~ [a2,d3,a3,d4,f#4]@2, ~@12 [a3,d4]@5 ~@15]/2", // D D5
Q: "~@4 [a3,c#4,e4]@5 ~@3 [a2,e3,a3,c#4,e4]@4, ~@4 [a2,e3]@7 ~@5", // A A5
R: "~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,g#3,b3,e4]@2 ~@2 [e2,e3,g#3,b3,e4]@2", // E
S: "~@4 [a2,f#3,a3,d4,f#4]@4 ~@2 [a2,f#3,a3,d4,f#4]@3 ~ [a2,f#3,a3,d4,f#4]@2", // D
T: "[~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ e2 ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,g#3,b3,e4]@2 ~@4 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2, ~@7 e3@2 ~@7]/2", // E A
U: "~@2 [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@2", // E
V: "~@4 [a2,e3,a3,c#4,e4]@5 ~ a2 ~ [a2,e3,a3,c#4,e4]@4", // A
W: "[~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e3,b3,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3] ~ [a2,e3,c#4,e4] ~ [a2,e3,c#4,e4]@2, ~@7 [e2,b2,g#3] ~@6 a3@2]/2", // E E5 A A5 A E
X: "~@4 [a2,f#3,a3,d4,f#4]@5 ~ [a2,f#3,a3,d4,f#4]@3 ~ [a2,f#3,a3,d4,f#4]@2", // D
Y: "~@4 [a2,e3,a3,c#4,e4]@5 ~ e3 ~ [a2,e3,a3,c#4,e4]@4", // A
Z: "[~@4 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,g#3,b3,e4]@3 ~@3 [a2,e3,a3,c#4,e4]@5 ~@3 [a2,e3,a3,c#4,e4]@4, ~@14 e3@5 ~@13, ~@14 f2 ~@17]/2", // E A
AA: "~@4 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,g3,a3,c#4,e4]@3 ~ [a2,e3,g3,a3,c#4,e4]@2", // A A7
AB: "[~@4 [a3,d4,f#4]@7 ~ [a2,d3,a3,d4,f#4]@7 ~ [a2,d3,a3,d4,f#4]@5 ~ [a2,d3,a3,d4,f#4]@3 ~ [a2,d3,d4,f#4]@3 ~ e3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,a3,c#4,e4]@2, ~@4 [a2,d3,f#3]@5 ~@21 a3@4 ~@28 e3 ~]/4", // D A D
AC: "~@4 [d3,a3,d4,f#4]@5 ~@3 [d3,a3,d4,f#4]@4, ~@6 a2 ~", // D
AD: "~@4 [d3,a3,d4,f#4]@4 ~@2 [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4] ~, ~@10 f4 ~@5", AE: "[e3,g#3,b3,e4] ~",
AF: "[e2,b2,e3,g#3,b3,e4]@5 ~@3", // E
AG: "[[e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [g#3,b3,e4] ~ [a2,b2,a3,c#4,e4] ~ a2 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@2, ~@7 e3@2 ~@31]/5", // E A
AH: "~@4 [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4] ~", // E
AI: "[e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4] ~", // E
AJ: "[e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@2", // E
AK: "[[g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,g#3,b3,e4]@2 ~@4 [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@2, ~@30 e3@5 ~@13]/3", // E
AL: "[~@4 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [e3,e4]@2 ~@4 [d3,f#3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@3 ~ [a2,d3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@2, ~@36 [a2,e3]@4 ~@54 a2@10 ~@2 g#2 ~@19 a2 ~, ~@94 a3@5 ~@29, ~@94 c#4 ~@33]/8", // A E D A5
AM: "[[a2,e3]@3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ [a3,c#4]@2 ~@4 [e2,b2,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 ~@4 [a2,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ [e3,a3,c#4,e4] ~ f#3@3 ~ [d3,f#3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@3 ~ [a2,d3,a3,d4,f#4]@2, ~@14 e3@9 ~@3 e2@4 e3@10 ~@24, ~@14 e4 ~@15 b2 ~@15 a2@10 ~@8]/4", // A5 A E A D
AN: "[~@4 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a3,e4] ~ [b2,g#3,b3,e4] ~ [b2,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,b3,e4]@4 [b2,g#3,b3,e4] ~ [a2,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~ e3@2, ~@14 e3@7 ~@5 g#3@2 ~@2 e3@5 ~@13, ~@16 e2@5 ~@27]/3", // A A5 E E5 E A
AO: "[[e2,b2,g#3,b3,e4] ~ [e2,b2,e3,b3,e4]@4 g#3 ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,g#3,e4] ~ [a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4]@5 ~ [e3,a3,c#4,e4]@4 a2@2, ~@2 g#3@3 ~@9 e3@5 ~@11 a3 ~, ~@14 b3@2 a2@3 ~@7 a2@2 ~@4]/2", // E E5 E A
AP: "[~@4 [e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@2 ~@2 [b2,g#3,b3,e4] ~ [a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@4 a3 ~, ~@4 g#2@3 ~@3 e2@4 e3@4 ~@14, ~@16 a2@3 ~@13]/2", // E A
AQ: "[d3,f#3,a3,d4,f#4] ~@3 [a2,d3,a3,d4,f#4]@4 ~@2 [a2,d3,a3,d4,f#4]@3 ~ [a2,d3,a3,d4,f#4] ~", // D
AR: "[[a2,e3,a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ a3 ~ [e2,b2,g#3,b3,e4] ~@3 [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,g#3,b3,e4]@4 [b2,g#3,b3,e4] ~ [a2,a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 a3 ~@5 [b2,e3,g#3,b3,e4]@3 ~@3 [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@2, ~@14 e3@4 ~@8 e3@2 ~@2 e3@4 ~@28 e3@5 ~@13, ~@64 e2@7 ~@9]/5", // A E A E
AS: "[~@4 [b2,e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@3 ~ [g#3,e4] ~ [a2,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@3 ~ e3@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@3 ~ [b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@4 ~@2 [e2,b2,g#3,b3,e4]@4 [g#3,b3,e4]@2 a2@3 ~ [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3,a3,e4]@3 ~ [a2,e3,a3,e4]@2, ~@4 e2@10 e3@5 ~@33 [f2,c3]@3 ~@3 e2@8 ~@46, ~@14 b3@2 ~@30 a3 ~@27 e3@2 ~@2 e3@5 ~@29]/7", // E C#m A E A A5 F5
AT: "[~@4 [e2,b2,g#3,b3,e4]@4 ~@2 [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@3 ~ [b2,g#3,b3,e4]@3 ~@3 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@4 [b2,g#3,b3,e4]@3 ~@3 [e2,b2,e3,g#3,b3,e4]@3 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@3 ~ [b2,g#3,b3,e4]@2 ~@4 [a2,e3,a3,c#4,e4]@2 ~@4 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@4 ~@2 [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2, e3@4 ~@9 e2@3 ~@16 e2@4 ~@9 e2@3 ~@16, ~@30 e3@5 ~@27 e3@9 ~@23 e3@4 ~@30]/8", // E A E A
AU: "[~@4 [e2,g#3,b3,e4]@3 ~@3 [e2,b2,e3,g#3,b3,e4]@2 ~@2 [e2,b2,e3,g#3,b3,e4]@5 ~ [b2,e3,g#3,b3,e4]@4 ~@2 [b2,e3,g#3,b3,e4]@3 ~ [b2,g#3,b3,e4] ~ [a2,a3,c#4,e4]@3 ~@7 [a2,d3,f#3,a3,d4,f#4]@5 ~, e3@7 ~@13 e2@10 e3@5 ~@13]/3", // E A D
AV: "[a2,e3,a3,c#4,e4]@9 ~@7", // A
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.6)
// chords · brass section · "BRASS 1"
const brass_section = note("<~@50 A B@2 C D E@2 F@2 G@2 H@2 ~@22 I@2 J K I@2 L M N@2 O P G Q R@2 S T U V>".pickRestart({
A: "~@3 e4", B: "[[b4,d5]@6 [a4,c#5] ~ [a4,c#5]@15 ~@3 [b4,d5]@2 ~ [b4,d5]@2 ~]/2",
C: "[b4,d5]@2 ~ [a4,c#5]@2 ~ [a4,c#5] ~ [a4,c#5]@2 ~ [g#4,b4]@2 ~ [g#4,b4] ~", // Bm A G#m
D: "[g#4,b4]@3 [a4,c#5]@2 ~ [a4,c#5] ~ [a4,c#5]@3 [g#4,b4]@3 [f#4,a4] ~", // G#m A G#m F#m
E: "[[g#4,b4] [a4,c#5] [g#4,b4] f#4 [g#4,b4]@23 ~@5, ~@4 a4 ~@27]/2", // G#m A G#m
F: "[[b4,d5]@3 [a4,c#5]@3 [b4,d5]@2 [a4,c#5]@3 [g#4,b4]@3 [b4,d5]@16 ~@2]/2", // Bm A Bm A G#m Bm
G: "[b4,d5]@3 [a4,c#5]@3 [b4,d5]@2 [a4,c#5]@3 [g#4,b4]@3 [a4,c#5]@2", // Bm A Bm A G#m A
H: "[[b4,d5]@6 [a4,c#5] [g#4,b4] [a4,c#5]@24]/2", I: "[e5@31 ~]/2",
J: "[c#5,e5]@2 ~ [d5,f#5]@2 [c#5,e5]@2 ~ f#5@2 [c#5,e5]@3 [d5,f#5]@2 ~, ~@7 d5@3 ~@6", // C#m D C#m D
K: "[c#5,e5] [b4,d5] [a4,c#5]@12 ~@2", L: "[c#5,e5]@3 [d5,f#5]@2 ~ [c#5,e5]@2 [d5,f#5]@2 ~ [c#5,e5]@2 ~ [d5,f#5] ~",
M: "[c#5,e5] [d5,f#5] [c#5,e5] [b4,d5] [a4,c#5]@11 ~", N: "[e5@15 ~]/2",
O: "[c#5,e5]@3 [d5,f#5]@2 ~ e5@2 [d5,f#5]@3 [c#5,e5]@3 [d5,f#5]@2, ~@5 c#5@2 ~@9", // C#m D C#m D
P: "[c#5,e5] [d5,f#5] [c#5,e5] [b4,d5] [a4,c#5]@9 ~@3", // C#m D C#m Bm A
Q: "[b4,d5]@3 [a4,c#5]@3 [b4,d5]@2 [a4,c#5]@3 [g#4,b4]@2 ~ [a4,c#5]@2", // Bm A Bm A G#m A
R: "[[b4,d5]@6 [a4,c#5] [g#4,b4] [a4,c#5]@16 ~@8]/2", // Bm A G#m A
S: "[b4,d5]@2 ~ [a4,c#5]@2 ~ [b4,d5]@2 [a4,c#5]@2 ~ [g#4,b4]@3 c#5@2, ~@14 a4 ~", // Bm A Bm A G#m
T: "[b4,d5]@2 ~ [a4,c#5]@3 [b4,d5]@2 [a4,c#5]@2 ~ [g#4,b4]@3 [a4,c#5] ~", // Bm A Bm A G#m A
U: "[a4,c#5]@5 ~ [a4,c#5] [b4,d5] [c#5,e5] ~ [d5,f#5]@3 ~@3", V: "[c#5,a5]@9 ~@7",
})).s("gm_brass_section").gain(0.5)
// drums · kick
const kick = s("bd").struct(`<
A B C D C B C D A B A B A B A D A B A B C D A B A B A D C B A B A B C D A B A B A E A B A B A B F G H C B A B C B A B
C B A B A B A B C B A B A D A B A B A B A I A B A B C B A B A J A J A B C B C B A B A B K F
>`.pickRestart({
A: "x ~@3 x!2 ~@2", B: "x!2 ~ x ~ x ~ x", C: "x ~@3 x!2 ~ x", D: "x!2 ~ x ~ x ~@2", E: "~ x ~ x ~ x ~ x", F: "x",
G: "x!2", H: "x!4", I: "x!2 ~ x ~@3 x", J: "x ~@2 x ~ x ~ x", K: "x ~@4 x ~@2",
})).gain(0.64)
// drums · snare
const snare = s("sd").struct(`<
A@5 B A@27 B A@7 C A@5 D ~ E F A@11 B A@13 D A@7 G A@3 H A@3 I A@3 J A@3 I A@2 K ~
>`.pickRestart({
A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@4 x ~@3 x!3 ~ x!4", D: "~@2 x ~@2 x!3", E: "x!2", F: "x ~@3 x ~@3 x!3 ~@5",
G: "~@4 x ~@5 x ~ x ~ x!2", H: "~@4 x ~@3 x!3 ~@5", I: "~ x!2 ~ x!2 ~@2", J: "~@4 x!3 ~@9", K: "~@4 x!2 ~@10",
})).gain(0.72)
// drums · low tom
const low_tom = s("lt").struct("<~@50 A ~@37 A ~@7 A ~@3 B ~@4>".pickRestart({
A: "~@15 x", B: "~@7 x",
})).gain(0.72)
// drums · hihat
const hihat = s("hh").struct("<A@41 B A@6 C D E A@45 F A@3 G A@2 H C>".pickRestart({
A: "x!8", B: "x!6 ~@2", C: "x", D: "x!2", E: "x!4", F: "x!6 ~ x", G: "x!4 ~ x ~ x", H: "x ~@4 x ~@2",
})).gain(0.56)
// drums · mid tom
const mid_tom = s("mt").struct("<~@50 A ~@37 A ~@3 A ~@3 B ~@3 C ~@2 D ~>".pickRestart({
A: "~@7 x", B: "~@6 x!2", C: "~@5 x!2 ~", D: "~@3 x ~@4",
})).gain(0.72)
// drums · high tom
const high_tom = s("ht").struct("<~@50 A ~@37 A ~@3 B ~@3 C ~@3 D ~@4>".pickRestart({
A: "~@12 x!2 ~@2", B: "~@3 x", C: "~@4 x!2 ~@2", D: "~@3 x!2 ~@3",
})).gain(0.72)
// drums · crash
const crash = s("cr").struct("<A ~@19 A ~@13 A ~@7 A ~@8 A ~@25 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~ B A>".pickRestart({
A: "x", B: "x ~@4 x ~@2",
})).gain(0.64)
// … 8 more lines
More by Cats
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.