0:00/0:00
// True Love Ways — Holly Buddy
// 84 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 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.
// chords · piano · "A.PIANO 1"
const piano = note(`<
~ A@5 B C D E@4 F G H@2 I J K@3 L M N@8 O P Q R S@3 T@2 U@2 V@2 W X Y@7 Z AA AB AC@2
>`.pickRestart({
A: "[~@25 a6@21 ~@2 g6@21 ~@4 f6@10 ~ eb6@11 ~@2 d6@18 ~@5 a6@18 ~@6 g6@21 ~@3 f6@11 ~ eb6@11 ~ d6@18 ~@13 [bb4,d5]@9 [bb4,d5]@8, ~@22 d6@24 bb5@22 ~@3 f5@13 ~@33 d6@21 ~@4 [bb5,eb6]@23 ~@2 f5@13 ~@60, ~@23 f6@23 ~ eb6@21 ~@15 eb5@12 d5@21 ~@2 f6@19 ~@42 eb5@11 ~ d5@19 ~@30]/5", // Bb Eb5
B: "[g4,bb4] ~@2", C: "~ c5@21 ~@10 [g4,bb4]@8 [eb4,g4,bb4,d5]@8, [eb4,f4,g4]@21 ~@10 [c4,eb4]@9 ~@8",
D: "~ c5@22 ~@2 gb5@10 ~@2 a5@10 ~, [f4,a4]@21 ~@2 a4@11 ~@2 gb5@11 ~, ~@24 [c5,eb5]@11 [c5,eb5]@12 ~", // F Cm
E: "[[a4,bb4,d5,f5]@19 ~@5 a6@18 ~@5 g6@20 ~@5 f6@11 ~ eb6@11 ~@2 d6@17 ~@6 a6@19 ~@4 g6@22 ~@2 f6@17 ~@2 eb6@6, ~@21 d6@22 ~@2 bb5@22 ~@2 a5@13 ~ g5@13 ~@22 f6@20 ~@4 eb6@23 ~ [c6,eb6]@9 ~@17, ~@22 f6@21 ~@3 eb6@21 ~@3 c6@9 ~@16 f5@21 ~@76, ~@71 eb6@9 ~@15 a5@16 ~@6 d6@21 ~@3 bb5@23 ~ a5@18 ~@9]/4", // Bbmaj7 Cm
F: "~@2 d6@19 ~@3 d5@11 ~ [a4,bb4,d5]@10 ~@2, [f5,bb5]@11 a4@6 ~@7, ~@23 bb4@12 ~@13, ~@8 f5@7 ~", // Bbmaj7 Bb5
G: "[eb4,g4,bb4,c5]@18 ~@19 a5@7 ~@4, ~@34 c5@9 ~@5, ~@35 eb5@9 ~@4, ~@9 gb5@2 ~", // Cm7
H: "[[bb4,d5,f5,bb5]@16 ~@2 [f5,bb5,d6]@6 ~ [g5,bb5,eb6]@16 ~@8 bb5@6 ~@41, ~@47 d5@8 ~@41, ~@48 f5@7 ~@41]/2", // Bb Eb
I: "~@12 gb5@3 bb5@4 ~@2 eb6@4 f6@5 ~@3 eb6@8 db6@7, ~@19 db6@4 ~@25",
J: "~ bb5@10 ~@13 f6@5 ~@4 eb6@12 ~@3, ~@20 gb5@8 ~@3 gb5@13 ~@4, ~@7 bb5@8 ~, ~@23 eb6@5 ~@20",
K: "[~@12 [f4,bb4,d5]@11 ~ [f4,bb4,d5]@11 ~ [bb4,d5,f5]@11 ~ [d6,f6]@11 ~ [d6,f6,c7]@10 ~@2 [d6,f6]@11 ~ d6@11 ~ [f5,ab5]@22 ~@3 db6@14 ~@9, ~@47 bb5@11 ~@12 bb5@12 ~ [f5,bb5]@12 db5@23 ~ f5@15 ~@10, ~@60 ab5@7 ~@5]/3", // Bb Dm Dm7 Dm Fm Bb5
L: "~@13 f6@10 ~@2 e6@10 ~@2 c6@8 ~@3, ~@11 a5@12 ~ [g5,c6]@10 ~ e5@9 ~@4, ~@4 c6@4 ~@4 g5@3 ~", // C5
M: "~ eb5@17 ~@6 [g4,c5]@18 ~@6, [f4,a4]@7 ~@9", // C5 F
N: "[[f4,a4,c5]@5 ~@44 d5@9 ~@2 [a4,bb4,d5,f5]@8 ~@3 a6@22 ~@3 g6@13 ~@12 f6@10 ~ eb6@11 ~ d6@18 ~@6 a6@20 ~@4 g6@22 ~@3 f6@10 ~@2 eb6@10 ~ d6@12 ~ f5@5 g5@3 ~@4 [g5,bb5]@5 [a5,c6]@6 [bb5,d6]@7 ~@5 g5@11 ~@5 [eb6,g6]@3 [d6,f6]@2 ~@4 [eb6,gb6]@6 ~ [c6,eb6]@5 ~@2 [eb6,gb6]@5 ~@3 [bb5,d6,f6]@6 [f6,bb6,d7]@5 ~@2 [f6,bb6,d7]@4 ~@2 [d6,f6,bb6]@5 [d6,f6,bb6]@2 ~@5 [bb5,d6,f6]@6 [bb5,d6]@6 [bb5,d6,f6]@5 ~, ~@46 f4@12 ~@73 eb5@13 ~@22 f6@13 ~@12 eb6@13 ~@180, ~@47 a4@11 ~@11 f6@23 ~@2 eb6@14 ~@57 d6@22 ~@2 bb5@24 ~@171, ~@48 bb4@10 ~@10 d6@25 bb5@16 ~@10 f5@13 ~@11 d5@20 ~@52 f5@12 eb5@12 d5@12 ~ d5@7 ~@28 [c5,eb5]@13 ~@84]/8", // F Bbmaj7 Gm Am Bb Eb Dm Ebm …
O: "~ f5@5 [d5,f5,g5]@5 ~ [d5,f5,a5]@6 [d5,f5,bb5]@6 [d5,f5,bb5]@6 [d5,f5]@6 [f4,bb4,d5]@6 [bb3,d4,f4,bb4]@5 ~, d5@5 ~@43", // G7 Dm Bb Dm Bb
P: "~ [d5,f5]@20 ~@3 [a4,d5,f5]@17 ~@7, [a4,bb4]@7 ~@9", // Dm Bbmaj7
Q: "[g4,bb4,eb5]@15 ~@9 f5@10 ~@2 f6@11 ~, ~@23 [a4,c5]@11 ~ f5@12 ~", // Eb Am
R: "[a4,bb4,d5]@20 ~@4 [a4,f5]@15 ~@9, ~@23 d5@16 ~@9", // Bbmaj7 Dm
S: "[[g4,bb4,eb5]@9 ~@10 [d5,bb5]@4 ~@2 [c5,f5,a5]@21 ~@3 f5@20 ~@3 [d5,g5]@21 ~@4 g5@21 ~@3 [eb5,g5]@9 ~@2 [c5,gb5]@11 ~, ~@47 bb4@20 ~@4 bb4@21 ~@3 c5@21 ~@3 [a4,c5]@11 ~ [a4,eb5]@12 ~, ~@48 d5@20 ~@28 eb5@21 ~@27]/3", // Eb Gm F G5 Eb Cdim Am Adim
T: "[[f4,bb4,d5]@10 ~@6 c5@3 d5@2 eb5@15 ~@13 d5@8 ~@39, ~@12 a4@4 ~@31 [f4,bb4]@10 ~@39, ~@14 bb4@5 ~@77]/2", // Bb Bb5
U: "[~@20 eb6@4 f6@5 ~@2 eb6@12 ~@6 f6@15 ~@32, ~@12 gb5@4 ~ db6@5 ~@25 bb5@14 ~@35, ~@14 bb5@5 ~@10 gb5@14 ~@3 gb5@16 ~@34]/2",
V: "[~@25 d6@11 [bb5,d6,f6]@9 ~@4 a6@18 ~@5 d6@22 ~@2, ~@22 f5@13 ~@11 d6@20 ~@5 bb5@23 ~@2, ~@23 bb5@13 ~@9 bb5@21 ~@4 [f5,a5]@24 ~@2, ~@47 f6@18 ~@31]/2", // Bb F
W: "[db4,f4,ab4]@2 ~@10 [db4,f4,ab4]@2 ~@2 [db4,f4,ab4] ~@3 [db4,f4,ab4] ~@3 f4 ~@10 [db4,ab4]@2 ~@3 [f4,ab4] ~@3 [db4,f4,ab4] ~@3, ~@23 [db4,ab4]@2 ~@10 f4 ~@4 db4@2 ~@6", // Db Db5 Fm Db Db5
X: "[c4,f4,a4]@2 ~@10 [c4,f4,a4]@2 ~@2 [c4,f4,a4] ~@2 [c4,f4]@2 ~@3 [c4,e4,g4]@2 ~@9 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@4, ~@19 a4 ~@28", // F F5 C
Y: "[[a4,c5] ~@3 [a4,c5,g5] ~@3 [a4,c5,g5] ~@3 [a4,c5,g5] ~@3 [a4,c5] ~@3 [a4,c5,g5] ~@3 [a4,gb5] ~@2 gb5 a4@2 ~@2 [c5,gb5] ~@3 [c5,gb5] ~@3 [a4,c5,gb5] ~@3 [a4,c5]@2 ~ [a4,c5,f5]@2 ~@48 d6@17 ~@5 a6@21 ~@3 g6@22 ~@3 f6@10 ~@2 eb6@11 ~ d6@16 ~@8 a6@20 ~@3 g6@14 ~@12 f6@10 ~ eb6@11 ~ d6@21 ~@3 bb5@12 d6@10 ~@2, g5@2 ~@14 g5@2 ~@6 c5@2 ~ c5@2 ~@3 a4@2 ~@2 a4@2 ~@5 gb5@2 ~@50 [d5,bb5]@18 ~@2 d6@23 ~@2 bb5@25 ~ f5@13 ~@33 d6@24 ~ bb5@17 ~@9 f5@12 eb5@11 ~ d5@20 ~@3 d5@19 ~@7, ~@117 f6@23 ~ eb6@24 ~@13 eb5@12 ~ d5@19 ~@3 f6@22 ~@3 eb6@14 ~@59 g5@2 ~@23]/7", // Am Am7 Am Am7 D Cdim Gbdim Am …
Z: "[eb5,g5,c6]@11 ~@13", AA: "~@13 d6@9 ~@2 bb5@10 ~@2 d6@11 ~, ~@11 d5@11 d5@11 ~ d5@13 ~, ~@23 f5@12 ~@13",
AB: "[eb4,g4]@17 ~@7 [eb4,gb4]@5 ~@13 gb4@5 ~, ~@30 eb4@17 ~, ~@33 gb4@7 ~@8, ~@36 bb4@11 ~", // Eb Ebm
AC: "[~ [bb4,d5,f5]@11 ~ d6@9 ~@2 bb6@11 ~ bb6@11 ~@2 d7@5 ~@42, ~@12 [f5,bb5]@11 [d6,f6]@12 [d6,f6]@11 ~ [f6,bb6]@8 ~@41]/2", // Bb Bb5 Dm Bb5
})).s("gm_piano").gain(0.42).pan(0.3)
// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
~ A B C D E F G H I@3 J E K L M N O P Q R S T U V W X D Y Z AA@2 AB AC AD AC AE AF AG@2 AH AI AJ AK AL AM AN AO AD J V
AP AQ AR AS AT AU@2
>`.pickRestart({
A: "bb1@13 ~@11 d2@13 ~@11", B: "eb2@12 ~@12 f2@13 ~@11", C: "bb1@14 ~@10 d2@13 ~@11", D: "eb2@13 ~@11 f2@12 ~@12",
E: "bb2@12 ~@12 g2@13 ~@11", F: "g2@7 ~@5 c2@7 ~@5", G: "c2@7 ~@5 c2@7 ~@5", H: "f2@13 ~@11 f2@12 ~@12",
I: "[bb1@12 ~@12 d2@12 ~@11 eb2@13 ~@12 f2@11 ~@12 bb1@12 ~@13 d2@12 ~@12]/3", J: "eb2@12 ~@12 f2@11 ~@13",
K: "c2@7 ~@5 f2@6 ~@6", L: "bb2@12 ~@11 eb2@13 ~@12", M: "bb1@7 ~@41", N: "eb2@12 ~@12 eb2@13 ~@11",
O: "eb2@4 ~@4 ab2@4 ~@3 a2", P: "bb2@11 ~@13 f2@13 ~@11", Q: "bb1 ~ bb1 ~", R: "db2@12 ~@11 db2@13 ~@12",
S: "c2@13 ~@11 c2@12 ~@12", T: "f2@12 ~@12 c2@13 ~@11", U: "f2@3 ~@13", V: "bb1@11 ~@13 d2@12 ~@12",
W: "eb2@13 ~@11 f2@13 ~@11", X: "bb1@6 ~@6 d2@7 ~@5", Y: "bb1 ~ g2 ~", Z: "c2@13 ~@11 f2@10 ~@14", AA: "bb2 ~ f2 ~",
AB: "bb1@11 ~@13 d2@11 ~@13", AC: "eb2 ~ f2 ~", AD: "bb1 ~ d2 ~", AE: "bb2@11 ~@13 g2@12 ~@12", AF: "c2 ~ f2 ~",
AG: "[bb1@12 ~@12 eb2@12 ~@11 bb1@8 ~@41]/2", AH: "eb2 ~ eb2 ~", AI: "eb2@3 ~@3 ab2@3 ~@2 a2",
AJ: "bb2@12 ~@12 f2@11 ~@13", AK: "bb1 ~ bb2 ~",
AL: "db2@4 ~@8 db2@2 ~@2 db2@2 ~@2 db2@2 ~@2 db2@3 ~@8 db2@2 ~@3 db2@2 ~@2 db2@2 ~@2",
AM: "c2@3 ~@9 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@10 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2",
AN: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", AO: "f2 ~@23", AP: "eb2@11 ~@13 f2@12 ~@12",
AQ: "bb2 ~ g2 ~", AR: "c2@11 ~@12 c2@11 ~@2 f2@12", AS: "bb2@11 ~@13 g2@11 ~@13", AT: "c2@11 ~@12 f2@12 ~@13",
AU: "[bb2@12 ~@12 f2@11 ~@12 bb1@12 ~@37]/2",
})).s("gm_acoustic_bass").gain(0.38)
// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
~ A B C D E F G H I J K L M N O ~ P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AE AQ AR AS AT
AU J AV AW AX AY AZ BA BB BC
>`.pickRestart({
A: "~@12 [f3,d4,f4]@3 ~@21 [d3,a3,f4]@4 ~@8", B: "~@3 [eb3,g3,bb3,eb4] ~@5 [a3,c4,f4] ~@2",
C: "~@3 [bb3,f4] ~@5 [d3,a3,d4] ~@2, ~@11 f3@4 ~@33", D: "~@3 [eb3,g3,bb3] ~@5 [f3,a3,c4] ~@2",
E: "~@3 [f3,bb3] ~@5 [d3,g3,bb3,d4] ~@2", F: "~@3 [d3,g3,d4] ~@5 [c3,f3,bb3,d4] ~@2",
G: "~@12 [c3,g3,bb3]@3 ~@21 [c3,bb3,eb4]@4 ~@8", H: "~@3 [f3,a3] ~@5 [f3,a3,gb4] ~@2",
I: "~@3 [f3,bb3,d4] ~@5 [d3,a3,f4] ~@2", J: "~@3 [g3,bb3,eb4] ~@5 [f3,a3,c4,f4] ~@2, ~@11 eb3@4 ~@33",
K: "~@12 [f3,bb3,d4]@3 ~@21 [d4,f4]@4 ~@8, ~@35 d3@3 ~@10, ~@18 a3 ~@5", // Bb Dm
L: "~@12 [eb3,g3,bb3,eb4]@4 ~@20 [a3,c4]@5 ~@7, ~@12 f4 ~@3", M: "~@3 [f3,bb3] ~@5 [d3,g3,bb3] ~@2",
N: "~@12 [c3,g3,bb3,eb4]@4 ~@20 [a3,eb4,gb4]@5 ~@7, ~@35 f3@5 ~@8", O: "~@12 [f3,bb3,d4]@5 ~@19 [g3,bb3]@4 ~@8",
P: "~@3 [eb3,bb3,eb4] ~@5 [eb3,bb3,eb4] ~@2", Q: "~@12 [eb3,bb3,eb4,gb4]@5 ~@19 [eb3,ab3,c4,eb4]@4 ~@8",
R: "~@3 [f3,bb3,d4] ~@5 [f3,bb3,f4] ~@2", S: "~@3 [f3,bb3,d4,f4] ~@5 [f3,bb3,d4] ~@2",
T: "~@3 [db3,ab3,db4] ~@5 ab3 ~@2, ~@35 db3@4 ~@9", U: "~@3 a3 ~@5 [e3,g3] ~@2, ~@11 f3@4 ~@33",
V: "~@12 [f3,a3,f4]@4 ~@21 f4@3 ~@8, ~@9 [f3,a3] ~@2", W: "[f3,a3,c4,f4] ~@11", X: "~@3 [bb3,d4] ~@5 [a3,f4] ~@2",
Y: "~@3 [g3,bb3,eb4] ~@5 [a3,f4] ~@2", Z: "~@11 [f3,bb3]@5 ~@20 [d3,a3,f4]@4 ~@8",
AA: "~@12 [g3,eb4]@4 ~@20 [f3,a3,f4]@5 ~@7, ~@11 eb3@4 ~@33", // Cm F
AB: "~@12 [f3,bb3,d4]@5 ~@19 [bb3,d4]@4 ~@8, ~@12 f4@3 ~@20 [d3,g3]@5 ~@8", // Bb G5
AC: "~@12 eb4@5 ~@19 [a3,eb4,f4]@4 ~@8, ~@11 g3@5 ~@19 f3@4 ~@9", // F7
AD: "~@12 [bb3,d4]@5 ~@18 [f3,bb3,d4]@5 ~@8, ~@11 f3@5 ~@32", AE: "~@3 [f3,bb3,d4] ~@5 [f3,bb3,d4,f4] ~@2",
AF: "~@12 [f3,bb3,d4]@5 ~@19 [d3,a3,d4,f4]@5 ~@7", AG: "~@3 [eb3,g3,bb3,eb4] ~@5 a3 ~@2, ~@35 f3@4 ~@9",
AH: "~@12 [f3,bb3]@5 ~@19 [d3,d4]@5 ~@7, ~@35 a3@5 ~@8", AI: "~@3 [g3,bb3,eb4] ~@5 [f3,a3] ~@2",
AJ: "~@3 [f3,bb3,d4] ~@5 [f3,bb3,d4] ~@2, ~@35 d3@5 ~@8", // Bb
AK: "~@3 [bb3,eb4] ~@5 [f3,a3,eb4,f4] ~@2, ~@11 [c3,g3]@5 ~@32", // Eb5 F7 C5
AL: "~@12 [bb3,d4]@5 ~@19 [bb3,eb4,g4]@5 ~@7, ~@11 f3@5 ~@19 eb3@4 ~@9, ~@4 f4 ~@11", AM: "[f3,bb3,d4,f4] ~@11",
AN: "~@3 [eb3,bb3,eb4,gb4] ~@5 [eb3,bb3,eb4,gb4] ~@2", // Ebm
AO: "~@12 [bb3,eb4,gb4]@3 ~@21 [ab3,c4,eb4]@4 ~@8, ~@11 eb3@4 ~@20 eb3@4 ~@9", // Ebm Ab
AP: "~@12 [f3,bb3,d4,f4]@4 ~@20 [f3,d4,g4]@5 ~@7", // Bb G7
AQ: "[ab3,db4]@3 ~@9 [db3,ab3]@4 db3@3 ~ [db3,ab3]@4 [db3,ab3]@3 ~@9 [db3,ab3,db4]@4 [db3,ab3]@4 ab3@2 ~@2", // Db5
AR: "[a3,c4]@2 ~@4 [a3,c4,f4]@2 [a3,c4]@2 a3 ~ [g3,c4]@2 ~@4 [g3,c4,e4]@2 [g3,c4]@2 ~@2, ~@11 f3@9 ~@28", // Am F Am C5 C C5
AS: "a3@4 ~@8 c4@3 ~ f3@3 ~ f3@3 ~ f3@3 ~ [f3,c4]@4 [f3,c4]@3 ~ c4@3 ~ [f3,c4]@4 [f3,c4]@4, ~@35 f3@4 ~@9", // F5
AT: "f3 ~@11", AU: "f3 ~@2 [f3,bb3,d4] ~@5 [d3,a3,d4,f4] ~@2", AV: "~@12 [f3,bb3,d4,f4]@4 ~@20 [d3,a3,d4]@5 ~@7",
AW: "~@3 [g3,bb3,eb4] ~@5 [f3,a3,c4,f4] ~@2", AX: "~@3 [f3,bb3,d4] ~@5 [d3,g3,bb3,d4] ~@2",
AY: "~@3 [bb3,eb4] ~@5 [f3,a3,eb4,f4] ~@2, ~@11 g3@5 ~@32", // Eb5 F7
AZ: "~@12 [f3,bb3,d4,f4]@4 ~@20 d4@3 ~@9, ~@35 [g3,bb3]@4 ~@9", // Bb Gm
BA: "~@6 [bb3,eb4,g4]@2 ~@10 [eb4,gb4]@3 ~@3, ~@35 a3@5 ~@8", // Eb Ebm
BB: "~@12 [bb3,d4]@5 ~@19 [d4,f4]@4 ~@8, ~@12 f4@3 ~@20 [f3,bb3]@5 ~@8", BC: "[bb2,d3,f3] ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.3)
// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
~ A B C D E F G H I ~@3 J ~ K L M ~ N ~ O P Q ~ R S T U ~ V ~ W ~ X Y Z ~@7 AA AB AC AD AE AF ~@2 AG ~ AH AI ~ AJ@2
>`.pickRestart({
A: "~@3 bb3 ~@5 d4 ~@2", B: "~@9 f3 ~@2", C: "~@12 d4@4 ~@21 f4@3 ~@8", D: "~@9 f4 ~@2", E: "~@3 d4 ~@8",
F: "~@3 bb3 ~@8", G: "~@13 eb4@2 ~@21 g3@4 ~@8", H: "~@3 eb4 ~@5 eb4 ~@2", I: "~@6 f4 ~@11 d4@2 ~@4",
J: "~@12 d4@5 ~@19 d4@4 ~@8, ~@4 f4 ~@11", K: "~@12 f4@3 ~@21 eb4@4 ~@8, ~@35 eb3@5 ~@8", L: "f3 ~@7",
M: "~@9 gb4 ~@2", N: "~@9 d4 ~@2", O: "~@35 db4@4 ~@9", P: "~@3 [c4,f4] ~@5 c4 ~@2", Q: "~@3 c4 ~@8",
R: "~@3 [f3,f4] ~@5 [d3,d4] ~@2", S: "~@9 c4 ~@2", T: "~@11 d4@5 ~@20 d4@4 ~@8", U: "~@12 bb3@4 ~@20 c4@5 ~@7",
V: "~@11 [c3,bb3]@5 ~@32", W: "~@3 bb2 ~@8", X: "~@9 [c4,f4] ~@2", Y: "~@12 [bb2,d4]@5 ~@19 f4@5 ~@7",
Z: "~@37 f4@3 ~@8, ~@9 c4 ~@2", AA: "~@13 f4@2 ~@33", AB: "~@24 db4@3 ~@13 db4@3 ~@5", AC: "~@9 c3@2 ~",
AD: "~@8 f3@7 ~ c4@3 ~@5 c4@3 ~@21", AE: "c4 ~@11", AF: "bb3@4 ~@7 bb2@4 ~@33", AG: "~@3 eb3 ~@8",
AH: "~@11 c3@5 ~@32", AI: "~@35 d3@4 ~@9", AJ: "[~@12 f3@5 ~@30 bb3@4 ~@45]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.1).pan(0.3)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~ A@2 B C D E F G ~@8 H@2 I@2 ~@4 J K L M@5 N O P Q R S@3 T@2 U V W X Y@2 Z AA AB AC AD AE AF AG AH ~
>`.pickRestart({
A: "[~@11 bb4@12 d5@12 a5@12 g5@18 ~@31]/2", B: "~@11 bb5@12 ~ a5@18 ~ f5@5", C: "~ g5@20 ~@27", D: "~@36 d6@5 c6@7",
E: "bb5 ~", F: "~@36 d5@11 ~, ~ g4@3, ~@12 eb4@23 ~@13, ~ bb4", G: "[a4,c5]@5 ~@11, f4@11 ~@37",
H: "[~@11 [eb5,gb5]@6 [f5,ab5]@6 gb5@2 ~@4 [gb5,ab5] gb5@2 ~ f5@2 [eb5,gb5]@6 [f5,ab5]@6 [gb5,bb5]@23 ~@26, ~@23 bb5 ~@5 f5@2 ~@65, ~@30 bb5 ~ ab5@3 ~@61]/2", // Ebm Fm Gbsus2 Ebm Fm Gb
I: "[~@12 [a5,c6]@5 ~ g5@5 [a5,c6]@2 ~@4 bb5@2 [a5,c6]@2 ~@2 c6 a5@5 [g5,bb5]@6 ~ f5@24 ~@24, ~@17 bb5@6 ~@6 g5 ~@3 [g5,bb5]@4 ~@10 a5@23 ~@26, ~@35 f5@6 ~@55]/2", // Am Gm
J: "~@11 bb3@13 d4@13 ~@6 a4@5", K: "g4@9 ~@7", L: "~@11 bb4@12 a4@9 ~@11 f4@5",
M: "[g4@24 ~@23 f4@24 ~@48 gb4@24 f4@24 g4@24 ~@13 bb4@12 d5@19 g5@5, ~@47 [bb3,d4]@47 eb4@49 ~@48 f4@43 ~@6, ~@71 g4@50 ~@119, ~@95 c4@48 [bb3,d4]@92 ~@5]/5", // Bb
N: "f5@23 ~", O: "~@2 bb5@2 a5@3 g5", P: "f5", Q: "~@12 bb5@12 a5@17 ~@2 g5@5", R: "~ f5@17 d5@6 g5@18 d6@5 ~",
S: "[c6@18 d6@5 c6@6 bb5@6 ~ a5@5 c6@6 bb5@51 ~@46]/3",
T: "[~@11 [eb5,gb5]@6 [f5,ab5]@6 bb5@2 ~@4 ab5 ~ [gb5,bb5]@2 ~@3 eb5@5 [f5,ab5]@6 [gb5,bb5]@25 ~@24, ~@23 gb5 ~@6 f5@2 ~ ab5@2 gb5@6 ~@55, ~@34 f5@3 ~@59]/2", // Ebm Fm Gb Fm Gb
U: "~@12 c6@5 ~ bb5@6 [a5,c6]@2 ~@6 a5@2 [g5,bb5]@2 [f5,a5]@6 [g5,bb5]@6, ~@11 a5@6 g5@7 ~@6 [g5,bb5]@2 ~@16, ~@31 c6@2 ~@15", // Am Gm F Gm
V: "[f5,a5] ~", // F
W: "[f4,ab4] ~@10 [f4,ab4] ~@3 [f4,ab4] ~@3 [f4,ab4] ~@3 [f4,ab4] ~@11 [f4,ab4] ~@3 [f4,ab4] ~@3 [f4,ab4] ~@3 [f4,a4]", // Fm F
X: "~@11 [f4,a4] ~@3 [f4,a4] ~@4 [f4,a4] ~@3 [e4,g4] ~@10 e4 g4 ~@2 [e4,g4] ~@3 [e4,g4] ~@3 [c4,g4]", // F Em C5
Y: "[~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,gb4] ~@3 [c4,gb4] ~@3 [c4,gb4] ~@3 [c4,gb4] ~@3 [c4,gb4] ~@3 [c4,gb4] ~@3 f4@2 ~@47, ~@47 c4 ~@48]/2", // C5 Cdim
Z: "~@11 bb4@13 d5@19 a5@5", AA: "g5@5 ~@7", AB: "~@12 bb5@12 a5@13 ~@7 f5@4", AC: "~ g5@23 ~@24",
AD: "f4@23 g4@22 ~@3", AE: "g4@25 ~@23",
AF: "~@12 bb5@3 ~ a5@3 [bb5,d6]@4 ~ c6@7 [g5,bb5]@5 [a5,c6]@7 ~@5, ~@11 d6@4 c6@5 ~@3 a5@9 ~@16", // Bb Gm Am
AG: "~@12 [g5,bb5]@4 [eb5,g5]@3 [g5,bb5]@5 [eb5,gb5]@3 ~ gb5@3 ~ eb5@3 ~ gb5@3 [eb5,gb5]@4 [gb5,bb5]@4 ~, ~@27 bb5@4 gb5@4 bb5@4 ~@9", // Gm Eb Gm Ebm Gb
AH: "[bb5,d6]", // Bb
})).s("gm_string_ensemble_2").gain(0.39).pan(0.7)
// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note(`<
~ A B C@3 D@3 E F G@2 H I J@2 K@4 L@2 M N ~@4 O@2 P Q R S@2 T U V W@2 X Y Z@2 AA@2 AB@3 AC@4 AD@4 ~
>`.pickRestart({
A: "f4@11 d4@12 f4@25", B: "eb4@2 f4 eb4", C: "[bb3@12 d4@11 f4@24 eb4@24 f4@12 gb4@11 ~ f4@24 d4@25]/3",
D: "[f4@23 e4@24 eb4@9 ~@4 c4@12 eb4@11 g4@12 f4@16 ~@20 gb3@13]/3", E: "f3@23 a3@25", F: "g3@23 f3@12 eb3@13",
G: "[f3@23 a3@24 g3@24 f3@12 eb3@12 ~]/2", H: "f3@23 f4@12 d4@12 ~", I: "c4@12 eb4@11 g4@12 gb4@13",
J: "[f4@23 eb4@24 d4@5 ~@44]/2", K: "[bb3@23 c4@24 db4@24 c4@24 d4@53 ~@44]/4",
L: "[ab4@47 a4@24 g4@24 ~, f4@71 ~@25]/2", M: "~@12 g4@5 a4@7 c5@6 a4@5 g4@7 a4@6", N: "f4@5 ~@43",
O: "[f3@23 g3@23 ~ g3@23 gb3@24 ~@2]/2", P: "f3@22 ~@2 g3@23 ~", Q: "f3@23 ~", R: "~ f3@23 a3@24",
S: "[g3@23 a3@24 f3@23 ~ a3@24 ~]/2", T: "g3@23 a3@23 ~@2", U: "f3@12 g3@11 ~", V: "g3@11 ~ gb3@11 ~",
W: "[f3@21 ~@2 g3@23 ~ f3@7 ~@42]/2", X: "bb3@23 c4@25", Y: "db4@23 c4@25", Z: "[d4@5 ~@3]/2",
AA: "[f3@2 ~@10 f3 ~@3 f3@2 ~ f3@2 ~@2 f3@2 ~@10 f3@2 ~@2 f3@2 ~@2 f3@2 ~@2 a3@2 ~@10 a3@2 ~@2 a3 ~@3 a3 ~@3 g3@2 ~@10 g3 ~@3 g3 ~@3 g3@2 ~@2 f3]/2",
AB: "[~@3 f3@2 ~@2 f3@2 ~@2 f3@2 ~@2 f3 ~@3 f3 ~@3 f3@2 ~@2 f3@2 ~@2 f3 ~@3 f3@2 ~@2 f3@2 ~@2 f3@2 ~@2 f3@2 ~@46 [f3,d4]@24 ~ a3@24, ~@119 f4@25]/3", // Dm
AC: "[[g3,eb4]@24 [a3,f4]@23 [f3,d4]@24 [a3,f4]@24 [g3,eb4]@24 [a3,f4]@24 [f3,d4]@24 [g3,f4]@25]/4", // Cm Dm Cm Dm G7
AD: "[[g3,eb4]@24 ~@23 d3@24 f3@24 eb3@24 gb3@24 f3@49]/4", // Cm
})).s("gm_string_ensemble_2").gain(0.3).pan(0.6)
// chords · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note("<~@21 A@4 ~@20 B C D@2 ~@10>".pickRestart({
A: "[[db3,db4,f4,ab4]@47 ~ a4@23 [c3,e4,g4]@24 ~ [f4,a4]@51 ~@45, ~@47 [f3,f4]@24 ~@24 [f3,c4]@51 ~@46, ~@48 c4@47 ~@97]/4", // Db C F F5
B: "[db2,db3,f3,ab3]@4 ~@8 [db2,db3,f3,ab3]@2 ~@2 [db2,db3,f3,ab3]@2 ~ ab4 [db2,db3,f3,ab3]@2 ~@2 [db2,db3,f3,ab3]@3 ~@9 [db2,db3,f3,ab3]@2 ~@2 [db2,db3,f3,ab3]@2 ~ ab4 [db2,ab3]@3 ~, ab4 ~@11 ab4 ~@3 ab4 ~@7 ab4 ~@11 ab4 ~@3 ab4 ~@3 [db3,f3] ~@3", // Db Db5 Db
C: "[f2,c3,f3,a3]@3 ~@9 [f2,c3,f3,a3]@3 ~ [f2,c3,f3,a3,a4]@2 ~@2 [f2,c3,f3,a3,a4]@2 ~@2 [c2,c3,e3,g3]@3 ~@9 [c2,c3,e3,g3,bb3]@3 ~ [c2,c3,e3,g3,bb3]@3 ~ [c2,c3,e3,g3,g4] ~@3, a4 ~@11 a4 ~@11 g4 ~@11 g4 ~@3 g4 ~@3 bb3@2 ~@2", // F C C7 C
D: "[[f2,f3,a3,g4]@2 ~ f2 g4@2 ~ f2 g4@2 ~@2 g4@2 ~ [f2,a3,g4]@2 ~@2 [f2,f3,g4]@2 ~@2 [f2,f3,a3,gb4]@2 ~@2 [f2,a3,gb4]@2 ~@2 [f2,f3,a3,gb4]@2 ~@2 [f2,f3,a3,gb4]@2 ~@2 [f2,f3,a3,gb4]@2 ~@2 [f2,f3,a3,gb4]@2 ~@3 f4@2 ~@46, ~@3 f3@2 ~@2 f3@2 ~@2 [f2,f3]@2 ~@34 [f2,f3,a3]@2 ~@47, ~@4 a3 ~@3 a3 ~@3 a3 ~@2 f3 ~@3 a3 ~@7 f3 ~@68]/2", // F Fsus2 F
})).s("gm_tremolo_strings").gain(0.19).pan(0.6)
// other · alto sax
const alto_sax = note("<~@9 A B C@2 ~@2 D E ~@16 F@2 G@2 H I J K ~@18>".pickRestart({
A: "~@15 d4 ~ eb4 ~@2 e4@2 ~ f4@2 ~ f4@2 ~ d4 ~@2 d4 ~@2 a3 ~@2 a3@2 ~ f3@2 ~@2 f3@3", B: "g3@11 ~@13",
C: "[~@12 a4 ~@2 ab4 ~@2 g4@2 ~ gb4 ~@2 f4 ~@2 d4@2 ~ a3@2 f3@3 d3@2 f3@3 ~ a3@2 ~ f3@3 g3@21 ~@28]/2",
D: "~ g4@2 f4@2 ~ e4@2 ~ f4@3 bb4@4 ~@4 d4 ~@2 f4@2 ~ eb4 ~@2 d4@3 eb4@3 bb4@4 ~@6 eb4@3", E: "d4@7 ~@41",
F: "[~@3 c4@3 bb3@4 c4@6 ~@3 bb3@2 ~@3 a3@3 g3@3 a3@8 ~@5 g3@2 f3@2 eb3@15 ~@34]/2",
G: "[~@3 f3 ~@2 g3 ~@2 a3 ~@2 bb3 ~@2 c4@2 ~ d4 ~@2 eb4 ~@2 f4@6 d4@2 a3@2 ~@2 f3@2 d3@2 ~ a3@3 f3@3 g3@16 ~@33]/2",
H: "~@4 f3 ~@2 bb3 ~@2 d4 ~@2 f4@10 ~@4 g3 ~@2 bb3 ~ d4 ~@2 g4@10 ~@3", I: "~@3 g3 ~@2 c4@2 eb4@2 ~@2 g4@10 ~@26",
J: "~@3 f3 ~@2 g3@3 a3@3 bb3@3 c4@3 d4@3 eb4@2 ~@2 f4@9 eb4@2 ~@2 db4@2 c4@3 bb3@2 f3@3", K: "bb3@7 ~@41",
})).s("gm_alto_sax").gain(0.48).pan(0.7)
// other · orchestral harp · "HARP"
const orchestral_harp = note("<~ A ~@6 B ~@7 C@2 ~@3 D ~ E F ~@15 C@2 ~@6 G H ~@7 I ~>".pickRestart({
A: "~ bb2@2 d3 f3@2 bb3@2 d4 ~ f4 ~ bb4 ~ d5 ~ f5 ~@31", B: "~@24 f3 a3 ~ c4 eb4 ~ f4 a4 ~ c5 eb5 ~ gb5 ~@11",
C: "[~@24 d6@2 ~@2 bb5@2 a5 g5 f5 ~ eb5 d5 c5 bb4 a4 ~ g4 f4 ~ d4@2 c4 ~ bb3@9 ~@40, ~@27 c6@2 ~@13 eb4@2 ~@52]/2",
D: "[ab3,db4,f4,ab4] ~@15", E: "~@34 f6 eb6 d6 c6 bb5 a5 [f5,g5] eb5 d5 [bb4,c5] a4 g4 ~@2", F: "f4 ~@7",
G: "~@24 eb7@2 c7@2 a6@2 f6 eb6 ~ c6 a5 ~ f5 eb5 ~ c5 a4 ~ f4 eb4 ~ c4 a3 ~", H: "bb3 ~@47",
I: "~@26 f6@2 d6 ~@2 f5@2 ~ bb4@2 ~ d4@2 bb3 f3 ~ d3 bb2 ~@4, ~@24 bb6@4 ~@2 bb5@3 d5@2 ~ f4@3 ~@9",
})).s("gm_orchestral_harp").gain(0.22).pan(0.6)
// drums · hihat
const hihat = s("hh").struct(`<
~ A@7 B A B A@5 C B@3 A B@3 C B D@4 A@3 E@2 D E@2 D E C A D A D F@2 G C A B@2 E B D A@3 C
>`.pickRestart({
A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~@2 x ~@2 x ~ x", C: "x", D: "x ~@2 x ~ x!2 ~@2 x ~@2", E: "x!4",
F: "x ~@2 x!4 ~@2 x!3", G: "x!12",
})).gain(0.16)
// … 10 more lines
More by Buddy Holly
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.