0:00/0:00
// Una donna per amico — Battisti
// 127 bpm, 4/4, key D 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 132 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
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, A@4 for four bars: edit a riff to change every repeat.
// chords · piano
const piano = note(`<
A B C D A B C D E@8 F G H I A B C D A B J D E@8 F G H K A B L M N@8 O P O P O P O Q R@7 S@6 T@2 U@2 T@2 V@8 W@6 X@2 Y
Z@8 AA@7 AB@8 AC@6 AD@2 AE@2 AD@2 AF
>`.pickRestart({
A: "[d4,f#4,a4]@28 ~ [e4,g4,c5]@3", B: "~@5 [d4,g4,b4]@26 ~", C: "[d4,f#4,a4]@27 ~@2 [f4,a#4,d5]@3",
D: "~@5 [f4,a4,c5]@4 ~@4 [e4,g4,c5]@4 ~@4 [d4,g4,b4]@4 ~@4 [g4,b4]@2 ~, ~@29 d4 ~@2", // F C G
E: "[[d4,f#4,a4]@29 [d4,g4,b4]@18 ~ [d4,g4,b4]@16]/2", F: "[d4,f#4,a4]@31 ~", G: "[d4,e4,g4,b4]@31 ~",
H: "[d4,f#4,a4,d5]@31 ~", I: "[d4,g4,b4]!2", J: "[d4,f#4,a4]@28 ~ [f4,a#4,d5]@3",
K: "[d4,g4,b4]@15 ~ [d4,g4,b4]@14 ~@2", L: "[d4,f#4,a4]@29 [b4,d5,g5]@3",
M: "~@5 [a4,d5,f#5]@4 ~@4 [g4,c5,e5]@4 ~@4 [g4,b4,d5]@4 ~@4 [g4,b4,d5]@2 ~", // D C G
N: "[[f4,a4,c5]@29 [e4,g4,a4,c5]@34 ~]/2", O: "[g#3,c4,d#4,g4] [g3,a#3,d4,f4]", P: "[g#3,c4,d#4,g4]@31 ~",
Q: "[g#3,c4,d#4,g4]@14 ~@2 [f3,g#3,c4,d#4]@7 ~ [g#3,c4,d#4,f4]@7 ~", // G#maj7 Fm7
R: "[[a#3,d#4,g4]@31 [c4,d#4,g#4]@15 ~ [c4,d#4,g#4]@16 [a#3,d#4,g4]@32 [c4,d#4,g#4]@15 ~ [c4,d#4,g#4]@16 [a#3,d#4,g4]@32 [c4,d#4,g#4]@15 ~ [c4,d#4,g#4]@16 [a#3,d#4,g4]@32 [c4,d#4,g#4]]/7", // D# G# D# G# D# G# D# G#
S: "[~@15 [c4,d#4,g#4]@16 [a#3,d#4,g4]@32 [c4,d#4,g#4]@30 ~@2 [a#3,d#4,g4,a#4]@31 ~ [c4,d#4,g#4]@15 ~ [c4,d#4,g#4]@16 [d#4,g4,a#4,d#5]@28 ~@2 [f4,g#4,c#5]@3]/6", // G# D# G# D# G# D# C#
T: "[~@5 [d#4,g#4,c5]@26 [d#4,g4,a#4,d#5]@29 ~ [b4,d#5,f#5]@3]/2", // G# D# B
U: "[~@5 [a#4,c#5,f#5]@4 ~@4 [g#4,c#5,f5]@4 ~@4 [g#4,c5,d#5]@4 ~@4 [g#4,c5,d#5]@2 [g4,a#4,d#5]@28 ~@2 [f4,g#4,c#5]@3]/2", // F# C# G# D# C#
V: "[~@5 [a#4,c#5,f#5]@4 ~@4 [c#5,f5]@3 ~@5 [g#4,c5,d#5]@3 ~@5 [g#4,c5,d#5]@2 [d#4,g4,a#4,d#5]@29 ~ [d#4,g#4,c5]@18 [d#4,g#4,c5]@16 [d#4,g4,a#4,d#5]@29 ~ [d#4,g#4,c5]@18 [d#4,g#4,c5]@16 [d#4,g4,a#4,d#5]@29 ~ [d#4,g#4,c5]@18 [d#4,g#4,c5]@16 [d#4,g4,a#4,d#5]@29 ~ [d#4,g#4,c5]@3, ~@13 g#4@5 ~@238]/8", // F# C# G# D# G# D# G# D# …
W: "[~@15 [d#4,g#4,c5]@15 ~ [d#4,g4,a#4,d#5]@31 ~ [d#4,f4,g#4,c5]@31 ~ [d#4,g4,a#4,d#5]@31 ~ [d#4,g#4,c5,d#5]@16 [d#4,g#4,c5,d#5]@15 ~ [d#4,g4,a#4,d#5]@29 ~ [f4,g#4,c#5]@3]/6", // G# D# Fm7 D# G# D# C#
X: "[~@5 [d#4,g#4,c5]@26 [d#4,g4,a#4,d#5]@29 ~ [c5,d#5,g#5]@3]/2", // G# D# G#
Y: "~@5 [a#4,d#5,g5]@4 ~@4 [g#4,c#5,f5]@3 ~@5 [g#4,c5,d#5]@3 ~@5 [g#4,c5,d#5]@2 [f#4,a#4,c#5]", // D# C# G# F#
Z: "[~@29 [g#4,c#5,f5]@34 [f#4,g#4,a#4,c#5]@29 ~ [g#4,c#5,f5]@34 [f#4,g#4,a#4,c#5]@29 ~ [g#4,c#5,f5]@34 [f#4,g#4,a#4,c#5]@29 ~ [g#4,c#5,f5]@34 [g#4,b4,c#5,e5]]/8", // C# F# C# F# C# F# C# C#m7
AA: "[~@15 [f#4,b4,c#5,d#5]@16 [g#4,b4,c#5,e5]@30 ~@2 [g#4,b4,c#5,e5]@16 [f#4,b4,c#5,d#5]@16 [g#4,b4,c#5,e5]@30 ~@2 [g#4,b4,c#5,e5]@16 [f#4,b4,c#5,d#5]@16 [g#4,b4,c#5,e5]@30 ~@2 [g#4,b4,c#5,e5]@14 ~@2 [f#4,b4,c#5,d#5]@15 ~ [g#4,b4,c#5,e5], ~@63 d#5 ~@63 d#5 ~@96]/7", // B C#m7 B C#m7 B C#m7 B C#m7
AB: "[~@15 [f#4,a4,c#5,e5]@6 ~@2 [e4,a4,c#5]@7 ~ [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]@16 [e4,a4,c#5]@16 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]@16 [e4,a4,c#5]@16 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]@16 [e4,a4,c#5]@16 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]]/8", // F#m7 A E A E A E A …
AC: "[~@15 [e4,a4,c#5]@16 [e4,f#4]@32 [e4,f#4,a4,c#5]@31 ~ [e4,g#4,b4,e5]@32 [e4,a4,c#5,e5]@16 [e4,a4,c#5,e5]@15 ~ [e4,g#4,b4,e5]@29 [f#4,a4,d5]@3 ~, ~@31 [g#4,b4]@63 ~@98]/6", // A Esus2 F#m7 E A E D G#m
AD: "[~@4 [e4,a4,c#5]@25 ~@2 [e4,g#4,b4,e5]@29 [g4,c5,e5]@4]/2", // A E C
AE: "[~@4 [g4,d5]@5 ~@3 [f#4,a4,d5]@5 ~@3 [e4,a4,c#5]@5 ~@3 [e4,a4,c#5]@2 ~ [e4,g#4,b4,e5]@28 ~ [f#4,a4,d5]@3 ~, ~@4 b4@3 ~@57]/2", // G5 D A E D
AF: "~@4 [g4,b4,d5]@4 ~@4 [f#4,d5]@3 ~@5 [e4,a4]@5 ~@7, ~@12 a4@5 ~@3 c#5@3 ~@9", // G D A5
})).s("gm_piano").gain(0.16).pan(0.3)
// bass · electric bass finger
const bass = note(`<
A@2 B@2 A@2 B@2 C@8 D E F G A@2 B@2 A@2 B@2 C@8 D E F G A@2 B@2 H I J K L K L K M N O N M N M P Q@8 R@7 S@4 T U@8 V@7
W@7 X@8 Y Z AA@8 AB@5 AC@2 AD@2 AC@2 AE
>`.pickRestart({
A: "[d1@4 ~ d1@2 ~ a1@2 b1@2 ~ d2@6 ~@2 d2@2 ~ a1@2 b1@2 ~ d1@5 ~@3 d1@3 a1 ~ b1@2 ~ d2@6 ~@2 d2@2 ~ b1@2 a1@2 ~ b1@2 ~]/2",
B: "[d1@4 ~ d1@2 ~ a1@2 b1@2 ~ d2@6 ~@2 d2@2 ~ a1@2 b1@2 ~ d1@5 ~@3 d1@2 ~ a1@2 b1 ~@2 d2@6 ~@2 d2@2 ~ b1@2 a1@2 ~ b1@2 ~]/2",
C: "[d2@6 ~@2 d1@6 ~@2 e1@7 ~ f#1@4 ~ g1@9 ~@2 g1@7 ~ a1@6 ~@2 a1@7 ~]/2", D: "d2@6 ~@2 d1@6 ~@2 e1@6 ~@2 f#1@7 ~",
E: "e1@6 ~@2 g1@7 ~ b1@6 ~@2 e2@3 b1@2 g1 ~@2", F: "f#1@7 ~ a1@7 ~ d2@7 ~ f#2@2 ~ d2@2 a1 ~@2",
G: "g1@7 ~ g1@6 ~@2 a1@6 ~@2 a1@7 ~", H: "f1@4 ~ f1 ~@2 f1@4 ~ f1 ~@2 f1@4 ~ f1 ~@2 f1@3 ~@2 a1@2 ~",
I: "a1@3 ~@2 a1 ~@2 a1@4 ~ a1 ~@2 a1@3 ~@2 a1 ~@2 a1@3 ~@2 a1 ~@2",
J: "f1@4 ~ f1 ~@2 f1@3 ~@2 f1 ~@2 f1@3 ~@2 f1 ~@2 f1@3 ~@2 a1 ~@2",
K: "a1@3 ~@2 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@3 ~@2 a1@2 ~ a1@2 ~@3 a1 ~@2",
L: "f1@2 ~@3 f1 ~@2 f1@2 ~@3 f1@2 ~ f1@3 ~@2 f1@2 ~ f1@3 ~@2 a1@2 ~",
M: "g#1@2 ~@3 g#1 ~@2 g#1@2 ~@3 g#1 ~@2 g1@3 ~@2 g1@2 ~ g1@3 ~@2 g1@2 ~",
N: "g#1@3 ~@2 g#1 ~@2 g#1@2 ~@3 g#1@2 ~ g#1@2 ~@3 g#1@2 ~ g#1@2 ~@3 g#1@2 ~",
O: "g#1@2 ~@3 g#1@2 ~ g#1@2 ~@3 g#1@2 ~ g1@3 ~@2 g1 ~@2 g1@2 ~@3 g1@2 ~",
P: "g#1@3 ~@2 g#1 ~@2 g#1@3 ~@2 g#1 ~@2 a#1@3 ~@2 a#1@2 ~ a#1@2 ~@3 a#1 ~@2",
Q: "[d#2@6 ~ d#1@7 ~ f1@6 ~@2 g1@6 ~@2 g#1@7 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@7 ~ f1@6 ~@2 g1@6 ~@2 g#1@7 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@7 ~ f1@6 ~@2 g1@6 ~@2 g#1@7 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@7 ~ f1@6 ~@2 g1@6 ~@2 g#1@7 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2]/8",
R: "[~@7 d#1@6 ~@2 f1@6 ~@2 g1@7 ~ f1@6 ~@2 g#1@7 ~ c2@6 ~@2 f2@2 ~ c2@2 ~ g#1@2 g1@7 ~ a#1@7 ~ d#2@7 ~ g2@3 d#2@2 ~ a#1@2 g#1@6 ~@2 g#1@3 d#2@2 ~ g#2@2 a#1@4 ~@2 a#1@3 ~@2 a#1@4 ~ d#1@4 ~@2 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@5 ~@3 d#1@2 a#1 ~@2 c2@2 ~ d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 d#1@3 ~@3 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@3]/7",
S: "[~@5 d#1@2 a#1@2 ~ c2 ~@2 d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 d#1@4 ~@2 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@5 ~@3 d#1@2 a#1 ~@2 c2@2 ~ d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 d#1@3 ~@3 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@3]/4",
T: "~@5 d#1@2 a#1@2 ~ c2 ~@2 d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 d#2",
U: "[~@7 d#1@6 ~@2 f1@7 ~ g1@4 ~@2 g#1@9 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@6 ~@2 f1@7 ~ g1@4 ~@2 g#1@9 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@6 ~@2 f1@7 ~ g1@4 ~@2 g#1@9 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2@7 ~ d#1@6 ~@2 f1@7 ~ g1@4 ~@2 g#1@9 ~ g#1@7 ~ a#1@6 ~@2 a#1@7 ~ d#2]/8",
V: "[~@7 d#1@6 ~@2 f1@6 ~@2 g1@7 ~ f1@6 ~@2 g#1@7 ~ c2@6 ~@2 f2@3 c2@2 ~ g#1 ~ g1@7 ~ a#1@7 ~ d#2@7 ~ g2@2 ~ d#2@2 ~ a#1 ~ g#1@7 ~ g#1@6 ~@2 a#1@6 ~@2 a#1@7 ~ d#1@4 ~@2 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@5 ~@3 d#1@2 a#1 ~@2 c2@2 ~ d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 d#1@3 ~@3 d#1@2 a#1@2 ~ c2@2 ~ d#2@6 ~@2 d#2@2 a#1@2 ~ c2@2 ~ d#1@3]/7",
W: "[~@5 d#1@2 a#1@2 ~ c2 ~@2 d#2@6 ~@2 d#2@2 c2@2 ~ a#1@2 ~ c2@2 f#1@4 ~@2 f#1 ~ f#1@4 ~@2 f#1 ~ f#1@4 ~@2 f#1 ~ f#1@3 ~@3 a#1@2 a#1@3 ~@3 a#1 ~ a#1@4 ~@2 a#1 ~ a#1@3 ~@3 a#1 ~ a#1@3 ~@3 a#1 ~ f#1@4 ~@2 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 a#1 ~ a#1@3 ~@3 a#1@2 a#1@2 ~@4 a#1@2 a#1@3 ~@3 a#1@2 a#1@2 ~@4 a#1 ~ f#1@2 ~@4 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 a#1 ~ a#1@3 ~@3 a#1@2 a#1@2 ~@4 a#1@2 a#1@3 ~@3 a#1@2 a#1@2 ~@4 a#1 ~ f#1]/7",
X: "[~@5 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 f#1 ~ f#1@3 ~@3 a#1 ~ a#1@3 ~@2 a#1 ~@2 a#1@3 ~@2 a#1@2 ~ a#1@2 ~@3 a#1@2 ~ a#1@2 ~@3 a#1 ~@2 a1@2 ~@3 a1 ~@2 a1@2 ~@3 a1 ~@2 g#1@3 ~@2 g#1@2 ~ g#1@3 ~@2 g#1@2 ~ a1@3 ~@2 a1 ~@2 a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ g#1@3 ~@2 g#1 ~@2 g#1@2 ~@3 g#1@2 ~ a1@3 ~@2 a1 ~@2 a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1 ~@2 a1@2 ~@3 a1 ~@2 g#1@3 ~@2 g#1@2 ~ g#1@3 ~@2 g#1@2 ~ a1@3 ~@2 a1 ~@2 a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1@2 ~@3 a1@2 ~ a1]/8",
Y: "~@4 a1 ~@2 a1@2 ~@3 a1 ~@2 g#1@3 ~@2 g#1@2 ~ g#1@3 ~@2 g#1@2 ~ a1",
Z: "~@4 a1 ~@2 a1@3 ~@2 a1 ~@2 b1@3 ~@2 b1@2 ~ b1@2 ~@3 b1 ~@2 e2",
AA: "[~@7 e1@7 ~ f#1@6 ~@2 g#1@6 ~@2 a1@7 ~ a1@7 ~ b1@7 ~ b1@6 ~@2 e2@7 ~ e1@7 ~ f#1@6 ~@2 g#1@6 ~@2 a1@7 ~ a1@7 ~ b1@7 ~ b1@6 ~@2 e2@7 ~ e1@7 ~ f#1@6 ~@2 g#1@6 ~@2 a1@7 ~ a1@7 ~ b1@7 ~ b1@6 ~@2 e2@7 ~ e1@7 ~ f#1@6 ~@2 g#1@6 ~@2 a1@7 ~ a1@7 ~ b1@7 ~ b1@6 ~@2 e2]/8",
AB: "[~@7 e1@6 ~@2 f#1@6 ~@2 g#1@7 ~ f#1@6 ~@2 a1@7 ~ c#2@6 ~@2 f#2@3 c#2@2 a1 ~@2 g#1@7 ~ b1@7 ~ e2@7 ~ g#2@3 e2@2 b1@2 ~ a1@6 ~@2 a1@3 e2@2 a2@2 ~ b1@4 ~ b1@3 ~@3 b1@4 ~ e1@4 ~ e1@2 ~ b1@2 ~ c#2@2 e2@6 ~@2 e2@2 ~ b1@2 ~ c#2@2 e1@4]/5",
AC: "[~@4 e1@3 b1 ~@2 c#2@2 e2@6 ~@2 e2@2 ~ c#2@2 ~ b1@2 c#2@2 ~ e1@3 ~@2 e1@2 ~ b1@2 ~ c#2@2 e2@6 ~@2 e2@2 ~ b1@2 ~ c#2@2 e1@4]/2",
AD: "[~@4 e1@2 ~ b1@2 ~ c#2 ~ e2@6 ~@2 e2@2 ~ c#2@2 ~ b1@2 c#2@2 ~ e1@4 ~ e1@2 ~ b1@2 ~ c#2@2 e2@6 ~@2 e2@2 ~ b1@2 ~ c#2@2 e1@4]/2",
AE: "~@4 e1@2 ~ b1@2 ~ c#2 ~ e2@6 ~@2 e2@2 ~@10",
})).s("gm_electric_bass_finger").gain(0.18)
// chords · pad poly
const pad_poly = note(`<
~@8 A@2 B@6 C D E D ~@8 F@6 G@6 ~@3 H@7 I@8 J K L@8 M@4 ~@8 N@6 O@6 ~@3 P@7 Q@2 R@7 S@8 T@5 ~@8
>`.pickRestart({
A: "[~@29 [b3,d4,g4]@34 ~]/2", B: "[[d4,f#4,a4]@29 [b3,d4,g4]@34 ~]/2", C: "[d4,f#4,a4]@31 ~", D: "[d4,g4,b4]@31 ~",
E: "[f#4,a4,d5]@31 ~", // D
F: "[~@29 [b3,d4,g4]@34 [d4,f#4,a4]@29 ~ [b3,d4,g4]@34 [d4,f#4,a4]@29 ~ [b3,d4,g4]@34 [d4,f#4,a4]]/6", // G D G D G D
G: "[~@29 [b3,d4,g4]@34 [d4,f#4,a4]@31 ~ [d4,g4,b4]@31 ~ [d4,f#4,a4]@31 ~ [d4,g4,b4]@31 ~@2]/6", // G D G D G
H: "[~@31 [c4,f4,a4]@29 ~ [c4,e4,g4,a4]@34 [c4,f4,a4]@29 ~ [c4,e4,g4,a4]@34 [c4,f4,a4]@29 ~ [c4,e4,g4,a4]@34 [c4,f4,a4]]/7", // F Am7 F Am7 F Am7 F
I: "[~@29 [c4,e4,g4,a4]@34 [c4,d#4,g4]@16 [a#3,d4,g4]@16 [c4,d#4,g4]@31 ~ [c4,d#4,g4]@16 [a#3,d4,g4]@16 [c4,d#4,g4]@31 ~ [c4,d#4,g4]@16 [a#3,d4,g4]@16 [c4,d#4,g4]@31 ~ [c4,d#4,g4]]/8", // Am7 Cm Gm Cm Gm Cm Gm Cm
J: "~@15 [a#3,d4,g4]@15 ~ [c4,d#4,g4]", K: "~@15 [c4,d#4,g#4]@15 ~ [a#3,d#4,g4]",
L: "[~@31 [c4,d#4,g#4]@32 [a#3,d#4,g4]@32 [c4,d#4,g#4]@32 [a#3,d#4,g4]@32 [c4,d#4,g#4]@32 [a#3,d#4,g4]@32 [c4,d#4,g#4]@32 [a#3,d#4,g4]]/8", // G# D# G# D# G# D# G# D#
M: "[~@31 [c4,d#4,g#4]@32 [d#4,g4,a#4]@31 ~ [c4,d#4,g#4]@32 ~]/4", // G# D# G#
N: "[~@28 [c4,d#4,g#4]@34 ~ [a#3,d#4,g4]@29 [c4,d#4,g#4]@34 ~ [a#3,d#4,g4]@29 [c4,d#4,g#4]@34 ~ [a#3,d#4,g4]]/6", // G# D# G# D# G# D#
O: "[~@28 [c4,d#4,g#4]@34 ~ [a#3,d#4,g4]@32 [c4,d#4,g#4]@32 [d#4,g4,a#4]@31 ~ [c4,d#4,g#4]@32 ~]/6", // G# D# G# D# G#
P: "[~@31 [f#4,a#4,c#5]@29 [f4,g#4,a#4,c#5]@34 ~ [f#4,a#4,c#5]@29 [f4,g#4,a#4,c#5]@34 ~ [f#4,a#4,c#5]@29 [f4,g#4,a#4,c#5]@34 ~ [f#4,a#4,c#5]]/7", // F# A#m7 F# A#m7 F# A#m7 F#
Q: "[~@28 [f4,g#4,a#4,c#5]@34 ~ [e4,g#4,c#5]]/2", // A#m7 C#m
R: "[~@15 [f#4,b4,d#5]@16 [e4,g#4,c#5]@32 [e4,g#4,b4,c#5]@16 [f#4,b4,d#5]@16 [e4,g#4,c#5]@32 [e4,g#4,b4,c#5]@16 [f#4,b4,d#5]@16 [e4,g#4,b4,c#5]@31 ~ [e4,g#4,b4,c#5]@16 [f#4,b4,d#5]@15 ~ [e4,g#4,b4,c#5]]/7", // B C#m C#m7 B C#m C#m7 B C#m7 …
S: "[~@15 [f#4,a4,c#5]@16 [d#4,f#4,g#4,b4]@32 [e4,a4,c#5]@32 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]@32 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]@32 [e4,f#4,g#4,b4]@31 ~ [e4,a4,c#5]]/8", // F#m G#m7 A E A E A E …
T: "[~@31 e4@32 e4@31 ~ [e4,g#4,b4]@32 [e4,a4,c#5]@32 ~, ~@31 [f#4,g#4,b4]@63 ~@66]/5", // E A G#m7
})).s("gm_pad_poly").gain(0.09).pan(0.9)
// bass · clavinet
const bass_2 = note("<A@8 ~@12 A@8 ~@12 A@4 ~@27 B C@7 D ~@11 B C@3 D ~@27 E F@7 G>".pickRestart({
A: "d2 ~ d2 ~@2 d2 ~@2 d2 ~ d2 ~@2 d2 ~@2 d2 ~ d2 ~@2 d2 ~@2 d2 ~ d2 ~@2 d2 ~@2", B: "~@31 d#2",
C: "~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~ d#2",
D: "~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~ d#2 ~@2 d#2 ~@2 d#2 ~@2", E: "~@31 e2",
F: "~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~ e2 ~@2 e2",
G: "~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~ e2 ~@2 e2 ~@2 e2 ~ e2 ~@11",
})).s("gm_clavinet").gain(0.23).pan(0.3)
// chords · synth brass 1
const synth_brass_1 = note(`<
A B C D E B C D F ~@11 G B C D H B I D J ~@11 A B K L ~@27 M@2 N@2 O@2 N@2 P@2 ~@10 M@2 Q@2 R ~@27 S@2 T@2 U@2 V@2 W
>`.pickRestart({
A: "[f#4,a4,d5]@25 ~@4 [e4,g4] ~@2, ~@29 c5@2 ~", B: "~@5 [d4,g4,b4]@24 ~@3", C: "[f#4,a4,d5]@27 ~@2 [f4,a#4,d5]@3",
D: "~@5 [f4,a4,c5]@3 ~@5 [e4,g4,c5]@3 ~@5 [d4,g4,b4]@3 ~@5 [d4,g4,b4]@2 ~", // F C G
E: "[f#4,a4,d5]@27 ~@2 [g4,c5]@2 ~, ~@29 e4 ~@2", F: "[f#4,a4,d5]@25 ~@7", G: "[f#4,a4,d5]@25 ~@4 [e4,g4,c5]@2 ~",
H: "[f#4,a4,d5]@28 ~ [e4,g4,c5]@2 ~", I: "[f#4,a4,d5]@26 ~@3 [f4,a#4,d5]@3", J: "[f#4,a4,d5]@27 ~@5",
K: "[f#4,a4,d5]@24 ~@5 [b4,d5,g5]@3", L: "~@5 [a4,d5,f#5]@3 ~@5 [g4,c5,e5]@3 ~@5 [g4,b4,d5]@8 ~@3",
M: "[~@31 [a#4,d#5,g5]@28 ~@2 [g#4,c#5,f5]@2 ~]/2", N: "[~@5 [g#4,c5,d#5]@25 ~ [a#4,d#5,g5]@27 ~@3 [b4,d#5,f#5]@3]/2",
O: "[~@5 [a#4,c#5,f#5]@3 ~@5 [g#4,c#5,f5]@4 ~@4 [g#4,c5,d#5]@3 ~@5 [g#4,c5,d#5]@2 ~@2 g5@27 ~ [g#4,c#5,f5]@3, ~@31 [a#4,d#5]@26 ~@7, ~@33 c#5 ~@30]/2", // F# C# G# C# D#5
P: "[~@5 [a#4,c#5,f#5]@3 ~@5 [g#4,c#5,f5]@3 ~@5 [g#4,c5,d#5]@3 ~@5 [g#4,c5,d#5]@2 [a#4,d#5,g5]@26 ~@7]/2", // F# C# G# D#
Q: "[~@5 [g#4,c5,d#5]@25 ~ [a#4,d#5,g5]@24 ~@6 [d#5,g#5,c6]@3]/2", // G# D# G#
R: "~@5 [d#5,g5,a#5]@3 ~@5 [c#5,f5,g#5]@3 ~@5 [c5,d#5,g#5]@8 ~@3", // D# C# G#
S: "[~@31 [b4,e5,g#5]@27 ~@2 [a4,d5,f#5,a5]@2 ~@2]/2", // E D
T: "[~@4 [c#5,e5,a5]@24 ~@3 [b4,e5,g#5]@28 ~ [c5,e5,g5]@3 ~]/2", // A E C
U: "[~@4 [b4,d5,g5]@4 ~@4 [a4,d5,f#5]@4 ~@4 [a4,c#5,e5]@4 ~@4 [a4,c#5,e5]@2 ~ [b4,e5,g#5]@27 ~@2 [a4,d5,f#5]@3 ~]/2", // G D A E D
V: "[~@4 [a4,c#5,e5]@23 ~@4 [b4,e5,g#5]@28 ~ [c5,e5,g5]@3 ~]/2", // A E C
W: "~@4 [b4,d5,g5]@3 ~@5 [a4,d5,f#5]@4 ~@4 [a4,c#5,e5]@4 ~@8", // G D A
})).s("gm_synth_brass_1").gain(0.2).pan(0.6)
// other · pad sweep
const pad_sweep = note("<A@4 B@8 ~@4 A@8 B@8 ~@4 A@4 C@4 ~@27 D@4 E@8 ~@4 F@8 ~@28 G@8 ~>".pickRestart({
A: "[d5@127 ~]/4", B: "d5/8", C: "[d5@119 ~@9]/4", D: "[~@31 d#5@97]/4", E: "[~@31 d#5@209 ~@16]/8",
F: "[~@31 d#5@126 ~@2 d#5@97]/8", G: "[~@31 e5@127 ~ e5@97]/8",
})).s("gm_pad_sweep").gain(0.16).pan(0.8)
// chords · lead 8 bass lead
const lead_8_bass_lead = note("<~@53 A@2 B ~ A@2 ~@46 C@2 D@2 E ~@22>".pickRestart({
A: "[~@5 [d#5,a#5]@4 ~ [d#5,g#5] ~@5 [d#5,g5]@5 c5@2 ~@3 [a#4,d#5]@9 ~@29, ~@21 f5 ~@42]/2", // D#5 G#5 D# D#5
B: "~@2 [d#5,a#5] ~@5 [d#5,a#5]@2 [c5,g5]@5 ~@3 [a#4,d#5] ~@5 [a#4,d#5]@2 [c5,f5]@6", // D#5 C5 D#5 F5
C: "[~@4 [e5,b5]@4 ~@2 [e5,a5] ~@4 [e5,g#5]@5 c#5@2 ~@4 [b4,e5]@10 ~@28, ~@20 f#5 ~@43]/2", // E5 A5 E E5
D: "[~@2 [e5,b5] ~@4 [e5,b5]@2 ~ [c#5,g#5]@6 ~@2 [b4,e5] ~@4 [b4,e5]@2 ~@2 f#5@9 ~@28, ~@26 c#5@9 ~@29]/2", // E5 C#5 E5
E: "~@4 [e5,b5]@4 ~@2 [e5,a5] ~@4 [e5,g#5]@5 [c#5,f#5] ~@5 [b4,e5]@6", // E5 A5 E F#5 E5
})).s("gm_lead_8_bass_lead").gain(0.11).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
[x!4]!60
[x ~@6 x ~@7 x ~@7 x ~@7 x]
[~@7 x ~@7 x ~@7 x ~@7 x]!70
[~@7 x ~@7 x ~@4 x ~@11]
>`).gain(0.2)
// drums · snare
const snare = s("sd").struct("<A@3 B A@4 C A@10 D A@7 B A@11 E F@3 G F@7 H F@7 I F@19 J F@15 K F@35 L>".pickRestart({
A: "~ x ~ x", B: "~@8 x ~@15 x ~@4 x ~@2", C: "~@8 x ~@14 x!2 ~@7", D: "~@4 x ~@4 x ~@2 x!2 ~@2",
E: "~@2 x ~@5 x ~ x ~@13 x ~ x ~@2 x ~@2", F: "~@7 x ~@15 x ~@8", G: "~@8 x ~@9 x ~@5 x ~@4 x ~@2",
H: "~@8 x ~@15 x ~ x ~@2 x ~@2", I: "~@8 x ~@9 x ~@4 x!2 ~@7", J: "~@7 x ~@15 x ~@2 x ~@2 x ~@2",
K: "~@7 x ~@15 x ~@4 x!2 ~@2", L: "~@7 x ~@12 x ~@11",
})).gain(0.2)
// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@30 B ~@3 C ~@11 D ~@3 E ~@11 F ~@3 C ~@15 G ~@19 F ~@11 H ~@7 I>".pickRestart({
A: "~@13 x ~@5 x ~ x ~@2 x ~@7", B: "~@13 x ~@18", C: "~@29 x ~@2", D: "~@28 x!2 ~@2", E: "~@3 x",
F: "~@26 x ~@2 x ~@2", G: "~@18 x ~@2 x ~ x ~@8", H: "~@7 x", I: "~@5 x ~@2",
})).gain(0.18)
// drums · hihat
const hihat = s("hh").struct(`<
[x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2]!60
[x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x]
[~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x]!60
[~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x]!10
[~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@11]
>`).gain(0.1)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@8 A ~@10 B ~@19 C ~@15 D ~@3 E ~@11 F ~@19 G ~@11 H ~@3 I ~@3 J ~@11 K ~@7 L
>`.pickRestart({
A: "~@8 x ~@14 x ~@8", B: "~@13 x ~@2", C: "~@13 x ~@18", D: "~@3 x", E: "~@23 x ~@8",
F: "~@7 x ~@2 x ~@7 x ~@2 x ~@10", G: "~@22 x!2 ~@8", H: "~@13 x!2 ~", I: "~@23 x ~@2 x ~@5",
J: "~@7 x ~@10 x ~ x ~@11", K: "~@10 x!2 ~ x ~@2", L: "~@9 x!2 ~ x ~@4 x!2 ~ x ~@11",
})).gain(0.18)
// drums · high tom
const high_tom = s("ht").struct(`<
~@8 A ~@10 B ~@23 C ~@11 D ~@15 E ~@3 C ~@27 F ~@3 G ~@3 E ~@11 H ~@7 I
>`.pickRestart({
A: "~@2 x!2 ~@28", B: "~@3 x", C: "~@7 x", D: "~@9 x ~@6", E: "~ x ~@14", F: "~@17 x!2 ~ x ~@11", G: "~@23 x ~@8",
H: "~@17 x!2 ~@13", I: "~ x!2 ~ x ~@27",
})).gain(0.18)
// drums · crash
const crash = s("cr").struct(`<
A ~@3 A ~@3 B A ~@10 A ~@7 A ~@11 C ~@3 C ~@3 C ~@3 C ~ C ~ C ~@2 B C ~@11 C ~ C ~ C ~@3 C ~@2 C ~@8 C ~@3 C ~@3 C ~@3
C ~ C ~ C ~@3 C ~ C ~@9 C ~@3 C ~@2 D
>`.pickRestart({
A: "~ x ~@2", B: "~@3 x", C: "~@7 x ~@24", D: "~@5 x ~@2",
})).gain(0.16)
stack(
// … 3 more lines
More by Battisti
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.