0:00/0:00
// That Day Is Done — McCartney
// 114 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 162 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/3)
// 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 2"
const piano = note(`<
~@15 A B C D@4 E@2 F G@2 H I J K@2 L M@2 N@2 O P Q@2 R@2 S T U@2 V@3 W X Y@2 Z AA@2 AB@2 AC@2 AD@2 AE ~@17 AF@2 AG@2
AH AI AJ@2 AK@2 AL T AM@2 AN ~@5 AO@3 AP AQ@2 AR AS AT@2 AU AV AW AX AY@2 AZ BA@2 BB@2 BC@3 BD@2 BE@6 M@2 N@2 O P BF
BG R@2 S BH BI BJ BK BL BM BN BO BP BQ BR BS BT ~@5
>`.pickRestart({
A: "~@22 f3 [f#3,d#4], ~@21 [e3,c4]@2 ~, ~@11 d4", B: "[g3,e4]@8 [f#3,d#4]@7 ~ [f3,d4]@7 ~",
C: "e3@4 ~@4 e3@3 ~, c4@11 ~, ~@8 g3@15 ~",
D: "[~@24 e3@8 ~ e3@7 ~@8 e3@7 ~ [e3,g3,c4,e4]@7 ~ [f3,a3]@8 e3@5 ~@3 e3@8 [e3,g3,c4]@7 ~, f1@23 ~ c2@20 ~@4 c2@16 ~@8 c2@21 ~@3, a3@8 c4@20 ~@4 c4@11 ~@5, ~@8 f3@14 ~@2 g3@31 ~@17 g3@16 ~@8, ~@40 e4@15 ~@41]/4", // C F C
E: "[f3@5 ~@3 f3@5 ~@3 f3@6 ~@2 e3@5 ~@11 g3@5 c3@2 ~, f1@23 ~ g3@13 ~@11, [a3,c4]@13 f2@11 c2@21 ~@3, ~ c4@2, ~@8 e3@3 ~]/2", // Am
F: "e4@6 ~@2 d4@8 c4@7 ~, [c2,g3]@11 ~, ~@8 c3 ~@3", // C5
G: "[~@8 d3@9 ~@7 [g3,b3,d4]@7 ~ [g3,b3,d4]@5 ~@3 [f#3,b3,d4]@7 ~, g1@34 ~@3 g1@8 ~@3, [g3,d4]@20 ~ g2@16 ~@11]/2", // G Bm G5
H: "~@8 d3@13 b2@2 ~, [b1,f3,b3]@23 ~", I: "[f3,g3,b3]@7 ~ g3@7 ~ [b2,g3,b3]@7 ~, b1@7 ~, ~@8 [f3,d4]@15 ~",
J: "g3@5 ~@3 g3@6 ~@2 [g3,e4]@8, c2@19 ~@5, [c4,e4]@5 ~@3", // C
K: "[~@16 c4@8 [e3,c4]@14 ~@2 [g3,c4]@5 c3@2 ~, f1@23 ~@25, [f3,a3,c4]@15 ~ g3@23 ~ e3@4 ~@4, ~@8 f2@16 c2@21 ~@3]/2", // C C5 F
L: "[g3,c4,e4]@7 ~ [g3,c4,e4]@8 [g3,b3,d4]@7 ~, c2@2 ~", // C G
M: "[[c4,e4,a4]@8 [c4,e4,a4]@8 ~@8 [c4,e4,a4]@8 ~@8 [c4,e4,a4]@5 a3@3, ~@2 [c4,e4,a4] ~ [c4,e4,a4] ~, ~@21 a3@16 a3@8 ~@3]/2", // Am
N: "[[b3,e4,g4]!2 ~ [b3,e4,g4] ~ [b3,e4,g4], ~@2 [b3,e4,g4] ~ [b3,e4,g4] ~, ~@21 e3@16 e3@10 ~]/2", // Em
O: "[f4,a4,c5]@8 [f4,a4,c5]@8 [f4,a4,c5]@5 c4@3, f3@23 ~, g#4 ~@23", // F
P: "[d#4,g4,a#4,c5]@4 [d#4,g4,a#4,c5]@3 ~ [c4,f4,a4,c5]@3 ~", // Cm7 F
Q: "[[e4,g4]@8 [e4,g4]@5 c4@3 g4@5 [c4,f4,a4]@3 [e4,g4]@5 ~@3 [c4,e4,g4]@8 [c4,e4,g4]@5 g3@3, c3@47 ~, [c4,c5]@13 ~@3 a#4@3 ~@5 d#4 ~@23]/2", // Em F Em C
R: "[[c4,e4,a4]@8 [c4,e4,a4]@8 ~@8 [c4,e4,a4]@8 ~@8 [c4,e4,a4]@7 ~, ~@2 [c4,e4,a4] ~ [c4,e4,a4] ~, ~@21 a3@16 a3@10 ~]/2", // Am
S: "[b3,d4,g4]@8 [b3,d4,g4]@3 ~@13", T: "[e3,g#3,e4]@23 ~",
U: "[[d4,f4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5], c3 c3, a#4@3 ~@5 [d4,f4,a#4,c5]@8 [d4,f4,a#4,c5]@8 ~@8 [f4,a4,c5]@8 ~@8, ~@13 c4@8 c4@16 c4@11]/2", // Dm7 F A# F
V: "[g3@3 d#4@2 e4@3 e4@3 g4@2 a4@3 [g4,a4]@3 ~@2 g4@3 ~@8 g4@5 g3@3 [c4,d#4]@3 ~@5 [c3,g3,c4]@16 ~@8, c3@5 ~@4, ~@13 e4@8 ~@3 [g3,e4]@14 ~@34, ~@16 c5@13 ~@11 [e4,g4]@24 ~@8]/3", // Gsus2 Cm C5 C Em
W: "[a3,c4]@16 ~@5 f3@3, f2, f3@7 ~, ~@2 [a3,c4]", X: "[c3,g3,c4]",
Y: "[[g3,b3,d4]@7 ~ [c4,e4]@7 ~ [d4,f4]@5 f3@3 ~@15 g3@8 ~, g2@23 ~ [c4,e4]@24, ~@8 g3@31 ~@9]/2", // G C Dm C
Z: "[f3,c4,f4]@2 [f3,c4,f4,a4], a3", // F5 F
AA: "[g3@16 ~@5 c4@3 [c4,e4,g4]@8 [c4,e4,g4]@8 c4@5 c4@3, [e4,g4]@3 ~@2 [e4,g4], c4@7 ~@9, ~@16 g3@27 ~@5]/2", // C Em
AB: "[b3@8 ~@16 b3@8 [g3,b3,d4,g4]@7 ~ [d3,a#3,f#4]@6 ~@2, [d4,g4]@2 ~, ~@8 b3@15 ~@25, ~@15 g3@17 ~@16]/2", // G Daug G5
AC: "[a3@3 ~ f4@2 ~@5 a3@2 ~@32 f3@3, g2@47 ~, [f3,f4]@6 [f3,a3]@2 a3@2 f4@3 ~ a3@2 f4@8 ~@24, ~@3 a3@3 ~ f4@2 f3@3 ~ [f3,f4]@2 f3@4 ~ f3@17 f3@8 ~@3, ~@17 a3@7 [a3,f4]@16 [a3,f4]@8]/2", // F Dm
AD: "[c4@8 ~@8 [e4,g4]@5 ~@3 f3@8 ~@5 f3@3 [f4,a4]@5 f3@3, [e4,g4]@16 ~@8 [f4,a4]@11 ~@13, ~@8 c4@13 c4@7 ~@4 c4@10 ~@6, ~@13 g3@10 ~@25]/2", // Em F Em F
AE: "[e4,g4]", // Em
AF: "[[c4,e4,a4]@8 [c4,e4,a4]@8 [c4,e4,a4]@5 ~@3 [c4,e4,a4]@8 [c4,e4,a4]@8 [c4,e4,a4]@5 e3@2 ~, ~@21 a3@25 ~@2]/2", // Am
AG: "[[b3,e4,g4]!2 ~ [b3,e4,g4]!3, ~@2 [b3,e4,g4] ~@3, ~@21 e3@26 ~]/2", // Em
AH: "[c4,c5]@8 [c4,f4,a4,c5]@8 [f3,c4,f4,a4,c5]@7 ~, f3@2 ~", // C F
AI: "[d#4,g4,a#4,c5]@8 [d#4,g4,a#4,c5]@7 ~ [f4,a4,c5]@7 ~", // Cm7 F
AJ: "[e4@8 e4@5 ~@3 c4@2 c4@2 ~ [f4,a4]@2 ~@2 e4@5 ~@15 c4@3, [g3,g4,c5]@13 ~@3 [g4,a#4]@4 ~ c4@8 ~@3 c4@12 ~@4, ~@21 g3@3 g4@6 ~@2 g4@15 ~, ~@24 d#4@3 ~@13 [g3,e4]@8]/2", // F C5 Gm C
AK: "[e4,a4,c5]!3", AL: "[g3,g4,b4,d5]@5 ~@3 [g3,b3,g4]@4 ~@12",
AM: "[[d4,f4,a#4,c5]@8 ~@8 [d4,f4,a#4,c5]@5 d4@2 ~ [f4,a4,c5]@8 ~@8 [f4,a4,c5]@7 ~, ~ [d4,f4,a#4,c5] ~@2 [f4,a4,c5] ~, ~@13 c4@8 c4@16 c4@10 ~]/2", // A# F A# F
AN: "[c4,e4,g4,c5]@23 ~", // C
AO: "[g#4 a4@7 [f4,a4,c5]@8 [f4,a4,c5]@8 ~@8 f4@5 ~@3 [a4,c5]@5 f4@2 ~ [a4,c5]@8 ~@8 [f#3,a3,d#4,c5,d#5]@5 [c4,d5]@3, c4@29 c4@16 c4@16 c4@8 ~@3, [f4,c5]@4 ~@8 [f4,a4,c5]@4 [a4,c5]@4 ~@8 a4@7 ~, ~@37 [a3,f4]@10 ~ [a3,d#4]@16 ~@8, ~@7 c5 ~]/3", // F Am F#dim Csus2 F5 F Am Dm …
AP: "~@16 [a4,c5]@5 c4@2 ~, [f#3,a3,d#4]@23 ~, c5!2 ~, ~@5 a4@11 ~@8, ~@13 c4@8 ~@3", // Am D#dim
AQ: "[[g4,c5]@8 ~@16 e4@5 c4@2 ~ d#5@4 ~ e5@2 ~ [c5,g5,a#5]@3 ~@2 [f5,a5] ~@2, [g3,e4]@24 g3@15 ~ [g3,e4]@4 ~@4, c4@13 c4@8 c4@8 ~@7 c4@2 ~@6 c4@4, ~@8 [g4,c5]@8 [g4,c5]@13 ~@3 [e4,c5,g5]@7 ~@6 c5@2 ~]/2", // C5 C7 F C C5 C
AR: "~ e5@3 ~ c5@2 ~ a4@4 ~ g4@2 ~ [c4,g4,c5]@5 e4@2 ~, [g3,e4]@2 ~, [c5,g5]@5 c4@6 ~@13, d#5 ~@11", // C5 C C5
AS: "[c4,c5]@5 g4@3 e4@4 ~ c4 ~@2 d#4@5 e4@2 ~, g3@13 ~@11, [g#4,a4]@3 ~@13 g4@8", // C Amaj7
AT: "[c4@7 ~ [c4,f4,a4]@8 c4@5 c4@3 [c4,f4,a4]@5 ~@8 c4@3 [f3,c4,f4,a4]@5 c4@2 ~, ~@4 a3@12 a3@7 ~, ~@8 f3@13 f3@19 ~@8, ~@16 [f4,a4]@8 ~@5 [f4,a4]@11 ~@8, ~@29 c4@8 ~@11]/2", // F
AU: "[c4,d#4,f#4,a4]@8 ~@8 c4@5 c4@2 ~, ~ [c4,d#4,f#4,a4] [d#4,f#4,a4], ~@13 a3@11", // Cdim D#dim
AV: "[d#4,f#4,a4]@8 ~@8 [a3,d#4,f#4,a4]@5 c4@2 ~, a3@2 ~, c4@13 c4@8 ~@3, ~ [d#4,f#4,a4] ~", // D#dim
AW: "[d4,g4] ~ [d4,g4], g3, b3@13 b3@11, ~ [d4,g4] ~", AX: "[d4,g4]!3, [g3,b3]", AY: "[g3,b3,d#4,g4]/2",
AZ: "e3@17 e3@7, [g3,c4]", BA: "[~ [f3,a3,c4]@15 [f3,a3,c4]@5 ~@4 [e3,g3,c4]@23, ~@21 c3@26 ~]/2",
BB: "[~@8 [f3,g3,c4,e4]@6 ~@2 [f3,g3,d4,f4]@5 f3@3 [c4,e4]@24, ~@21 g3@26 ~]/2", // C G7 C
BC: "[[f3,a3,c4]@22 ~@2 d#4 e4@24 ~@23, ~@22 c4@27 ~@23, ~@24 [g3,g4]@25 ~@23]/3", // F G
BD: "[~@32 f3@8 [f3,b3]@5 d4@2 ~, [d4,g4]@23 ~, b3@5 ~]/2", // Fdim G5
BE: "[b3@5 b3@3 b3@5 ~@8 b3@3 ~@16 [f3,d4]@5 ~@2 d#4 ~@16 g3@5 ~@19 a4@5 ~@2 d#4 [e4,g4]@6 ~@2 e4@5 e4@3 [e4,g4,c5]@8 [e4,g4,c5]@8 e4@5 e4@3 [e4,g4,c5]@5 ~@3, f3@13 f3@26 ~@33 [f3,f4,a4]@16 ~@7 c3@46 ~@3, [d4,f4]@8 [d4,f4]@8 [d4,f4]@8 f4@23 ~ e4@22 ~@34 [g4,c5]@8 ~@16 [g4,c5]@8 ~@8, ~@13 b3@8 ~@3 d4@16 ~@5 c4@10 ~ c4@13 c4@11 c4@12 ~ c4@7 ~@44, ~@32 [d3,b3]@15 [c3,g4]@24 ~@16 [f3,f4]@8 ~@49]/6", // Dm Em C F Dm C5 G C5 …
BF: "[e4,g4]@8 [e4,g4]@5 c4@3 g4@5 [c4,f4,a4]@3, [c4,c5]@13 ~@3 a#4@3 ~@5", // Em F C
BG: "[e4,g4]@5 ~@3 [c4,e4,g4]@8 [c4,e4,g4]@5 g3@3, d#4 ~@11", BH: "[b3,e4,g#4]@23 ~",
BI: "[f4,a#4,c5]@8 ~@8 [f4,a#4,c5]@5 d4@2 ~, d4@13 d4@8 ~@3, ~ [f4,a#4,c5] ~", BJ: "[f4,a4,c5]!3",
BK: "g4@5 c5@2 ~ d#5@2 e5@2 ~ g5@2 ~@2 e5@3 ~ c5@2 ~, e4@5 d#5 ~@2, ~@8 c5@6 ~ [c5,g5]@6 ~@3, ~@8 g4@3 ~", // C5
BL: "a4@5 g4 ~@2 [e4,g4,c5]@7 ~ [g#4,a4,c5]@5 e4@2 ~, ~@16 g4 ~@7", // C G#
BM: "[e4,a4,c5]@8 [e4,a4,c5]@8 e4@5 e4@3, ~@2 [a4,c5]", // Am
BN: "[e4,a4,c5]@8 e4@5 ~@8 e4@2 ~, ~ [a4,c5]!2, ~@13 e4@8 ~@3", BO: "[d4,g4]@6 ~@2 [d4,g4]@5 ~@11, b4@7 ~@5",
BP: "[e4,g#4]@23 ~", BQ: "[f4,a#4,c5]@8 ~@8 [f4,a#4,c5]@5 d4@3, d4@13 d4@8 ~@3, ~ [f4,a#4,c5] ~",
BR: "[f4,a4,c5]@8 [f4,a4,c5]@8 [f4,a4,c5]@7 ~", BS: "~@5 g4@3 c5@2 ~ d#5@2 e5@6 g5@2 a5 ~@2, ~@3 e4@4 ~@17",
BT: "[e5,a5,c6] ~@2, g5 ~@23", // Am
})).s("gm_piano").gain(0.33).pan(0.2)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@33 A@2 B@2 C D E@2 F@2 G H I@4 J K L@2 M N O@2 P@2 Q@2 M K J R S T U@2 M V W X Y Z AA AB J K W AC AD@2 AE@2 AF AG
AH@2 AI@2 AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA AT BB BC BD BE BF BG BH J BI M AA BJ K M BK P AB P BL
M BM M BN BO BP BQ BR BS BT BU BV BW@2 BX H M@3 BY BZ@2 BX H W@3 CA CB AQ CC@2 ~
>`.pickRestart({
A: "[a1@44 ~ a1@2 ~]/2", B: "[e1@35 ~@2 e1@3 ~@5 e1@2 ~]/2", C: "f1@7 ~ a1@7 ~ c2@7 ~", D: "d#2@16 d2@7 ~",
E: "[c2@31 ~ c2@3 ~@5 b1@3 ~@5]/2", F: "[a1@28 ~@4 b1@3 ~@5 b1@2 ~@6]/2", G: "g1@2 ~@2 g1 ~@3 g1@2 ~@14", H: "g#1",
I: "[c1@23 ~]/2", J: "c1", K: "f1", L: "[c1@20 e1@2 ~@2 g1@13 ~@3 g1@6 ~@2, ~@23 f#1@2 ~@23]/2", M: "c1@23 ~",
N: "f1@14 ~@2 f1@7 ~", O: "[c1@39 ~ f1@6 ~@2]/2", P: "g1@11 ~", Q: "[g1@45 d1@2 ~]/2", R: "g1@15 ~ g1@6 ~@2",
S: "c1@19 d1@2 e1@3", T: "f1@23 ~", U: "[c1@20 ~@4 g1@7 ~ g1@6 ~@2 g1@5 ~@3, ~@23 f1@2 ~@23]/2",
V: "f1@19 ~@2 f1@2 ~", W: "c1@11 ~", X: "c1@7 ~ e1@7 ~ f1@8", Y: "g1", Z: "g1@20 ~ d1@2 ~", AA: "g1@23 ~",
AB: "g1@21 d1@2 ~", AC: "c1@15 ~ b1@7 ~", AD: "[a1@14 ~ a1]/2", AE: "[e1@36 ~ e1@4 ~@4 e1@2 ~]/2",
AF: "f1@8 a1@7 ~ c2@7 ~", AG: "d#2@2 d2", AH: "[c2@27 ~@5 c2@6 ~@2 b1@6 ~@2]/2", AI: "[a1@8 b1 ~ b1 ~]/2",
AJ: "g1@2 ~@2 g1@3 ~ g1@3 ~@13", AK: "g#1@23 ~", AL: "c1@4 c2@3 ~ c2@4", AM: "c1@7 ~ c2@6 ~@2 c2@8",
AN: "c1@8 c2@7 ~ c2@6 ~@2", AO: "c1@8 e1@7 ~ g1@7 ~", AP: "d#1@23 ~", AQ: "d1", AR: "c1@7 ~ c1@7 ~ c1@6 ~@2",
AS: "c1@6 ~@2 c1@6 ~@2 c1@5 ~@3", AT: "f1@19 ~@2 f1 ~@2", AU: "f1@7 ~ f1@4", AV: "f#1@19 ~@2 f#1 ~@2",
AW: "f#1@15 ~ g1@8", AX: "c2@23 ~", AY: "c2@15 ~ g1@8", AZ: "e1 g1 a1", BA: "c2@4 g1@4 c2@3 ~",
BB: "f1@11 ~@2 f1@6 ~@2 f1@2 ~", BC: "f#1@20 ~ f#1 ~@2", BD: "f#1@11 ~@2 f#1@7 ~ f#1@2 ~", BE: "g1@20 ~ g1 ~@2",
BF: "g1@6 ~@2 g1@6 ~@2 g1@7 ~", BG: "g1@6 ~@2 g1@7 ~ g1@7 ~", BH: "g1@7 ~", BI: "f1@7 f1",
BJ: "c1@17 ~ d1@2 ~ e1@2 ~", BK: "c1@8 e1@7 ~ f1@8", BL: "g1@19 e1 ~ d1@2 ~", BM: "f1@20 ~ f1@2 ~",
BN: "c1@8 c2@7 ~ b1@7 ~", BO: "a1@23 ~", BP: "a1@18 ~@3 a1@2 ~", BQ: "e1", BR: "e1@10 ~@3 e1@6 ~@2 e1@2 ~",
BS: "f1@7 ~ a1@8 c2@7 ~", BT: "d#2@7 ~ d#2@8 d2@7 ~", BU: "c2@14 ~@2 c2@7 ~", BV: "c2@6 ~@2 c2@7 ~ b1@6 ~@2",
BW: "[a1@5 ~]/2", BX: "g1@2 ~@2 g1@2 ~@2 g1@3 ~@13", BY: "c1@8 c2@8 b1@7 ~", BZ: "[a1@31 ~ b1@4 ~@4 b1@5 ~@3]/2",
CA: "c1@8 e1@8 g1@7 ~", CB: "d#1@11 ~", CC: "c1/2",
})).s("gm_electric_bass_finger").gain(0.49)
// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note(`<
~ A ~ A ~ B ~ A ~ C ~ C ~ A ~ A ~ D E F@2 G E F@2 H@2 I@2 D E J@2 ~@18 K ~@15 L ~@94
>`.pickRestart({
A: "c2 ~@2", B: "c2@5 ~@7", C: "g1 ~@2", D: "c2@11 ~", E: "f1@11 ~", F: "[c2@23 ~]/2", G: "c2", H: "[g1@23 ~]/2",
I: "[b1@23 ~]/2", J: "[c2@20 b1@3 ~]/2", K: "~@21 f1@2 ~", L: "~@10 e1 ~",
})).s("gm_electric_bass_finger").gain(0.27)
// chords · reed organ
const reed_organ = note(`<
~ A B C D E F G H I J@2 K L M N O P Q R@3 S@3 T U@3 V W X@2 ~@16 A B C D E F G H I J@2 K L M N O P Q R@3 S@3 T U@3 V W
X@2 ~@36 A B C D E F G H I J@2 K L M Y ~@30
>`.pickRestart({
A: "c2@2 ~@2 g3 ~, e4@3 ~, g3@3 ~ c4@8", B: "[f1,f3,d4]@2 a3 ~ a3@2, ~ c4@2, ~@16 f4@5 ~@3",
C: "[c2,g3]@2 ~@2 g3 ~, e4@3 ~, ~ c4@2", D: "[a3,d4]@8 a3@7 ~ [a3,f4]@8, g1, f3@11 ~@13, ~ c4@2",
E: "[c2,g3]@7 ~@9 g3@6 ~@2, e4@5 ~, ~ c4@2", F: "[f1,f3,d4]@8 ~@8 f4@5 ~@3, a3@3 ~ [a3,c4]@8",
G: "[c2,g3] c4 g3, e4@23 ~", H: "[c2,c4]@4 e1@3 ~ [f1,c4]@4, e4@12 ~@4 e4@5 ~@3, ~ g3@2",
I: "[g1,b3]@8 f3@8 [g3,d4]@7 ~, d4@7 ~@5", // G G5
J: "[b3 g3 f#3 ~@2 f3, d4@15 ~ d4@15 ~ [b3,d4]@15 ~, g3@4 ~@20 [g1,f3]@11 ~@13]/2", // Bm G7
K: "~@19 g1@2 b1@3, [b3,d4]@15 ~ [b3,d4]@7 ~, ~ f3@2", L: "c2 e3 [g3,c4], [g3,c4]@13 ~@11",
M: "[f1,f3] ~ [f3,c4], c4@7 ~@5, ~@4 d3@7 ~", N: "~@8 [g3,c4]@3 ~, c4@5 ~@3, [c1,g3]@11 ~@13, ~@2 e3@3 ~",
O: "[g3,e4]@7 ~ [f#3,d#4]@7 ~ [f3,d4]@7 ~, g1@5 ~, d#4 ~@23", P: "c4 ~ c4, e4@15 ~ e4@5 ~@3, g3@4 ~@4 g3@15 ~",
Q: "d4@4 ~@4 f4@3 ~, a3, f3@5 ~, ~ c4@2",
R: "[g3@8 ~@24 g3@7 ~ [f3,a3]@8 g3@4 ~@12 [c4,e4]@8, e4@23 ~ e4@15 ~@9 e4@15 ~@9, ~@4 c4@8 c4@19 ~@5, ~@16 g3@11 ~@29 g3@15 ~]/3", // F C
S: "[f3@5 ~@3 f3@8 [f3,a3]@6 ~@2 g3@4 ~@4 g3@8 ~@16 g3@7 ~ [g3,c4,e4]@8, [a3,c4]@16 c4@17 ~@7 [c4,e4]@8 [c4,e4]@15 ~@9, ~@24 e4@15 ~@6 g3@8 ~@19]/3", // F C Am C
T: "g3@5 ~@11 b3@8, d4@2 ~, b3 ~, ~@7 g3@16 ~",
U: "[~@16 f#3@8 f3@7 ~@33 d4@8, d4@39 ~ d4@23 ~@9, g3@16 ~@16 f3@12 ~ f3@6 ~@5 f3@16, ~ b3@3 ~@2 b3@3]/3",
V: "g3 ~@3 [c4,e4]@2, [c4,e4]@7 ~@5, ~@7 g3@14 ~@3", W: "f3@5 ~@3 f3@7 ~ [f3,a3,c4]@7 ~, [a3,c4]@5 ~@3",
X: "[g3@5 ~@11 [c4,e4]@5 ~@3 [c4,e4]@7 ~ [c4,e4]@8 [b3,d4]@6 ~@2, c4 ~@2, ~@7 g3@12 ~@2 g3@25 ~@2]/2", // C Bm
Y: "[c1,g3]@11 ~@13, c4@5 ~@3", // C5
})).s("gm_reed_organ").gain(0.13).pan(0.4)
// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
~@16 A ~@4 B@2 C@2 D@5 E F@2 G@4 H@6 I J@5 ~@32 G@4 H@6 I K@5 L@2 M@8 ~ N O@2 P@2 Q@3 ~@17 G@4 H@6 I R@5 S@2 I R@5 T@4
~
>`.pickRestart({
A: "e5@8 d#5@7 ~ d5@8", B: "[~@2 f5, [e5,g5]@24 a5@23 ~, ~@13 c5@25 ~@10]/2", C: "[~ c6@2, g5, e5@15 ~]/2",
D: "[d5@22 f#5@2 ~@20 d5@3 ~ [e5,g5]@12, b5@97 ~@23, ~@2 f5@2 ~]/5", E: "f5", F: "[~@3 c6@2 ~, c5@5 ~]/2",
G: "[[c5,a5]@47 ~ [g5,b5]@48, e5@95 ~]/4", // F G
H: "[[f5,a5]@23 ~ [d#5,a#5]@24 ~@48 [c5,a5]@48, c6@2 ~, ~ g5@3 ~@2, ~@48 e5@95 ~]/6", I: "[b4,d5,g5]@5 ~@7",
J: "[[b4,e5]@21 ~@3 d5@24 a5@23 ~ [e5,g5]@41 ~@7, g#5@23 c6@89 ~@8, ~@23 f5@48 ~@49]/5", // E5 Em
K: "[[b4,e5]@21 ~@3 d5@24 a5@23 ~@25 c5@8 e5@8 g5@8, g#5@23 c6@89 ~@8, ~@23 f5@48 ~ g5@40 ~@8, ~@9 e5@4 ~@2]/5", // E5
L: "[a#5@23 [f5,a5]@25, c6, d#5@7 ~@17]/2", // F
M: "[[e5,g5]@38 ~@3 [e4,f4] [g4,a4] [b4,c5] [d5,e5] f5 [g5,a5,b5] ~@25 f5@19 ~@29 c6@72, ~@47 c6@65 ~@80, ~@3 a5@3 ~@2, ~@48 f#5@19 ~@29]/8", // Em Fmaj7 Gsus2 Cmaj7 Dsus2 G
N: "[e5,a#5], g5@3 ~", O: "[[f5,a5,c6]@15 ~]/2", P: "[a5,c6,d#6]/2", Q: "[[g5,b5,d6,g6]@49 ~@23]/3",
R: "[[b4,e5]@21 ~@3 [d5,a#5]@24 a5@23 ~ [e5,g5]@41 ~@7, g#5@23 c6@89 ~@8, ~@23 f5@48 ~@49]/5", S: "[c5,a5]/2",
T: "[[d#5,g5,a#5] [f5,a5] [e5,g5]@2, c6]/4", // D# F Em
})).s("gm_rock_organ").gain(0.33).pan(0.4)
// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@17 A@2 B@2 ~@9 C D@2 ~@12 E ~@47 E ~@68>".pickRestart({
A: "[~@13 g5@11 a5@24, c5]/2", B: "[~ c5, [e5,g5]@15 ~]/2", C: "a5", D: "[~@40 b5@5 ~@3, [e5,g5]@23 ~]/2", E: "a#5",
})).s("gm_rock_organ").gain(0.16).pan(0.4)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@34 A ~ B ~ C ~ D ~ E ~@39 F ~ B ~ G ~ H ~ E ~@5 I ~@17 J ~@19 F ~ B ~ C ~ D ~ F ~@7 F ~@5 K ~@5
>`.pickRestart({
A: "[e4,a4,c5] ~@5", B: "[g4,b4,e5] ~@5", C: "[f4,g4,c5] ~@5", D: "[e4,g4,c5] ~@7", E: "[c4,e4,a4] ~@5",
F: "[c4,e4,a4] ~@7", G: "[f4,g4,c5] ~@3", H: "[e4,g4,c5] ~@5", I: "~@2 g3", J: "~ b3 ~", K: "~ e3 g3",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.6)
// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@96 A B C D@2 ~@12 E@2 F@3 ~@38 G H I@3 ~>".pickRestart({
A: "c3 e3 ~", B: "d#3@3 ~@2 c3@3 d#3@16, ~@3 d3@4 ~@17", C: "d3", D: "[c3@9 ~@7]/2",
E: "[~@3 g3 ~ d4, ~ b2@3 ~@2, ~@8 d3@15 ~]/2",
F: "[~@24 g3@8 b3@7 ~ d#4@5 ~@3 e4@23 ~, ~@8 b2@22 ~@17 c4@24 ~, ~@16 d#3@16 ~@14 g3@25 ~]/3", G: "c3 ~@2",
H: "d#3@3 d3@2 c3@3 d#3@16", I: "[d3@22 ~@2 c4@47 ~, ~@11 e3@25, ~@23 g3@48 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.6)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@96 A@2 B C@4 D@2 E@2 F@2 G@2 D@2 H@4 ~@28 I@4 ~@4 J@3 K L M@3 ~>".pickRestart({
A: "[[c3,c4]@8 [e3,e4]@8 [g3,g4]@7 ~ d#3@24, ~@23 d#4@25]/2", B: "[d3,d4]@23 ~",
C: "[[c3,c4]@47 [c4,f4,a4]@47 ~@2]/4", D: "[[c4,d#4,f#4,a4]@47 ~]/2", E: "[[c4,e4,g4]@23 ~]/2",
F: "[[c4,e4,g4,a#4]@23 ~]/2", G: "[[c4,f4,a4]@23 ~]/2", H: "[d4@47 d#4@43 ~@6, [b3,g4]@91 ~@5]/4",
I: "[[a#3,d4]@23 ~@24 [g3,e4]@45 ~@4, f4@23 ~@25, ~@23 a3@21 ~@52, ~@6 c4@17 ~]/4", // A# C
J: "[~ a#3@21 ~@2 a3@22 ~@2 g3@20 ~@4, f4@47 e4@24 ~, d4@23 c4@45 ~@4]/3", K: "[c3,c4]@7 [e3,e4]@8 [g3,g4]@9",
L: "[d#3,d#4]", M: "[[d3,d4]@23 [c2,c3,c4]@49]/3",
})).s("gm_string_ensemble_2").gain(0.33).pan(0.7)
// other · trumpet
const trumpet = note("<~@65 A@2 B C D E B F G A@2 H I J K@2 ~@81>".pickRestart({
A: "[e4@4 d#4 d4]/2", B: "c4", C: "e3 d#3 d3", D: "c3", E: "c4@7 ~", F: "g3@8 a3@7 ~ a#3@8", G: "b3@23 ~",
H: "a3 a#3 b3", I: "[c4,c5]@2 b4", J: "a4", K: "[e4,g4]/2",
})).s("gm_trumpet").gain(0.33).pan(0.2)
// chords · trombone
const trombone = note("<~@65 A@2 B@3 C D@2 E@5 F G@3 ~@80>".pickRestart({
A: "[g3@3 ~ d#4 [f3,b3,d4], c4@13 ~@3, e4@2 ~, ~@8 f#3@5 ~@3]/2", // Bdim
B: "[[e3,g3]@5 ~ [e3,g3]@2 f#3@2 [d3,f3]@2 [c3,e3]@6, c4@11 ~, ~@32 d#3@5 ~@35]/3", C: "[a3,c4], f3@17 ~@7",
D: "[c3@23 ~ g3@8 [f3,a3]@8 [f#3,a#3]@8, g3@16 ~@8 c4@17 ~@7, e3@13 ~@10 e3@8 ~@17]/2", // F F#
E: "[d4@23 ~ e4@32 [f#3,d#4]@7 ~@9 a3@5 ~@3 a#3@8 b3@8 c4@16 b3@8, b3@73 ~@23 [e3,g3]@24, g3@56 ~@7 f3@34 ~@23, ~@64 d4@33 ~@23]/5", // D#m Em
F: "~ [f3,a3]@23", G: "[~ g3@49 ~@22, [c4,e4]@25 ~@11]/3",
})).s("gm_trombone").gain(0.33).pan(0.7)
// … 119 more lines
More by McCartney
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.