0:00/0:00
// Perdere l'amore — Ranieri
// 67 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 71 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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
const piano = note("<A@3 B@3 C D E F@8 G@2 H@3 I J@4 K@2 L@5 M@8 N@3 O@6 P Q@6 R S T U@5 ~ V@4>".pickRestart({
A: "[~@5 b4 ~ a5 g#5 ~@12 b4 ~ a5 ~@8 e4@3 d#4@13, ~@12 b4@5 ~ [e2,e5]@16 b3@10 b4@4 g#5@22 ~@26, ~@11 e3@13 ~ [b2,f#5]@10 ~@13, ~@13 f#3@11 ~@24, ~@30 g#3@18 ~@11 b3@11 ~@26]/3", // E B5
B: "[~@15 g#3@2 [b3,f#4]@4 [b3,f#4]@4 [b3,f#4]@4 ~@2 b3@2 [a3,c#4]@4 [a3,c#4]@3 b2 b3@4 [b2,b3,d#4]@3, ~ e2@16 ~@13 f#4@3 ~@15, ~@10 [b3,e4]@8 [b3,e4]@6 e3@10 d#3@32 f#2@15 ~ [b1,e4]@14, ~@7 g#3@4 g#3@4 ~@14 b3@2 ~@17, ~@13 [b3,e4]@4 ~@12 b4@4 ~@15]/3", // B5 A B E5
C: "~@14 a3@3 ~@9 [b3,e4]@4 [e2,g#3]@2, ~ e2@14 ~, ~@2 [b3,e4]@8 [b3,e4]@7 ~ [b3,e4]@8 ~@6, ~@6 g#3@11 ~@5 g#3@8 ~@2", // E5 E E5
D: "~ [b3,e4]@4 ~@4 [b3,b4]@4 [d3,b3,e4,b4]@3, ~ d2@8 d2@7, ~@5 d3@8 ~@3, ~@5 [b3,e4]@4 e4@2 ~@5, ~@7 g#3@9", // E5 B E7 E5
E: "~ [e4,a4]@4 e4@4 [c#4,e4]@4 [c#4,e4]@3, ~ c#2@15, ~@5 [c#3,a4]@11", // A5 C#m F#m
F: "[~@2 [a3,c#4]@8 [a3,c#4]@7 ~ c#4@8 ~@4 a3@4 ~@17 d#4@14 ~@21 e2@30 ~@9 b3@8 [b3,g#4]@8 ~@4 [e4,b4]@3 ~ [e4,g#4]@8 [e3,e4,g#4]@8 g#4@7 [c#4,g#4]@8 f#4@8 ~@4 [g#4,g#5]@4 c#4@8 ~@4 f#2@4 [b3,e4]@8 ~@36, ~@2 f#2@16 a2@16 ~@4 f#3@31 ~@52 g#3@8 ~@4 b2@15 ~@32 [f#2,c#4]@16 f#2@12 ~@4 b2@16 ~@28, ~@18 a3@12 ~@4 e4@13 ~@78 e4@20 ~@4 b3@4 ~@12 d4@3 ~@28 [a4,c#5,a5]@16 ~@44, ~@26 [a1,c#4]@7 ~ b1@36 ~@47 e2@31 ~ e2@15 ~ f2@16 ~@31 b1@31 ~@13, ~@42 b3@25 ~@74 [e3,b3,g#4]@8 ~@39 [f#3,a3,f#4,a4,f#5]@9 ~@7 [f#3,c#4,f#4]@8 ~@44]/8", // A E E5 E C#5 G# E5 F#5 …
G: "[~@19 c#4@8 c#4@8 d#4@8 ~@21]/2",
H: "[~@6 [c#4,e4]@8 ~@4 e3@8 e3@4 [a2,c#4,e4,a4]@4 ~@10 b3@2 [b3,e4,b4]@3 ~@9 e3@4 [a2,c#4,e4,a4]@3 ~@10 b3@2 [b3,e4,f#4]@3 ~ [e4,g#4]@8 [e3,e4,g#4]@7, ~@2 [b1,b2]@11 ~@5 [e2,b3,e4,g#4]@12 ~@4 [e2,g#4]@15 ~ [e2,b3,e4,g#4]@12 ~@4 e2@14 ~ e2@15, ~@34 [b3,e4]@12 ~@19 [e4,g#4]@14 ~@2 b3@12 ~@3, ~@42 e3@8 ~@15 b3@8 e3@7 ~@16]/3", // C#m A E5 A Bsus4 E B E …
I: "~ c#4@8 d4@4 c#4@4 ~@12 [b3,g#4,b4,g#5]@3, ~ [f2,g#4]@16 [f#2,a3,c#4,f#4]@15, ~@9 f3@8 ~@8 [f#3,a4,f#5]@7", // E Fm F#m
J: "[~@12 f#4@3 ~ [b3,e4]@8 ~@20 e3@4 b3@2 ~@12 [e5,b5,e6,b6]@2 ~@10 b3@6 [e4,f#4]@7 [e4,f#4]@8 ~@12 e4@4 [b2,d#4]@17, ~ [f#2,a4,c#5,a5]@15 a2@12 c#4@4 [b4,e5]@8 [a2,c#4,e4]@2 a3@5 ~ e2@32 ~@23 b1@25, ~ c#4@8 f#3@7 ~@8 e3@12 a4@11 ~ [e4,g#4]@24 [e3,e4,g#4]@8 b2@31 ~@17, ~@7 a3@9 ~@8 b3@23 ~@9 [e3,b3]@18 ~@6 b3@11 ~@4 f#4@33, ~@10 c#4@5 ~ c#4@8 e4@10 c#5@13 ~@17 [e5,b5,e6,b6]@16 ~@15 e4@12 ~@21]/4", // E5 Esus2 B F#m E5 A E E5
K: "[~@23 [b3,e4]@7 ~@16 f#4@8 f#4@10, ~@15 e2@31 ~@18]/2", // E5
L: "[b3@2 [b3,f#4,b4]@4 [b3,f#4,b4]@7 ~ c#4@8 ~@4 a3@4 ~@7 b3@8 [b3,e4]@8 [g#3,e4,g#4,e5]@4 [a3,f#4,a4,f#5]@4 ~@12 [b2,g#3]@4 [e4,g#4,b4]@8 [e4,g#4,b4]@8 ~@8 [b4,e5]@7 e4@8 ~@20 e4@4 [a3,c#4]@8 ~@4 g#2@4 [a2,a3,c#4,e4]@4, ~@14 f#2@16 b2@24 ~@11 b2@8 ~@20 b4@4 b3@11 ~@14 a5@10 a3@8 ~@8 [a3,c#4]@8 ~@4, ~@22 [c#4,e4]@7 ~ e4@15 ~@16 [g#4,b4,g#5]@16 ~@16 g#4@15 b4@12 [b4,g#5]@4 e4@6 e5@4 c#4@6 ~@20, ~@30 b3@7 d#4@16 ~@8 b3@8 [e3,b3,e4]@8 ~@16 e4@12 ~@11 [e4,a4]@6 c#5@2 a4@2 [b4,g#5]@13 ~@21, ~@34 f#3@7 ~@4 e2@32 [d2,d3]@31 [c#2,c#3]@32 f#2@16 ~@4]/5", // B5 E5 C#m D E E5 A C#m …
M: "[~@4 [c#4,e4]@8 ~@15 d#4@16 ~@16 [b3,e4]@8 [b3,e4]@8 [b3,e4]@8 [b3,e4]@4 g#3@2 b2@2 [b3,e4]@7 [b3,e4]@8 ~@8 [b3,e4]@4 g#3@2 b2@2 [b3,e4]@8 ~@4 g#3@3 ~ g#4@8 [c#4,g#4]@7 ~ [f#4,a4]@8 ~@4 b4@3 ~@12 f#4@2 ~@2 [e4,f#4]@8 [e4,f#4]@8 [d#4,f#4]@4 ~@4 [d#4,f#4]@8 [e4,g#4]@8 [e4,g#4]@4 [g#2,g#4,b4]@2 f#4@2 [e4,g#4]@7 [e3,e4,g#4]@7 ~ e4@4 c#4@4, ~@12 b2@32 ~@15 [e2,e3]@30 ~@2 e2@30 ~ e2@15 ~ [f2,f3,d4]@15 ~ f#2@19 [f#2,a3]@10 ~@2 [b1,b2]@16 [a1,a2]@15 ~ [g#1,g#2]@14 f#2 ~ e2@15 [a2,a4]@8, ~@12 e4@11 ~@139 [a3,f#4,a4,f#5]@3 [b3,g#4,g#5]@4 c#4@10 c#4@4 ~@2 b3@2 ~@69, ~@12 b3@7 b3@24 ~@63 [b3,e4]@8 ~@40 c#4@15 [a4,c#5,a5]@15 ~@72, ~@16 f#3@11 ~@83 g#3@8 ~@12 [e3,b3,e4]@7 ~@17 f#3@23 f#3@6 ~@73]/8", // C#m E5 C#5 F#m Esus2 D#m E G#m …
N: "[[c#4,e4,a4]@4 [c#4,e4,a4]@4 [d#4,f#4,b4]@4 [d#4,f#4,b4]@4 [d#4,f#4,b4]@4 [d#4,f#4,b4]@3 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@4 [b3,e4,g#4]@4 [b3,e4,g#4]@4 ~@2 [e4,a4,c#5,e5]@13 ~@8 e3@4 [a2,c#4,e4,a4]@4 ~@10 b3@2 [b3,e4,b4]@3 ~ [e2,b3,e4,g#4]@8 e3, ~@8 b2@15 ~ [e2,e3]@16 [b1,b2]@15 [b3,e4,g#4]@12 ~@4 [b3,e4]@12 ~@13, ~@55 e3@8 ~@16 e3@8 ~@9, ~@56 e2@11 ~@4 [e2,g#4]@15 ~@10]/3", // A B E A E5 E B E …
O: "[~@3 [a2,c#4,e4,a4]@4 b3@8 ~@2 b3@2 [b3,e4,f#4]@3 ~ [e4,g#4]@7 ~ e4@7 c#4@8 d4@4 c#4@4 ~@12 [b3,g#4,b4,g#5]@4 ~@12 f#4@3 ~ [b3,e4]@8 ~@19 e3@4 b3@2 ~@12 [e5,b5,e6,b6]@2 ~@10 b3@4 ~@2 [b3,e4,f#4]@6 ~@8 b3@2 b2@8 b2@6 ~ e3@8 e3@4, ~@7 [e2,e4,g#4]@14 ~@2 e2@16 ~@37 a3@9 ~@9 b3@23 [e4,g#4]@24 [e3,e4,g#4]@8 b2@16 ~@27, ~@15 e3@7 ~ b3@11 ~@12 f3@8 ~@8 [f#3,a4,f#5]@8 c#4@8 f#3@7 ~@9 e3@11 a4@4 [a2,c#4,e4]@2 a3@5 ~ e2@32 ~@31 [e2,b3,e4,g#4]@11 ~, ~@30 [e3,g#4]@8 [f2,g#4]@16 [f#2,a3,c#4,f#4]@15 ~ [f#2,a4,c#5,a5]@15 ~ a2@12 c#4@4 [b4,e5]@15 ~@8 [e3,b3]@18 ~@12 f#3@6 f#3@4 ~@27, ~@80 c#4@5 ~ c#4@8 e4@9 c#5@13 ~@17 [e5,b5,e6,b6]@16 ~@8 [b3,e4,f#4,g#4]@8 [d#4,f#4]@13 ~@14]/6", // A Bsus4 E E5 Bsus4 E F#m A …
P: "[a2,c#4,e4,a4]@4 ~@10 b3@2 [b3,e4,b4]@3 ~@9 e3@4, ~@4 [e2,g#4]@15 ~ [e2,b3,e4,g#4]@12, ~ [b3,e4]@3 ~@4, ~@3 e3@2 ~@3", // A E5 E E5
Q: "[[a2,c#4,e4,a4]@4 b3@8 ~@2 b3@2 [b3,e4,f#4]@3 ~ [e4,g#4]@7 [e3,e4,g#4]@8 c#4@8 d4@4 c#4@4 ~@12 [b3,g#4,b4,g#5]@4 ~@12 f#4@3 ~ [b3,e4]@8 ~@19 e3@4 b3@2 ~@12 [e5,b5,e6,b6]@2 ~@10 b3@4 ~@2 [b3,e4]@6 ~@8 b3@2 b2@7 b2@6 ~@4 [a#2,a#3,c4,d#4,g#4]@5 ~ [a#2,a#3,c4,d#4,g#4]@7, ~@4 [e2,e4,g#4]@14 ~@2 e2@15 f2@12 ~@4 [f#2,a3,c#4,f#4]@15 ~ [f#2,a4,c#5,a5]@15 ~ a2@12 c#4@3 [b4,e5]@8 [a2,c#4,e4]@2 a3@5 ~ e2@31 ~@47, ~@12 e3@7 ~ b3@11 ~@4 g#4@16 ~@16 c#4@8 f#3@7 ~@9 e3@11 a4@11 ~ [e4,g#4]@24 [e3,e4,g#4]@8 [b2,f#4]@16 ~@30, ~@43 f3@8 ~@8 [f#3,a4,f#5]@8 ~@6 a3@8 ~@10 b3@23 ~@8 [e3,b3]@18 ~@12 f#3@6 f#3@4 ~@30, ~@77 c#4@5 ~ c#4@8 e4@9 c#5@13 ~@17 [e5,b5,e6,b6]@16 ~@8 [b3,e4,g#4]@8 [e4,f#4]@13 ~@17]/6", // A Bsus4 E E5 G# E F#m E5 …
R: "~@3 [a#2,a#3,c4,d#4,g#4]@5 ~ [a#2,a#3,d4,f4,a#4]@7 ~ a#3@6 ~@4 d#4@2 [g#2,c4,d#4,g#4]@3, ~@17 [d#2,d#4,g4]@11 ~@4, ~@23 a#3@5 ~@4, ~@25 d#3@4 ~@3", // G# A# G# D#
S: "~ [a#3,d#4]@6 ~@6 f4@4 [a#3,d#4]@5 [a#3,d#4,a#4]@4 d#3@2 [g#2,c4,d#4,g#4]@3 ~, ~ [d#2,g4]@15 ~ [d#2,g4]@11 ~@4, ~@7 a#3@4 d#4@5 ~@16, ~@9 d#3@7 ~@16, ~@13 a#3@2 ~@17", // D#5 G# D#
T: "[d#4,g4]@8 ~@4 a#3@3 ~@13 a#3@3 ~, d#2@15 ~ d#2@15 ~, a#3 ~@7 [d#3,d#4,g4]@7 ~ [d#4,g4]@8 [d#3,d#4,g4]@7 ~, ~@5 a#3@2 ~", // D#
U: "[[e4,g4]@7 ~ [e3,e4,g4]@7 ~@5 c4@4 ~@3 [a#4,g5]@4 c5@6 ~@6 g#4@3 ~@13 g#4@3 ~ a#4@2 ~@8 d#4@2 ~ d#4@2 ~@15 [a#5,a#6]@2 ~@11 [a#2,d#5]@4 a#4@8 d#4@4 ~@16 d#4@3 ~ [a#2,f4,a#4]@8 ~ d4 [a#1,a#2,a#3,d4,f4]@2 [a#1,a#2,a#3,d4,f4]@2 [a#1,a#2,a#3,d4,f4] ~@3, e2@13 ~@3 f2@15 [f2,g#5]@15 ~ [g#2,c5]@15 ~ [g#2,d#5]@15 ~ d#2@14 a#2@9 d#3@8 a#2@30 ~@10 [a#1,a#2,a#3,f4]@2 ~@8, ~@8 c4@2 ~@6 [f4,g#4]@7 ~ [f3,g#4,f5]@8 ~@5 c5@9 ~@11 d#4@5 ~@5 g#4@8 [d#3,g#4]@3 ~@9 d#3@8 [d#2,a#5,d#6,a#6]@15 ~@12 d#4@8 d#4@8 ~@22, ~@37 g#4@4 f4@5 ~ g#4@12 ~@6 c5@13 ~ [g4,a#4]@31 ~@8 [f4,a#4]@8 [f4,a#4]@8 [f4,a#4]@7 ~@19, ~@39 f3@8 ~@8 g#3@7 ~@9 g#3@7 ~@9 d#4@23 ~@8 a#3@23 ~@19]/5", // Em D# A# D#5 A#5 A# Fm G# …
V: "[~@13 [g#2,g#3,d#5,g#5,c6,d#6]@16 [d#2,d#3,d#5,g5,a#5,d#6]@79 ~@20]/4", // G# D#
})).s("gm_piano").gain(0.3)
// chords · piano · soft notes
const piano_soft = note(`<
~ A@2 B C D E F@2 G H@3 I@2 J@5 ~ K L M ~ N@2 O@3 P@2 Q R S@5 T@3 ~@4 U V ~ W X ~ Y@2 Z ~ AA AB ~@3 AC ~ AD ~ AE ~@5
>`.pickRestart({
A: "[~@11 f#3@8 ~@13]/2", B: "~@3 e3@9 ~@4, ~ [b3,e4]@4 ~@11, ~@3 g#3@4 ~@9", C: "~@3 f#3@4 f#3@9",
D: "~@6 f#3@8 f#3@3 ~@5 f#3@8 f#3@2", E: "~@5 e3@11", F: "[~@3 g#3@4 ~@4 e4@2 ~@2 b3@2 ~@2 a3@4 a3@4 a3@5]/2",
G: "~@6 f#3@8 f#3@3 ~@5 e3@10",
H: "[~@15 e4@6 ~@60 [b2,g#3]@4 [b3,e4]@8 ~@3, ~@6 b2@31 ~@17 [b3,e4]@8 [b3,e4]@5 b2@14 ~@15, ~@58 g#3@7 g#3@8 g#3@8 ~@15, ~@69 e3@14 ~@13, ~@69 [b3,e4]@8 [b3,e4]@7 ~@12]/3", // E E5
I: "[~ g#3@8 g#3@11 ~@5 b3@8 b3@4 ~@7 f3@8 ~@4 a3@4 ~@4, ~@25 b2@12 ~@3 d4@12 ~@12]/2",
J: "[[b3,b4]@5 ~@3 a3@8 a3@4 ~@27 f#3@4 ~@16 [b3,e4]@8 [b3,e4]@8 e4@8 e4@8 ~@12 f#3@4 ~@11 g#3@5 ~@3 a3@8 ~@18, ~@24 f#3@8 f#3@8 f#3@7 ~@4 [b3,e4]@8 [b3,e4]@8 ~@32 b3@8 [b3,d#4]@8 [b3,e4]@7 [b3,e4]@9 ~@29, ~@28 e4@23 ~@52 f#3@8 ~@8 g#3@7 ~@34, ~@28 b3@8 b2@15 [e2,e3]@32 [a1,a2]@17 ~@60, ~@36 [b3,d#4]@8 [b3,d#4]@8 ~@3 g#3@8 g#3@20 ~@16 [b1,b2]@16 [e2,e3]@17 ~@28]/5", // B E5 B E5 E A B E
K: "~@29 b3@3", L: "~@5 g#3@12 ~@15", M: "~@5 a3@2 ~@25", N: "[~@27 b3@8 b3@6 b3@23]/2",
O: "[~@19 g#3@7 ~@16 g#3@4 b3@8 b3@10 ~@14 a3@4 a3@8 ~@6, ~@15 e3@31 d#3@31 ~@19, ~@15 [b3,e4]@8 ~@3 g#3@8 g#3@8 ~@54, ~@15 [b3,e4]@4 [b3,e4]@4 ~@16 e4@4 ~@5]/3", // E5
P: "[~@17 e3@20 ~@12 b3@8 b3@7, ~@9 f#3@12 ~@43]/2", Q: "~@9 e4@3 ~@20", R: "~@3 c#5@3 ~@10, ~ a4@5 ~@10",
S: "[~@8 a3@4 ~@11 e4@4 [b1,f#3]@16 ~@20 g#3@8 g#3@8 g#3@8 ~@7 g#3@8 g#3@8 ~@16 g#3@8 ~@8 g#3@8 g#3@3 ~@7]/5", // B5
T: "[~@29 b3@8 b3@4 ~@4 b3@8 b3@4 ~@4 b3@10 a4@2 ~@11 b3@3 ~@5 e4@4]/3", U: "~ b3@2 ~@2 g#3@6 ~@5", V: "~@5 a3 ~@10",
W: "~@19 b3@2 ~@11", X: "~@5 b3@13 ~@14", Y: "[~@31 b3@4 ~@4 g#3@12 ~@13]/2", Z: "~@7 a3@2 ~@23", AA: "~@8 b3 ~@7",
AB: "~@2 b3@13 ~@17", AC: "~@4 c#4@3 ~@5 c4@3 ~@17", AD: "~@29 d#6@2 ~", AE: "~@9 d4@2 ~@5",
})).s("gm_piano").gain(0.17)
// chords · french horn
const french_horn = note("<~@7 A B C D ~@2 E@3 F G H I ~ J@6 ~@18 K@6 ~ L@6 ~@13>".pickRestart({
A: "~ b4@6 c#5@2 d5@7, ~ g#4@15", B: "~ [c#4,a4,c#5]@15", C: "~ f#4@8 e4@7", D: "~@2 e4@17 ~@13",
E: "[~@21 e4@16 d5@7 c#5@8 [a4,f#5]@31 ~@13, ~@21 g#4@31 ~@44]/3", F: "~@4 [b3,b4]@4 ~@11 [e4,e5]@4 ~@9",
G: "~@3 [e4,e5]@4 ~@12 [a3,a4]@4 ~@9", // E A
H: "~@3 [b3,b4]@2 ~@2 [c#4,c#5]@2 ~@2 [d#4,d#5]@2 ~@2 [f#4,f#5]@2 ~@2 [e4,e5]@2 ~@2 [f#4,f#5]@2 ~ [g#4,g#5]@2 ~@2 [a4,a5]@2", // B C# D# F# E F# G# A
I: "~ [b4,b5] ~ [a4,c#5,e5]@6 ~@7", // B A
J: "[~@17 [b4,e5]@16 c#5@8 d5@4 ~@4 [f#5,a5]@31 a4@31 ~ [g#4,b4]@31 ~ [f#4,b4,e5]@31 ~@17, ~@17 g#5@31 ~@144, ~@33 f5@16 ~@31 e5@63 ~@49, ~@45 c#5@67 ~@80]/6", // E5 F#m G#m Esus2
K: "[~@23 [b4,e5]@15 c#5@8 d5@4 ~@4 [f#5,a5]@31 ~ a4@31 [g#4,b4]@31 ~ e5@16 d#5@16 ~@11, ~@23 g#5@31 ~@138, ~@38 f5@16 ~@32 e5@63 ~@43, ~@50 c#5@67 ~@32 [f#4,b4]@31 ~@12]/6", // E5 F#m G#m B5
L: "[~@20 [b4,e5]@15 c#5@8 d5@4 ~@4 [f#5,a5]@31 ~ a4@31 [g#4,b4]@31 ~ e5@16 b5@16 ~@14, ~@20 g#5@31 ~@141, ~@35 f5@16 ~@32 e5@63 ~@46, ~@47 c#5@67 ~@32 [f#4,b4]@31 ~@15]/6", // E5 F#m G#m B5
})).s("gm_french_horn").gain(0.2).pan(0.3)
// chords · french horn · soft notes
const french_horn_soft = note("<~@7 A ~@2 B@2 ~@14 C ~@44>".pickRestart({
A: "~ d4@15", B: "[~@19 d#4@19 ~@26]/2", C: "~@15 [f#4,b4,d#5]@8 ~@9",
})).s("gm_french_horn").gain(0.09).pan(0.3)
// other · pad halo
const pad_halo = note("<~@8 A ~@23 B@2 ~@37>".pickRestart({
A: "~@7 [g#5,g#6] [a5,a6]@2 [g#5,g#6]@2 [e5,e6]@4", B: "[~@12 [g#5,g#6] [a5,a6]@2 [g#5,g#6]@2 [e5,e6]@5 ~@10]/2",
})).s("gm_pad_halo").gain(0.08)
// bass · fretless bass
const bass = note("<~@15 A@5 B C D E F G@3 H@3 I@7 J@8 K L M N O P Q@4 R@2 S T U V@5 ~ W@4>".pickRestart({
A: "[~@20 b2@31 ~ e2@31 a1@16 b1@16 e2@4 f#2@3 g#2@4 a2@4 b2 ~@3 b1@12 e2@12 a1@2]/5", B: "~ e1@8 e2@6 a1",
C: "~@2 e1@15 e2@12 e1@3", D: "~ f1@6 f2@8 c#1@2 f#1@9 ~@3 f#1@3",
E: "~ f#1@5 ~ c#2 ~ f#1@3 f#1@2 g#1@2 ~ a1@8 ~ a1 ~ a1@4", F: "a1@3 e2 a2@4 e2@6 e2 ~",
G: "[e2@6 e2@10 b1@11 b1@4 b2@14 ~@2 b2@31 ~@18]/3", H: "[~@10 e2@4 d#2@31 ~ f#1@16 b1@15 e2@19]/3",
I: "[~@7 e1@2 e2@4 d2@14 d3@16 ~@2 c#3@31 f#1@12 g#1@3 ~ a1@16 b1@32 ~@15 e2@31 ~ e2@13 e1@2 e2@8 e2@8 e2@6]/7",
J: "[~@6 e2@4 f2@9 ~ f2 ~ f2@4 f#2@13 f#2@2 f#2@4 f#1@4 f#2@2 c#2@2 ~ f#1@3 b1@16 a1@16 g#1@14 f#1@2 e1@7 e2@8 a1@14 a1@2 b1@14 b1@2 e2@18 b1@13 ~ e2@11 a1@3 ~ e1@16 e2@12 a1@3 ~ e1@16 e2@9]/8",
K: "~@2 e1@4 f1@6 f2@6 ~@2 c#1@2 f#1@9 ~", L: "~@2 f#1@3 ~ f#1@5 ~ c#2 ~ f#1@3 ~ f#1@2 g#1@2 a1@10",
M: "~@2 a1@4 a1@5 e2@2 a2@8 e2@11", N: "~ e2@2 ~@2 e2@6 e2@10 b1@11", O: "~ b1@4 b1@8 b2@8 e2@11",
P: "a1@3 ~ e1@16 e2@12",
Q: "[a1@4 e1@16 e2@11 e1@4 f1@6 f2@6 ~@2 c#1@2 f#1@9 ~@3 f#1@3 ~ f#1@5 ~ c#2 ~ f#1@3 ~ f#1@2 g#1@2 a1@10 ~@2 a1@4 a1@5 e2@2 a2@8 e2@12 e2@2]/4",
R: "[~@2 e2@6 e2@10 b1@12 b1@4 b1@7 b2@8 ~@2 a#1@5 ~ a#1@7]/2", S: "~@3 a#1@5 ~ a#1@2 d2@6 d#2@9 ~ d#2@2 g#2@3",
T: "~ d#2@8 ~@2 d#2 ~ d#1@3 ~ d#2@4 ~ d#2 ~ d#2@4 g#2@3 ~",
U: "d#2@5 ~ d#2@3 ~ d#2 ~ d#2@3 ~ d#2@7 ~ d#1@2 a#1@2 d#2@4",
V: "[e2@7 ~ e2@7 ~ f2@2 c2 ~ f1@3 ~ f1@7 f2@5 ~ f1 ~ f1@2 f2@4 g2@2 g#2 ~ g#2@7 ~ d#2 ~ g#1@3 ~ g#1@7 ~ g#2 ~ g#2@2 g#1@4 d#2@8 ~@4 d#1@11 d#2 ~ d#2 ~ d#1@4 a#1@5 ~ a#1 ~ a#1@5 g#2 a#2 a#1@12 ~ a#2@4 a#1@7 ~ a#1 ~ a#1 ~ a#1 ~ a#1@2 ~@2]/5",
W: "[~@13 g#2@16 d#2@79 ~@20]/4",
})).s("gm_fretless_bass").gain(0.45)
// chords · string ensemble 1
const string_ensemble_1 = note("<~@15 A B C D@3 E@7 ~@11 F G H I@3 J@6 K@7 L@3 M@5 ~ N@4>".pickRestart({
A: "~@20 [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3]!2 ~ [b2,b3]", // B
B: "~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4]", // B E
C: "~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~@3 [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3], ~@19 [e3,c#4]@13", // E A C#m
D: "[~ [a2,a3] ~ b2 ~@2 [c#3,c#4]@2 ~@2 d#3@2 ~@2 f#3@4 e3@2 ~@2 [f#3,f#4]@2 ~@2 g#4@2 ~@2 [a3,a4]@2 ~@2 [b3,b4]@2 b4 c#5 [a3,c#4,e4,a4,b4,e5]@12 [e2,b3,e4,g#4]@12 [c#3,c#4,a4]@4 [e2,b3,g#4]@28 [c#3,c#4,a4]@2, ~@3 b3@31 ~@28 e4@34, ~@3 f#3@11 f#4@2 ~@2 g#3@8 g#3@8 ~@62, ~@3 d#4@7 d#4@8 e4@17 ~@3 d#5 ~@57]/3", // A C# F# A B A E F#m …
E: "[~@2 [e2,b3,e4,g#4]@15 [e2,b3,e4]@16 [c#3,c#4]@8 [d3,d4]@4 ~@4 a4@8 f#5@4 [b4,g#5]@4 [c#5,a5]@15 [a3,c#5]@31 ~ [e3,g#4,b4]@31 ~ [e4,f#4,b4]@31 b5@31 ~@18, ~@17 g#4@31 ~@9 a4@55 ~@112, ~@33 f4@16 [f#3,f#4]@31 ~@144, ~@45 c#4@35 e4@63 ~@81]/7", // E E5 C# D E F#m A E …
F: "~@25 [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3]", // B
G: "~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [b2,b3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [g#2,g#3] g#3 g#2 [g#2,g#3] ~ [g#2,g#3] ~", // B A G#
H: "[g#2,g#3] ~ [g#2,g#3] ~ [g#2,g#3] ~ [f#2,f#3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] ~ [a2,a3] ~ [a2,a3] ~ [b2,b3] ~ [b2,b3] ~, ~@3 [e3,c#4]", // G# F# E A B C#m
I: "[c#4@2 c#3 ~ e3@2 e3@2 b3@2 b2 ~ [c#3,c#4] ~ [c#3,c#4] ~ d#4@2 d#3 ~ f#3@2 f#3@2 [e3,e5] ~ [e3,e5] ~ [f#3,f#4,f#5] ~ [f#3,f#4,f#5] ~ [g#4,g#5] ~ [g#4,g#5] a3 [a4,a5] [a3,a4,a5] ~ [b3,b4,b5] ~ [a3,c#4,e4,a4,b4,e5]@14 ~ [e3,b3,e4,g#4]@11 [c#3,c#4,a4]@4 [e3,b3,g#4]@25, c#3 ~ c#4@6 f#3@12 f#4 ~ f#4 ~ e4@2 e4@15 ~@26 e4@29, ~@4 e4 ~ e4 ~ d#4@8 d#3 ~ d#4@6 g#3@8 g#3@2 g#3@6 ~@56, ~@8 b2 ~ b3@29 ~@57]/3", // C# E F# G# A B A E …
J: "[~@3 [c#3,c#4,a4]@4 [e3,b3,e4,g#4]@16 [e3,b3,e4]@15 [c#3,c#4]@8 [d3,d4]@4 c#3@4 a4@8 f#5@4 [b4,g#5]@4 [c#5,a5]@16 [a2,e4,c#5]@31 [e3,g#4]@31 ~@17 [d#3,d#4]@15 [e3,b3,e4,g#4]@12, ~@23 g#4@31 ~@8 a4@55 b4@63 ~@12, ~@38 f4@16 [f#3,f#4]@31 ~@107, ~@50 c#4@35 ~@64 f#4@31 ~@12]/6", // F#m E E5 C# D E F#m A …
K: "[[c#3,c#4,a4]@4 [e3,b3,g#4]@28 [c#3,c#4,a4]@4 [e3,b3,e4,g#4]@16 [b2,b3,e4]@15 [c#3,c#4]@8 [d3,d4]@4 ~@4 a4@8 f#5@4 [b4,g#5]@4 [c#5,a5]@16 [a2,c#5]@31 [e3,g#4]@31 ~@17 [e3,e4]@16 ~ [d#4,g#4,c5,d#5,g#5]@4 c5@2 [g#4,c5,d#5,g#5]@7, e4@35 ~@17 g#4@31 ~@8 a4@55 b4@63 ~@15, ~@67 f4@16 f#4@31 ~ e4@79 ~@23 d#4@4 ~@3, ~@79 [c#3,c#4]@35 ~@64 f#4@31 ~@15]/7", // F#m E F#m E E5 C# D E …
L: "[~@3 [d#4,g#4,c5,d#5,g#5]@6 [f4,a#4,d5,g#5]@8 [d#4,g4]@12 [c4,d#4,g#4]@3 [d#4,g4]@28 [c4,d#4,g#4]@4 [d#4,g4]@32, ~@17 [d#3,a#4]@79, ~@2 a#3 ~ a#3 ~]/3", // G# A#7 D# G# D# G# D# D#5
M: "[[c#5,c#6]@7 ~@8 f3@31 ~@17 d#5@4 d#5@2 d#5@2 [g#5,g#6]@8 [a#5,a#6]@71 [f4,a#5,a#6]@2 ~@3 [f4,a#5,a#6]@2 ~@3, ~@7 c3@8 ~@48 d#6@8 ~@89, ~ [c5,c6]@7 ~@12]/5", // C# G# A# A#5 C
N: "[~@13 [g#4,c5,g#5,c6]@16 [g4,a#4,g5,a#5]@79 ~@20, ~@13 [d#4,d#6]@95 ~@20]/4", // G# Gm D#
})).s("gm_string_ensemble_1").gain(0.3)
// chords · string ensemble 1
const string_ensemble_1_2 = note("<~@15 A@4 ~@20 B@4 ~@19 C D E F ~@5>".pickRestart({
A: "[~@20 b2@31 ~@31 a2 a2@16 ~@29, ~@51 e3@29 [d#3,e3]@3 ~@45, ~@31 g#4 c#5 f#5 b5 [e5,f#5] [b4,c#5] [f#4,g#4] [c#4,d#4] [g#3,a3] ~ b2 ~@22, ~@63 [a4,b4]@2 [d#5,e5]@2 [g#5,a5]@2 [g#5,a5]@2 d#5@2 a4@2 e4@2 b3@2 f#3@2 c#3@2 ~@45]/4", // Emaj7 Esus2 Bsus2 F#sus2 C#sus2 Amaj7 Asus2 Emaj7 …
B: "[~@25 b2@31 ~@17 a5 ~@14 a2@16 ~@24, ~@57 e3@28 e3@3 ~@40, ~@67 g#4@2 [b4,c#5]@2 [e5,f#5]@2 b5@2 [f#5,g#5]@2 [c#5,d#5]@2 g#4@2 d#4@2 a3@2 ~@2 b2@2 ~@39, ~@34 a4 d#5 g#5 a5 e5 [a4,b4] [e4,f#4] [b3,c#4] [f#3,g#3] [c#3,d#3] ~@20]/4", // Bsus2 Esus2 F#sus2 C#sus2 Asus2 Esus2 Bsus2 F#sus2 …
C: "~@15 g#4 ~ g#4 ~ a#4 ~ a#4 ~ d#5 ~ d#5 ~ g#4 ~ g#4 ~ a#4",
D: "~ a#4 ~ d#5 ~ d#5 ~ g#4 ~ g#4 a#4 ~ a#4 ~ g4 ~ g4 ~ a#4 ~ a#4 ~ d#5 ~ d#5 ~ g4 ~ g4 ~ a#4 ~",
E: "a#4 ~ d#5 ~ d#5 ~ g4 ~ g4 ~ a#4 ~ a#4 ~ g#4 ~ g#4 ~ a#4 ~ a#4 ~ d#5 ~ d#5 ~ g#4 ~ g#4 ~ a#4 ~",
F: "a#4 ~ d#5 ~ d#5 ~ g#4 ~ g#4 ~ a#4 ~ a#4 ~ a#4 ~@17",
})).s("gm_string_ensemble_1").gain(0.21)
// other · string ensemble 1
const string_ensemble_1_3 = note("<~@23 A B C D ~@20 E F G ~@2 H@3 I J K L ~@12>".pickRestart({
A: "~@16 a4 ~ a4 ~ b4 ~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~",
B: "b4 ~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~ b4 ~ b4 ~ g#4 ~ g#4 b4 ~ b4 ~ e5 ~ e5 ~ g#4 ~ g#4 ~ b4",
C: "~ b4 ~ e5 ~ e5 ~ g#4 ~ g#4 ~ b4 ~ b4 ~ a4 ~ a4 ~ b4 ~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~ b4",
D: "~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~ b4 ~ b4 ~ b4 ~ b4 ~@14", E: "~@21 a4 ~ a4 ~ b4 ~ b4 ~ e5 ~ e5",
F: "~ a4 ~ a4 ~ b4 ~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~ b4 ~ b4 ~ g#4 ~ g#4 ~ b4 ~ b4 ~ e5 ~ e5",
G: "~ g#4 ~ g#4 ~ b4 ~ b4 ~ e5 ~ e5 ~ g#4 ~ g#4 ~ b4!2 ~@13",
H: "[~@20 e5@15 f5@8 a5@4 b5@4 ~@15 c#5@12 ~@4 a4 ~ a4 ~ b4 ~ b4 ~ e5 ~ e5 ~ a4 ~, ~@51 a5@28 ~@17]/3",
I: "a4 ~ b4 ~ b4 ~ e5 ~ e5 ~ a4 ~ a4 ~ b4 ~ b4 ~ g#4 ~ g#4 ~ b4 ~ b4 ~ e5 ~ e5 ~ g#4 ~",
J: "g#4 ~ b4 ~ b4 ~ e5 ~ e5 ~ g#4!2 ~ b4 ~ b4 ~ [a4,a5] ~ [a4,a5] ~ [b4,b5] ~ [b4,b5] ~ [e5,e6] ~ [e5,e6] ~ [a4,a5] ~ [a4,a5]", // A B E A
K: "~ [b4,b5] ~ [b4,b5] ~ [e5,e6] ~ [e5,e6] ~ [a4,a5] ~ [a4,a5] ~ [b4,b5] ~ [b4,b5] ~@3 [g#3,c4,d#4]@5 ~ [g#3,c4,d#4]@7", // B E A B G#
L: "~@3 [g#3,c4,d#4]@5 ~ [a#3,d4,f4]@8 ~@15", // G# A#
})).s("gm_string_ensemble_1").gain(0.36).pan(0.6)
// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@26 A ~@22 B@2 ~@5 C@2 ~@13>".pickRestart({
A: "~@19 b4 ~ b4 ~ b4 ~ b4 ~ b4!2 ~@3", B: "[~@5 e3@4 d#3@3 ~@4, ~@5 b2@7 ~@4]/2", C: "[~@17 [b2,b3]@28 ~@19]/2",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.6)
// chords · string ensemble 2
const string_ensemble_2 = note("<~@30 A@6 ~ B C@4 D@2 ~@16 E@6 ~ F@4>".pickRestart({
A: "[~@13 e5@30 ~@2 d4@31 c#4@32 f#3@12 g#3@4 a3@16 b3@15 b2@16 ~@21]/6", B: "~@13 g#3@3",
C: "[~@2 b3@8 d4@8 c#4@39 b3@16 d#4@16 [e4,b4]@11 ~ g#4@2 a4@2 [e4,g#4]@15 a4@2 ~@2 b4@3 ~, ~@57 b4@31 ~@13 b4@4 ~@23, ~@103 f#4 ~@24]/4", // E5 E
D: "[c#5@3 ~ e5@3 ~ d#5@3 ~ e5@3 ~ f#5@3 ~ a5@3 ~ g#5@18 ~@22]/2",
E: "[~@16 [a#3,a#4]@16 [c#4,c#5]@7 ~@56 a#3@7 ~ g#3@8 g3@30 ~@33 d4@13 ~ [f3,a#3,d4] ~@3, ~@16 [g3,g4]@31 ~ [g#3,g#4]@48 ~@15 a#3@76 ~@5, ~@40 [c4,c5]@39 d#4@95 ~@18, ~@71 f3@22 ~@3]/6", // A# C# A# G G# C
F: "[~@13 [d#3,g#3,c4]@16 [d#3,g3,a#3]@79 ~@20]/4", // G# D#
})).s("gm_string_ensemble_2").gain(0.44)
// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@27 A@4 ~@4 B@5 ~@31>".pickRestart({
A: "[~@19 b5@19 c#6@8 b5@16 f#5@32 e5@7 d#5@8 ~@19]/4",
B: "[~@66 e4@24 g#5@31 ~ a5@31 ~@7, ~@27 [e3,g#3,b3]@63 ~@70]/5", // E
})).s("gm_string_ensemble_2").gain(0.25)
// other · string ensemble 2
const string_ensemble_2_2 = note("<~@45 A@4 B@2 ~ C@6 ~@13>".pickRestart({
A: "[~@23 b4@15 c#5@8 d5@4 c#5@3 ~ c#5@29 ~@3 a4@8 c#5@8 e5@7 a5@8 g#5@11]/4",
B: "[~ b4@4 ~@16 e5@16 d#5@15 ~@12, ~@5 b4@47 ~@12]/2",
C: "[~@20 b4@15 c#5@8 d5@4 c#5@3 ~ c#5@30 ~@2 a4@8 c#5@7 e5@8 a5@8 g#5@12 b4@4 ~@16 e5@16 e5@15 ~@15, ~@130 b4@47 ~@15]/6",
})).s("gm_string_ensemble_2").gain(0.27)
// other · alto sax
const alto_sax = note("<~@58 A@3 ~@10>".pickRestart({
A: "[~@3 a#4@2 ~ a#4@3 g#5@8 g5@4 d#5@19 ~ c5@7 ~ a#4@19 c5 ~@27]/3",
})).s("gm_alto_sax").gain(0.6)
// drums · kick
const kick = s("bd").struct(`<
~@15 A B C D E@2 F G H I J K ~ L M N O P Q R ~ S T@2 U@2 V W X Y@2 Z AA AB AC AD AE AF AG AH AI AJ AK G AL I AM AN AO
AP AQ ~ AR ~@3
>`.pickRestart({
A: "~@5 x ~@2", B: "~ x ~@8 x ~@5", C: "~ x ~@17 x ~@12", D: "~ x ~@17 x ~@3 x ~@3 x ~@2 x ~", E: "~ x ~@7 x ~@5 x",
F: "~@2 x ~@14 x ~@11 x ~@2", G: "~ x ~@15 x ~@11 x ~@2", H: "~ x ~@12 x ~ x ~@9 x ~ x ~@3", I: "x ~@3 x ~@2 x",
J: "x ~@28 x ~@2", K: "~@15 x ~@13 x ~ x", L: "~@7 x ~@7 x", M: "~@7 x ~@8", N: "~@13 x ~@18",
O: "~@13 x ~@13 x ~ x ~@2", P: "~@13 x ~@14 x ~@3", Q: "~@3 x ~@3 x", R: "~@12 x ~@14 x ~@4", S: "~@9 x ~@22",
T: "~@4 x ~@8 x ~@2", U: "~@7 x ~@17 x ~@6", V: "~@7 x ~@16 x ~@7", W: "~@3 x ~@8 x ~@3", X: "x!3 ~@3 x ~",
Y: "~@3 x ~@3 x ~@15 x ~@8", Z: "~ x ~ x ~@7 x ~@4", AA: "~ x ~ x ~ x!2 ~@3 x!2 ~@4",
AB: "x ~ x ~@3 x ~@12 x ~ x ~ x ~@8", AC: "~ x ~@3 x ~@13 x ~ x ~@10", AD: "~@3 x ~ x ~@14 x ~@11",
AE: "x!2 ~@3 x ~@2", AF: "x ~@3 x ~@15 x ~@10 x", AG: "~@3 x ~@15 x ~@11 x",
AH: "~@3 x ~@3 x ~ x ~@3 x ~@5 x ~@9 x ~ x", AI: "~ x ~@6 x!3 ~@4 x", AJ: "~ x ~@6 x!2 ~@6", AK: "x ~@8 x ~@13 x ~@8",
AL: "~ x ~@13 x ~ x ~@10 x ~@3", AM: "x ~@15 x ~@11 x ~@2 x", AN: "~@9 x ~@5 x ~@11 x ~@3 x",
AO: "~@13 x ~ x ~@11 x ~@3 x", AP: "~@6 x!2 ~@5 x ~ x", AQ: "~@7 x ~@4 x!3 ~", AR: "~@13 x ~@15 x ~@2",
})).gain(0.28)
// drums · rim
const rim = s("rim").struct("<~@26 A B C D E@2 F G H ~@8 I ~@27>".pickRestart({
A: "~@11 x ~@11 x ~@8", B: "~@23 x ~@8", C: "~@11 x ~@4", D: "~@3 x ~@7 x ~@4", E: "~@5 x ~@15 x ~@10",
F: "~@5 x ~@14 x ~@11", G: "~ x ~@3 x ~@2", H: "~@2 x ~@6 x ~@6", I: "~@5 x ~@2",
})).gain(0.32)
// drums · snare
const snare = s("sd").struct(`<
~@16 A B C D E F@2 G H I ~@10 J K@2 L M@2 N O P@2 Q R S@2 T U V W X E Y Z AA AB AC H AD AE AF AG ~@5
>`.pickRestart({
// … 101 more lines
More by Ranieri
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.