0:00/0:00
// The Game of Love — Santana
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 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: edit a riff to change every repeat.
// chords · soprano sax
const soprano_sax = note(`<
~@9 A B C D@2 E F G H I@4 J K L M N O P Q R S T@3 U V@2 W@2 X Y Z@4 AA@2 AB AC N O P Q R S AD@3 AE@3 AF AG AH AI AJ AK
AL@3 AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA Z@4 BB@2 BC BD BE BF BG BH BI BJ BK BL@2 BM@2 BN@3 BO@2 BP BQ@2 BR
BS BT BU BV BW BX BY BR BS BT BZ CA CB
>`.pickRestart({
A: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~", B: "[c2,c4]@5 ~ c2@7 ~ f1@2, ~@3 c4@5",
C: "a#1@5 ~@3 a#3@2 ~ c4 ~ d4 f1@2, ~@6 a#1@7 ~@3",
D: "[[c2,c4]@5 ~ c2@6 ~@2 f1@2 a#1@5 ~ a#1@7 ~ f1 ~, ~@3 a#3@2 ~ f3@6 ~@4]/2", E: "[c2,c4]@5 ~ [c2,c4]@7 ~ f1@2",
F: "a#1@5 ~ f3 ~ a#3@2 ~ c4@2 ~ f1@2, ~@6 a#1@7 ~ d4 ~", G: "c2@4 c4 ~ c2@6 d#3@2 [f1,f3]@2, c4@3 ~@3 a#3@4 ~@6",
H: "a#1@5 ~ a#1@2 [f1,c4]@2 ~@2 a#1@2 g1@2, ~@6 c4 ~@3 g1@2 ~@4, ~@11 a#3@2 ~ a#3 ~", // F5
I: "[c2@5 ~ c2@7 ~ f1@2 ~@2 f4@2 ~@2 d4 ~ f4 ~ f4 ~ d4 ~ f1@2 ~@2 d4@2 f4 ~ [d#2,c4]@6 a#3 ~ f2@2 f1@2 g1@2 a#1@2 g1@2 [f1,c4]@2 ~@2 a#1 ~ [a#1,a#3] ~, g#4@13 ~ g4@4 ~@12 f4@4 ~@12 a#3@4 ~@4 c4 ~@4 a#3@2 ~@3, ~@16 a#1@5 ~ a#1@7 ~@3 d#2@5 ~@21 g1@2 ~@4]/4", // Cm F5 A#
J: "c2@5 ~@5 g4@4 [c2,f4]@2, g#4@9 ~@7, ~@6 c2@7 ~@3", K: "d2@5 ~@5 g3 ~ c4@2 d2@2, ~@6 d2@7 ~@3",
L: "c4@2 g3 ~@7 g3 ~@3 [d#2,c4]@2, d#2@5 ~ d#2@6 ~@4", // Cm
M: "f1 ~ [f1,c4] ~ c4@2 f1 ~ c4@2 f1 ~ c4@2 a#3@2, ~@4 f1 ~@3 f1 ~@3 f1 ~ f1 ~", // F5
N: "g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3@3 ~ [f1,g3]@2 g1@2, c2@4 ~@2 c2@4 ~@4 f3 ~", // Fsus2
O: "g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3@4 f1@2 g1@2, a#1@4 ~@2 a#1@5 ~@5",
P: "c4@2 d4 ~ d4 ~ d4 ~ d4@3 ~ f1@2 [g1,c4]@2, c2@5 ~ c2@5 ~ f3 ~@3", // C5
Q: "~@2 c4@3 ~ a#1@2 d2 a#1 g3@2 f2@2 a#1@2, a#1@5 ~ g3 ~ g#3@2 d#2 ~@5",
R: "g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3@3 ~ [f1,g3]@2 g1@2, c2@4 ~@2 c2@5 ~@3 f3 ~", // Fsus2
S: "g#3 ~ g#3 ~ g#3 ~ a#1@2 ~@2 f1 g1 a#1 c2 [a#1,f3] g1, a#1@4 ~@2 g#3 ~ g#3@4 ~@4", // A#5
T: "[[c2,c4]@5 ~ c4 ~ c4@2 ~@2 f1@2 g1 ~ f1 ~ [f1,c4] ~ c4@2 [f1,a#3] ~ [f1,a#3]@2 g1@2 a#1@2 g1@2 c2@5 ~ c2@7 ~ f1@2, ~@6 c2@4 ~@2 f3 ~ c4@4 ~@2 f1 ~@5 c4@4 c4@7 ~ c4@2 ~@8]/3", // C F5 A#5
U: "a#1@5 ~ f3@2 a#3@2 ~ c4@2 ~ [f1,d4]@2, ~@6 a#1@7 ~@3", // Dm
V: "[[c2,c4]@5 ~ [c2,a#3]@6 g3@2 f1@2 a#1@5 ~ a#1@7 ~ f1 ~, ~@7 f3@3 ~@6]/2", // C C7
W: "[[c2,c4]@5 ~ c2@6 a#3@2 ~@2 a#1@5 ~@3 c4@3 a#3@2 ~ f1@2, ~@6 c4@5 ~@3 f1@2 ~@6 a#1@7 ~@3, ~@15 g3@3 ~@12 a#3 ~]/2", // C
X: "[c2,c4]@5 ~ [c2,c4]@6 c4 ~ [f1,c4]@2", Y: "~ a#3@5 a#1@2 f1@2 g1@2 a#1@2 g1@2, a#1@5 ~@11",
Z: "[c2@5 ~ c2@7 ~ f1@2 ~@2 f4@2 ~@2 d4@2 f4 ~ f4@2 d4 ~ f1@2 d#2@4 d4 ~ c4@3 ~ c4@2 a#3 ~ f2@2 f1@2 g1@2 a#1@2 g1@2 [f1,c4]@2 ~@2 a#1 ~ a#3@2, g#4@13 ~ g4@4 ~@12 f4@5 ~@11 a#3@7 ~ c4 ~@4 c4@3 ~@2, ~@16 a#1@5 ~ a#1@7 ~@9 d#2@6 ~@14 g1@2 ~@2 a#1 ~]/4", // F5
AA: "[c2@5 ~ c2@7 ~ c2@2 ~@2 f4@3 ~@5 f3@2 g3 ~ [d2,c4]@2, g#4@13 ~ g4@4 ~@14, ~@16 d2@5 ~ d2@7 ~@3]/2", // D7
AB: "~@2 c4@2 ~@6 f3@2 g3 ~ [d#2,c4]@2, d#2@5 ~ d#2@6 ~@4", // Cm
AC: "f1 ~ c4@2 f1 ~ f1 ~ c4@2 [f1,c4] ~ [f1,c4] ~ [f1,a#3] ~, ~@2 f1 ~@5 f1 ~@7", // F5 A#5
AD: "[[c2,c4]@5 ~ c4 ~ c4@2 ~@2 f1@2 g1 ~ f1 ~ [f1,c4] ~ c4@2 [f1,a#3] ~ f1@2 [g1,c4]@2 a#1@2 g1@2 c2@5 ~ c2@7 ~ [f1,f3]@2, ~@6 c2@4 ~@2 f3 ~ c4@4 ~@2 f1 ~@3 a#3 ~@5 c4@11 ~@7]/3", // C F5 A#5 C5 F
AE: "[a#1@4 d4 ~ d#4@2 d4@3 ~ d#4 ~ f1@2 d#2@5 ~ d#2@6 ~@2 f2@2 f1@2 g1@2 a#1@2 g1@2 f1@2 [g1,f3]@2 g3@2 f3@2, d4@3 ~@3 a#1@7 ~ c4@23 ~@7 a#1 ~ a#1 ~]/3", // G7
AF: "[g1,c4]@5 ~ f3@4 g1@2 [a#1,f3] ~ [a#1,f3] ~, ~@3 g1 ~@4", AG: "[d1,c4]@5 ~ f3@2 d1@4 f3 ~ [d1,f3] ~, ~@6 d1 ~@9",
AH: "[d#1,c4]@5 ~ [d#1,g3]@3 ~ d#1 ~ [a#1,f4]@4", // Cm D# A#5
AI: "f1 ~ f1 ~ f1 ~ f1 ~ c4@2 f1 ~ a#3@2 f1 ~, ~@2 c4@5 ~ f1 ~@3 f1 ~@3",
AJ: "c2@2 a#1@2 ~@2 c1@5 ~ a#3@2 c1 ~, c4@4 g1@2 ~@6 c1 ~@3, ~@5 c4@7 ~@4",
AK: "d2@2 c2@2 a1 ~ [d1,c4]@4 a#3 ~ a#3@2 d1@2, c4@5 ~@7 d1 ~ c4 ~", // D7
AL: "[d#1@4 ~@2 d#1@3 ~ d1@2 d#1@2 e1@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ [f1,d4] ~ f1 ~ f1 ~ c2@5 ~ c2@2 f2 ~ f2 ~ f2@2 g2 ~, c4@13 ~ d#4@12 ~@2 f4@15 ~@5]/3", // Dm
AM: "a#2@5 ~ a#1@2 d2@2 d#2@2 e2@2 f2@2", AN: "c2@5 ~ c2@2 f2 ~ f2 ~ f2@2 g2@2", AO: "a#1@2 ~ a#1 g2 f2 d2 c#2",
AP: "c2@5 ~ c2 ~ f2 ~ f2 ~ f2 ~ g2@2", AQ: "a#1@2 ~ a#1@2 f1 a#1 c2", AR: "d#2@3 ~ d#2@3 ~ d#2@2 a#1@2 d#2@2 a#1@2",
AS: "f2@2 f1 ~ f1 ~ f1 ~ f1@2 g1 ~ a#1 ~ a#1 ~", AT: "c2@4 ~@2 c2@2 f1 ~ f1 ~ f1 ~ g1@2",
AU: "a#1@5 ~ a#1@2 d2@2 d#2 ~ e2@2 f2@2", AV: "c2@4 ~@2 c2@2 f1 ~ f1 ~ f1@2 g1@2",
AW: "a#1 ~ a#1@2 ~@2 a#1@2 g1 ~ f1 ~ d1@2 c#1@2", AX: "c1@4 ~@2 c2 ~ f1 ~ f1 ~ f1@2 g1@2",
AY: "a#1 ~ a#1@7 ~ f1@2 a#1@2 c2 ~", AZ: "d#2@2 ~@2 d#2@3 a#1 d#2@2 a#1@2 d#2@2 e2@2",
BA: "f2@2 f1 ~ f1 ~ [f1,c4] ~ [f1,c4]@2 ~@2 a#1@2 [b1,a#3]@2, ~@5 g1 ~@2, ~@11 c4@3 ~@2", // F5 Bmaj7
BB: "[c2@5 ~ c2@7 ~ c2@2 ~@2 f4@3 ~ d2@7 ~ [d2,d4]@2, g#4@13 ~ g4@4 ~@14, ~@16 d2@5 ~@11]/2", // D
BC: "c4 ~ c4 ~ a#3@2 ~@4 g3 ~ f3 ~ [d#2,d4]@2, d#2@5 ~ d#2@6 ~@4", // D#maj7
BD: "[f1,c4] ~ c4@2 f1 ~ f1 ~ c4@2 f1 ~ c4@2 a#3@2, ~@2 f1 ~@5 f1 ~@3 f1 ~ f1 ~", // F5
BE: "c4 ~ c4 ~ c4 ~ c4 ~ c4@4 ~@2 a#3 ~", BF: "c4 ~ c4 ~ c4 ~ c4 ~ c4@3 ~@5",
BG: "c4 ~ c4 ~ c4 ~ c4 ~ c4@3 ~ f3 ~ c4@2", BH: "a#3 [a3,c4] g3 f3 c4 [d3,a3] f3 g3, ~@6 a3 ~@9",
BI: "c4 ~ c4 ~ c4 ~ c4 ~ c4@3 ~@3 f3 ~, c3@13 ~@3", BJ: "c4 ~ c4 ~ c4 ~ c4 ~ c4@2 ~@6",
BK: "c4@2 d4 ~ d4 ~ d4 ~ d4@2 ~@4 [f1,c4]@2, ~@6 c2@7 ~@3", // F5
BL: "[~@2 f1 ~ f1 ~ [f1,a#3] ~ [f1,a#3] ~ [f1,c4] ~ [f1,c4] ~ f1 ~ c2@4 ~@2 c2@4 ~@2 f1@2 [g1,c4]@2, ~@2 c4@4 ~@8 c4@9 ~@9]/2", // A#5 F5 C5
BM: "[~@2 c4@3 ~ a#3 ~ a#3 ~ c4 ~ f1@2 g1@2 ~@6 c2@5 ~ f1@2 [g1,f4]@2, a#1@4 ~@2 a#1@5 ~ c4 ~ c4@4 a#3@8 ~@2 a#3 ~@3, ~@16 c2@5 ~@11]/2", // G7
BN: "[~@2 f4 ~ f4 ~ [a#1,f4]@2 d2 a#1 d#2 ~ f2@2 ~@2 c2@4 ~@2 c2@5 ~ f1@2 g1@2 a#1@4 ~@2 a#1@3 ~ f1 g1 a#1 c2 a#1 g1, a#1@5 ~@3 c4@6 a#1@2 ~@32, ~@15 c4@5 c4@16 ~@10 c4@2]/3", // A#5
BO: "[~@2 c4 ~ c4@2 ~@2 c4@3 ~ f1@2 g1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 g1@2 a#1@2 g1@2, c2@5 ~ c2@4 ~@2 c4 ~ c4@16 ~@2]/2",
BP: "[c2,c4]@5 ~ c2@4 ~@2 f1@2 g1@2, ~@3 g3 ~@4", // C
BQ: "[[a#1,c4]@5 ~ a#1@5 ~ f1@2 g1@2 c2@4 c4@2 ~@2 c4@2 a#3 ~ [f1,g3]@2 g1@2, ~@6 f3@2 ~@4 f4@7 ~@3 c2@5 ~@5]/2", // A#sus2 Fsus2
BR: "a#1@5 ~ a#1@2 d2 a#1 d#2 ~ f2@2 a#1@2", BS: "c2@4 ~@2 c2@5 ~ f1@2 g1@2",
BT: "a#1@4 ~@2 a#1@3 ~ f1 g1 a#1 c2 a#1 g1", BU: "~@2 g3@2 a#3 ~ c4@2 c4 ~@3 f1@2 g1 ~, c2@5 ~ c2@4 c4@5 ~",
BV: "f1 ~ c4@2 [f1,c4] ~ f1 ~ f1@2 g1@2 a#1@2 g1@2, ~@2 f1 ~@3 c4@6 ~@4", BW: "c2@2 ~ c2@2 ~ f1 g1",
BX: "a#1@4 ~@2 a#1@5 ~ f1@2 g1@2", BY: "c2@5 ~ c2@5 ~ f1@2 g1@2", BZ: "c2@5 ~ c2@4 ~@2 f1@2 g1 ~",
CA: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 g1@2 a#1@2 g1@2", CB: "a#1 ~ a#1@3 g1 ~ f1 a#1@2 ~@6",
})).s("gm_soprano_sax").gain(0.55)
// other · brass section
const brass_section = note(`<
~@62 A B C D E F G H ~@21 I J K ~@4 L M N O P Q R@2 S T ~ U V W X Y W@2 Z AA V W X Y W@2 Z AA AB
>`.pickRestart({
A: "~@6 [a#3,d4,g4]@5 ~@5", B: "~@3 [d3,a3,c4,f4]@2 ~@3", C: "~@6 [d#3,g3,a#3,d4,f4]@5 ~@5",
D: "~@8 [c4,f4] [d4,g4] [f4,a#4] ~ [f4,a#4] [g4,c5] [a#4,d5] ~", E: "[g4,a#4,d5]@2 ~ [d#4,g4,c5]@3 ~@2, [c4,d#4] ~@7",
F: "[f4,a4,d5]@2 ~ [f4,a4,d5]@3 ~@2", G: "[d#4,f4,a#4,d5]@15 ~",
H: "[f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~", I: "[a3,a#3,d4,f4]@15 ~",
J: "[d#3,a#3,d4,g4,a#4]@15 ~", K: "[f3,d#4,g4,a#4]@15 ~",
L: "~@2 [d4,d5] ~ [d4,d5]!2 ~ [d4,d5]@4 ~ c4@2 [d4,d5]@2, ~@11 c5@2 ~@3", // D
M: "~@2 [d4,d5] ~ [d4,d5]!2 ~ [d4,d5]@4 ~ [c4,c5]@2 [f3,f4]@2", // D C F
N: "~@2 [d4,d5] ~@2 [d4,d5] ~@2 [d4,d5]@3 ~ [c4,c5]@2 [d4,d5] ~", O: "[a#3,a#4]@15 ~",
P: "~@2 [d4,d5]!2 ~ [d4,d5]!2 ~ [d4,d5]@3 ~ [c4,c5]@2 a#4@2, ~@14 a#3 ~", // D C
Q: "~@2 [d4,d5]!2 ~ [d4,d5]!2 ~ [d4,d5]@3 ~ [c4,c5]@2 [a#3,a#4] ~", // D C A#
R: "[~@2 [d4,d5]!2 ~ [d4,d5]!2 ~ [d4,d5]@3 ~ [c4,c5] ~ [f4,a#4,d5,f5]@16 ~@2]/2", // D C A#
S: "~@2 [d4,d5]!2 ~ [d4,d5]!2 ~ [d4,d5]@4 [c4,c5]@2 [d4,d5]@2", // D C D
T: "~@2 [d4,d5]!2 ~ [d4,d5]!2 ~ [d4,d5]@3 ~ [c4,c5]@2 [d4,d5] ~", U: "[f3,d#4,g4,a#4,d5,f5]@15 ~",
V: "~ d4 ~@2 [d4,d5]@2 [c4,c5] f4, ~@2 d5 ~@11 f5 ~", W: "~@2 [d4,d5] ~@3 [d4,d5]@6 [c4,c5]@2 f4@2, ~@14 f5 ~",
X: "~@2 d5@2 ~@2 [d4,d5]@5 ~ [c4,c5]@2 f4@2, ~@2 d4 ~@11 f5 ~", Y: "~@2 [d4,d5] ~@3 [d4,d5]@6 [c4,c5]@2 [f4,f5] ~",
Z: "~@2 [d4,d5] ~@3 [d4,d5]@6 [c4,c5]@2 [f4,f5]@2", AA: "[d#4,g4,a#4,d5,f5]@7 ~",
AB: "[a#3,a#4,a#5] ~ [a#3,a#4,a#5] ~@2 [a#3,a#4,a#5] ~@2 [a#3,a#4,a#5] ~@7", // A#
})).s("gm_brass_section").gain(0.42)
// other · overdriven guitar
const overdriven_guitar = note(`<
~@6 A ~ B C ~@13 D@2 E ~@3 F G H I ~@6 J ~ K ~@3 L ~@2 M N ~@3 F G H I ~@4 O ~@8 P ~@2 Q R S T ~ U@2 V W X Y@2 Z ~@3
AA ~@3 AB ~@5 AC@2 ~@5 AD AE AF ~ AG AH AI AJ ~ AK ~@2 AL AM@7 AN
>`.pickRestart({
A: "~@2 c4@4 ~ d#4", B: "f4@2 g#4!3 ~ g#4@2 ~@6 c5@2", C: "~@2 c5@4 ~ a#4 c5 a#4@2 ~@5",
D: "[~@12 g3@2 a#3@7 ~@11]/2", E: "~@8 c4 a#3 g3 a#3 ~@2 a#3@2", F: "~@12 c4 a#3 c4 d4", G: "a#3 g3 g#3@4 ~@9 g3",
H: "g#3@3 ~@5", I: "a#3@2 c4 ~ c4@2 d4 ~ d4@2 d#4@2 ~@4", J: "~@4 d3 f3@7 ~@4", K: "~@4 [c4,f4]@3 ~ [c4,f4]@4 ~@4",
L: "~@12 c4 a#3 g3@2", M: "~@8 f4 d4 c4 a#3 c4@2 c4 a#3", N: "c4 a#3@3 a#3@3 ~@9",
O: "c4 d4 a#3@2 ~@2 c3@2 d3@2 f3@2 g3@2 a#3@2", P: "d5!16", Q: "~@12 c4 d#4 ~@2", R: "f4 ~@7",
S: "a4 a#4 f5 a4 a#4 f5 a4 a#4 f5@2 ~@2 f5 d5 f5 d5", T: "f5!2 ~@14", U: "[~@4 f5@3 ~ f5@3 ~ f5 ~ f5@4 ~@14]/2",
V: "c5 g4@2 ~ g4@2 a#4 ~@5 c5 ~ a4 a#4", W: "a4@3 g4 f4@2 ~@10",
X: "~@2 [c5,d5]@2 g5 ~ g5 ~ a5@2 a#5 ~ a5 ~ [a5,a#5] g5", // Csus2 A#maj7
Y: "[[a5,a#5] g5 ~ g5 a#5 ~ a#5 ~ a#5 ~ a#5@2 g5 ~ f5@5 ~@13, ~ [a5,a#5] ~@14]/2", // A#maj7
Z: "~@2 f5 d5 c5@2 c5 a#4 c5 a#4@4 ~@3", AA: "~@2 a#3 ~", AB: "~@6 c5 ~ c5@2 g4 ~@5",
AC: "[~@10 a#3@2 c4@2 f4@5 ~ g4@5 ~@7]/2", AD: "~@12 c5 ~ a#4@2", AE: "~@2 a#4@2 g4 ~ f4@3 ~@7",
AF: "~@13 [c5,d5] a#4@2", AG: "~@2 g4 a#4 c5@2 ~@2 c5 ~@2 c5@3 ~ d5", AH: "c5@2 ~@2 f5 d5 c5 d5 ~@4 c5 a#4 ~ a#4",
AI: "g4 ~ g4 g4@2 a#4 ~@10", AJ: "~@6 f5 ~ c5 ~ c5 a#4 c5 a#4 a#4@2", AK: "~@8 c5@3 ~@5", AL: "~@4 f5@2 d5 f5",
AM: "[~@2 c5@5 ~ c5@2 a#4@2 c5@2 a#4@8 f4@2 g4@2 a#4@2 c5 ~ c5@6 c5@2 a#4@2 c5@2 a#4@4 f4@12 ~@2 f5@2 d#5@11 ~@3 f5@2 d#5@12 ~@2 c5@2 a#4@15 ~@3]/7",
AN: "a#4 ~",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.7)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@86 A B C D A B C D E F E F E F E F ~@24 G>".pickRestart({
A: "[c3,g3,a#3,d4] ~ [c3,g3,a#3,d4] ~ [c3,g3,a#3,d4] ~ [c3,g3,a#3,d4]@3 ~ [c3,g3,a#3,d4] ~ [c3,g3,a#3,d4] ~ [c3,g3,a#3,d4] ~", // Gm
B: "[a#2,f3,a3,d4] ~ [a#2,f3,a3,d4] ~ [a#2,f3,a3,d4] ~ [a#2,f3,a3,d4]@3 ~ [a#2,f3,a3,d4] ~ [a#2,f3,a3,d4] ~ [a#2,f3,a3,d4] ~", // A#maj7
C: "[d#3,a#3,d4,f4] ~ [d#3,a#3,d4,f4] ~ [d#3,a#3,d4,f4] ~ [d#3,a#3,d4,f4]@3 ~ [d#3,a#3,d4,f4] ~ [d#3,a#3,d4,f4] ~ [d#3,a#3,d4,f4] ~", // A#
D: "[f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4]@3 ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~", // Fsus4
E: "[c3,g3,a#3,d4,f4] ~ [c3,g3,a#3,d4,f4] ~ [c3,g3,a#3,d4,f4] ~ [c3,g3,a#3,d4,f4]@3 ~ [c3,g3,a#3,f4] ~ [c3,g3,a#3,d4,f4] ~ [c3,g3,a#3,d4,f4] ~", // Gm7 Csus4 Gm7
F: "[a#2,f3,a3,d4,f4] ~ [a#2,f3,a3,d4,f4] ~ [a#2,f3,a3,d4,f4] ~ [a#2,f3,a3,d4,f4]@3 ~ [a#2,f3,a3,d4,f4] ~ [a#2,f3,a3,d4,f4] ~ [a#2,f3,a3,d4,f4] ~", // A#maj7
G: "[a#3,d4,a#4] ~ [a#3,d4,a#4] ~@2 [a#3,d4,a#4] ~@2 [a#3,d4,a#4] ~@7", // A#
})).s("gm_acoustic_guitar_steel").gain(0.3)
// chords · piano
const piano = note(`<
~@2 A B A B A B C D E F E F E F E F E F C G H I J K E F E F E F E L E F E F E F E F E F C G H I J K E F E F E F E L E
F C G M N O P Q R S T U V U V U V W X U V U V U V W X E F C G H I J K ~@8 E F E F E F E L E F E F E F E L E F E F E F
E L Y
>`.pickRestart({
A: "c3@2 [d#3,g3,a#3,d4]@2 c3 [d#3,g3,a#3,d4]@2 f3", B: "a#2@4 [f3,a3,d4]@4 a#2@2 [f3,a3,d4]@4 a#2 ~",
C: "d#2@2 [d#3,g3,a#3,d4]@2 d#2 [d#3,g3,a#3,d4]@2 d#2", // D#maj7
D: "[d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~ [d#3,f3,a#3,d4] ~", // A#
E: "c3@4 [d#3,g3,a#3,d4]@4 c3@2 g4@2 g4 ~ f3@2, ~@2 g4 ~@2 [d#3,g3,a#3,d4]@2 ~", // D#maj7
F: "a#2@4 [f3,a3,d4,a4]@4 a#2@2 [f3,a3,d4]@4 a#2 ~, ~@5 a4 ~@2", // Dm
G: "[f2,d#3,g3,a#3]@4 [f2,d#3,g3,a#3] ~ [f2,d#3,g3,a#3]@4 ~@2 [d#3,g3,a#3]@3 ~, [f3,d4] ~@9 f2@5 ~", // D# Dm
H: "c3@4 [d#3,g3,a#3,d4]@4 c3@2 g4@2 g4 ~ c3@2, ~@2 g4 ~@2 [d#3,g3,a#3,d4]@2 ~", // D#maj7
I: "[d2,d3]@2 [d2,a3,c4,f4]@2 d2 [d2,a3,c4,f4]@2 [d2,d3], ~@4 d3@2 ~@2 d3 ~ d3@2 ~@4", // D Dm7 D
J: "d#3@3 ~ [d#3,g3,a#3,d4]@4 d#2@2 [d#3,g3,a#3,d4]@4 d#2@2, d#2@7 ~@9", // D#maj7
K: "[f2,d#3,g3,a#3,f4] a#3 [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,f4] ~", // D#
L: "[f2,a#2,d#3,g3,a#3]@4 [f2,d#3,g3,a#3] ~ [f2,d#3,g3,a#3]@4 ~@2 [d#3,g3,a#3]@3 ~, ~@10 f2@5 ~", // D#
M: "g2@4 [d3,f3]@2 g2@6 [d3,f3,a#3,d4]@3 ~, ~ [a#3,d4] ~@2", N: "d2@4 [d3,f3,a3,c4]@2 d2@6 [d3,f3,a3,c4]@3 ~",
O: "d#2@4 [d#3,g3,a#3,d4,f4]@2 d#2@6 [d#3,g3,a#3,d4,f4]@3 ~", // D#maj7
P: "[f2,d#3,g3,a#3,d4,f4]@3 ~ [f2,d#3,g3,a#3,f4] ~ [f2,d#3,g3,a#3,d4,f4]@5 ~ [f2,d#3,g3,a#3,d4,f4]@3 ~", // D#maj7 D# D#maj7
Q: "[d3,a3,c4,f4]@2 ~ [c3,g3,a#3,d#4]@3 ~@2", R: "[d3,a3,c4,f4]@5 ~ [d3,a3,c4,f4]@6 ~@4",
S: "[d#3,g3,a#3,d4,f4]@2 ~ [d#3,g3,a#3,d4,f4]@4 ~", T: "[f2,d#3,a#3,d4,f4]@5 ~ [f2,d#3,a#3,d4,f4]@9 ~",
U: "c3@2 [d#3,g3,a#3,d4,f4]@2 c3 [d#3,g3,a#3,d4,f4]@2 c3", V: "a#2@2 [f3,a3,d4,f4]@2 a#2 [f3,a3,d4,f4]@2 a#2",
W: "d#3@2 [g3,a#3,d4,f4]@2 d#3 [g3,a#3,d4,f4]@2 d#3", // Gm7
X: "[f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~ [f3,a#3,c4,f4] ~", // Fsus4
Y: "[a#2,a#3,d4,a#4] ~ [a#2,a#3,d4,a#4] ~@2 [a#2,a#3,d4,a#4] ~@2 [a#2,a#3,d4,a#4] ~@7", // A#
})).s("gm_piano").gain(0.3)
// chords · rock organ
const rock_organ = note("<~ A@2 B ~@54 C D E F ~@8 G H I J G H K L G H I J G H K L ~@41>".pickRestart({
A: "[~@3 [a#5,c6,f6]@13, ~@3 a#4@5 ~@8]/2", B: "[a5,d6,f6]@15 ~", C: "[g4,a#4,d#5]", D: "[a#3,d5,f5]@15 ~",
E: "[d#4,a#4,d5,f5]@15 ~", F: "[f3,d#4,g4,a#4,d5,f5]", G: "[g5,a#5,d#6]", H: "[a#4,f5,a5,d6]", I: "[c5,g5,a#5,d#6]",
J: "[a#4,a5,d6]", K: "[g5,a#5,d6,f6]@15 ~", L: "[f5,a#5,c6,f6]@15 ~",
})).s("gm_rock_organ").gain(0.2)
// chords · rock organ · soft notes
const rock_organ_soft = note("<~@3 A ~@54 B C D ~@9 E ~@2 F E ~ G ~ E ~@2 F E ~ G ~@42>".pickRestart({
A: "a#4@15 ~", B: "c4", C: "a4@15 ~", D: "g4@15 ~", E: "c5", F: "f5@15 ~", G: "d#5@15 ~",
})).s("gm_rock_organ").gain(0.12)
// drums · kick
const kick = s("bd").struct("<~@9 A B@15 C B@23 C B@19 D B@23 C B@32 E>".pickRestart({
A: "x!8", B: "x ~@2 x ~@4", C: "x!7 ~", D: "x!4 ~@4", E: "x ~ x ~@2 x ~@2 x ~@7",
})).gain(0.3)
// drums · snare
const snare = s("sd").struct("<~@9 A B@15 C B@23 C B@16 D@2 E F B@23 C B@32 G>".pickRestart({
A: "x!8", B: "~ x ~ x", C: "x!7 ~", D: "~@3 x", E: "~@5 x!3", F: "x ~ x ~ x ~ x ~ x!8", G: "x ~ x ~@2 x ~ x!2 ~@7",
})).gain(0.3)
// drums · clap
const clap = s("cp").struct("<~@2 A@7 ~ A@15 ~ A@23 ~ A@16 ~@4 A@23 ~ A@32 ~>".pickRestart({
A: "~ x ~ x",
})).gain(0.35)
// drums · low tom
const low_tom = s("lt").struct("<~@65 A ~@19 B ~@3 C ~@11 D ~@7 E ~@16 F>".pickRestart({
A: "x!8", B: "~ x!7", C: "~ x!2 ~ x ~@3 x ~ x ~@2 x!2 ~", D: "~ x!3 ~@3 x ~ x!2 ~ x ~@3", E: "~@7 x ~ x ~ x ~ x ~@2",
F: "x ~ x ~@2 x ~@2 x ~@7",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<A B ~@60 C@3 ~@4 D C@4 ~@52 E>".pickRestart({
A: "x!2", B: "x!2 ~@2", C: "~ x ~@6", D: "x!4 ~@4", E: "~ x",
})).gain(0.35)
// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~@15 B ~@23 B ~@28 C D ~@5 E ~@3 F ~@3 B ~@7 G ~@7 H ~@17>".pickRestart({
A: "x!8", B: "~@7 x", C: "~@6 x!10", D: "x!2 ~@14", E: "~ x!7", F: "x ~@2 x ~@2 x ~", G: "x ~@4 x ~@2 x ~@5 x ~",
// … 37 more lines
More by Santana
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.