0:00/0:00
// Buona fortuna — Pooh
// 120 bpm, 1/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 455 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(120/1)
// 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.
// chords · piano
const piano = note(`<
A@8 B@16 C@3 D@5 E@4 F@4 G@4 H I ~@2 J K@2 L M N O P Q R S T M U T@3 V W X Y Z AA@2 AB Z AC ~@2 J K@2 L M N O P Q R S
T ~ J K@2 L M N O P Q R S T M U T@3 V W X Y AD AE@2 AB Z AF ~@2 J K@2 L M N O P Q R S T ~ J K@2 L M N O P Q R S T M U
T@3 V W X Y Z AE@2 AB AG AH@2 AI AG AJ@2 AI AK@4 AL@2 AM@2 AN@8 AO@2 AP@2 AL@2 AP@2 AQ@6 AR AS@2 AT AU AV AW@2 AO@2
AP@2 AL@2 AP@2 AX AY@7 AO@2 AP@2 AL@2 AP@2 AZ@2 BA@5 AS@2 AT AU AV AW@2 BB@4 BC@2 BD@2 ~@2 J K@2 L M N O P Q R S T ~ J
K@2 L M N O P Q R S T M U T@3 V W X Y Z AE@2 AB AG AH@2 AI AG AJ@2 AI AK@4 AL@2 AM@2 AN@8 AO@2 AP@2 AL@2 AP@2 AQ@6 AR
AS@2 AT AU AV AW@2 AO@2 AP@2 AL@2 AP@2 AX AY@7 AO@2 AP@2 AL@2 AP@2 AZ@2 BA@5 AS@2 AT AU AV AW@2 BB@4 BC@2 BD@2 B@40
C@3 D@5 E@4 F@4 G@4 H BE@3 ~ BF ~ BG ~@6
>`.pickRestart({
A: "[[g#4,b4,e5]@16 ~@16 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 ~@8 [b4,d#5,g#5]@7 ~ [b4,d#5,g#5]@8 [b4,d#5,g#5]@8 ~@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 e2@8, e2@24 e2@27 ~@5 e2@28 ~@4 e2@29 ~@11, ~@16 [g#4,b4,e5]@17 ~@95]/8", // E F#m G#m F#m E
B: "[[g#4,b4,e5]@9 ~@7 [g#4,b4,e5]@8 ~@8 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 ~@8 [b4,d#5,g#5]@7 ~ [b4,d#5,g#5]@8 [b4,d#5,g#5]@8 ~@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 e2@8, e2@24 e2@27 ~@5 e2@28 ~@4 e2@29 ~@11]/8", // E F#m G#m F#m
C: "[[g#4,b4,e5]@9 ~@7 [g#4,b4,e5]@8 ~@8 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5]@8 [a4,c#5,f#5]@4, e2 e2]/3", // E F#m
D: "[[a4,c#5,f#5]@8 ~@8 [b4,d#5,g#5]@7 ~ [b4,d#5,g#5]@8 [b4,d#5,g#5]@8 ~@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 e2@8, ~@8 e2@28 ~@4 e2@29 ~@11]/5", // F#m G#m F#m
E: "[~@8 [a4,c#5,e5]@8 [a4,c#5,e5]@8 [a4,c#5,e5]@16 [b4,d#5,f#5]@7 ~ [b4,d#5,f#5]@16, b1@59 ~@5]/4", // A B
F: "[~@8 [a4,c#5,e5]@8 [a4,c#5,e5]@8 [a4,c#5,e5]@11 ~@5 [d#5,f#5]@8 [b4,d#5,f#5]@13 ~@3, b1@59 ~@5]/4", // A D#m B
G: "[~@8 [g4,b4,d5]@8 [g4,b4,d5]@8 [g4,b4,d5]@7 ~@9 [a4,c#5,e5]@8 [a4,c#5,e5]@16, a1@29 ~@3]/4", // G A
H: "~ [g4,b4,d5], a1", I: "[g4,b4,d5]@8 [g4,b4,d5]@7 ~", J: "[b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3",
K: "[[b3,d4,f#4]@3 ~@5 [a3,c#4,e4]@13 ~@3 [a3,c#4,e4]@5 ~@3]/2", L: "[b3,d4,f#4]@3 ~@5 [b3,d4,f#4]@8",
M: "[b3,d4,f#4]@3 ~@5 [b3,d4,f#4]@5 ~@3", N: "[b3,d4,f#4]@3 ~@5 [b3,d4,f#4]@6 ~@2",
O: "[a3,c#4,e4]@4 ~@4 [a3,c#4,e4]@3 ~@5", P: "[a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@3 ~@5",
Q: "[a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@4 ~@4", R: "[a3,c#4,f#4]@3 ~@5 [a3,c#4,f#4]@2 ~@6",
S: "[a3,c#4,f#4]@3 ~@5 [b3,d4,f#4]@3 ~@5", T: "[b3,d4,f#4]@3 ~@5 [b3,d4,f#4]@3 ~@5",
U: "[b3,d4,f#4]@4 ~@4 [b3,d4,f#4]@3 ~@5", V: "[b3,e4,g#4]@4 ~@4 [b3,e4,g#4]@3 ~@5", W: "[b3,e4,g#4] ~ [a3,d4,f#4]@2",
X: "~ [a3,d4,f#4]", Y: "[g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@3 ~", Z: "~ [g3,b3,d4]",
AA: "[[g3,b3,d4] ~@2 [a3,c#4,e4], ~@8 [g3,b3,d4]@23 ~]/2", AB: "[a3,c#4,e4]", AC: "[g3,b3,d4]@7 ~ [g3,b3,d4]@7 ~",
AD: "~@8 [g3,b3,d4]@7 ~", AE: "[[g3,b3,d4] [g3,b3,d4]@2 [a3,c#4,e4]]/2", AF: "[g3,b3,d4]@4 [g3,b3,d4]@3 ~",
AG: "~ [a3,c#4,e4]", AH: "[[a3,c#4,e4] ~@2 [b3,d#4,f#4], ~ [a3,c#4,e4]@3]/2", AI: "[b3,d#4,f#4]",
AJ: "[[a3,c#4,e4] ~@2 [b3,d#4,f#4], ~@8 [a3,c#4,e4]@21 ~@3]/2", AK: "[[e2,g#3,b3,e4] [a3,c#4,f#4]]/4",
AL: "[e2,b3,d#4,g#4]/2", AM: "[~@3 e2, [a3,c#4,f#4]@31 ~]/2",
AN: "[[g#4,b4,e5]@16 ~@16 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 ~@8 [b4,d#5,g#5]@8 [b4,d#5,g#5]@8 [b4,d#5,g#5]@7 ~@9 [a4,c#5,f#5]@4 [a4,c#5,f#5]@8 [a4,c#5,f#5]@4 ~@8 e2@8, e2@23 ~ e2@27 ~@5 e2@28 ~@4 e2@29 ~@11, ~@16 [g#4,b4,e5]@17 ~@79 [a4,c#5,f#5]@16]/8", // E F#m G#m F#m E F#m
AO: "[e2,g#3,b3,e4]/2", AP: "[a3,c#4,f#4]/2",
AQ: "[[e2,e3,g#3,b3,e4]@16 [d#2,d#3,f#3,b3,d#4]@16 [c#2,c#3,e3,g#3,c#4]@15 ~]/6", AR: "b2@3 ~ b2@3 ~",
AS: "[b2@4 ~@4 b2@3 ~ b2@4, ~ [f#3,b3,d#4]@2 ~]/2", AT: "[f#3,b3,d#4] b2", AU: "~@4 b2@3 ~, [f#3,b3,d#4]",
AV: "~ [f#3,b3,d#4], b2@13 ~@3", AW: "[~@4 [f#3,b3,d#4]@3 ~, b2@3 ~]/2", AX: "[e2,g#4,b4,e5]",
AY: "[~@4 [a4,c#5,f#5,a5,c#6,f#6] [a4,c#5,f#5,a5,c#6,f#6]@2 [a4,c#5,f#5,a5,c#6,f#6] ~@4 [b4,d#5,g#5,b5,d#6,g#6]@2 [b4,d#5,g#5,b5,d#6,g#6]@2 ~@4 [a4,c#5,f#5,a5,c#6,f#6] [a4,c#5,f#5,a5,c#6,f#6]@2 [a4,c#5,f#5,a5,c#6,f#6] ~@2 e2@2, [g#4,b4,e5,g#5,b5,e6]@17 ~@15 [a4,c#5,f#5,a5,c#6,f#6]@17 ~@15 [b4,d#5,g#5,b5,d#6,g#6]@15 ~@17 [a4,c#5,f#5]@16, ~@8 [e2,e3]@27 ~@5 [e2,e3]@28 ~@4 [e2,e3]@29 ~@11]/7", // F#m G#m F#m E F#m G#m F#m E
AZ: "[e2,e3,g#3,b3,e4]/2", BA: "[[d#2,d#3,f#3,b3,d#4]@16 [c#2,c#3,e3,g#3,c#4]@16 b2@4 b2@3 ~]/5",
BB: "[~@8 [g3,b3,d4]@2 ~@6 [g3,d4] ~@7 [g3,b3,d4]@16 ~@8 [g3,b3,d4]@16, a2@17 ~@3 a2@10 ~@2, ~@8 b3 ~@23]/4", // G G5 G
BC: "[~@4 [g3,b3,d4] ~@3 [g3,b3] ~@3 [g3,b3,d4]@4, a2@15 ~, ~@16 d4 ~@7 c#4 ~@7]/2", // G
BD: "[~@8 [a3,c#4,e4]@2 ~@6 [a3,c#4,e4]@15 ~, a2@7 ~]/2", // A
BE: "[[g4,b4,d5]@8 [g4,b4,d5]@24 [e2,e3,b3]@4 [e2,e3,b3]@3 ~ [e2,e3,b3]@3 ~@5]/3", BF: "~@4 [e2,e3,b3] ~@3",
BG: "[e2,e3,g#3,b3]@3 ~ [e2,e3,g#3,b3]@3 ~ [e2,e3,g#3,b3]@3 ~@5", // E
})).s("gm_piano").gain(0.36).pan(0.3)
// chords · pad warm
const pad_warm = note(`<
~@173 A@2 B@2 C@2 D@2 E@2 B@2 C@2 F@2 G@2 H@2 I@2 J@8 A@2 B@2 K@2 L@2 A@2 B@2 C@2 F@2 G@2 D@2 M@2 L@2 G@2 N@2 O@2 P@8
~@64 A@2 B@2 C@2 D@2 E@2 B@2 C@2 F@2 G@2 H@2 I@2 J@8 A@2 B@2 C@2 L@2 A@2 Q@2 C@2 L@2 E@2 B@2 M@2 F@2 R@2 N@2 S@2 T@8
~@40 A@2 B@2 U@2 D@2 A@2 B@2 K@2 F@2 V@3 W X@4 Y@3 Z AA@2 ~@5 AB@7
>`.pickRestart({
A: "[[e3,g#3,b3]@15 ~]/2", B: "[[f#3,a3,c#4]@31 ~]/2", C: "[[g#3,b3,d#4]@15 ~]/2", D: "[[f#3,a3,c#4]@15 ~]/2",
E: "[[e3,g#3,b3]@7 ~]/2", F: "[[f#3,a3,c#4]@29 ~@3]/2", G: "[[e3,g#3,b3]@29 ~@3]/2", H: "[[d#3,f#3,b3]@29 ~@3]/2",
I: "[[c#3,e3,g#3]@29 ~@3]/2", J: "[~@68 d#4@57 ~@3, [d#3,f#3,b3]@123 ~@5]/8", K: "[[g#3,b3,d#4]@31 ~]/2",
L: "[[f#3,a3,c#4]@7 ~]/2", M: "[[g#3,b3,d#4]@29 ~@3]/2", N: "[[d#3,f#3,b3]@7 ~]/2", O: "[[e3,g#3,c#4]@13 ~@3]/2",
P: "[~@32 f#4@31 ~, [f#3,b3,d#4]@31 ~]/8", Q: "[f#3,a3,c#4]/2", R: "[[e3,g#3,b3]@27 ~@5]/2",
S: "[[c#3,e3,g#3]@15 ~]/2", T: "[[d#3,f#3,b3]@61 ~@3]/8", U: "[g#3,b3,d#4]/2", V: "[[a3,c#4,e4]@11 ~]/3",
W: "[b3,d#4,f#4]@15 ~", X: "[~@4 [a3,c#4,e4]@39 ~ [b3,d#4,f#4]@15 ~@5]/4", Y: "[~@4 [b3,d4,g4]@37 ~@7]/3",
Z: "[c#4,e4,a4]", AA: "[~@4 [b3,d4,g4]@11 ~]/2", AB: "[[e3,g#3,b3,e4]@101 ~@11]/7",
})).s("gm_pad_warm").gain(0.32).pan(0)
// bass · fretless bass
const bass = note(`<
~@8 A@8 B C D E B F G E B C D E B F G H I@4 J@3 ~ K@4 L@2 M N O P ~ Q R S T U V W X Y Z AA@3 AB AC@3 AD AE AF AG AH AG
AI M AJ O P ~ Q R S T U V W X Y AK O P ~ Q R S T U V W X Y Z AA@3 AB AC@3 AD AE AF AG AH AG AI M AJ O P ~ Q R S T U V
W X Y AK O P ~ Q R S T U V W X Y Z AA@3 AB AC@3 AD AE AF AG AH AL AM AN AO AP AQ@2 AR ~@8 B C D E B F G E AS@8 AT@2
AU@2 AV@2 AW@3 AX AW@3 AY B C D E B F G E B C D E B F G E B C D E B F G E AT@2 AU@2 AV@2 AW@3 AX AW@3 AY AZ BA BB BC
BD AM AL BE AP BF O P ~ Q R S T U V W X Y AK O P ~ Q R S T U V W X Y Z AA@3 AB AC@3 AD AE AF AG AH AL AM AN AO AP AQ@2
AR ~@8 B C D E B F G E AS@8 AT@2 AU@2 AV@2 AW@3 AX AW@3 AY B C D E B F G E B C D E B F G E B C D E B F G E AT@2 AU@2
AV@2 AW@3 AX AW@3 AY AZ BA BB BC BD AM AL BE ~@8 BG@2 BH@2 BI@4 BJ C D E B F G E B C D E B F G E B C D E B F G E B C D
E B F G E I@4 J@3 ~ K@4 BK@4 ~ BL ~ BM ~@6
>`.pickRestart({
A: "[e2@127 ~]/8", B: "d2@4 e2@3 ~@9", C: "e2@4 ~@8 e2@3 ~", D: "~@4 e2@3 ~@5 e2@2 ~@2",
E: "e2@3 ~@5 e2@2 ~@2 e2@3 ~", F: "e2@3 ~@9 e2@3 ~", G: "~@4 e2@3 ~@5 e2 ~@3", H: "e2@13 ~@3",
I: "[b1@38 ~@2 a2@21 ~@3]/4", J: "[b1@15 ~]/3", K: "[a1@35 ~ g2@22 ~@6]/4", L: "[a1@15 ~]/2", M: "~@4 a1 ~@3",
N: "b1@7 ~ c#2@7 ~", O: "d2 ~@3", P: "~@4 b1@3 ~", Q: "b1 ~", R: "a1@7 ~@9", S: "g1@9 ~@7", T: "~ g1", U: "~ a1",
V: "g1 e1", W: "f#1 a1", X: "c#2 b1", Y: "~@8 b1@7 ~", Z: "a1", AA: "[g#1@7 ~]/3", AB: "g#1 g1 f#1 f1",
AC: "[e1@21 ~@3 f#1@20 ~@4]/3", AD: "g#1", AE: "~@8 g1@3 ~@5, a1", AF: "g1 ~@3 g1@4", AG: "~@2 g1 ~", AH: "g2",
AI: "g1@3 ~@5 g1@8", AJ: "b1@2 c#2 ~", AK: "c#2", AL: "~@2 a1 ~", AM: "a1@3 ~@5 a1@8", AN: "~@4 b1 ~@3",
AO: "b2@9 ~@7", AP: "~@8 a1@3 ~@5", AQ: "[a1@3 ~@5 a1@16 b2@3 ~@5]/2", AR: "b2@7 ~", AS: "[e2@123 ~@5]/8",
AT: "[e2@15 ~]/2", AU: "[d#2@31 ~]/2", AV: "c#2/2", AW: "b1!2", AX: "b1 b1@3", AY: "b1@15 ~", AZ: "a1 ~ a1 ~",
BA: "a1 ~ a1@2", BB: "~@4 a1@3 ~", BC: "a1@3 ~@5 a1@4 ~@4", BD: "a1 ~@3 a1@2 ~@2", BE: "a1@5 ~@11",
BF: "b1@8 c#2@7 ~", BG: "[d2@2 e2@13 ~]/2", BH: "[d2@4 e2@27 ~]/2", BI: "[d2@3 ~ e2@28 d2@3 ~ e2@25 ~@3]/4",
BJ: "d2@3 ~ e2@3 ~@9", BK: "[a1@48 e2@4 e2@3 ~ e2@3 ~@5]/4", BL: "~@4 e2 ~@3", BM: "e2@3 ~ e2@3 ~ e2@3 ~@5",
})).s("gm_fretless_bass").gain(0.42)
// chords · overdriven guitar
const overdriven_guitar = note(`<
~@7 A B@8 C@3 D E@2 F G H@2 I J K I L M N O@2 P Q R@2 P S T@2 U V W X Y Z AA@2 AB AC AD AE AF AG AH AI AJ@2 AK@3 AL
AM@3 AN AO AP@2 AQ V AR X AS Z AA@2 AT AC AD AE AF AG AH AI AU@2 Z AA@2 AB AC AD AE AF AG AH AI AJ@2 AK@3 AL AM@3 AN
AV ~@5 X AS Z AA@2 AT AC AD AE AF AG AH AI AU@2 Z AA@2 AB AC AD AE AF AG AH AI AJ@2 AK@3 AL AM@3 AN AV ~@11 C@3 D E@2
F G AW AX AY AZ@2 BA BB BC C@3 D E@2 F G BD@2 BE@4 BF@8 BG@6 BH@2 BI@2 BJ@2 BK@6 BL@6 BM@2 BN@4 BF@8 BO BP@4 BQ@2 BR
BS AS Z AA@2 AT AC AD AE AF AG AH AI AU@2 Z AA@2 AB AC AD AE AF AG AH AI AJ@2 AK@3 AL AM@3 AN AV ~@11 C@3 D E@2 F G AW
AX AY AZ@2 BA BB BC C@3 D E@2 F G BD@2 BE@4 BF@8 BG@6 BH@2 BI@2 BJ@2 BK@6 BL@6 BM@2 BN@4 BF@8 BO BP@4 BQ@2 BR C@3 D
E@2 F G C@3 D E@2 F G H@2 I J BT BU BV BW H@2 I J BX@2 BY BZ@2 CA CB CC CD CE CF CG CH CB CI CJ CK CE CF CL@2 O@2 P Q
R@2 P S T@2 U V CM@3 CN@2 CO CP ~@6
>`.pickRestart({
A: "~ b4", B: "[e5@15 b4]/8",
C: "[e5@4 e5@4 b4@3 ~@5 e5@2 ~@2 e5@4 b4@2 ~@6 e5@2 ~@2 e5@4 b4@2 ~@2 b4@4, ~@12 b4@7 ~@9 b4@8 ~@12]/3",
D: "e5 ~ e5@2 b4 ~ b4@2", E: "[e5 ~ e5@2 b4 ~@3 e5 ~ e5@2 b4 ~ b4@2, ~@12 b4@7 ~@13]/2",
F: "e5@2 ~@2 e5@3 ~ b4@2 ~@2 b4@4", G: "e5@2 ~@2 e5@3 ~ b4@2 ~@2 b4@3 ~",
H: "[[e5,g#5] e5 b4 g#5 e5 [b4,e5] g#5 [b4,e5], ~@12 b4@7 ~@5 b4@2 ~@6]/2", I: "b4 [e5,g#5] e5 b4, e5 ~@3 b4 ~@3",
J: "g#5 e5 b4 [b4,g#5], e5 ~@7", K: "e5 [b4,e5] g#5 [b4,e5], ~@4 b4 ~@3", L: "g#5 e5 b4 e5, e5 ~@7", M: "g#5",
N: "~@8 [c#4,e4,a4] ~@7", O: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@11 ~]/2", P: "[d#4,f#4,b4]", Q: "~@8 [c#4,e4,a4]@3 ~@5",
R: "[[c#4,e4,a4]@3 ~@5 [c#4,e4,a4]@23 ~]/2", S: "~@4 [b3,d4,g4] ~@3", T: "[[b3,d4,g4]@3 ~@5 [b3,d4,g4]@22 ~@2]/2",
U: "[c#4,e4,a4]@7 ~", V: "~@8 [b3,d4,g4]@3 ~@5", W: "[b3,d4,g4]@3 ~@5 [b3,d4,g4]@5 ~@3", X: "~@4 a3 ~@3",
Y: "b3@7 ~ c#4@7 ~", Z: "d4@3 ~@5 f#3@2 ~@6", AA: "[d4@3 ~@5 c#4@23 ~]/2", AB: "d4@15 ~", AC: "a3@7 ~@9",
AD: "g3@2 [e4,f#4] ~", AE: "f#4@13 ~@3", AF: "e4 ~@7 e4@4 ~@4", AG: "e4@4 e4@4 e4@3 ~@5", AH: "f#3@8 a3@5 ~@3",
AI: "c#4 b3", AJ: "[~@8 a3@7 ~, ~@8 b3@17 ~@7]/2", AK: "[g#3@37 ~@11]/3", AL: "g#3 g3 f#3 f3",
AM: "[e3@23 ~ f#3@20 ~@4]/3", AN: "g#3@5 ~@3", AO: "~@8 [b3,d4,g4]@3 ~@5, a3",
AP: "[[b3,d4,g4]@2 ~@6 [b3,d4,g4]@19 ~@5]/2", AQ: "[c#4,e4,a4]@15 ~", AR: "[b3,d4,g4]@2 ~@6 [b3,d4,g4]@7 ~",
AS: "b3@8 c#4@7 ~", AT: "d4@7 ~@9", AU: "[~@16 c#4@9 ~@7, ~@8 b3@17 ~@7]/2", AV: "a3", AW: "[e4,g#4]!2",
AX: "[e4,g#4]@2 [e4,g#4]!2", AY: "f#4 [e4,f#4]@2 [f#4,a4], a4@9 ~@7",
AZ: "[[f#4,a4]@2 [f#4,a4] [f#4,a4]@3 [g#4,b4]@2]/2", BA: "~ [g#4,b4]!3", BB: "b4 f#4@2 [f#4,a4]", BC: "[f#4,a4]@3 ~",
BD: "[g#3,e4]/2", BE: "[[f#3,d#4]@32 [e3,c#4]@31 ~]/4", BF: "[[f#3,b3]@117 ~@11]/8",
BG: "[e3 e3@2 e3@2 e3@3 f#3@2 f#3!2 f#3@2 f#3@2 g#3!4 g#3 g#3@3, g#3 a3 b3]/6", BH: "[a3!4 a3@4, c#4]/2",
BI: "[e3 e3@2 e3 e3@2 e3@2, g#3]/2", BJ: "[f#3!4 f#3@2 f#3!2, a3]/2",
BK: "[g#3 g#3@2 g#3 g#3 g#3@2 a3 a3 a3@2 a3 a3@3 e3 e3 e3@2 e3 e3@2 e3@2, b3@32 c#4@33 ~@31, ~@28 g#3@8 ~@28 g#3@31 ~]/6",
BL: "[[e3,f#3]@4 f#3@8 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@8 a3@8 a3@4 a3@4 a3@15 ~, a3@32 b3@32 c#4@31 ~]/6", // Esus2
BM: "[e3,g#3,e4]/2", BN: "[[d#3,f#3,d#4] [c#3,e3,c#4]]/4", BO: "[g3,b3,d4]!2",
BP: "[[g3,b3,d4]@4 [g3,b3,d4]@22 ~@2 [b3,d4,g4] ~@3]/4", BQ: "[[b3,d4,g4]@2 ~@6 [b3,d4,g4]@21 ~@3]/2",
BR: "[c#4,e4,a4]@7 ~@9", BS: "~@8 a3@3 ~@5", BT: "[e5,g#5] [b4,e5] [b4,g#5] [b4,e5,g#5]",
BU: "[b4,e5] [b4,e5,g#5] [e5,g#5] [b4,e5], ~@4 b4 ~@3", BV: "g#5 e5 b4 g#5, e5 ~@7", BW: "e5 b4 g#5 e5",
BX: "[g#5 e5 b4 g#4 e5 [b4,e5] g#4 [e4,b4], e5@2 ~@10 b4@7 ~@5 b4@2 ~@6]/2", BY: "b4 [g#4,e5] e4 b3, e5 ~@3 b4 ~@3",
BZ: "[g#4@4 e4@3 ~ b3@3 ~@5 g#4@4 g#4@4 g#4@4 g#4@4, ~@12 g#3@11 ~@9]/2", CA: "g#4!4", CB: "g#4 f#4 e4 c#4",
CC: "b3 a3 f#3 g#3", CD: "b3 c#4 e4 b3", CE: "b3 c#4 e4 f#4", CF: "e4 f#4 g#4 b4", CG: "f#4 g#4 b4 c#5",
CH: "c#5 b4 g#4 f#4", CI: "f#4 e4 c#4 b3", CJ: "e4 c#4 b3 g#3", CK: "f#3 g#3 b3 c#4",
CL: "[g#4@4 b4@4 c#5@4 e5@12 [c#4,e4,a4] ~@7]/2", CM: "[[b3,d4,g4]@3 ~@5 [b3,d4,g4]@24 e5@4 e5@4 b4@4 b4@4]/3",
CN: "e5!2 b4!2", CO: "e5!2 b5 g#5", CP: "e5!3 ~",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.7)
// chords · distortion guitar
const distortion_guitar = note(`<
~@111 A B@2 C A D ~@36 A B@2 C E F@2 G H I@2 J ~@120 A B@2 C E F@2 G H I@2 J ~@158
>`.pickRestart({
A: "~@8 [b3,d4,g4]@3 ~@5", B: "[[b3,d4,g4]@2 ~@6 [b3,d4,g4]@19 ~@5]/2", C: "[c#4,e4,a4]@15 ~",
D: "[b3,d4,g4]@2 ~@6 [b3,d4,g4]@7 ~", E: "~@2 [c#4,e4,a4] ~", F: "[[c#4,e4] ~@3 [c#4,e4,a4]@9 ~@3, a4 ~@7]/2",
G: "[d#4,f#4,b4]", H: "~@8 [c#4,e4,g#4]@3 ~@5", I: "[[c#4,e4,a4]@3 ~@5 [c#4,e4,a4]@16 ~@8]/2",
J: "[d#4,f#4,b4]@13 ~@3", // B
})).s("gm_distortion_guitar").gain(0.24).pan(0.7)
// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@161 [~@8 a4@3 ~@5] ~@131 [~@8 a4@3 ~@5] ~@161>")
.s("gm_distortion_guitar").gain(0.12).pan(0.7)
// drums · kick
const kick = s("bd").struct(`<
~@32 A B@2 ~ A B@2 ~ A B@2 ~ A B ~@2 A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 D ~ A C ~@9 A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 ~ A@2
~ C B C B@2 ~ A B@2 D ~ A C ~@9 A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 D ~ A C ~ C B@2 D C B@2 D
B@3 ~ A ~@7 A B E B E D@2 ~ A ~@7 A ~ A ~ A ~ C@4 B A C ~ A B E B E D@2 ~ A B E B E D@2 ~ A B E B E D@2 ~ A ~ A ~ A ~
C@4 B A C ~ C B@3 C B@2 ~@3 A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 ~ A@2 ~ C B C B@2 ~ A B@2 D ~ A C ~ C B@2 D C B@2 D B@3 ~
A ~@7 A B E B E D@2 ~ A ~@7 A ~ A ~ A ~ C@4 B A C ~ A B E B E D@2 ~ A B E B E D@2 ~ A B E B E D@2 ~ A ~ A ~ A ~ C@4 B
A C ~ C B@3 C B@2 ~@33 A B E B A ~ E B A B E B A ~ E B A B@2 ~ A B@2 ~ A B@2 ~ A B ~ F ~ B ~@8
>`.pickRestart({
A: "x", B: "~ x", C: "x!2", D: "~@3 x", E: "x ~@2 x", F: "x!3 ~",
})).gain(0.44)
// drums · snare
const snare = s("sd").struct(`<
~@35 A ~@3 A ~ A ~ A ~ A ~@3 A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~@9 A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A
~ A ~ A ~ A ~ B ~ A ~@9 A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9
A ~ A ~ A ~ A ~@9 A ~ A ~ A ~@4 A C ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A C ~ A ~ A ~
A ~ A D A ~@3 A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A
~ A ~@9 A ~ A ~ A ~@4 A C ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A C ~ A ~ A ~ A ~ A D A
~@30 E@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A E@2 ~@3 A ~@3 A ~ A ~ A ~ A ~@5 F ~@6
>`.pickRestart({
A: "x", B: "~ x ~@2", C: "~ x", D: "~@2 x!2", E: "x!4", F: "x!3 ~",
})).gain(0.55)
// drums · low tom
const low_tom = s("lt").struct(`<
~@39 A ~@117 B ~@6 C ~@7 C ~@15 C ~@13 D ~@37 D ~@48 B ~@6 C ~@7 C ~@15 C ~@13 D ~@37 D ~@63 A ~@18
>`.pickRestart({
A: "~ x", B: "x", C: "~@3 x", D: "~@2 x!2",
})).gain(0.38)
// drums · hihat
const hihat = s("hh").struct(`<
~@16 A B A B A B A C A B A B A B A ~ D@14 ~@2 B C@3 D B D B C D@2 ~@2 D C E C B C@3 B A ~ F G C D ~ B C@3 D B D B C
D@2 ~@2 B C@3 D B D B C D@2 ~@2 D C E C B C@3 B A ~ F G C D ~ B C@3 D B D B C D@2 ~@2 B C@3 D B D B C D@2 ~@2 D C E C
B C@3 B A C H A B@2 D B@2 C@2 G B A B A B A C A B A B A B A C A B A B A B A C D@6 B@7 G A B A B A B A C A B A B A B A
C A B A B A B A C D@6 B@7 G ~ B C D@2 B C@2 ~@2 B C@3 D B D B C D@2 ~@2 B C@3 D B D B C D@2 ~@2 D C E C B C@3 B A C H
A B@2 D B@2 C@2 G B A B A B A C A B A B A B A C A B A B A B A C D@6 B@7 G A B A B A B A C A B A B A B A C A B A B A B
A C D@6 B@7 G ~ B C D@2 B C@2 ~@16 A B A B A B A C A B A B A B A C A@3 B A B A C A B A B A B A C D@14 ~@12
>`.pickRestart({
A: "x ~ x!2", B: "x!2", C: "~ x", D: "x", E: "~ x!2 ~", F: "~@3 x", G: "~@2 x!2", H: "x ~@2 x",
})).gain(0.27)
// drums · mid tom
const mid_tom = s("mt").struct(`<
// … 78 more lines
More by Pooh
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.