0:00/0:00
// Magneto and Titanium Man — McCartney
// 127 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 24-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): GTHARMONIC.
setcpm(127/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.
// bass · clavinet
const bass = note(`<
~@16 A B ~@10 A B ~@10 A B ~@15 C D E D E F G H I J@2 ~@8 A B ~@15 C D E D E ~@4 K@2 ~
>`.pickRestart({
A: "[g1,g2]@5 ~ [f#1,f#2]@5 ~ [f1,f2]@4 ~@2 [f#1,f#2]@4 ~@2", // G F# F F#
B: "[g1,g2]@5 ~ [f#1,f#2]@5 ~ [f1,f2]@4 ~@2 [f1,f2]@4 ~@2", // G F# F
C: "~@4 [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~", D: "[d1,d2]@3 [f#1,f#2]", E: "[g1,g2]",
F: "d2@11 ~ c2@11 ~", G: "g1@6 a1@5 ~ b1@6 c2@4 ~@2", H: "d2@11 ~ c2@10 ~@2", I: "g1@2 ~ a1@2 ~ b1@2 ~ c2@2 ~",
J: "[d2@23 ~]/2", K: "[d1,d2]/2",
})).s("gm_clavinet").gain(0.33).pan(0.4)
// bass · fretless bass · "FRETLESS"
const bass_2 = note(`<
~@4 A B C D C E F A G H I@2 J K L M N O P A@2 Q R@2 S T U V W X Y Z AA AB AC R S AD AE AF AG AH AI AJ AK@2 AL AM AN AO
AP AQ AI AR AS AT AS AT AU AV AW AX AY@2 AZ BA BB Z BC Q AC BD S BE BF BG AG BH BI BJ BK BL AL BM BN BO BP BQ BR AR BS
BT BU BV AU BW AW BW AY@2 ~
>`.pickRestart({
A: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 a1@2 b1@2", B: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@5 ~",
C: "d2@5 ~ d2@5 ~ d2@5 ~ d2@2 a1@2 b1@2", D: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ b1@2",
E: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@2 d2 ~ a1@2", F: "g1@4 ~@2 g1@3 ~@3 g1@3 ~@3 g1@4 b1 ~",
G: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 ~@2 b1@2", H: "d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 a1@2 d2 ~ a1@2",
I: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 b1@4 d2 ~", J: "g1@5 ~ f#1@6 f1@5 ~ f#1@5 ~", K: "g1@5 ~ f#1@6 f1@4 ~@2 f1@5 ~",
L: "d2@5 ~ a1@3 ~ b1@2 d2@5 ~ a1@3 ~ b1@2", M: "d2@5 ~ a1@3 ~ b1@2 d2@3 ~ d2@2 ~@2 a1@2 ~@2",
N: "d2@5 ~ a1@4 b1@2 d2@5 ~ a1@4 b1@2", O: "d2@5 ~ a1@4 b1@2 d2@4 ~@2 a1 ~ d2@2 a1@2",
P: "g1@4 ~@2 g1@3 ~@3 g1@3 ~@3 b1@3 ~ d2 ~", Q: "d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 a1 ~ d2 ~ a1@2",
R: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@4 d2 ~", S: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f#1@3 ~ f#1 ~",
T: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f1@4 ~@2", U: "d2@10 ~@2 d2@5 ~ d2@2 a1@2 b1 ~",
V: "d2@5 ~ d2@5 ~ d2@4 ~@2 a1@4 b1 ~", W: "d2@5 ~ d2@4 ~@2 d2@5 ~ d2 ~ a1@2 b1 ~",
X: "d2@5 ~ d2@5 ~ d2@4 ~@2 d2@4 a1 ~", Y: "g1@4 ~@2 g1@3 ~@3 g1@3 ~ b1@2 d2@3 ~ b1@2",
Z: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ b1 ~", AA: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 ~@2 d2 ~",
AB: "d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 d2@2 ~@2 d2 ~", AC: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@2 b1 ~ d2 ~",
AD: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f1@3 ~ f1 ~", AE: "d2@4 ~@2 d2@4 ~@2 d2@5 ~ d2@2 a1 ~ b1 ~",
AF: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@4 ~@2", AG: "a1@4 ~@2 a1@4 ~@2 a1@3 ~@3 a1@2 c#2 ~ e2 ~",
AH: "a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1@3 ~ g#1 ~", AI: "g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~",
AJ: "g1@2 ~@2 g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~", AK: "a1@2 ~@2 a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~",
AL: "g1@4 ~@2 b1@5 ~ d2@4 ~@2 f#2@4 ~@2", AM: "g2@4 ~@2 g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2@2",
AN: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~", AO: "a1@4 a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@2 ~@2 a1 ~",
AP: "g1@3 ~ g1 ~ b1@4 ~@2 d2@3 ~ d2 ~ f#2@4 ~@2", AQ: "g2@4 ~@2 f#2@5 ~ d2@2 ~@2 d2 ~ d2@2 ~@2 d2 ~",
AR: "g1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", AS: "d2@3 f#2", AT: "g2@7 ~", AU: "d2@4 ~@2 d2@5 ~ c2@5 ~ c2@4 ~@2",
AV: "g1@3 ~ g1 ~ a1@5 ~ b1@6 c2@5 ~", AW: "d2@4 ~@2 d2@5 ~ c2@5 ~ c2@5 ~", AX: "g1@3 ~ g1 ~ a1@6 b1@5 ~ c2@5 ~",
AY: "d2/2", AZ: "d2@5 ~ d2@5 ~ d2@5 ~ d2@2 a1 ~@3", BA: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ d2 ~",
BB: "g1@4 ~@2 g1@3 ~@3 g1@3 ~@3 g1 ~ b1 ~ d2 ~", BC: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 a1 ~ b1 ~",
BD: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@3 ~ g1 ~", BE: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~",
BF: "d2@5 ~ d2@4 ~@2 d2@5 ~ d2 ~ a1 ~ b1 ~", BG: "d2@5 ~ f#1@4 ~@2 g1@4 ~@2 g#1@4 ~@2",
BH: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~", BI: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~", BJ: "g1@4 ~@2 b1@4 ~@2 d2@4 ~@2 f#2@3 ~@3",
BK: "a1@4 ~@2 c#2@3 ~@3 e2@4 ~@2 c#2@3 ~ e2 ~", BL: "a1@4 ~@2 c#2@4 ~@2 e2@4 ~@2 c#2@3 ~ e2 ~",
BM: "b2@4 ~@2 f#2@4 ~@2 d2@5 ~ b1@3 ~@3", BN: "a1@4 ~@2 a1@4 ~@2 a1@5 ~ a1 ~ c#2 ~ e2 ~",
BO: "a1@5 ~ a1@4 ~@2 a1@4 ~@2 a1@4 ~@2", BP: "g1@5 ~ g1@4 ~@2 g1@4 ~@2 g1@4 ~@2", BQ: "g1@4 ~@2 g1@5 ~ g1@5 ~ g1@5 ~",
BR: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@3 ~@3", BS: "d2@18 f#1@5 ~", BT: "g1@7 ~", BU: "d2@3 f#1", BV: "g1@19 ~@5",
BW: "g1@5 ~ a1@5 ~ b1@5 ~ c2@5 ~",
})).s("gm_fretless_bass").gain(0.38)
// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
A B C D E@6 F G H G I J K L M@4 N G H G O P Q R M@4 N G H G S T U V M@2 W@2 X@2 Y@2 X@2 Z AA AB AC AD AE AF AG AH AI
AJ AK AJ AK AL@2 M AM F G H G O AN Q AO M@2 W@2 X AP Y@2 AQ AR Z AA AS AT AU AV AF AW AH AX AJ AK AJ AK AL@2 ~
>`.pickRestart({
A: "[d1,d2]@3 ~ [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~", // D
B: "[d1,d2]@4 [f#3,a3]@2 [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [a3,d4] ~, ~@4 d4 ~@17 f#3@2", // D F#m D D5
C: "[d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4]@2", // D
D: "[d1,d2]@4 [f#3,a3,d4]@2 [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~", // D
E: "~@4 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~", // D
F: "~@4 [g3,b3] ~@5 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@4 [g3,b3] ~, ~@2 d4 ~@8 d4", // G
G: "~@4 [a3,d4] ~@5 [a3,d4] ~@5 [a3,d4,f#4] ~@5 [a3,f#4]@2, ~@4 f#4@2 ~@4 f#4@2 ~@10 d4 ~", // D5 D
H: "~@4 [a3,d4] ~@5 [a3,d4,f#4]@2 ~@4 [d4,f#4]@2 ~@4 [a3,f#4]@2, ~@4 f#4@2 ~@10 a3 ~@5 d4 ~", // D5 D
I: "~@4 [g3,b3,d4] ~@5 [g3,e4]@2 ~@4 [g3,b3,d4,e4]@2 ~@4 [g3,b3,d4] ~, ~@4 e4@2 ~@4 [b3,d4] ~@11 e4@2", // G C Em7 G Bm
J: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,d4] ~, ~@4 d4 ~@5 d4 ~@5 d4 ~@5 f#4@2", // Gmaj7 G
K: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@5 ~ [a3,d4,f#4]@4 ~@2", // G D Ddim D
L: "[b3,d4,g4]@4 ~@2 [a3,d4,f#4]@5 ~ [g#3,d4,f4]@4 ~@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4]@2", // G D Ddim
M: "~@4 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~", // D
N: "~@4 [g3,b3,f#4] ~@5 [b3,d4,f#4]@2 ~@4 [b3,d4,f#4]@2 ~@4 [g3,b3,f#4] ~, ~@4 d4@2 ~@4 g3 ~@5 g3 ~@5 d4@2", // Gmaj7 Bm Gmaj7
O: "~@4 [g3,b3] ~@5 [g3,e4]@2 ~@4 [g3,b3,e4]@2 ~@4 [g3,b3] ~, ~@4 e4@2 ~@4 b3 ~@11 e4@2", // G C Em G
P: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [b3,d4,f#4]@2 ~@4 [b3,d4,a4] ~, ~@4 d4 ~@5 d4 ~@5 a4 ~@5 f#4@2", // Gmaj7 Bm Bm7
Q: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@4 f4 ~ [a3,d4,f#4]@4 f#4 ~", // G D Ddim D
R: "[b3,d4,g4]@4 g4@2 [a3,d4,f#4]@5 ~ [g#3,d4,f4]@4 f4@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4] ~", // G D Ddim
S: "~@4 [b3,d4,g4] ~@5 [e4,g4]@2 ~@4 [b3,e4,g4]@2 ~@4 [b3,d4,g4] ~, ~@4 e4@2 ~@4 [b3,d4] ~@5 d4 ~@5 e4@2", // G Em G Bm
T: "~@4 [b3,d4,f#4]@2 ~@4 [g3,b3,d4,f#4]@2 ~@4 [g3,b3,d4,f#4]@2 ~@4 [g3,b3,d4] ~, ~@4 g3 ~@17 f#4@2", // Bm Gmaj7 G
U: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@4 f4 ~ [a3,d4]@4 f#4 ~, ~@6 f#4 ~", // G D Ddim D5
V: "[b3,d4,g4]@4 g4@2 [a3,d4,f#4]@5 ~ [g#3,d4]@4 f4@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4]@2, ~@4 f4 ~@3", // G D G#dim Ddim
W: "~@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~", // A
X: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~", // Gmaj7
Y: "~@4 [c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~, ~@2 a3 ~@9", // C#m A
Z: "~@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [c#4,e4] ~, ~@11 a3", // A C#m
AA: "~@4 [a3,c#4,e4] ~@5 [a3,e4]@2 ~@4 [c#4,e4]@2 ~@4 [a3,c#4,e4] ~, ~@10 c#4 ~@5 a3 ~@7", // A A5 C#m A
AB: "~@4 [g3,b3,d4,f#4] ~@5 [b3,d4,f#4] ~@5 [g3,f#4]@2 ~@4 [g3,b3,f#4]@2, ~@10 g3@2 ~@4 [b3,d4] ~@5 d4 ~", // Gmaj7 Bm Gmaj7 Bm
AC: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~, ~@5 f#4 ~@2 f#4 ~@2 f#4", // Gmaj7 G
AD: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,f#4]@2 ~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~, ~@10 d4 ~@13", // Gmaj7
AE: "~@2 [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~, ~@12 b3 ~@11", // Em7
AF: "[a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4", // D
AG: "[b4,d5,f#5,b5]@3 ~@3 [g4,b4,d5,f#5]@3 ~@3 [g4,b4,d5,f#5]@3 ~@3 [b4,d5,f#5,b5]@2 ~@4", // Bm Gmaj7 Bm
AH: "[a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4", // D
AI: "[b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~", // Bm
AJ: "~@4 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [g3,c4,e4] ~@5 [g3,c4,e4] ~", // D C
AK: "~@4 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~", AL: "[[a3,d4,f#4]@23 ~]/2",
AM: "~@4 [a3,f#4]@2 ~@4 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4] ~, ~@4 d4 ~@17 f#4@2", // D D5
AN: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3] ~, ~@11 f#4", // Gmaj7 G
AO: "g4@4 g4@2 [a3,d4,f#4]@5 ~ f4@3 ~ f4@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4]@2, [b3,d4] ~ [g#3,d4] ~", // D Ddim Bm G#dim
AP: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~ f#3@4 [g3,b3,d4,f#4] ~", // Gmaj7
AQ: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~, ~@5 d4 ~@6", // Gmaj7
AR: "~@4 [g3,b3,f#4] ~@5 [g3,b3,f#4] ~@5 [g3,b3,f#4] ~@5 [g3,b3,d4,f#4] ~, ~@2 d4 ~@2 d4 ~@2 d4 ~@3", // Gmaj7
AS: "~@4 [g3,b3,d4,f#4] ~@5 [g3,d4]@2 ~@4 [g3,d4,f#4]@2 ~@4 [g3,b3,f#4]@2, ~@10 [b3,f#4] ~@5 b3 ~@5 d4 ~", // Gmaj7 G5 Gmaj7 B5
AT: "~@4 [g3,b3,f#4] ~@5 [d4,f#4]@2 ~@4 [g3,b3,d4] ~@5 [g3,b3,d4] ~, ~@4 d4@2 ~@4 [g3,b3] ~@5 f#4@2 ~@4 f#4@2", // Gmaj7 D G
AU: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4]@2 ~@4 [g3,b3,f#4] ~@5 [g3,b3,d4,f#4] ~, ~@8 d4 ~@3", // Gmaj7
AV: "~@4 [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@2 ~@2", // Em7
AW: "[b4,d5,f#5,b5]@3 ~@3 [g4,b4,d5,f#5]@2 ~@4 [g4,b4,d5,f#5]@2 ~@4 [b4,d5,f#5,b5]@2 ~@4", // Bm Gmaj7 Bm
AX: "[b4,d5,f#5,b5]@2 ~@4 [b4,d5,f#5,b5]@3 ~@3 [b4,d5,f#5,b5]@2 ~@4 [b4,d5,f#5,b5]@2 ~@4", // Bm
})).s("gm_epiano1").gain(0.33).pan(0.6)
// chords · flute
const flute = note(`<
~@9 A B@2 ~@4 C D@2 ~ E F ~@5 G C D@2 ~@2 A H@2 ~@3 I J K@2 ~@19 L@2 M@4 ~@7 N O P@2 ~@19 L@2 M@4 ~
>`.pickRestart({
A: "~@11 d4", B: "[e4@3 ~ e4@2 e4@4 d4 ~ e4@4 d4@2 b3@3 ~ f#4@8 ~@18]/2",
C: "[d4,b4]@6 [d4,a4]@6 [d4,g#4]@4 [d4,g#4]@2 [d4,a4]@3 ~ [d4,a4]@2", // G D5 Ddim D5
D: "[[d4,b4]@4 [d4,b4]@2 [d4,a4]@4 [d4,g#4]@5 ~ [d4,g#4]@2 [b3,f4]@4 [d4,g#4]@6 [d4,a4]@10 ~@10]/2", // G D5 Ddim Bdim Ddim D5
E: "~@11 [d4,f#4,a4]", F: "[d4,f#4,a4]@4 [d4,f#4,a4]@2 [d4,f#4,a4]@4 [e4,g4,b4]@8 [d4,f#4,a4]@3 ~@3",
G: "[d4,f#4,b4]@6 [d4,f#4,b4]@4 [d4,f#4,b4]@7 ~@7", H: "[e4@2 e4 e4@2 d4 e4@2 d4 b3@2 f#4@4 ~@9]/2",
I: "[d4,f#4,b4]@6 [d4,f#4,b4]@4 [d4,f#4,b4]@9 ~@5", J: "[d4,b4]@6 [d4,a4]@5 ~ [d4,g#4]@4 [d4,g#4]@2 [d4,a4]@5 ~",
K: "[[d4,b4]@6 [d4,a4]@6 [d4,g#4]@4 [d4,g#4]@2 [b3,f4]@4 [d4,g#4]@6 [d4,a4]@13 ~@7]/2", // G D5 Ddim Bdim Ddim D5
L: "[[d4,a4]@6 [d4,a4]@6 [c4,g4]@6 [c4,g4]@4 [b3,g4]@7 ~@19]/2", // D5 C5 Em
M: "[[d4,a4]@6 [d4,a4]@6 [c4,g4]@4 [c4,g4]@2 [c4,g4]@4 [b3,g4]@9 ~@5 f#4@4 e4@2 d4@4 [d4,a4]@50]/4", // D5 C5 Em D5
N: "[d4,f#4,b4]@3 [d4,f#4,b4]@2 [d4,f#4,b4]@4 ~@3", O: "[d4,b4]@3 [d4,a4]@3 [d4,g#4]@2 [d4,g#4] [d4,a4]@3",
P: "[[d4,b4]@6 [d4,a4]@6 [d4,g#4]@3 ~ [d4,g#4]@2 [b3,f4]@4 [d4,g#4]@6 [d4,a4]@16 ~@4]/2", // G D5 Ddim Bdim Ddim D5
})).s("gm_flute").gain(0.25).pan(0.4)
// bass · fretless bass · "FRETLESS"
const bass_3 = note(`<
~@4 A B C D C E F A G H I@2 J K L M N O P A@2 Q R@2 S T U V W X Y Z AA AB AC R S AD AE AF AG AH AI AJ AK AL AM AN AL
AO AP AQ AI AR AS AT AS AT AU AV AW AX AY@2 AZ BA BB Z BC BD AC BE S BF W BG AG BH BI BJ BK BL AM BM BN BO BP BQ BR AR
BS BT BU BV AU BW BX BW AY@2 ~
>`.pickRestart({
A: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 a2@2 b2@2", B: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@5 ~",
C: "d3@5 ~ d3@5 ~ d3@5 ~ d3@2 a2@2 b2@2", D: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@3 ~ b2@2",
E: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@2 d3 ~ a2@2", F: "g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 g2@4 b2 ~",
G: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 ~@2 b2 ~", H: "d3@4 ~@2 d3@4 ~@2 d3@4 ~@2 a2@2 d3 ~ a2@2",
I: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 b2@4 d3 ~", J: "g2@5 ~ f#2@6 f2@5 ~ f#2@5 ~", K: "g2@5 ~ f#2@6 f2@4 ~@2 f2@5 ~",
L: "d3@5 ~ a2@3 ~ b2@2 d3@5 ~ a2@3 ~ b2@2", M: "d3@5 ~ a2@3 ~ b2@2 d3@3 ~ d3@2 ~@2 a2@2 ~@2",
N: "d3@5 ~ a2@4 b2@2 d3@5 ~ a2@4 b2@2", O: "d3@5 ~ a2@4 b2@2 d3@4 ~@2 a2 ~ d3@2 a2@2",
P: "g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 b2@3 ~ d3 ~", Q: "d3@4 ~@2 d3@4 ~@2 d3@4 ~@2 a2 ~ d3 ~ a2@2",
R: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@4 d3 ~", S: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f#2@3 ~ f#2 ~",
T: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f2@4 ~@2", U: "d3@10 ~@2 d3@5 ~ d3@2 a2@2 b2 ~",
V: "d3@5 ~ d3@5 ~ d3@4 ~@2 a2@4 b2 ~", W: "d3@5 ~ d3@4 ~@2 d3@5 ~ d3 ~ a2 ~ b2 ~",
X: "d3@5 ~ d3@5 ~ d3@4 ~@2 d3@4 a2 ~", Y: "g2@4 ~@2 g2@3 ~@3 g2@3 ~ b2@2 d3@3 ~ b2@2",
Z: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@3 ~ b2 ~", AA: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 ~@2 d3 ~",
AB: "d3@4 ~@2 d3@4 ~@2 d3@4 ~@2 d3@2 ~@2 d3 ~", AC: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@2 b2 ~ d3 ~",
AD: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f2@3 ~ f2 ~", AE: "d3@4 ~@2 d3@4 ~@2 d3@5 ~ d3@2 a2 ~ b2 ~",
AF: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@4 ~@2", AG: "a2@4 ~@2 a2@4 ~@2 a2@3 ~@3 a2@2 c#3 ~ e3 ~",
AH: "a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2@3 ~ g#2 ~", AI: "g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~",
AJ: "g2@2 ~@2 g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~", AK: "a2@2 ~@2 a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~",
AL: "a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~", AM: "g2@4 ~@2 b2@5 ~ d3@4 ~@2 f#3@4 ~@2",
AN: "g3@4 ~@2 g3@3 ~ g3 ~ g3@2 ~@2 g3 ~ g3@3 ~ g3@2", AO: "a2@4 a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@2 ~@2 a2 ~",
AP: "g2@3 ~ g2 ~ b2@4 ~@2 d3@3 ~ d3 ~ f#3@4 ~@2", AQ: "g3@4 ~@2 f#3@5 ~ d3@2 ~@2 d3 ~ d3@2 ~@2 d3 ~",
AR: "g2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", AS: "d3@3 f#3", AT: "g3@7 ~", AU: "d3@4 ~@2 d3@5 ~ c3@5 ~ c3@4 ~@2",
AV: "g2@3 ~ g2 ~ a2@5 ~ b2@6 c3@5 ~", AW: "d3@4 ~@2 d3@5 ~ c3@4 ~@2 c3@5 ~", AX: "g2@3 ~ g2 ~ a2@6 b2@5 ~ c3@5 ~",
AY: "d3/2", AZ: "d3@5 ~ d3@5 ~ d3@5 ~ d3@2 a2 ~@3", BA: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@3 ~ d3 ~",
BB: "g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 g2 ~ b2 ~ d3 ~", BC: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 a2 ~ b2 ~",
BD: "d3@4 ~@2 d3@4 ~@2 d3@4 ~@2 a2 ~ d3 ~ a2 ~", BE: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@3 ~ g2 ~",
BF: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~", BG: "d3@5 ~ f#2@4 ~@2 g2@4 ~@2 g#2@4 ~@2",
BH: "a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~", BI: "g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~", BJ: "g2@4 ~@2 b2@4 ~@2 d3@4 ~@2 f#3@3 ~@3",
BK: "a2@4 ~@2 c#3@3 ~@3 e3@4 ~@2 c#3@3 ~ e3 ~", BL: "a2@4 ~@2 c#3@4 ~@2 e3@4 ~@2 c#3@3 ~ e3 ~",
BM: "b3@4 ~@2 f#3@4 ~@2 d3@5 ~ b2@3 ~@3", BN: "a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2 ~ c#3 ~ e3 ~",
BO: "a2@5 ~ a2@4 ~@2 a2@4 ~@2 a2@4 ~@2", BP: "g2@5 ~ g2@4 ~@2 g2@4 ~@2 g2@4 ~@2", BQ: "g2@4 ~@2 g2@5 ~ g2@5 ~ g2@5 ~",
BR: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@3 ~@3", BS: "d3@18 f#2@5 ~", BT: "g2@7 ~", BU: "d3@17 ~ f#2@6", BV: "g2@19 ~@5",
BW: "g2@5 ~ a2@5 ~ b2@5 ~ c3@5 ~", BX: "d3@4 ~@2 d3@5 ~ c3@5 ~ c3@5 ~",
})).s("gm_fretless_bass").gain(0.33).pan(0.8)
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
~@5 A@4 ~@4 B ~@4 C@2 ~@10 D@2 ~@10 E F G H I J G K I J G H I J I L M N@2 O P Q R@2 S@2 ~@12 G H I J G H I J G H I J I
L M N@2 O P Q R@2 T@2 ~
>`.pickRestart({
A: "[~@18 [f#4,b4] ~@3 [f#4,a4]@19 ~ [d4,g4]@2 ~@2 [d4,f#4]@18 ~@2 [b3,f4,g#4]@4 [c4,f#4,a4]@23 ~@3]/4", // B5 F#m G5 D Fdim F#dim
B: "~@10 [c4,d4,f#4,a4]@13 ~", C: "[~@18 f4@2 ~@2 d4@15 ~@11]/2", D: "[~@16 a3 ~ b3@3 ~ c4@17 ~@9]/2",
E: "~@16 g#4@2 a4@2 ~@2 c5 ~", F: "f4@2 f#4@2 d4@17 ~@3", G: "~@6 c4 c#4@3 e4 ~@7 c#4@4 e4 ~, ~@18 c4 ~@5",
H: "~@6 c#4@4 e4@2 ~@6 c4 c#4@3 e4 ~, ~@6 c4 ~@17", I: "~@6 b3@3 ~ d4 ~@7 a#3 b3@3 d4 ~, ~@6 a#3 ~@17",
J: "~@6 b3@4 d4 ~@7 a#3 b3@3 d4 ~, ~@6 a#3 ~@17", K: "~@3 c#4@2 e4 ~@6, ~@6 c4 ~@17",
L: "~@5 [b3,e4,g4]@2 ~ [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~ [b3,e4,g4]@2 ~@2 [b3,e4,g4]@2 ~@2", // Em
M: "[a3,d4,f#4]@21 ~ [c#3,g#3]@2", N: "[[d3,a3]@19 ~@3 f4@2 ~ f#4@18 ~@3 [c#3,g#3]@2, ~@22 [a3,d4]@21 ~@5]/2",
O: "[d3,a3]@7 ~", P: "[a3,d4,f#4]@12 [g3,c4,e4]@11 ~", Q: "[g3,b3,d4]@6 [b3,d4,g4]@5 ~",
R: "[[a3,d4,f#4]@5 ~ [a3,d4,f#4]@6 [g3,c4,e4]@9 ~ [g3,b3,d4]@25 ~]/2", S: "[~ f#4@44 ~@3, [a3,d4]@15 ~]/2",
T: "[[a3,d4,f#4]@47 ~]/2", // D
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.7)
// other · guitar harmonics · "GTHARMONIC" · D5
const guitar_harmonics = note("<~@63 [~@22 g3 ~] ~ [~@22 g3 ~] [[a3,d4] ~@23] ~@38>")
.s("gm_guitar_harmonics").gain(0.33).pan(0.4)
// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@63 A@4 ~ B@2 C D E@3 ~@3 F ~@26>".pickRestart({
// … 56 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.