0:00/0:00
// The Christmas Song — Shakatak
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.
// bass · slap bass 2 · "SLAPBASS 2"
const bass = note(`<
A B A C A B A D@2 E F G H I J G K L M G H I J G N L O P Q R@2 P S T@2 U V W X Y V Z AA AB@3 AC AB AD AB AC AE AF AE AG
AE AH AI AJ Y V W X Y V AK AL Y V W AA Y V AK AM AB AD AB AN AB AD AB AO F AP H AQ AR G K AS M G H AT M G K AU M G H
AQ AV G H AU AW G H AX@2
>`.pickRestart({
A: "a1@3 ~ a1@3 ~ a1@3 ~ a1@2 g1 g#1", B: "a1@3 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~", C: "a1@3 ~ a1@3 ~ a1 ~ a1@4 g1 ~",
D: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~", E: "e2 d2 c2 a1 ~ d1 ~ e1@9", F: "~@8 a1@2 a2 ~ c2@2 c3 ~",
G: "d2@2 d3 d2 ~ d2 d3 ~ g1@2 g2 ~ b1@2 b2 ~", H: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~ a1@2 a2 ~",
I: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~@3 e2 ~", J: "e1@2 e2 e1 ~ e1 e2 ~ a1@2 a2 ~ c2@2 c3 ~",
K: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~ f#1@2 f#2 ~", L: "d2@2 d3 d2 ~ d2 d3 ~ e2@2 e3 ~@3 e3 ~",
M: "e2@2 e3 e2 ~ e2 e3 ~ a1@2 a2 ~ c2@2 c3 ~", N: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~@3 f#2 ~",
O: "e2@2 e3 e2 ~ e2 e3 ~ a1@2 a2 ~ a1@2 a2 ~", P: "a1@2 a2 ~ g1@2 g2 ~ a1@2 a2 ~ a1@2 a2 ~",
Q: "a1@2 a2 ~ e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~",
R: "[a1@2 a2 ~ g1@2 g2 ~ f1 ~ f2 ~ f1 ~ e1@4 [e2,f#2] e2 e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~]/2", // Esus2
S: "a1 ~ a2 ~ e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~", T: "[a1@2 a2 ~ g1@2 g2 ~ f1@2 f2 ~ f1 ~ e1@10 e2 ~@7]/2",
U: "a1@2 a2 ~ c2@2 c3 ~ d2@2 d3 ~@3 d3 ~", V: "g1@2 g2 ~ b1@2 b2 ~ c2@2 c3 c2 ~ c2 c3 ~",
W: "f#1@2 f#2 ~ a1@2 a2 ~ b1@2 b2 b1 ~ b1 b2 ~", X: "e1@2 e2 ~@3 e2 ~ e1@2 e2 e1 ~ e1 e2 ~",
Y: "a1@2 a2 ~ c2@2 c3 ~ d2@2 d3 d2 ~ d2 d3 ~", Z: "f#1@2 f#2 ~@3 f#2 ~ d2@2 d3 ~ d2 ~ d3 ~",
AA: "e1@2 e2 ~@3 e2 ~ e2@2 e3 e2 ~ e2 e3 ~", AB: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ g1@2 g2 ~",
AC: "f1@2 f2 ~ f1 ~ e1@4 e2 ~ e1@2 e2 ~", AD: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ e1@2 e2 ~",
AE: "f1@2 f2 ~ f1@2 f2 ~ f1 ~ f2 ~ f1 ~ f2 ~", AF: "e1@2 e2 ~ g1@2 g2 ~ a1 ~ a2 ~ a1 ~ a2 ~",
AG: "e1 ~ e2 ~ e1 ~ e2 ~ a1@2 a2 ~ a1@2 a2 ~", AH: "e1 ~ e2 ~ g1@2 g2!2 a1@2 a2 ~ a1@2 a2 ~",
AI: "d2@2 d3 ~ d2@2 d3 ~ d2@2 ~ d#2@2 e2@2 ~", AJ: "g2@7 ~", AK: "f#1@2 f#2 ~ f#1@2 f#2 ~ d2@2 d3 d2 ~ d2 d3 ~",
AL: "e2@2 e3 ~ e2 ~ e3 ~ e1@2 e2 e1 ~ e1 e2 ~", AM: "e1@2 e2 ~ e1@2 e2 ~ e2@2 e3 e2 ~ e2 e3 ~",
AN: "f1@2 f2 f1 f2 ~ e1@4 e2 ~ e1@2 e2!2", AO: "f1@2 f2 f1 f2!2 e1@10", AP: "d2@2 d3 ~ d2@2 d3 ~ g1@2 g2 ~ b1@2 b2 ~",
AQ: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~ e1@2 e2 ~", AR: "e1@2 e2!2 e1@2 e2 ~ a1@2 a2 ~ c2@2 c3 ~",
AS: "d1@2 d2 d1 ~ d1 d2 ~ e1@2 e2 ~ e1@2 e2 ~", AT: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~ e1 ~ e2 ~",
AU: "d2@2 d3 d2 ~ d2 d3 ~ e2@2 e3 ~ e2@2 e3 ~", AV: "e1!2 e2 ~ e1@2 e2 ~ a1@2 a2 ~ c2@2 c3 ~",
AW: "e2!2 e3 ~ e2 ~ e3 ~ a1@2 a2 ~ c2@2 c3 ~", AX: "[b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 e1 e2 ~ e1@4 ~@14]/2",
})).s("gm_slap_bass_2").gain(0.44)
// chords · flute
const flute = note("<~ A B A B A B A B ~@42 C D C E C D F G ~@53>".pickRestart({
A: "~@9 e5 ~ e5 g5 ~ g#5 ~", B: "a5 ~@2 a5 ~@2 a5 ~@9", C: "~@2 [e5,g5]!2 [c5,e5] ~ [a4,c5] ~ [g4,b4]@5 ~ [f4,a4] ~",
D: "[e4,g4]@2 ~ [b4,d5] ~@2 [a4,c5]@7 ~@3", E: "[e4,g4]@11 ~@5", F: "d5@8 ~@2 d5@2 ~ d#5@2 ~", G: "e5@7 ~",
})).s("gm_flute").gain(0.35)
// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
A@2 B C D E B C F ~ G@6 H@8 I@7 J@4 K@3 L M@2 N O P@3 Q P@2 R S T@4 U@2 V W K@3 L X@2 N Y Z AA@2 L Z AB@2 AC P@2 R Q
P@3 AD AE@6 AF@8 AG@7 AH@7 ~
>`.pickRestart({
A: "[[c4,a4] [c#4,g4,a#4], e4@15 ~]/2", B: "[c4,d4,f4,a4]@15 ~", C: "[b3,d4,f4,g#4]@15 ~", D: "[c4,e4,a4]",
E: "[c#4,e4,g4,a#4]", F: "[c4,e4,a4]@15 ~",
G: "[~@9 e4@7 ~@16 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@9 ~ e4@7 ~@9 [g4,b4]@8, ~@9 [a4,c5]@14 ~ [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10, ~@16 [d4,f#4]@15 ~ e4@23 ~ [b3,e4]@14 ~@10 [d4,f#4]@15 ~]/6", // G Am G F#m Am D E5 D
H: "[~@24 a4@6 g#4@8 ~@2 e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@9 ~ e4@7 ~@9 [g4,b4]@8, e4@23 ~ e4@13 ~@11 [d4,f#4]@15 ~ e4@23 ~@25 [d4,f#4]@15 ~, c4@15 ~ b3@21 ~@51 [b3,e4]@14 ~@26, ~@8 [f#4,a4]@16 ~@16 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10]/8", // G D E5 F#m Am G F#m Am
I: "[~@16 b3@7 ~ a4@6 g#4@8 ~@2 [c4,e4,a4]@11 ~ [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~ [a3,c4,f4]@5 ~ [g#3,b3,e4]@8 ~@2 [c4,e4,a4]@8, e4@23 ~@89, c4@15 ~@9 [b3,e4]@13 ~@75, ~ [f#4,a4]@2 ~@11]/7", // Am G Am G Am G F E …
J: "[~@4 [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~ [c4,f4,a4]@5 ~ [b3,d4,e4,a4]@11 ~@7]/4", // G Am G Am G F Bm7
K: "[e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~, [a4,c5]@15 ~ [g4,b4]@14 ~@2 [f#4,a4]@16, ~@8 [d4,f#4]@15 ~ e4@23 ~]/3", // Am G F#m D
L: "a4@3 g#4@4 ~, [b3,e4]@13 ~@3", M: "[e4@7 ~@17 [c4,e4]@7 ~, [a4,c5]@15 ~ [g4,b4]@14 ~@2, ~@8 [d4,f#4]@15 ~@9]/2",
N: "c4@7 ~ b3@7 ~, [e4,f#4,a4]@15 ~", O: "a4@3 g#4@4 ~, [b3,e4]@7 ~", P: "[c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~",
Q: "[a3,c4,f4]@5 ~ [g#3,b3,e4]@7 ~@3", R: "[c4,e4,a4]@11 ~ [b3,d4,g4]@2 ~@2", S: "[a3,c4,f4]@5 ~ [a3,b3,e4]@7 ~@3",
T: "[[c4,f4,a4]@8 d4@7 ~@9 [a4,c5]@7 ~, ~ [g4,b4]@2 ~, ~@16 e4@15 ~]/2", // F Am G
U: "[[c4,f4,a4]@8 d4@7 ~ e4@7 ~ [e4,a4,c5]@8, ~ [g4,b4]@2 ~]/2", // F Am G
V: "[d4,f4,a4]@9 ~ [d#4,f#4,a#4]@2 ~ [g4,b4]@2 ~, ~@13 e4 ~@2", W: "[f4,a4,c5]@9 ~@7",
X: "[e4@7 ~ d4@7 ~ d4@7 ~ [c4,e4]@7 ~, [a4,c5]@14 ~@2 [g4,b4]@15 ~, ~@8 f#4@15 ~@9]/2", // C Am G
Y: "a4@6 g#4@7 ~@3, [b3,e4]@13 ~@3", Z: "e4@7 ~ [d4,f#4]@7 ~, [a4,c5]@7 ~",
AA: "[[d4,f#4]@7 ~ c4@7 ~ c#4@7 ~ b3@7 ~, [g4,b4]@7 ~ [f#4,a4]@8, ~@8 e4@23 ~]/2", // D G F#m
AB: "[[d4,f#4]@7 ~ c4@7 ~ c4@7 ~ b3@7 ~, [g4,b4]@14 ~@2 [f#4,a4]@15 ~, ~@8 e4@23 ~]/2", // D G F#m
AC: "a4@3 g#4@4 ~, [b3,e4]@13 ~@3, f#4 ~@7", AD: "[a3,c4,f4]@5 ~ [a3,b3,e4]@8 ~@2",
AE: "[~@8 e4@7 ~ [d4,f#4]@7 ~ [d4,f#4]@7 ~ c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@9 [g4,b4]@7 ~, ~@8 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10, ~@32 e4@23 ~ [b3,e4]@13 ~@11 [d4,f#4]@15 ~]/6", // D G Am G F#m Am E5 D
AF: "[[g4,b4]@7 ~@9 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@9 [g4,b4]@8, e4@23 ~@25 [d4,f#4]@15 ~ e4@23 ~@25 [d4,f#4]@15 ~, c4@15 ~@9 [b3,e4]@13 ~@51 [b3,e4]@13 ~@27, ~@8 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10]/8", // G D E5 F#m Am G F#m Am
AG: "[~@16 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 [e4,a4,c5]@8, e4@23 ~@25 [d4,f#4]@15 ~ e4@23 ~@25, c4@15 ~@9 [b3,e4]@13 ~@51 [b3,e4]@13 ~@11, ~@8 [f#4,a4]@16 ~@16 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@15 ~@25]/7", // Am D E5 F#m Am G F#m
AH: "[[d4,f#4]@8 [g4,b4]@5 ~ [c4,e4,g4]@9 ~ c4@5 ~@3 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~ [d4,f#4]@7 ~ [d4,f#4]@7 ~ [c4,e4]@7 ~ c#4@7 ~@9 a4@6 g#4@2, ~@8 [d4,f#4]@8 ~@8 [e4,f#4,a4]@15 ~ [b3,e4]@13 ~@44 b3@15, ~@14 b4 ~@41 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [e4,f#4,a4]@16 e4@8]/7", // D G C D C D F#m7 E5 …
})).s("gm_synth_strings_2").gain(0.3)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
A B C D A B C E A F G H I J K H L M K H I J K H L N O P Q R@2 P S T@2 U V W X U V Y X Z AA AB AC AD AA AE AF AG AH AI
AJ AI AK AL AM U V AN X AO V Y AP AO V W X U V Y AQ AR AS AE AC AD AT AE AU G AV I AW@2 AV AX AY@2 AZ I BA@2 H AX BB@2
H I BA@2 H BC@3 H BD@3
>`.pickRestart({
A: "[c3,e3,a3]@13 ~@3", B: "[c#3,e3,g3,a#3]@3 ~", C: "[c3,d3,f3,a3]@13 ~@3", D: "[b2,d3,f3,g#3]@3 ~",
E: "[b2,d3,f3,g#3]@7 ~", F: "[e3,e4] d4 c4 a3 ~ d3 ~ e3@9", G: "~@10 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2",
H: "[f#3,a3,c4,e4]@6 ~@4 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2", // F#m7b5 Gmaj7
I: "[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2", // Cmaj7 F#m7
J: "[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2", // F#m7 Esus4
K: "[e3,g#3,b3,e4]@6 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2", // E Am7
L: "[c3,e3,g3,b3]@6 ~@4 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2", // Cmaj7 F#m7b5
M: "[f#3,a3,b3,e4]@7 ~@3 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2, a#3 ~@15", // F#m7 Esus4
N: "[f#3,a3,b3,e4]@6 ~@4 [e3,f3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2", // F#m7 Esus4
O: "[e3,g#3,b3,e4]@5 ~@5 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // E Am7
P: "~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 G Am7
Q: "~@2 [g3,a3,c4,e4] ~@3 [b3,d4,f#4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 Bm Am7
R: "[~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~ [f3,a3,c4]@4 ~@2 [e3,g#3,b3]@8 ~@4 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~]/2", // Am7 G F E Am7
S: "~@2 [g3,a3,c4,e4] ~@3 [f#3,b3,d4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 Bm Am7
T: "[~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~ [f3,a3,c4]@4 ~@2 [e3,a3,b3]@11 ~@7]/2", // Am7 G F Esus4
U: "~@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2 [f#3,a3,c4,e4]@6 ~@2", // Am7 F#m7b5
V: "~@2 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2 [c3,e3,g3,b3]@5 ~@3", // Gmaj7 Cmaj7
W: "~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3", // F#m7
X: "~@2 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@5 ~@3", // Esus4 E
Y: "~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3", // F#m7b5 F#m7
Z: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4]@2 ~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4]@2", // Am7 G
AA: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [f#3,a3,b3,d4] ~", // Am7 Bm7
AB: "~@2 [g3,a3,b3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~", // Cmaj7 Am7 G
AC: "[f3,a3,c4]@5 ~ [e3,g#3,b3]@8 ~@2", AD: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4]@2",
AE: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~", AF: "[f3,a3,c4] ~@2 [e3,a3,b3]@5",
AG: "~@2 f4 c4 f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4", AH: "e3 ~ e4 b3 e3 ~ e4 b3 a3 ~ e4 c4 a3 ~ e4 c4",
AI: "f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4",
AJ: "e3 ~ e4 ~ e3 ~ e4 b3 a3 ~ [d4,e4] ~ a3 ~ e4 c4, ~@3 b3@2 ~@6 c4@2 ~@3", // Dsus2
AK: "e3 ~ e4 b3 e3 ~ e4 b3 a3 ~ e4 c4 a3 ~@3", AL: "[d3,f3,a3]@8 ~@2 [d#3,f#3,a#3]@2 ~ [e3,g3,b3]@2 ~",
AM: "[g2,f3,a3,c4]@13 ~@3", AN: "~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3, ~@8 d#4 ~@7",
AO: "~@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2 [f#3,a3,c4,e4]@5 ~@3", // Am7 F#m7b5
AP: "~@2 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@6 ~@2", // Esus4 E
AQ: "~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@6 ~@2", // Esus4 E
AR: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~ [g3,b3,d4]@4, ~@12 [a3,c4] ~@3", // Am7 G Am
AS: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [a3,b3,d4,f#4] ~", // Am7 Bm7
AT: "[a3,c4,e4] ~ [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [a3,b3,d4,f#4] ~", // Am Am7 Bm7
AU: "[f3,a3,c4]@3 ~@3 [e3,a3,b3,e4]@10", AV: "[f#3,a3,c4,e4]@5 ~@5 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2",
AW: "[[f#3,a3,b3,e4]@5 ~@5 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@7 ~@5 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
AX: "[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2", // Cmaj7 F#m7b5
AY: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~ [e3,a3,b3,e4] ~ [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
AZ: "[f#3,a3,c4,e4]@6 ~@4 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2, d4 ~@15", // F#m7b5 Gmaj7
BA: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
BB: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2, a#3 ~@31]/2", // F#m7 Esus4 E Am7
BC: "[[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c4,e4] ~@3 [f#3,a3,b3,e4]@6 ~@6 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2, ~@30 [c#4,d4] ~@17]/3", // Cmaj7 F#m7b5 F#m7 Esus4 E Am7 Dmaj7
BD: "[[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c#4,e4] ~@3 [f#3,a3,c#4,e4]@4 ~@8 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@10 ~@8, ~@14 a#3 ~@33]/3", // Cmaj7 F#m7 Esus4 E
})).s("gm_overdriven_guitar").gain(0.26).pan(0.6)
// chords · brass section · "BRASS 1"
const brass_section = note(`<
~@9 A ~@16 B C D E@2 C D F@2 ~@8 G H I J I H I K ~@6 L M ~@16 G N G J G H O K ~@27 P@2
>`.pickRestart({
A: "e4 d4 c4 a3 ~ d3 ~ e3@9", B: "~@10 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2",
C: "[a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2", // Am G Am
D: "[a4,c5,e5]@3 ~ [b4,d5,f#5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2", // Am Bm Am
E: "[[a4,c5,e5]@3 ~ [g4,b4,d5]@2 ~@2 [f4,a4,c5]@5 ~ [e4,g#4,b4]@8 ~@4 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2]/2", // Am G F E Am
F: "[[a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~ [f4,a4,c5]@5 ~ [e4,a4,b4]@11 ~@7]/2", // Am G F Esus4
G: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@4 [g4,b4,d5]@3 ~", // Am G
H: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [b4,d5,f#5]@4", // Am Bm
I: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~", J: "[f4,a4,c5]@5 ~ [e4,g#4,b4]@9 ~",
K: "[f4,a4,c5]@5 ~ [e4,a4,b4]@10", L: "d5@9 ~ d5@2 ~ d#5 ~@2", M: "e5@13 ~@3",
N: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [b4,d5,f#5]@3 ~", // Am Bm
O: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [g4,b4,d5]@2 ~@2", P: "[~@14 [e2,e3]@7 ~@11]/2",
})).s("gm_brass_section").gain(0.5)
// other · electric guitar muted · "STEEL GTR"
const electric_guitar_muted = note("<~@58 A B C D E F G H I ~@8 J@2 K L M@2 N O ~@29>".pickRestart({
A: "~@13 d3 e3 a3, ~@6 a2 ~", B: "b3 c4@2 a3@7 g3 b3 ~ a3 ~ g3", C: "~ f#3 ~ d3 e3@6 a2 b2 d3 e3 g3 a3",
D: "~ b3 ~ [b3,c4] ~ d4 ~ e4@2 d4@2 c4@2 b3 a3@2", E: "b3@10 e3 g3 a3@3 ~", F: "e4 a3@2 d4@2 c4 e4@6 g3 a3 ~ c4",
G: "~ b3 ~ g3 a3@2 e3@4 g3 a3 b3 c4 ~ b3", H: "~ a3 g3 ~ [f#3,g3] ~ d3 d3@2 b2 ~ [b2,d3] e3 f#3 g3 g#3",
I: "a3 a#3 b3 c4 d4 [d4,d#4] d#4 e4!7 [d4,e4] e4", // D#maj7 Dsus2
J: "[e4@2 d4 ~ c4 b3 ~@3 e3 ~ e3 g3 a3 c4 ~@4 g3@7 b2 d3 e3 g3 a3 c4, ~@15 b3@9 ~@8, ~@17 e3@7 ~@8]/2",
K: "d4 e4 d4 c4 d4 c4 b3 c4 b3 a3 g3 a3 e3 ~ e3 d3", L: "e3@2 d3 ~ c3 ~ e3@4 b2 d3 e3 a3 b3 c4",
M: "[~ e4 ~@7 g3 a3 e4 ~@5 c5@8 a4 e4 b3 d4 a3 c4 g3, ~@13 a4@6 ~@13, ~@15 b4@5 ~@12]/2",
N: "b3 a3 e3 g3 [c3,d3] e3 ~@4 [a2,c#3] [b2,c3] d3 e3 d3 c3", O: "d4@2 [a3,c4] f3@2 ~ [e3,a3,b3]@8 ~@2",
})).s("gm_electric_guitar_muted").gain(0.8)
// drums · kick
const kick = s("bd").struct("<A@9 B C A@22 D E A@47 F G A@26 H ~>".pickRestart({
A: "x!4", B: "x ~@6 x ~@8", C: "~@2 x!2", D: "x ~ x ~ x ~@2 x", E: "~ x", F: "x ~@2 x ~@4", G: "x ~ x!2",
H: "x ~ x ~ x ~ x!2",
})).gain(0.66)
// drums · snare
const snare = s("sd").struct(`<
~@10 A B@3 C B@3 C B@15 ~ B@19 D B E B D B@3 D B@3 F B@3 D B@3 G B@7 H A B@7 I B@3 J B@3 K B@3 L B@3 K B@3 ~
>`.pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@3 x!2 ~@7 x ~@3", D: "~@4 x ~@6 x!2 ~ x ~", E: "~@4 x ~@7 x ~ x!2",
F: "~@4 x ~@7 x ~@2 x", G: "~@4 x ~@4 x ~@2 x ~ x!2", H: "~ x ~@2", I: "~@3 x!2 ~ x ~@5 x ~@3",
J: "~@2 x!3 ~ x ~@5 x ~@3", K: "~@4 x ~@2 x ~@4 x ~@3", L: "~@4 x ~ x!2 ~@4 x ~@3",
})).gain(0.66)
// drums · low tom
const low_tom = s("lt").struct("<~@9 A ~@20 A ~@2 B C ~@11 D ~@3 E ~@7 D ~@19 D ~@3 F G ~@26 B ~>".pickRestart({
A: "~@7 x ~@8", B: "~@3 x", C: "~ x", D: "~@14 x!2", E: "~@7 x", F: "~ x ~@2", G: "x",
})).gain(0.52)
// drums · hihat
const hihat = s("hh").struct(`<
A@9 B C D@3 E D@5 F@2 G D H D I A@7 ~ D@3 J D@3 J A@15 K D@2 J@2 D@3 J D@3 J D@3 J A@7 L C D@3 H D@3 H@3 D H M N F H O
D@2 H N P@2 Q@2 R S ~
>`.pickRestart({
A: "x!8", B: "x", C: "~@8 x ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x!2",
F: "x!5 ~ x!3 ~ x!3 ~ x!2", G: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!2", H: "x ~ x!7 ~ x!3 ~ x!2", I: "x ~ x!7 ~ x ~ x ~ x ~",
J: "x ~ x!3 ~ x!3 ~ x!6", K: "x!7 ~", L: "x!4 ~@4", M: "x ~ x!4 ~ x!2 ~ x!3 ~ x!2", N: "x!5 ~ x!4 ~ x!2 ~ x!2",
O: "x!5 ~ x ~ x ~ x!3 ~ x!2", P: "x!2 ~ x!2 ~ x!3 ~ x!3 ~ x!2", Q: "x ~ x!11 ~ x!2", R: "x ~ x!3 ~ x!7 ~ x!2",
S: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~",
})).gain(0.39)
// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~@20 B ~@2 C D ~@11 E ~@3 F ~@7 E ~@19 E ~@3 G ~@27 C ~>".pickRestart({
A: "~@3 x ~ x ~@10", B: "~@3 x ~@4", C: "~@11 x ~@4", D: "~@7 x ~@8", E: "~@3 x", F: "~@12 x!2 ~@2",
G: "~@3 x ~@11 x",
})).gain(0.52)
// drums · high tom
const high_tom = s("ht").struct("<~@9 A ~@20 B ~@2 C D ~@11 C ~@3 C ~@7 C ~@19 E ~@3 F ~@27 C ~>".pickRestart({
A: "x!3 ~@13", B: "~ x!2 ~@5", C: "~@5 x ~@2", D: "~@3 x ~@4", E: "~@10 x!2 ~@4", F: "~ x ~@5 x",
// … 14 more lines
More by Shakatak
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.