0:00/0:00
// When You Were Mine — Prince
// 147 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 6 "BRASS 2" named as a brass, played on brass section (its pad poly patch is not one)
// note: duplicate parts dropped: ch 12 "0+> BACKING VOX" choir aahs (copy of ch 11 "0+> BACKING VOX" choir aahs)
// note: Full arrangement: all 120 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(147/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 · synth bass 1 · "BASS"
const bass = note(`<
~ A@2 B@2 C@4 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P Q R P@2 S T U P V W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC@2 AD S
AE@2 AF@2 AG@2 AH@2 AI@2 R AJ AK AL R P AJ AM AN AO AP AQ AR AS AP AT ~@8 P AU@2 AV AJ AW AX AY AJ AZ BA@2 BB@2 BC@2
BD@2 BE@2 BF@2 BG@2 BH@2 BI
>`.pickRestart({
A: "[~ e1@10 ~ e1@3 f#1@3 a1@3 b1@27]/2", B: "[a1@10 ~@2 a1@3 b1@2 a1@3 ~ b1@12 a1@3 c#2@6 b1@3 a1@3]/2",
C: "[e1@9 ~@5 f#1@4 a1@3 b1@27 a1@10 ~ a1@3 ~ b1@3 a1@3 b1@12 ~@3 c#2@6 b1@3 a1@3, ~@12 e1@4 ~@65 a1@5 ~@10]/4",
D: "[e1@4 ~@2 e1@4 ~@2 e1@3 f#1@3 a1@2 ~ b1@26 ~]/2",
E: "[a1@10 ~@2 a1@2 ~ b1@3 a1@2 ~ b1@13 a1@2 ~@6 b1@6, ~@37 c#2@7 ~@4]/2",
F: "[e1@9 ~@3 e1@3 f#1@3 a1@2 ~ b1@26 ~]/2",
G: "[a1@10 ~@2 a1@2 ~ b1@2 ~ a1@2 ~ b1@11 ~ b1@5 ~ b1@2 ~ b1@2 ~ b1@3]/2",
H: "[e1@5 ~ e1@3 ~@3 e1@3 f#1@2 ~ a1@2 ~ b1@26 ~]/2",
I: "[a1@11 ~ a1@2 ~ b1@2 ~ a1@2 ~ b1@12 a1@2 ~ c#2@6 b1@3 a1@3]/2",
J: "[~ d1@2 ~@3 e1@4 ~@2 e1@3 f#1@2 ~ a1@2 ~ b1@26 ~, e1@5 ~@43]/2",
K: "[a1@11 ~@2 a1@2 b1@2 ~ a1@2 ~ b1@12 a1@3 ~@6 b1@3 a1@3, ~@37 c#2@7 ~@4]/2",
L: "[e1@5 ~ e1@5 ~ e1@3 f#1@3 a1@2 ~ b1@27]/2", M: "[a1@10 ~@2 a1@2 b1@2 ~@2 a1@2 b1@13 a1@3 c#2@6 b1@2 a1@4]/2",
N: "[~ e1@4 ~ e1@4 ~@2 e1@3 f#1@2 ~ a1@3 b1@26 ~]/2", O: "[a1@12 ~ a1@2 ~ b1@2 a1@2 ~ b1@12 a1@3 c#2@6 b1@5 ~]/2",
P: "a1@11 ~", Q: "b1@23 ~", R: "e1", S: "b1", T: "e1@23 ~", U: "a1@5 ~", V: "b1@11 ~",
W: "[e1@5 ~ e1@5 ~ e1@3 f#1@3 a1@2 ~ b1@26 ~]/2", X: "[a1@12 a1@2 ~ b1@3 a1@2 ~ b1@12 a1@3 ~ c#2@5 b1@6]/2",
Y: "[e1@10 ~@2 e1@3 f#1@3 a1@2 ~ b1@26 ~]/2", Z: "[a1@11 ~ a1@2 ~ b1@2 ~ a1@2 ~ b1@13 a1@3 c#2@5 b1@3 a1@3]/2",
AA: "[e1@5 ~@7 e1@3 f#1@3 a1@2 ~ b1@26 ~]/2", AB: "[a1@11 ~ a1@3 b1@3 a1@3 b1@12 a1@3 c#2@6 b1@6]/2",
AC: "[e1@6 e1@4 ~@2 e1@3 f#1@3 a1@2 ~ b1@26 ~]/2", AD: "a1@23 ~", AE: "[~ e1@5 ~ e1@4 ~ e1@3 f#1@3 a1@2 ~ b1@26 ~]/2",
AF: "[a1@11 ~ a1@2 ~ b1@2 ~ a1@2 ~ b1@12 a1@2 ~ c#2@6 b1@2 a1@3 ~]/2", AG: "[e1@11 ~ e1@3 f#1@3 a1@3 b1@26 ~]/2",
AH: "[a1@11 ~ a1@2 ~ b1@2 ~ a1@3 b1@12 a1@3 ~ c#2@5 b1@6]/2", AI: "[~ b1, a1@13 ~@11]/2", AJ: "~ a1@22 ~",
AK: "~ a1@23", AL: "~ b1@23", AM: "b1@19 ~@5", AN: "c#2 ~@5 c#2 ~@2 c#2@2 ~@7 c#2 ~@2 b1 ~@2",
AO: "g#1@3 ~@3 g#1 ~@2 g#1@2 ~@7 g#1@2 ~@4", AP: "a1 ~@5 a1 ~@2 a1 ~@8 a1 ~@5", AQ: "~ a1 ~@5 a1 ~ a1 ~@8 a1 ~@5",
AR: "c#2 ~@5 c#2 ~@2 c#2 ~@8 c#2 ~@2 b1@2 ~", AS: "~ g#1@2 ~@3 g#1 ~@3 g#1@2 ~@6 g#1@2 ~@4", AT: "a1 ~@23",
AU: "[b1@23 e1@24 ~]/2", AV: "~ a1@20 ~@3", AW: "b1@7 ~", AX: "e1@11 ~", AY: "a1@7 ~", AZ: "b1@5 ~",
BA: "[e1@5 ~ e1@5 ~ e1@3 f#1@3 a1@2 ~ b1@5 ~ b1@5 ~ b1@2 ~ b1@5 ~ b1@5 ~]/2",
BB: "[a1@10 ~@2 a1@2 ~ b1@2 ~ a1 ~@2 b1@6 a1@2 ~ b1@2 ~ a1@2 ~ c#2@5 ~ b1@5 ~]/2",
BC: "[e1@5 ~ e1@4 ~@2 e1@3 f#1@3 a1@2 ~ b1@5 ~ b1@5 ~ b1@2 ~ b1@5 ~ b1@5 ~]/2",
BD: "[a1@5 ~ a1@5 ~ a1@2 ~ b1@2 ~ a1@2 ~ b1@6 a1@2 ~ b1@3 a1@3 c#2@6 b1@6]/2",
BE: "[e1@4 ~@2 e1@4 ~@2 e1@3 f#1@2 ~ a1@2 ~ b1@5 ~ b1@4 ~@2 b1 ~@2 b1@5 ~ b1@5 ~]/2",
BF: "[a1@5 ~ a1@5 ~ a1@2 ~ b1@2 ~ a1@2 ~ b1@6 ~ a1@2 ~ b1@2 a1@2 ~@2 c#2@6 b1@5]/2",
BG: "[~ e1@5 ~ e1@4 ~@2 e1@3 f#1@3 a1@2 ~ b1@5 ~ b1@4 ~ b1 ~@2 b1@5 ~ b1@4 ~@2]/2",
BH: "[a1@5 ~ a1@4 ~@3 a1@2 b1@2 ~@2 a1@2 b1@5 ~ a1@2 ~ b1@3 a1@2 ~ c#2@5 ~ b1@6]/2", BI: "e1 ~@11",
})).s("gm_synth_bass_1").gain(0.16)
// other · brass section
const brass_section = note("<~ A@4 B@4 C ~@33 D@4 E@4 C ~@51 F@4 G@4 H@4 I@4 C>".pickRestart({
A: "[~@12 b4@3 c#5@3 e5@3 f#5@40 e5@2 f#5@2 ~ e5@2 f#5@13 e5@3 g#5@6 f#5@3 e5@2 ~]/4",
B: "[e5@12 b4@3 c#5@2 e5@3 f#5@39 e5@3 f#5@3 e5@3 f#5@13 e5@3 g#5@6 ~@2 e5@2 ~@2, ~@45 f#5@2 ~]/4", C: "e5 ~@7",
D: "[~@11 b4@4 ~@2 e5@2 ~ f#5@40 e5@3 f#5@3 e5@2 f#5@13 e5@3 g#5@7 f#5@3 e5 ~, ~@15 c#5@4 ~@77]/4",
E: "[e5@12 b4@3 c#5@3 e5@2 ~ f#5@39 e5@3 f#5@3 e5@2 f#5@13 e5@2 g#5@7 f#5@3 e5@2 ~]/4",
F: "[~@15 c#5@3 e5@2 f#5@40 e5@3 f#5@3 e5@3 f#5@12 e5@3 g#5@6 f#5@3 e5@2 ~, ~@12 b4@5 ~@79]/4",
G: "[e5@12 b4@3 c#5@3 e5@2 f#5@40 e5@2 ~ f#5@3 e5@2 ~ f#5@12 e5@3 g#5@6 f#5@2 e5@2 ~@2]/4",
H: "[e5@12 b4@3 c#5@2 e5@2 ~ f#5@40 e5@3 f#5@3 ~ e5@2 f#5@12 e5@3 g#5@6 f#5@3 e5@2 ~]/4",
I: "[e5@12 b4@3 c#5@3 e5@2 ~ f#5@39 e5@3 f#5@2 ~ e5@2 f#5@13 e5@3 g#5@5 f#5@3 ~ e5@2 ~]/4",
})).s("gm_brass_section").gain(0.16).pan(0)
// chords · electric guitar clean · "GUITARS 1"
const electric_guitar_clean = note(`<
~ A B C@2 D E@3 F@2 G@2 H@2 I@4 J@2 K L M@2 N O@3 P@2 Q@2 R S T R U V W R U V X Y Z@2 AA AB AC@2 AD@2 AE@2 AF@2 AG@2
AH@2 AI@2 AJ@2 AK@2 AL S T U R S W R@2 AM AN AO AP AQ AR AS AQ AT AU@2 AV@2 AW@2 AX@2 U S W R AL AY W AZ BA BB A B C@2
D E@3 A B C@2 D BC@4
>`.pickRestart({
A: "[e2,b2]@10 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~@2 [b2,f#3]@3", // E5 F#5 A5 B5
B: "~@2 [b2,f#3]@4 ~@2 [b2,f#3] ~@3 [b2,f#3]@4 ~@2 [b2,f#3]@5 ~", // B5
C: "[[a2,e3]@12 ~ [a2,e3]@2 ~ [a2,e3] ~ [a2,e3]@2 ~ [b2,f#3]@10 ~@2 [b2,f#3] ~@2 [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 C#5 B5
D: "[e2,b2]@10 ~@2 [e2,b2]@3 [f#2,c#3]@2 [a2,e3]@2 ~ [b2,f#3]@4", // E5 F#5 A5 B5
E: "[~@2 [b2,f#3]@5 ~@2 [b2,f#3] ~@2 [b2,f#3]@4 ~ [b2,f#3]@5 ~ [a2,e3]@11 ~ [a2,e3]@2 ~ [a2,e3]@5 ~ [b2,f#3]@11 ~ [b2,f#3]@2 ~ [c#3,g#3]@6 [b2,f#3]@7]/3", // B5 A5 B5 C#5 B5
F: "[[e2,b2]@5 ~ [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@11 ~ [b2,f#3]@5 ~ [b2,f#3]@2 ~ [b2,f#3]@2 ~ [b2,f#3]@2 ~]/2", // E5 F#5 A5 B5
G: "[[a2,e3]@10 ~@2 [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3] ~@2 [b2,f#3]@11 ~ [b2,f#3] ~@2 [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 C#5 B5
H: "[[e2,b2]@9 ~@3 [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@4 ~@2 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
I: "[[a2,e3]@11 ~ [a2,e3]@2 ~ [a2,e3]@5 [b2,f#3]@11 ~ [b2,f#3]@5 ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3]@2 [e2,b2]@5 ~@2 [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@3 ~@3 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/4", // A5 B5 E5 F#5 A5 B5
J: "[[a2,e3]@11 ~ [a2,e3]@2 ~ [b2,f#3]@2 ~ [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@3 [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 A5 B5 A5 C#5 B5
K: "[e2,b2]@4 ~@2 [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@3", // E5 F#5 A5 B5
L: "~@3 [b2,f#3]@5 ~ [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~", // B5
M: "[[a2,e3]@10 ~@2 [a2,e3]@2 ~ [b2,f#3]@2 ~ [a2,e3]@2 ~ [b2,f#3]@11 ~ [b2,f#3] ~@2 [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 A5 B5 C#5 B5
N: "[e2,b2]@5 ~ [e2,b2]@5 [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@4", // E5 F#5 A5 B5
O: "[~@3 [b2,f#3]@5 [b2,f#3]@2 ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 [a2,e3]@11 ~@2 [a2,e3]@2 ~ [b2,f#3]@2 ~ [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@3 [c#3,g#3]@6 [b2,f#3]@6]/3", // B5 A5 B5 A5 B5 A5 C#5 B5
P: "[[e2,b2]@10 ~@2 [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~ [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
Q: "[[a2,e3]@11 ~ [a2,e3]@2 ~ [b2,f#3]@2 ~ [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@3 ~ [c#3,g#3]@5 [b2,f#3]@6]/2", // A5 B5 A5 B5 A5 C#5 B5
R: "[a2,e3]@11 ~", S: "[b2,f#3]", T: "[e2,b2]", U: "[a2,e3]@23 ~", V: "[b2,f#3]@23 ~", W: "[e2,b2]@23 ~",
X: "[e2,b2]@5 ~ [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@2 [a2,e3]@2 ~ [b2,f#3]@4", // E5 F#5 A5 B5
Y: "~@2 [b2,f#3]@5 ~@2 [b2,f#3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~", // B5
Z: "[[a2,e3]@11 ~ [a2,e3]@2 ~ [b2,f#3]@2 ~@4 [b2,f#3]@11 ~ [b2,f#3] ~@2 [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 C#5 B5
AA: "~ [e2,b2]@5 [e2,b2]@4 ~@2 [e2,b2]@3 [f#2,c#3]@2 [a2,e3]@2 ~ [b2,f#3]@4", // E5 F#5 A5 B5
AB: "~@3 [b2,f#3]@5 ~ [b2,f#3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~", // B5
AC: "[[a2,e3]@12 [a2,e3]@4 ~@2 [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@2 ~ [c#3,g#3]@6 [b2,f#3]@5 ~]/2", // A5 B5 A5 C#5 B5
AD: "[[e2,b2]@5 ~ [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@4 ~@2 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AE: "[[a2,e3]@11 ~ [a2,e3]@5 ~ [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@2 ~ [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 A5 C#5 B5
AF: "[[e2,b2]@5 ~ [e2,b2]@4 ~@2 [e2,b2]@3 [f#2,c#3]@2 [a2,e3]@2 ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~ [b2,f#3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AG: "[[a2,e3]@10 ~@2 [a2,e3]@5 ~ [a2,e3]@2 ~ [b2,f#3]@11 ~ [b2,f#3]@6 ~ [b2,f#3] ~ [b2,f#3] ~@2 [b2,f#3]@3]/2", // A5 B5
AH: "[~ [e2,b2]@5 ~ [e2,b2]@4 ~ [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~ [b2,f#3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AI: "[[a2,e3]@11 ~ [a2,e3]@4 ~@2 [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@2 ~ [c#3,g#3]@6 [b2,f#3]@6]/2", // A5 B5 A5 C#5 B5
AJ: "[[e2,b2]@4 ~@2 [e2,b2]@5 ~ [e2,b2]@3 [f#2,c#3]@2 ~ [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@4 ~@2 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AK: "[[a2,e3]@11 ~@2 [a2,e3]@4 ~ [a2,e3]@2 ~ [b2,f#3]@12 [a2,e3]@2 ~ [c#3,g#3]@6 [b2,f#3]@6]/2", AL: "~ [a2,e3]@23",
AM: "[b2,f#3]@11 ~", AN: "[c#3,g#3]@2 ~@4 g#3 ~@2 g#3 ~@8 g#3 ~@5", AO: "[g#2,d#3] ~@5 d#3 ~@2 d#3 ~@8 d#3 ~@5",
AP: "[a2,e3] ~@5 e3 ~@2 e3 ~@8 e3 ~@5", AQ: "[a2,e3]@2 ~@4 e3 ~@2 e3 ~@8 e3 ~@5",
AR: "[c#3,g#3] ~@5 g#3 ~@2 g#3 ~@8 g#3 ~@5", AS: "[g#2,d#3]@2 ~@5 d#3 ~ d#3 ~@8 d#3 ~@5",
AT: "[a2,e3] a2 e3 [a2,e3] ~ [a2,e3]!2 ~@17", // A5
AU: "[[e2,b2]@5 ~ [e2,b2]@4 ~@2 [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 ~ [b2,f#3]@4 ~@2 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AV: "[[a2,e3]@5 ~@2 [a2,e3]@5 [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~@2 [b2,f#3]@5 [b2,f#3]@2 ~@2 [b2,f#3] ~ [b2,f#3] ~@3 [c#3,g#3]@5 [c#3,g#3] [b2,f#3]@5]/2", // A5 B5 C#5 B5
AW: "[~ [e2,b2]@5 ~ [e2,b2]@4 ~@2 [e2,b2]@3 [f#2,c#3]@3 [a2,e3]@2 ~ [b2,f#3]@5 [b2,f#3]@4 ~@2 [b2,f#3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@5 ~]/2", // E5 F#5 A5 B5
AX: "[~ [a2,e3]@5 ~ [a2,e3]@5 ~ [a2,e3]@2 ~ [a2,e3] ~ [a2,e3] ~@2 [b2,f#3]@5 ~ [b2,f#3]@2 ~ [b2,f#3] ~@2 [b2,f#3] ~@2 [c#3,g#3]@5 ~ [b2,f#3]@5 ~]/2", // A5 B5 C#5 B5
AY: "~ [b2,f#3]@23", AZ: "[a2,e3]@7 ~", BA: "[a2,e3]", BB: "[b2,f#3]@5 ~",
BC: "[~@2 [b2,f#3]@5 ~@2 [b2,f#3] ~@2 [b2,f#3]@4 ~ [b2,f#3]@5 ~ [a2,e3]@11 ~ [a2,e3]@2 ~ [a2,e3]@5 ~ [b2,f#3]@11 ~ [b2,f#3]@2 ~ [c#3,g#3]@6 [b2,f#3]@6 ~ b2 ~@23, ~@71 e2@2 ~@23]/4", // B5 A5 B5 C#5 B5
})).s("gm_electric_guitar_clean").gain(0.7).pan(0.6)
// other · electric guitar clean · "LEAD GTR"
const electric_guitar_clean_2 = note(`<
~ A@2 B@2 C@4 D ~@23 E F G H I F J H K L A@2 B@2 C@4 D ~@15 E F G H I F J H K L M N O@2 M N O P ~@8 E F G H I F J H K
L Q@4 R@4 S@4 T@4 U
>`.pickRestart({
A: "[~@11 b3@3 c#4@3 e4@2 ~ f#4@28]/2", B: "[e4@11 ~ e4@2 ~ f#4@2 ~ e4@2 ~ f#4@11 e4@3 ~ g#4@6 f#4@3 e4@3]/2",
C: "[b3@4 ~@2 b3@5 ~ b3@3 c#4@2 e4@3 ~ f#4@39 e4@2 f#4@3 ~ e4@2 f#4@13 e4@3 g#4@5 f#4@3 ~ e4@2 ~]/4", D: "e4 ~@5",
E: "[a2,e3]@11 ~", F: "[b2,f#3]@5 ~", G: "[e2,b2]@7 ~", H: "[a2,e3]@7 ~", I: "~ a2@22 ~, e3@11 ~", J: "[e2,b2]@11 ~",
K: "[a2,e3]@23 ~", L: "[b2,f#3]@11 ~", M: "~@6 g#3 ~@2 g#3 ~@8 g#3 ~@5", N: "~@6 d#3 ~@2 d#3 ~@8 d#3 ~@5",
O: "~@6 e3 ~@2 e3 ~@8 e3 ~@5", P: "e3!2 ~ e3 ~ [d3,e3] e3 ~@17",
Q: "[~@12 b3@2 c#4@3 ~ e4@2 ~ f#4@38 ~ e4@2 ~ f#4 ~@2 e4@2 ~ f#4@11 ~ e4@2 ~ g#4@6 f#4@2 ~ e4@2 ~]/4",
R: "[e4@11 b3@3 c#4@3 e4@2 ~ f#4@39 ~ e4@2 ~ f#4 ~ e4@2 ~ f#4@12 ~ e4@2 ~ g#4@5 f#4@2 ~ e4@2 ~@2]/4",
S: "[e4@11 ~ b3@3 c#4@2 e4@2 ~ f#4@40 e4@2 ~@2 f#4@2 e4@2 ~ f#4@12 e4@2 ~ g#4@6 f#4@2 ~ e4@2 ~]/4",
T: "[e4@11 ~ b3@3 c#4@2 ~ e4@2 ~ f#4@39 e4@2 ~ f#4@2 e4@2 ~@2 f#4@12 e4@2 ~ g#4@6 f#4@2 e4@2 ~@2]/4", U: "e4 ~@11",
})).s("gm_electric_guitar_clean").gain(0.5).pan(1)
// other · electric guitar clean · "LEAD GTR"
const electric_guitar_clean_3 = note(`<
~ A@2 B@2 C@4 D ~@23 E@8 F@2 A@2 B@2 C@4 D ~@15 E@8 F@2 G H I@2 J H I K ~@8 E@8 F@2 ~@8 L@8 ~
>`.pickRestart({
A: "[~@11 b3@3 c#4@3 e4@2 ~ f#4@28]/2", B: "[e4@11 ~ e4@2 ~ f#4@2 ~ e4@2 ~ f#4@11 e4@3 ~ g#4@6 f#4@3 e4@3]/2",
C: "[b3@4 ~@2 b3@5 ~ b3@3 c#4@2 e4@3 ~ f#4@39 e4@2 f#4@3 ~ e4@2 f#4@13 e4@3 g#4@5 f#4@3 ~ e4@2 ~]/4", D: "e4 ~@5",
E: "[~@6 a3@3 c#4@8 a3@3 ~ e3@9 b3@3 d#4@9 b3@3 f#3@8 ~ g#3@3 b3@9 e3@12 a3@3 c#4@9 a3@3 e3@10 a3@2 c#4@9 a3@11 ~@2 b3@2 d#4@9 b3@3 f#3@9 g#3@3 ~ b3@9 ~@5 b3@23 ~, ~@163 e3@9 ~@20]/8",
F: "[[a3,c#4]@22 ~@3 [b3,d#4]@22 ~, e3@7 ~@5]/2", G: "~@6 [c#4,g#5] ~@2 [c#4,g#5] ~@8 [c#4,g#5] ~@5",
H: "~@6 [g#3,d#5] ~@2 [g#3,d#5] ~@8 [g#3,d#5] ~@5", I: "~@6 [a3,e5] ~@2 [a3,e5] ~@8 [a3,e5] ~@5",
J: "~@6 [c#4,g#5] ~@2 [c#4,g#5] ~@9 [c#4,g#5] ~@4", K: "[a3,e5] ~ [a3,e5]!2 ~ [a3,e5]!2 ~@17", L: "[f#4,f#5]!4",
})).s("gm_electric_guitar_clean").gain(0.5).pan(0)
// chords · lead 2 sawtooth · "LEAD KEYS"
const lead_2_sawtooth = note("<~@67 A B C D E F G H ~@2 I@4 J K L ~@9 A B C D E F G H ~@19>".pickRestart({
A: "[e3,a3]", B: "[f#3,b3]", C: "~ [e3,b3]@23", D: "~ [e3,a3]@22 ~", E: "~ a3@23, e3@23 ~", F: "[f#3,b3]@23 ~",
G: "[e3,b3]@11 ~", H: "[e3,a3]@23 ~", I: "[f#5@87 e5 ~@2 e5 ~@2 e5 ~@2]/4",
J: "e5@3 f#5@2 ~@13 g#5@2 ~@2 f#5 ~, ~@10 c#5 ~, ~@21 e5@2 ~",
K: "~ e5@2 f#5 ~@3 f#5 ~@2 e5@2 f#5 ~@2 e5@2 ~ c#5@2 ~ f#5@2 ~, c#5@2 ~@3 c#5@2 ~@2 c#5@2 ~@3 c#5@2 ~@8, ~@6 e5@2 ~@9 f#5@2 ~ e5@2 ~@2",
L: "f#5@7 f#5 ~@2 c#5@13 ~, ~@9 e5@5 ~@10",
})).s("gm_lead_2_sawtooth").gain(0.21)
// chords · melodic tom · "DRUM FILLS"
const melodic_tom = note("<~@41 A B ~@32 C D E ~@23 F G ~@7 H I ~@2 J K ~@2 L M>".pickRestart({
A: "~@6 [f3,g3] ~@2 [f3,g3] ~@8 [b2,c3] ~@2 [a2,b2] ~@2", B: "~@6 [g2,a2] ~@2 [g2,a2] ~@9 d2@2 [e2,f2] ~@2",
C: "[f3,g3] ~@5 e3 ~@2 d3 ~@5 [b2,c3] ~@2 a2@2 ~ a2@2 ~", // Fsus2 Cmaj7
D: "g2@2 g2@2 ~@2 f2@2 ~ f2@2 ~ e2@2 ~ e2@2 ~ d2@2 d2@2 ~@2", E: "c2 ~@23",
F: "~ f3 ~ f3 ~@5 e3 ~@6 d3 ~@2 c3 ~ [b2,c3] ~@2", G: "b2 ~@2 a2 ~@6 g2 ~@4 f2 ~@3 e2 ~ c2@2 ~, ~@21 d2 ~@2",
H: "~@15 b2 ~@2 g2@2 ~ a2 ~@2, ~@18 f2 ~@5", I: "d2 ~@11", J: "~@15 a2 ~ [f2,g2] g2 ~@3 [c2,d2] ~",
K: "~ c2@2 ~@21, ~ d2 ~@22", L: "~@3 g2 ~@2 f2 ~@2 e2 ~@2 d2 ~@2 [c2,d2] ~@2 c2@2 ~ c2@2 ~", M: "c2 ~@11",
})).s("gm_melodic_tom").gain(0.5)
// drums · kick
const kick = s("bd").struct("<~ A@83 B ~@8 A@6 C@2 A@14 C A@4>".pickRestart({
A: "x", B: "x ~ x!2 ~ x!2 ~@17", C: "~ x ~@22",
})).gain(0.36)
// drums · snare
const snare = s("sd").struct("<A B@83 C ~@7 D B@20 E F B@4 ~>".pickRestart({
A: "~@6 x!2", B: "~@2 x!2 ~@2 x ~", C: "x!2 ~ x ~ x!2 ~@8 x ~@2 x ~@5", D: "~ x!7", E: "~@3 x ~ x ~@3 x ~@2",
F: "~@6 x ~@3 x ~@8 x ~@4",
})).gain(0.36)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C@2 D E F G D C H C@2 I J K L C@2 M C H C@2 N O P Q P L C@2 R S T C U C@2 T ~@2 U C@2 V W X C@2 D C@2 Y Z AA C@2
U AB C@2 AC AD AE C AF AG AH AI C AJ D AK ~@2 U C@3 L C@2 ~@9 U AL C@2 AM C@2 AN ~@2 U C AO C U C AP AQ AR AS C AT AU
C T AV ~
>`.pickRestart({
A: "~@5 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2", B: "x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", C: "x!8",
D: "x ~ x!6", E: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
F: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", G: "~@2 x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2",
H: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3", I: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x",
J: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", K: "x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~ x", L: "~ x!7",
M: "x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", N: "~@6 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x",
O: "~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~@2 x ~@2", P: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x",
Q: "~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", R: "~@6 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
S: "~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2", T: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2", U: "~@2 x!6",
V: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~", W: "~@6 x ~@5 x ~ x ~@3 x ~@2 x ~@2",
X: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2", Y: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x",
Z: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x", AA: "~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2",
AB: "x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2", AC: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
AD: "~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", AE: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~",
AF: "~@10 x ~@3 x ~ x ~@3 x ~@2 x", AG: "~@6 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@2",
AH: "~@4 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", AI: "x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2",
AJ: "x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", AK: "x ~ x!2 ~ x!3",
AL: "x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2", AM: "~@3 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~",
AN: "x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2", AO: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2",
AP: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@3 x ~ x", AQ: "~ x ~@2 x ~ x ~@5",
AR: "~@6 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~", AS: "x ~@3 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~ x ~@2",
AT: "x ~@2 x ~@2 x ~@3 x ~@13", AU: "~@10 x ~@2 x ~@3 x ~@2 x ~@3", AV: "x!2 ~@6",
})).gain(0.32)
// … 13 more lines
More by Prince
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.