0:00/0:00
// Murmullo — Buena Vista Social Club
// 84 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 83 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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.
// other · piano
const piano = note("<~@9 A@2 B@5 C@3 D@4 E F@3 G H@3 I@8 E ~@16 J@5 K@2 L@4 M@5 N@2 O P@4 Q R@2 ~>".pickRestart({
A: "[c#5@47 d5@42 c#5@7]/2", B: "[~ b4@5 g#4@6 f#4@18 d#4@48 a4@12 ~ g4@4 a4@4 f4@19 ~ d4@42 e4@36 d4@6 c#4@37]/5",
C: "[~@47 c#5@47 ~ d5@38 c#5@6 b4@5]/3", D: "[a4@6 f#4@17 d#4@42 ~ a4@34 f4@20 d4@43 a4@8 e4@21]/4", E: "d4@7 c#4@41",
F: "[~@47 f4@72 e4@9 ~ d4@7 e4@6 d4 ~]/3", G: "e4 d4@16 ~ c#4@30", H: "[~@47 f4@96 ~]/3",
I: "[g4@7 g#4@50 ~@38 e4@23 ~ g4@23 f#4@30 ~ d5@9 c#5@8 b4@8 ~ g#4@7 f#4@18 d#4@46 a4@12 g4@5 a4@6 f4@20 d4@41 e4@30]/8",
J: "[~@47 f4@71 ~ e4@9 d4@8 e4@7 d4@2 e4 ~ d4@16 c#4@35 ~@42]/5", K: "[f4@73 g4@10 f4@7 g4@6]/2",
L: "[~@4 g#4@53 ~@38 e4@24 ~ g4@23 f#4@24 d5@9 ~ c#5@9 b4@6]/4",
M: "[~ g#4@8 f#4@18 d#4@47 ~ a4@10 g#4@7 ~ a4@5 g#4@6 f4@19 d4@39 ~ e4@28 d4@7 c#4@42]/5", N: "[~@47 e4@25 g4@24]/2",
O: "f#4@28 d5@7 c#5@7 ~ b4@5", P: "[~@2 g#4@6 f#4@19 d#4@44 a4@12 g#4@9 a4@7 f4@19 d4@44 e4@30]/4",
Q: "~ d4@5 c#4@42", R: "[d4@54 ~ c#4@41]/2",
})).s("gm_piano").gain(0.05)
// chords · piano
const piano_2 = note(`<
A B C@3 D E F@2 G@2 H@4 I J K@7 L M N@2 O@3 P@2 Q@4 R S T U V@8 W X@2 Y@4 Z@6 AA AB@2 AC@4 AD AE AF AG AH@2 AI@4 AJ@2
AK@2
>`.pickRestart({
A: "~@37 f#4 ~ g#4 ~@2 b4@2 ~ d5@2 ~, ~@36 e4@2 ~@3 a4@2 ~ c#5@3 ~",
B: "~@12 e4@5 [a3,e4,a4,e5]@6 ~@7 a3@6 ~@6 [c3,f4,a4,f5]@6, c#3@23 ~@25, [a4,e5]@17 ~@31, e4@11 ~@12 [f4,a4,f5]@19 ~@6, ~@7 a3@10 ~@31", // A5 F A5 F
C: "[~@17 [f#3,f#4,a4,f#5]@6 c#5 ~@17 [e3,d4]@6 ~@42 [a3,a4]@6 ~@18 d4@6 ~@12 [g#4,e5]@9 ~@4, b2@24 e2@24 c#5@7 e3@12 f#4@5 [e4,e5]@6 [c#4,c#5]@5 [b3,b4]@11 ~@2 f3@11 f3@12 ~@25, [f#4,a4,f#5]@17 ~@7 [d4,d5]@17 ~@6 a5@14 g#4@34 f4@23 ~@26, ~@6 f#3@11 ~@14 b2@17 a2@47 ~ [f2,a3]@23 ~ [e2,g#3,e4]@21 ~@3, ~@11 a3@13 ~@12 g#3@11 ~ a4@12 g#5 c#4@5 f#5@29 ~@7 c3@17 ~@25]/3", // F#m E7 A C#m E C# B F#m …
D: "~@18 [a3,b3,c#4]@5 ~@18 f4@6 ~, a2@23 [f#2,c#4]@24 ~, e4@17 e4@6 f4@17 ~@8, ~@6 e3@17 ~@12 e3@12 ~, ~@11 f#3@12 ~ a3@17 ~@7", // A F#5
E: "d4 ~@15 [g#4,b4]@7 ~@18 e3@7, [b2,f#3,f#4]@24 ~@5 b2@19, ~@11 f#5@12 ~@12 [g#3,e5]@13, ~@13 d5@10 [e2,e4]@25", // G#m B5 C#m E
F: "[~@11 e3@12 ~@19 f#4@5 ~@18 [b3,a4]@7 ~@12 g#4@11 ~, [a2,e4]@23 c#4@13 c#3@12 ~@6 a3@18 ~@24, a3@17 ~@6 f#2@24 b2@25 [b2,d4,e4]@22 ~@2, ~ [e3,a3] d4 ~, ~@24 f#4@18 ~@5 a4@12 f#3@13 ~@24]/2", // B7 A5 E7 A5
G: "[~@18 e4@5 ~@18 g4@5 ~@43 f#3@5 ~@2, e4@18 ~@5 g4@18 ~@6 f#4@25 c#4@22 ~@2, c#4@12 [a3,b3,c#4]@11 b3@13 [g3,b3,d4]@11 c#4@19 a#3@18 [a#3,f#4]@11 ~, ~ a2@22 ~ g2@23 f#2@47 ~@2, ~@7 e3@16 ~@7 d3@16 ~ a#3@12 f#3@30 ~@7]/2", // A G D#m
H: "[~@27 [d#4,c#5]@5 a4@3 ~ f#4@3 e4@2 ~@8 b3@3 ~ d#4@2 f#4 ~@2 b4@2 d#5 ~ f#5@2 b5 ~@19 f#3@2 ~ a3@2 ~ g3@2 f#3@2 ~@13 a3@3 e4@3 d4@2 c#4@3 d4 ~ f4@2 a4@2 ~ e5@2 d5@2 c#5@3 d5@3 a4@2 ~ f4@2 ~@40 b2@10 ~@2, b2@36 ~@9 b2@41 ~@9 f2@40 ~@20 [g#3,d4]@24 e2@10 ~@3, [a3,d#4,f#4]@23 ~@18 d#4@7 ~@55 c3@32 ~@15 b2@17 d5@22 ~@3, ~@7 f#3@30 ~@16 f#3@31 ~@5 g#3@2 ~@3 f3@15 ~@31 e4@49 ~@3, ~@161 g#4@28 ~@3]/4", // D#7 G#dim D#dim
I: "~@21 e5@2 ~@3 f4@13 ~@6 f5@3, c#3@24 ~ [c3,f5]@22 ~, [a4,e5]@12 ~@4 e4@8 ~@15 f4@8 ~, ~@8 a3@16 ~@19 d5@5, ~@17 a4@2 c#5@4 ~@18 a4@6 ~", // F5 A5
J: "~@17 [f#4,f#5]@5 ~ c#5@2 ~@16 e3@3 ~ f#4@2 g#4, b2@22 ~ e2@13 g#3@9 ~@3, ~@2 [f#4,f#5]@15 ~@8 d5@20 ~@3, ~@3 f#3@8 ~@4 b2@7 ~@2, ~@35 b3@9 e4@2 ~@2", // F#
K: "[~@5 d5@2 ~@10 [e3,c#5]@7 ~@16 [g4,b4]@7 [c#4,f#4]@7 ~@11 a#3@3 ~ c#4 ~ f#4 ~@2 a#4 ~ c#5@2 ~@9 c#5@2 ~@25 f#4@8 ~@3 [b3,d#4,b4] ~@7 c#4@2 ~@6 d#5 ~@16 d#4@2 ~@8 a3@13 f#3@3 a3@2 g#3 g3@2 f#3 ~@14 f3@3 a3@2 e4@3 d4@2 c#4@2 d4 ~@3 a4@2 c5@2 ~@2 d5@3 c5@2 [g4,a4] f4 ~@49 e3@5 ~@13 f#3@11 ~@18 a3@6 ~, a2@23 ~ g2@23 f#2@45 f#5@5 ~@38 [c#4,c#5]@7 d#4@16 ~@2 d#4@24 ~@15 c3@30 ~@17 b2@18 [g#4,b4]@23 ~@49, ~ a4@8 ~@3 f#3@12 d4@11 [b3,d4]@12 a#3@18 ~@13 f#5@11 f#5@2 f#3@5 ~@6 f#3@38 d#4@2 d#5@42 ~@34 f4@5 ~ e5@4 ~@24 g#3@6 d4@18 g#3@11 ~@8 e3@17 ~@24, ~@2 b4@5 e3@10 ~@13 d3@17 ~@7 c#3@15 ~@14 c#3@12 ~ b2@47 ~@2 b2@39 ~@7 f3@13 ~@31 e4@51 ~ e4@24 [d4,f4]@23 ~@2, ~@4 c#5@3 e5@16 ~ [g4,b4]@16 ~@20 f#3@9 ~@21 c#5@3 c#5@9 ~@24 [b3,d#4,b4]@17 ~@15 [b3,b4]@26 ~@8 f2@35 ~@13 e2@46 ~@2 a2@23 ~ [f2,c3]@23 ~]/7", // C#m G F#5 B Gsus2 C# G#m Bm …
L: "~@2 e5 ~, a2@3 ~, ~ e3@5 ~@2, ~@11 e4@24 ~@13",
M: "~@39 d4@2 ~@3 f3@3 ~, f2@47 ~, ~@7 [f3,a3]@34 d4@6 ~, ~@7 [d4,f4]@30 f4@10 ~, ~@28 d3@14 ~ a3@4 ~", // F Dm
N: "[~@60 e4@16 [e3,a3,e4]@4 [g#3,g#4]@4 a3@3 ~@4 [c#3,c#4]@5, f2@22 b3@5 e3@11 ~@4 [f#3,f#4]@6, e3@11 f3@35 ~ c#4@29 c#4@14 ~@6, ~@6 d3@29 ~@7 a3@34 ~@4 a3@2 ~@5 [e3,a3,e4]@9, ~@24 a2@17 ~@7]/2", // A5 G# C# F# A5
O: "[[b2,b3]@6 a3@10 ~ a3@6 ~@5 g#3@3 ~@10 f4@2 f4@2 ~@45 d4@7 ~@17 f#4@6 ~@11 c#5@12 ~, ~@6 a2@30 c4@2 d4@2 e4@5 ~@27 [d4,f4]@7 f3@18 b2@41 ~@6, ~@23 e3@20 g4 ~ a4@39 a3@14 ~@4 f#3@23 ~ f#3@17 ~, ~@32 a3@12 ~@2 f2@52 ~@10 d#4@11 ~ f#4@23 ~, ~@34 b3@10 ~@8 c3@46 ~@10 b3@35 ~]/3", // B Dm
P: "[~@18 b5@6 ~@6 b4@2 ~@9 f#4@6 ~@3 f4@5 ~@6 e4@4 d#4 ~ d4 c#4@2 ~@22 c4@4, e2@32 b4@2 a#4@2 [g#3,a4]@2 g#4 g4@6 ~@25 c4@22 ~@4, ~@7 b2@38 ~@2 e2@38 e2@11, ~@13 g#3@13 g#5@2 e5@17 ~@45 b3@6, ~@24 g#5 b5@20 ~@51]/2", // Amaj7
Q: "[~@17 c#4@7 ~@7 b3@8 ~ b3@6 ~ f#4@5 ~@19 a#3@6 ~@7 c#3@5 b5@5 ~@4 f#5 ~ b5@2 f#5@2 d#5 b4@7 ~@21 f#4@4 ~ b4 ~ c5 f#4@2 ~@7 d#4@2 d4 ~ c#4 ~ c4 ~ b3@2 a#3 a3@2 g#3 ~ g3@2 f#3@5 ~@10 d#4@6 ~@2 c4 ~, ~ a2@23 g2@22 ~ f#2@43 ~@5 b2@41 ~@8 b2@47 ~, ~ c#4@16 ~@7 [d4,b4]@15 [d4,g4,b4]@7 ~ a#4@13 c#4@30 ~@29 f#3@20 ~@11 f#3@8 ~@22 f#3@11 ~, ~@7 [e3,a3]@17 ~@7 d3@15 ~@8 a#3@11 f#4@24 ~@54 e4@6 ~@39 d4@4, ~@12 [f#3,b3]@12 ~@23 c#4@8 c#3@16 a#4@19 ~@50 b4@2 ~@47 c#4@2 ~]/4", // G A5 B5
R: "b3@2 a#3@2 a3 ~ g#3 ~ g3 f#3 ~@25 f3@12 ~, f2, ~@5 c3@18 d4@25, ~@11 f3@24 ~@13, ~@17 [a3,f4]@31", // Dm
S: "~@6 a3@6 ~@6 [b2,f#4]@5 ~@19 e3@6, [b2,f#4]@18 ~@6 [e2,d4]@23 ~, d4@12 d4@11 ~@7 b2@17 ~, ~@6 f#3@17 ~ g#3@12 g#4@11 ~", // B5 E7
T: "~@18 [a3,c#4]@5 ~ [c#4,f#4]@18 f#4@6, [a2,f#3,b3,e4] f#2, ~ e3 ~@2", // A F#5 Asus2
U: "~@12 [a3,a4]@10 ~@17 f#4@2 g#4 ~@4 c#5@2, b2@22 ~@2 [e2,b3,g#4]@13 g#3@4 ~@3 e3@4, ~@15 b2@5 ~@4, ~@36 e4@5 ~@7, ~@36 f#4@3 ~@4 a4@2 b4@3", // A E
V: "[d5@2 ~@15 c#5@7 ~@15 [d4,g4,b4]@8 ~@49 c#5@2 ~ c#5 ~@9 b4@14 ~ f#4@5 ~ b4@5 ~ d#4 ~@3 b3@2 a#3@2 a3 ~@2 f#3@6 ~@30 f#3 ~@25 e5@6 ~@18 a4@6 ~@14 [b2,a3]@9 ~@19 [e3,g#4]@6 ~@18 a4@5 ~@20 a3@5 ~@14 [c#4,d4]@9 ~@2 [e2,b2,g#4,g#5]@6 g#3@3 ~@3 [a5,b5] ~@5 e3@6, ~@2 [a2,e5]@22 g2@23 f#2@25 c#3@18 c#5 f#5 c#5@3 b2@39 ~@8 b2@36 b2@7 ~ c3@6 f2@12 f4@24 f4@11 ~@6 f4@17 g#3@13 [g#3,e4]@12 a2@17 a3@6 ~@8 a3@11 [e4,e5]@5 ~@50, ~@7 e3@17 [d4,g4,b4]@15 ~@8 [c#4,a#4]@47 f#5@3 ~ d#5@24 ~@13 f#4@2 ~@37 a3@8 g3@3 f3@15 [c3,d4]@15 d5@24 ~@55 [b3,e4]@16 ~@8 a4@16 ~@14 [a4,a5]@10 ~@14 b4@2 ~@10, ~@12 [f#3,e4,a4]@13 ~@5 d3@17 ~@8 c#3@11 f#5@18 f#2@13 ~@83 g#3@4 ~@11 a3@12 a4@9 ~@30 d4@16 d4@25 ~@6 [f#3,b4]@17 ~@14 c#4@11 ~@49, ~@33 b3@14 ~@8 a#3@42 ~@7 f#3@32 ~@20 b3@28 ~@4 e4@28 [f3,a3]@23 [b2,a3]@14 ~@10 [e2,b2]@25 ~@11 e3@11 ~ [f#2,e3,g#3,g#4]@23 ~ [b2,f#4,f#5]@23 ~@26]/8", // G B7 E Dmaj7 E Asus2 A5 C#m …
W: "~@12 a3@4 ~@4 d3@3 ~@2 b4@4 ~@4 g4@5 ~@6 g4@4, [a2,f#3,e4]@23 ~@2 g2@23, [b3,c#4]@19 c#4@3 ~@3 d4@3 ~@5 b4@8 d4@7, a3@12 ~@4 [a3,b3]@6 ~@7 b3@2 ~@2 d4@3 ~@2 b3@10, ~@3 e3@8 ~@4 d3@9", // F#m7 Bsus2 Asus2
X: "[~@11 a#3@11 ~ f#3@4 g3 g#3 ~@2 a3 a#3 ~@2 c4 ~ [c#3,c#4] ~ d4 d#4 ~ e4@2 ~@22 f#4@5 ~@7 c#5@9 [d#4,f#4,c#5]@6 ~ f#4@2, f#2@38 ~@9 b2@48 ~, [c#4,a#4]@22 ~@12 b3@2 ~@8 f4@2 ~@7 f#3@42 ~, ~@6 c#3@28 ~@11 f#4@20 ~@28 [d#4,c#5]@2 ~, ~@59 d#4@12 ~ a3@12 ~@12]/2", // C# D#m7 F# D#7
Y: "[~ f#4@4 ~ d#4@2 ~ [d#4,b4]@5 ~@4 d#4 ~@8 d#4@7 ~@7 d#4@6 ~@41 d5@3 ~@2 d5@3 ~@6 a3@6 [a3,c#4,d4,b4]@12 e2@3 ~@15 e3@5 [a2,f#3]@11 ~@32 [d4,f4]@6, [d#4,c#5]@5 ~@12 a4@10 f#4 ~@7 f#4@12 f4@35 d4@2 c3 f4@34 ~@7 g#3@16 ~@26 a3@12 [f3,a3]@12, ~ b2@46 d4@19 a3@9 d4@3 f3@14 ~@4 [b2,c#5]@24 [b2,b3,g#4]@23 ~@31 d3@18, ~@23 [f#3,b3]@11 ~@2 b3@11 a3@7 c3@5 f3@13 c3@8 a3@7 a4@4 e5@5 ~@41 f4@6 e4@25 [d4,f4]@18 ~@6, ~@12 f2@11 ~@19 f2@6]/4", // G#m Dmaj7 D Dm D#7 F Bsus2 E …
Z: "[~@18 e5@6 ~@53 c3@18 ~@7 a3@2 g3@3 f3@6 e3 ~@24 e3@6 ~@12 [f#3,c#4]@12 e3@6 a3@2 ~ c#4 ~@2 e4@2 ~ a4@2 c#5@2 ~ e5@2 ~ a4@2 ~ e5@2 ~ c#5@6 a4@2 ~ e4 ~@2 e4@3 d#4@3 d4@4 ~@17 c#4@4 ~@2 a#3 a3 ~ g#3 g3 ~ f#3 ~@15 e4@11 ~ c3@12, a2@48 f2@47 f2@50 a2@40 ~@6 a2@50 ~@4 c3@26 ~@4 c4@13, b3@12 [e4,a4]@40 ~@2 [d4,f4]@42 ~@123 c#4@15 e4@7 ~@9 f3@38, e4@6 f#3@17 ~ c#5@28 ~@2 f3 c3@16 a3@25 ~@48 a3@23 ~@63 a4@10 ~@24 a3@24, ~ e3@51 ~@2 a3@10 f3@33 ~@18 f3@30 ~@5 e3@17 ~@13 f#3@7 ~@10 e3@25 ~@6 e3@12 f2@36 ~@12]/6", // F#5 A5 Dm
AA: "~@23 d#4@24 ~, f#4, b2@7 ~, d#4@3 b3@5, a3 f#3@7",
AB: "[g#3@5 ~@25 e3@2 ~ g#3@2 ~@9 e5@2 ~@3 [c5,d5] e5@2 c5@2 b4 g#4 ~ e4 ~ e4@2 d#4@2 d4 c#4 ~ c4 ~@25 c4@3 ~, [e2,g#4]@25 ~@2 e4@5 ~@4 b3@10 e2@27 ~@9 e2@12 ~@2, ~@5 b2@37 b4@4 ~@50, ~@38 e4@8 ~@8 b2@9 ~@8 b2@24 ~, ~@40 g#4@6 ~@22 b3@21 b3@6 ~]/2", // Csus2 E
AC: "[~@17 [a3,e4]@5 ~@19 b4@6 ~@7 c#3@18 ~@17 f#3@6 ~@6 d#4@12 ~@41 f#5 ~@2 f#5@2 e5@3 d#5@23 ~ b3@2 a#3 ~ a3 g#3, [a2,c#4]@23 g2@25 ~@35 f#4@13 ~@5 f#4@44 ~@40 c4@4 ~@3, ~@6 e3@17 d4@5 ~@7 d4@13 c#4@48 ~@39 b5@16 ~@41, ~@11 f#3@11 ~ b4@18 ~@6 a#4@48 b2@50 b2@36 ~@11, ~@24 g4@17 ~@36 f#5@19 ~@29 b4@20 ~@47]/4", // A5 A
AD: "~ g3 ~@34 c3@12, f2, ~@5 f3@43, ~ c3@4 c4@3, ~@5 [a3,e4]@19", AE: "b2@5 ~@4 g#3@3, ~@23 d4@24 ~, ~ e2",
AF: "~@18 b3@17 ~@6 e3@6 ~, [a2,e4]@3 ~, b3@18 ~@17 [f#2,a3,c#4]@12 ~, ~@7 e3@29 ~@12", // A5 F#m
AG: "~@2 d4@2 ~@3 e3, f#4@24 ~ d4@23, b2@3 ~ e2@4, d4@11 a4@13 ~@24, ~@6 f#3@18 g#3@13 ~@11",
AH: "[[a2,f#3,a3,b3,c#4,e4]@23 ~@7 [b3,d4]@8 ~@5 [g4,b4]@4 ~@24 c#3@25, ~@23 g2@25 ~@10 a#3@11 ~@27, ~@29 b4@9 [b3,d4]@10 ~@3 f#4@18 ~@27, ~@30 d3@18 ~@3 [c#4,a#4]@14 [c#4,a#4]@31, ~@30 g4@13 ~@4 f#2@49]/2", // F#m7 Bm G Bm F#
AI: "[~@26 b5@5 ~@7 e5@6 ~@18 f#4 ~ f#4@2 e4@2 d#4@4 ~@12 a#3@2 a3 g#3 ~ g3 f#3@2 ~@46 d4@5 b2@18 ~@7 g#3@12 ~@6 e3@6, b2@44 d#5@16 ~@3 b4@2 ~@16 c4@5 ~@22 [a3,e4]@35 ~@37 g#3@12, ~@6 f#3@40 ~@2 b2@38 ~@11 f2@47 ~@24 [e2,d4]@24, ~@31 f#5@5 f#5@9 ~@9 f#3@32 ~@6 f3@19 ~@15 d4@5 c#4@12 ~@24 g#4@24 ~, ~@33 b5@12 ~@38 b3@3 ~@17 c3@22 ~ [c3,f3]@18 ~@48]/4", // A5 E7 F5
AJ: "[~@23 a3@13 ~@3 g#3@3 g3@2 f#3@3 ~@37 [c3,f4,a4]@11 ~, a2@7 ~ f2@8, e4@11 a3@7 b3@24 ~@18 [a3,e4]@36, b3@11 f#3@12 e4@14 a3@5 ~@12 c3@18 d4@24, ~@6 e3@35 ~@6 f3@48 ~]/2", // F A5
AK: "[~@25 a3@2 c#4@3 e4@2 ~ f#4 ~@2 a4@3 c#5@2 e5@2 ~ f#5@3 [a2,a5]@7 ~@42, a2@5 ~@7, [b3,c#4,e4]@23 ~@73, ~@6 e3@35 ~@55, ~@12 f#3@29 ~@55]/2", // A C#m7
})).s("gm_piano").gain(0.39).pan(0.4)
// chords · piano · soft notes
const piano_soft = note(`<
~ A B ~ C D E F@2 G H I J ~ K L M N ~ O P ~@2 Q R S T U ~ V W X ~@2 Y Z ~ AA AB AC AD AE AF ~ AG AH ~ AI ~@3 AJ AK ~@3
AL ~ AM ~ AN AO AP AQ ~ AR@2 AS AT AU AV AW AX ~ AY AZ BA ~ BB BC ~ BD ~
>`.pickRestart({
A: "~@5 c#5@18 ~@19 c#5@6, ~@23 c3@19 ~@6, ~@3 a3", B: "~@23 c#4 ~@17 d5@6 ~", C: "~@8 e3@7 ~",
D: "~ a3@17 ~@23 a3@6 ~, c#4@17 ~@31", E: "~@20 d#4@3 ~@12 g#4@13, ~@12 a3@11 ~@25, ~@19 f4@5 ~@24",
F: "[c#4@17 ~ a3@6 ~@18 c#4@5 ~ b3@17 ~@7 [e2,g#3]@23 ~, f#3 ~@3, ~@17 c#4@6 ~@24 f#4@25 ~@24]/2", G: "~ a3@11 ~@36",
H: "~@3 c#3@12 c#3@8 ~", I: "~@8 a3@3 ~@5", J: "~@21 a3@17 ~@10", K: "e2@35 ~@13", L: "~@31 a3@5 a3@11 ~",
M: "~@12 a3@10 ~ c#4 ~@2 d4@18 ~@4", N: "a#4 ~@47", O: "~@3 a3 ~@2", P: "~@7 f#3@30 ~@11",
Q: "[a3,b3,c#4]@23 ~ f3@23 ~, ~@23 a3@17 ~@8", R: "e4@11 ~@2 f#3@23 ~@12, [a3,b3,c#4]@3 ~", S: "~@43 d3@4 ~",
T: "~@36 d3@11 ~", U: "~@6 b3@11 ~@7, ~@11 f#3@23 ~@14", V: "~@17 a3@19 ~@12, ~@5 f3@10 ~@9",
W: "~@23 d#4@12 ~@7 b2@6, ~@35 d#4@12 ~", X: "b3@11 ~, g#4@37 ~@11", Y: "~@7 f#4@10 ~@12 a#3@12 ~@7",
Z: "~@12 a3 ~@3", AA: "~@36 c3@11 ~", AB: "~@12 a3@11 ~@13 g#3@11 ~", AC: "~@7 c#4, ~ a3, ~@5 c#3@3, ~@3 e3",
AD: "~@6 f#3@16 ~@3 e4@11 ~@12", AE: "a4 ~@47", AF: "f#4 ~@11", AG: "~@9 f#3 ~@20 g3@8 ~@10, ~@8 f#3@5 ~@3",
AH: "~@30 e4@17 ~", AI: "~@18 c#5@5 ~", AJ: "~@3 a3", AK: "~@33 a3@2 ~@13", AL: "~@35 f#3@13",
AM: "~@5 c3@28 ~@2 c3@13", AN: "~ f#3", AO: "b3 ~@23", AP: "~@12 a3@17 ~@13 b2@6, ~@29 a3@18 ~",
AQ: "~@11 g#3@12 ~ g#3 ~@23", AR: "[~@41 g4@6 ~@37 a#3@12, ~@29 b3@18 f#2@49, ~@5 d3@3 ~@2 a#3@4 ~@2, ~@3 c#3]/2",
AS: "~@17 d#4@31, ~@5 f#3@43", AT: "~@12 b5@3 ~@22 b2@8 ~@3, ~@3 f#3@19 ~@2, ~@25 a3@19 ~@4", AU: "~@3 f#3 ~@44",
AV: "~@7 a3@5 ~@8 b2@3 ~@7 b2@18, ~@12 a3@11 g#3@13 ~@12, ~@17 f#4@6 ~@25",
AW: "~@18 [a3,c#4]@17 ~@13, [a3,c#4]@3 ~@5, ~@13 f#3@23 ~@12", AX: "~@18 b2@6 ~@13 g#3@11, ~@12 a3@12 ~@7 b2@17",
AY: "~@5 c#3@6 ~@7 f#4@6, ~@35 a#3@13", AZ: "~@23 a3@22 ~@3, ~@11 d#4@34 ~@3", BA: "~@12 a3@5 ~@8 a3@13 ~@10",
BB: "~@18 b2@5 ~@7 b2@18, ~@6 a3@17 ~@25, ~@12 d4@11 ~@25", BC: "c#4@23 ~@13 f#3@6 ~@6, a3@11 ~@12 c#4@18 ~@7",
BD: "a3@23 ~@25",
})).s("gm_piano").gain(0.22).pan(0.4)
// bass · acoustic bass
const bass = note(`<
~@5 A B@2 C@8 D@3 E F G@2 H I J K L M N O P Q R S T U V W X Y Z S AA AB AC AD AE AF AG AH AI AJ AC AK AL M AM AC AN A
AC U AO AP Z S AJ AB AC AQ AR AS Z AT AU AV AC AQ AW AC AN AX
>`.pickRestart({
A: "a1@23 ~ e2@12 a1@12", B: "[b1@15 ~@2 b1@6 e2@12 e1@12 a1@24 e2@12 ~ a1@12]/2",
C: "[b1@16 ~@2 b1@5 ~ e1@11 b1@12 a1@17 ~@2 a1@6 g1@12 d2@11 f#1@24 ~ c#2@12 f#2@11 b1@24 f#2@8 ~@4 f#2@12 b1@24 f#2@9 ~@4 f#2@11 f1@23 f2@13 f1@12 b1@24 e1@12 ~ b1@11 a1@24 ~ c2@12 c2@12]/8",
D: "[b1@14 ~@3 b1@6 e2@12 ~ e1@11 a1@18 e2@6 g1@12 ~ d2@5 ~@6 f#1@23 ~ c#2@12 f#2@13]/3",
E: "b1@23 f#2@9 ~@3 f#2@12 ~", F: "b1@23 f#2@12 b1@12 ~", G: "[f1@23 d2@12 f2@12 b1@16 ~@3 b1@6 e2@12 e1@11 ~]/2",
H: "a1@17 ~ a1@6 f1@11 d2@12 ~", I: "a1@23 e2@12 a1@12 ~", J: "f1@23 d2@9 ~@4 d2@12", K: "f1@23 f2@12 ~ f1@12",
L: "a1@23 ~ e2@9 ~@3 e2@12", M: "a1@2 e2 a1", N: "f1@8 d2@3 ~ d2@4", O: "b1@24 f#2@12 b1@11 ~",
P: "e2@12 b1@6 e2@5 ~", Q: "e2@2 e1 e2", R: "a1@5 ~ a1@2 g1@4 d2@4", S: "f#1@2 c#2 f#2", T: "b1@6 f#2@2 ~ f#2@3",
U: "b1@2 f#2 b1", V: "f1@23 ~ d2@12 f1@12", W: "b1@8 ~ b1@3 e2@6 e1@6", X: "a1@5 ~ a1@2 f#1@4 c#2@4",
Y: "b1@9 f#2@2 ~ e2@6 e1@6", Z: "a1@3 e2 g1@3 d2", AA: "b1@8 f#2@3 ~ f#2@4", AB: "b1@24 f#2@9 ~@3 f#2@11 ~",
AC: "f1@2 d2 f1", AD: "b1@2 ~ b1 e1@2 b1@2", AE: "a1@9 e2@2 ~ f#1@6 c#2@6", AF: "b1@3 f#2 e2@2 e1@2",
AG: "a1@18 e2@6 g1@17 ~ d2@6", AH: "f#1@8 c#2@3 ~ c#2@4", AI: "b1@2 f#2!2", AJ: "b1@23 ~ f#2@9 ~@3 f#2@12",
AK: "e1@2 b1 e2", AL: "a1@18 e2@5 ~ f1@18 d2@6", AM: "f1@8 d2@3 ~@3 d2@2", AN: "a1@8 e2@3 ~ e2@4",
AO: "e1@20 ~@4 b1@11 ~ e2@12", AP: "e1@2 e2 e1", AQ: "b1@7 ~@2 b1@3 e2@6 e1@6", AR: "a1@18 e2@5 ~ f#1@12 c#2@12",
AS: "b1@17 ~ f#2@6 e2@12 e1@12", AT: "f#1@23 ~ c#2@12 f#2@12", AU: "b1@2 f#2 f#1", AV: "b1@23 ~ f#2@12 b1@12",
AW: "a1@3 e2@3 a1@2", AX: "a1@7 ~@41",
})).s("gm_acoustic_bass").gain(0.64)
// other · flute
const flute = note(`<
~@8 A@2 B C D@2 E F G@4 H@2 I@2 J@4 K@4 ~ L@2 M N@2 O@2 ~@17 P@2 Q ~ R@2 S@4 T U V W@2 X@3 Y Z AA AB@2 ~@3
>`.pickRestart({
A: "[~@47 e5@48 ~]/2", B: "f#5@25 ~@5 f#5@8 ~@3 e5@6 ~", C: "d#5@5 ~@2 b4@5 ~ a4@16 ~ f#4@18",
D: "[~@28 c#5@11 ~ b4@4 ~ c#5@5 ~ a4@17 f4@21 ~@7]/2", E: "~@17 c#5@7 ~@4 e5@8 ~ c#5@5 ~@2 e4@4",
F: "~@2 f#4@6 ~ a4@32 ~@7", G: "[~@47 e5@46 ~ f#5@20 ~@8 f#5@8 ~ e5@6 ~ d5@4 ~ c#5@5 ~@2 b4@14 f#4@24 ~@4]/4",
H: "[~@18 c#5@9 ~@2 f#5@7 ~ c#5@7 ~ b4@8 a4@13 ~@2 f4@25 ~@3]/2",
I: "[~@17 c#5@6 ~@3 e5@7 ~ c#5@5 ~@2 e4@5 ~ f#4@5 ~@2 a4@32 ~@10]/2",
J: "[~@47 a4@57 ~@15 g4@7 ~@2 f4@6 ~@2 g4@5 ~@2 f4@2 g4 f4@12 ~ e4@31 ~@2]/4",
K: "[~@47 a4@67 ~@12 b4@8 ~@2 a4@6 ~ b4@5 ~@2 e5@41 ~]/4", L: "[e5@66 ~@7 f#5@9 ~@2 e5@6 ~@2 d#5@4]/2",
M: "~@7 b4@8 a4@14 ~ f#4@18", N: "[~@29 c#5@11 ~ b4@5 c#5@6 ~ a4@16 f4@26 ~]/2",
O: "[~@17 c#5@6 ~@2 e5@8 c#5@5 ~@2 e4@7 f#4@6 ~ a4@42]/2", P: "[a4@66 ~@5 g4@8 ~@2 f4@6 ~@2 g4@5 ~@2]/2",
Q: "f4 g4 ~ f4@13 e4@32", R: "[a4@66 ~@7 b4@8 ~ a4@7 b4@7]/2",
S: "[~@2 e5@56 ~@37 e5@62 ~@10 f#5@8 ~@2 e5@6 ~@2 d#5@7]/4", T: "~ b4@5 ~@3 a4@21 f#4@18",
U: "~@26 c#5@10 ~ b4@6 c#5@5", V: "~@2 b4@12 a4@15 f4@19", W: "[~@17 c#5@8 ~ e5@7 c#5@5 ~@2 e4@5 ~ f#4@6 a4@43 ~]/2",
X: "[~@47 e5@70 ~@2 f#5@9 ~@2 e5@6 ~@2 d#5@6]/3", Y: "b4@5 ~@2 a4@20 ~ f#4@20", Z: "~@20 c#5@19 ~ b4@4 ~ c#5@3",
AA: "~@2 a4@23 f4@22 ~", AB: "[~@17 c#5@8 ~@2 e5@6 ~@2 c#5@4 ~@3 e4@5 f#4@6 ~ a4@40 ~@2]/2",
})).s("gm_flute").gain(0.51).pan(0.4)
// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
~@13 A B ~ C D ~@3 E F ~ G ~@2 H I@2 J ~ K@2 ~@5 L M@2 ~ N O ~@3 P Q ~@7 R S T U@2 ~@2 V@2 ~@4 W ~ X Y ~@2 Z AA ~ AB
AC AD AE
>`.pickRestart({
A: "~@7 d4@2 ~@9 g4@3 ~@27", B: "~@6 [d4,f4] ~@9", C: "~@31 a4@8 ~ b4@8", D: "e4@9 ~@7", E: "~@5 f4",
F: "~ e4@11 ~@36", G: "~@6 b4@10 g#4@8 e4@19 ~@5", H: "~@32 f#4@7 ~@9",
I: "[~@5 f#4@5 ~@2 g#4@6 ~@2 a4@6 ~ b4@7 ~ c#5@8 e5@11 d5@8 a4@19 ~@15]/2", J: "~@5 f4@6 e4@7 ~ f4@3 ~@26",
K: "[~@17 b4@4 a4@5 ~ g#4@6 a4@7 b4@6 ~ g#4@13 c#5@21 ~@15]/2", L: "~@7 a4",
M: "[~ b4@7 ~ g#4@7 f#4@7 ~ e4@7 ~ c#5 d5@7 ~ b4@11 ~ e4@20 ~@23]/2", N: "~@30 f#4@2 ~@9 [d#4,f#4]@7",
O: "~@5 [d#4,f#4]@5 ~@9 d#4@10 ~@2 f#4 ~@16, ~@9 f#4@5 ~@10", P: "~@7 a4@8 ~ b4@8 g#4@8 ~ a4@7 ~ b4@7",
Q: "~@2 e5@19 ~@27", R: "~@5 a4", S: "b4@8 ~ d4@8 e4@18 f4@12 ~", T: "e4@17 ~@23 e4@4 d4@4",
U: "[~@2 c#4@5 f#4@11 b4@8 ~ a4@6 g#4@7 ~ a4@30 ~ e5@18 ~@6]/2", V: "[~@30 g#4@7 a4@5 ~ b4@8 c#5@22 ~@23]/2",
W: "~@6 [d4,f4]@11 ~@2 d4@2 ~@9 e4 ~@17, ~@9 f4 ~@14", X: "~@4 g#4@4 a4@4 b4@3 a4@12 ~@2 g#4@7 ~ f#4@4 e4@2 ~@2 d4@3",
Y: "~ c#4@21 ~@26", Z: "~@3 [d#4,a4] ~@5 [d#4,a4]@4 ~@11", AA: "~@6 f4@18 ~@5 d4 ~@12 [d4,f4]@2 ~@4",
AB: "~@6 e4 ~@10 [e4,a4]@10 ~@3 e4 ~@11 e4@2 ~@4, ~@29 a4@2 ~@17", // A5
AC: "~@6 [d4,f4]@10 ~@2 [d4,f4]@2 ~@10 f4@7 ~@5 f4@2 ~@4", // Dm
AD: "~@6 [e4,g#4]@10 ~@2 [e4,g#4]@6 b4@6 g#4@5 ~ a4@5 b4@7", AE: "c#5@7 ~@41",
})).s("gm_acoustic_guitar_nylon").gain(0.41).pan(0.6)
// other · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@13 A B ~@7 C ~@6 D@2 ~@12 E ~@33 F G H I ~@2>".pickRestart({
A: "~@18 d4@3 ~@8 [d4,g4]@3 ~@16", B: "~@6 [d4,f4]@2 ~@22 e4@3 ~@15", C: "~@13 a4@8 ~@27",
D: "[~@46 a4@5 ~@23 f#4@14 ~@8]/2", E: "~@15 d#4 ~@8", F: "~@6 d4 ~@22 f4 ~@18", G: "~@18 f#4 ~@29",
H: "~@6 a4 ~@35 a4@2 ~@4", I: "~@31 d4@6 ~@6 d4 ~@4",
})).s("gm_acoustic_guitar_nylon").gain(0.21).pan(0.6)
// drums · bongos
const bongos = s("bongo:4").struct("<~@5 [~@5 x ~@2]!77 ~>").gain(1.43)
// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@5 A@15 B A@21 B A@21 B A@17 ~>".pickRestart({
A: "~ x ~@6", B: "x",
})).gain(1.43)
// drums · congas
const congas = s("conga:13").struct("<~@5 A ~ A@21 ~ A@21 ~ A@21 ~ A@9 ~>".pickRestart({
A: "~ x ~@2",
})).gain(2.23)
// drums · congas
const congas_2 = s("conga:18").struct("<~@5 A B C@20 A B C@20 A B C@20 A B C@9 ~>".pickRestart({
A: "x ~@2 x", B: "~ x ~ x", C: "~@3 x",
})).gain(2.23)
// drums · congas
const congas_3 = s("conga:33").struct("<~@5 A@2 B A@21 B A@21 B A@21 B A@8 ~>".pickRestart({
A: "~@5 x ~ x", B: "~@7 x",
})).gain(2.23)
// drums · shaker
const shaker = s("sh").struct(`<
~@5 A B@2 A@3 B A B C A D E C A@2 F A G@2 A@3 B@2 A@3 B A B C A D E C A@2 F A G@2 A@3 B@2 A@3 B A B C A D E C A@2 F A
G@2 A@3 B@2 A@3 B A B C A ~
>`.pickRestart({
A: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", B: "x ~@3 x ~ x ~ x ~ x!3 ~ x ~", C: "~@2 x ~ x ~ x ~ x ~ x!3 ~ x ~",
D: "x ~@3 x ~@3 x ~ x!3 ~ x ~", E: "x ~ x ~ x ~@3 x ~@2 x!2 ~ x ~", F: "x ~@3 x ~ x ~@3 x!3 ~ x ~",
G: "x ~ x ~ x ~@3 x ~ x!3 ~ x ~",
})).gain(0.39)
// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
~@7 A ~@3 A ~ A B ~ C D B ~@2 A ~ D@2 ~@4 A ~@3 A ~ A B ~ C D B ~@2 A ~ D@2 ~@4 A ~@3 A ~ A B ~ C D B ~@2 A ~ D@2 ~@4
A ~@3 A ~ A B ~@2
>`.pickRestart({
// … 7 more lines
More by Buena Vista Social Club
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.