0:00/0:00
// Il giocatore di biliardo — Angelo Branduardi
// 119 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 piano (copy of ch 5 choir aahs)
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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 · electric bass finger
const bass = note(`<
A B C D A B C D A B C D A B C D A B C D A B C D A E D A B C F D@2 G H I G H I G H I G J@2 K L M N M O P Q R S P Q R S
P Q R S P Q R S P T O P Q R U I D V W X V W X V W X V Y@2 Z@2 AA AB AA AC AD F AE AF AD F AE AF AD F AE AF AD F AE
AG@3
>`.pickRestart({
A: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", B: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
C: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", D: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
E: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", F: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ a1 ~ a1 ~ a1 ~ a1 ~",
G: "a1 ~ a1 ~ a1 ~ e2 ~ e2 ~ e2 ~ b1 ~ b1 ~", H: "b1 ~ b1 ~ b1 ~ b1 ~ c#2 ~ c#2 ~ c#2 ~ a1 ~",
I: "a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", J: "[b1 ~ b1 ~ b1 ~ b1 ~ c#2@6 a1@6 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~]/2",
K: "b0@4 b1@11 ~", L: "f#2@3 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", M: "a1 ~ a1 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
N: "e2 ~ e2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", O: "e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
P: "b1 ~ b1 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", Q: "c#2 ~ c#2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
R: "a1 ~ a1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", S: "e1 ~ e1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
T: "c#2 ~ c#2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", U: "e1 ~ e1 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ a1 ~ a1 ~",
V: "b1 ~ b1 ~ a1 ~ a1 ~ a1 ~ e2 ~ e2 ~ e2 ~", W: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ c#2 ~ c#2 ~",
X: "c#2 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1 ~", Y: "[b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ c#2@6 a1@6 b1 ~ b1 ~ b1 ~ b1 ~]/2",
Z: "[b1 ~ b1 ~ b0@4 b1@11 ~ f#2@3 ~ a1 ~ a1 ~ a1 ~ a1 ~]/2", AA: "a1 ~ a1 ~ a1 ~ a1 ~ e2 ~ e2 ~ e2 ~ e2 ~",
AB: "e2 ~ e2 ~ e2 ~ e2 ~ a1 ~ a1 ~ a1 ~ a1 ~", AC: "e2 ~ e2 ~ e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1 ~",
AD: "b1 ~ b1 ~ b1 ~ b1 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", AE: "a1 ~ a1 ~ a1 ~ a1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
AF: "e1 ~ e1 ~ e1 ~ e1 ~ b1 ~ b1 ~ b1 ~ b1 ~", AG: "[e1 ~ e1 ~ e1 ~ e1 ~ b1 ~ b1 ~@3 b1@26 ~@8]/3",
})).s("gm_electric_bass_finger").gain(0.43)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
A@2 B@2 A@2 B@2 C D E F@3 G H I D E F@3 G H J@4 K@3 L@2 M@9 N@3 O@8 P Q@4 R@3 S@2 T@8 U@6 V@9 W X Y@8 Z@8 AA@8
>`.pickRestart({
A: "[[c#5,g#5]@2 [a4,a5] c#5, e5]/2", B: "[g#5@12 f#5@2 e5@2 [f#4,d#5]@15 ~, b4, e5@7 ~@9]/2",
C: "[c#5,e5]@7 ~@9, g#4", D: "a4@2 b4 a4", E: "g#4@2 f#4 e4", F: "[d#4@24 e4@8 a3@15 ~, ~ c#4]/3", G: "[b3,e4]@15 ~",
H: "[d#4,f#4,b4]", I: "g#4, e4@7 ~, c#5@3 ~", J: "[c#4 ~ [f#3,d#4] [g#3,c#4,e4], [g#3,e4] ~, ~@16 b3@33 ~@15]/4",
K: "[a4@3 ~ b3@4 [c#4,g#4]@2 [a3,c#4,a4]@2, [a3,e4]@2 g#3@3 ~, ~@3 g#4@5 ~@4]/3", L: "[b3,d#4,b4]/2",
M: "[[e3,a3,c#4] [c#4,e4] [f#3,b3,d#4]@2 [g#3,c#4,e4] [a3,c#4,e4] [f#3,b3]@2, ~@3 g#3@2 ~@13 d#4@5 ~]/3", // A C#m B C#m A B5
N: "[[e3,a3,c#4]@6 [c#4,e4]@6 [f#3,b3,d#4]@12 [g#3,c#4,e4]@6 [a3,c#4,e4]@6 [b3,d#4,f#4]@11 ~, ~@3 g#3@2 ~@19]/3", // A C#m B C#m A B
O: "[[b3,e4,g#4]@2 ~@2 [b3,d#4,f#4]@16 [c#4,e4,a4]@16 [g#3,b3,e4]@16 [c#4,e4,a4]@16 [g#3,b3,e4]@16 ~@2 b4@14 [c#5,e5]@7 ~@9 a4@8 b4@4, ~@21 [b3,d#4,f#4]@4 g#4@4 ~@3, ~@85 f#5@14 ~@29]/8", // E B A E A E C#m B
P: "a4 g#4@2 f#4", Q: "[e4@4 d#4@24 e4@8 a3@15 ~ [b3,e4]@12, ~@7 c#4@6 ~@3]/4",
R: "[~ [d#4,f#4,b4]@4 [c#5,g#5]@4 [a4,a5]@2 c#5, ~@5 e5@7]/3", // B C#5 A
S: "[a5@2 g#5@6 f#5 e5 [f#4,d#5]@6, ~ b4@7, ~@2 e5@7 ~@7]/2", // D#m
T: "[~@2 [g#4,e5]@8 ~@2 a5 g#5 f#5@2 g#5@2 [g#4,e5]@8 [f#4,d#5]@8 c#4@8 ~@8 [f#3,d#4]@8 [g#3,c#4,e4]@6, ~@4 c#5@24 b4@40 ~@16 b3@33 ~@11, ~ g#5@5 ~@26, ~@5 e4@4 ~@8 [g#3,e4]@8 ~@7]/8", // C#m D#m C#m
U: "[~@2 a4@6 ~@2 b3@8 [c#4,g#4]@4 [a3,c#4,a4]@4 [b3,d#4,b4]@16 [e3,a3,c#4]@3 [c#4,e4]@3, ~@2 [a3,e4]@8 g#3@12 ~@23 g#3@2 ~, ~@4 g#4@5 ~@15]/6", // C#5 A B A C#m A5
V: "[[f#3,b3,d#4]@2 [g#3,c#4,e4] [a3,c#4,e4] [f#3,b3]@2 [e3,a3,c#4] [c#4,e4], ~@12 d#4@5 ~@4 g#3@2 ~]/3", // B C#m A B5 A C#m
W: "[f#3,b3,d#4]@3 [g#3,c#4,e4]", X: "~ [a3,c#4,e4]@3 [b3,d#4,f#4]@4",
Y: "[~@2 [b3,g#4] ~ [d#4,f#4,b4]@8 [c#4,e4,a4]@8 [g#3,b3,e4]@8 [c#4,e4,a4]@8 [g#3,b3,e4]@8 ~ b4@7 [c#5,g#5]@8 [a4,a5]@4, ~@4 e4 ~@83 [b3,d#4,f#4]@16 ~@24, ~@89 f#5@14 ~ e5@24]/8", // E B A E A E C#5 A …
Z: "[~@4 a5@4 g#5@12 f#5@2 e5@2 [f#4,d#5]@15 ~ [g#4,e5]@16 ~@4 a5@2 g#5@2 f#5@4 g#5@4 [g#4,e5]@16 [f#4,d#5]@16 [c#5,g#5]@16 [a4,a5]@8, c#5 b4@4 c#5@3 b4@5 ~@3, ~@4 e5@7 ~@9 g#5@10 ~@22 e5@12, ~@7 e4@2 ~@7]/8", // D#m C#m D#m C#5 A
AA: "[~@4 a5@4 g#5@12 f#5@2 e5@2 [f#4,d#5]@15 ~ [g#4,e5]@16 ~@4 a5@2 g#5@2 f#5@4 g#5@4 [g#4,e5]@16 [f#4,d#5]@32 ~@8, c#5@8 b4@32 c#5@24 b4@57 ~@7, ~@4 e5@7 ~@9 g#5@10 ~@34, ~@7 e4@2 ~@7]/8", // D#m C#m D#m
})).s("gm_string_ensemble_1").gain(0.22).pan(0.6)
// other · brass section
const brass_section = note("<~@38 A B@2 C ~@40 D E F ~@27>".pickRestart({
A: "~@12 [a4,a5] ~ [b4,b5] ~", // A B
B: "[[c#5,c#6]@2 [b4,b5] ~ [a4,a5] ~ [b4,b5]@2 [a4,a5] ~ [g#4,g#5] ~ [f#4,f#5]@6 ~@2 [f#4,f#5] ~ [g#4,g#5] ~ [e4,e5]@2 [d#4,d#5] ~ [c#4,c#5] ~ [c#4,c#5]@2]/2", // C# B A B A G# F# G# …
C: "[d#4,d#5] ~ [e4,e5] ~ [f#4,f#5]@7 ~@5", // D# E F#
D: "[a4,a5] ~ [b4,b5] ~ [c#5,c#6]@2 [b4,b5] ~ [a4,a5] ~ [b4,b5]@2 [a4,a5] ~ [g#4,g#5] ~", // A B C# B A B A G#
E: "[f#4,f#5]@6 ~@2 [f#4,f#5] ~ [g#4,g#5] ~ [e4,e5]@2 [d#4,d#5] ~", // F# G# E D#
F: "[c#4,c#5] ~ [c#4,c#5]@2 [d#4,d#5] ~ [e4,e5] ~ [f#4,f#5]@7 ~", // C# D# E F#
})).s("gm_brass_section").gain(0.48).pan(0.4)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
A B C D A B C D A B C D A B C D A B C D A B C D E C D A B C F D ~ G@9 H@3 I J K L M N O@8 P@8 Q@8 ~ R S T R S T R S T
R U V W@2 X Y Z AA AB@8 AC@8 ~@2
>`.pickRestart({
A: "~ c#5@3, ~ g#4@6 ~, ~ g#3@5 ~@2, ~@2 c#4@5 ~", B: "~ b4@3, ~ e4@6 ~, ~ e3@5 ~@2, ~@2 b3@5 ~",
C: "~ e4@3, ~ b3@6 ~, ~ b2@5 ~@2, ~@2 e3@5 ~", D: "~ b4@3, ~ f#4@6 ~, ~ f#3@5 ~@2, ~@2 b3@5 ~",
E: "~ [g#4,c#5]@3, ~ g#3@5 ~@2, ~@2 c#4@5 ~", F: "~ [c#4,c#5] ~ [a3,a4], ~ [g#3,g#4]@3 ~ [e3,e4]@3",
G: "[[a3,c#4,e4]@4 ~@2 [c#4,e4,g#4]@4 ~@2 [b3,d#4,f#4]@7 ~@5 [c#4,e4,g#4]@4 ~@2 [a3,c#4,e4]@4 ~@2 [b3,d#4,f#4]@6 ~@6]/3", // A C#m B C#m A B
H: "[[a3,c#4,e4]@4 ~@2 [c#4,e4,g#4]@4 ~@2 [b3,d#4,f#4]@7 ~@5 [e4,g#4,c#5]@4 ~@2 [c#4,e4,a4]@4 ~@2 [d#4,f#4,b4]@6 ~@6]/3", // A C#m B C#m A B
I: "[e4,g#4,b4] ~ [d#4,f#4,b4]@6", J: "~@2 [e3,e4] [b3,b4]",
K: "[e4,e5]@3 ~@3 [b2,b3] ~ [e3,e4]@2 [b2,b3]@2 [f#3,f#4]@2 [e3,e4]@2", L: "[b2,b3]@3 ~@5 [e3,e4]@4 [b3,b4]@4",
M: "[e4,e5]@3 ~@3 [b2,b3]@2 [e3,e4]@2 [b2,b3]@2 [f#3,f#4]@2 [e3,e4]@2", // E B E B F# E
N: "[b2,b3]@3 ~@3 [f#3,f#4]@2 [b3,b4]@2 [f#3,f#4]@2 [e4,e5]@2 [d#4,d#5]@2", // B F# B F# E D#
O: "[[c#4,c#5] [b3,b4] ~@2 c#5@6 ~@2 b4@6 ~@2 e4@6 ~@2 b4@6 ~@2 c#5@6 ~@2 b4@6 ~@2 e4@6 ~@2 [b3,b4]@4, ~@3 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@2 f#4@6 ~@2 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@7, ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@4 b3@5 ~@3 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 [f#3,f#4]@5, ~@4 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 f#3@5 ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@8]/8", // C# B F#
P: "[~@2 c#5@3 ~ b4@3 ~ e4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e4@3 ~ [b3,b4]@2, ~@3 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@2 f#4@6 ~@2 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@7, ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@4 b3@5 ~@3 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 [f#3,f#4]@5, ~@4 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 f#3@5 ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@8]/8", // B F#
Q: "[~@2 [g#4,c#5]@3 ~ e4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e4@3 ~ [c#4,c#5] ~ [a3,a4] ~ [b3,b4]@2, ~@3 g#3@5 ~@3 b2@5 ~@4 b3@5 ~@3 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@6 [e3,e4]@3 ~ [f#3,f#4]@5, ~@4 c#4@5 ~@2 b3@6 ~@2 f#4@6 ~@2 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@2 [g#3,g#4]@3 ~@10, ~@12 e3@5 ~@2 f#3@5 ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@16]/8", // C#5 C# A B E F# G#
R: "~@2 [a3,c#4,e4]@2 ~ [c#4,e4,g#4]@2 ~", S: "[b3,d#4,f#4]@7 ~@5 [c#4,e4,g#4]@4",
T: "~ [a3,c#4,e4]@2 ~ [b3,d#4,f#4]@3 ~", U: "[b3,d#4,f#4]@7 ~@5 [e4,g#4,c#5]@4",
V: "~ [c#4,e4,a4]@2 ~ [d#4,f#4,b4]@3 ~", W: "[~@2 [e4,g#4,b4] ~ [d#4,f#4,b4]@6 ~@4 [e3,e4]@2]/2",
X: "[b3,b4]@4 [e4,e5]@3 ~@3 [b2,b3] ~ [e3,e4]@2 [b2,b3]@2", Y: "[f#3,f#4]@2 [e3,e4]@2 [b2,b3]@3 ~@5 [e3,e4]@4",
Z: "[b3,b4]@4 [e4,e5]@3 ~@3 [b2,b3]@2 [e3,e4]@2 [b2,b3]@2", // B E B E B
AA: "[f#3,f#4]@2 [e3,e4]@2 [b2,b3]@3 ~@3 [f#3,f#4]@2 [b3,b4]@2 [f#3,f#4]@2", // F# E B F# B F#
AB: "[[e4,e5] [d#4,d#5] [c#4,c#5] [b3,b4] ~@2 c#5@6 ~@2 b4@6 ~@2 e4@6 ~@2 b4@6 ~@2 c#5@6 ~@2 b4@6 ~@2 e4@6 ~@2 [b3,b4]@2, ~@5 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@2 f#4@6 ~@2 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@5, ~@5 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@4 b3@5 ~@3 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 [f#3,f#4]@3, ~@6 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 f#3@5 ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@6]/8", // E D# C# B F#
AC: "[~@3 c#5@3 ~ b4@3 ~ e4@3 ~ b4@3 ~ c#5@3 ~ b4@3 ~ e4@3 ~ [b3,b4], ~@5 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@2 f#4@6 ~@2 g#4@6 ~@3 b3@5 ~@2 b3@6 ~@5, ~@5 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@4 b3@5 ~@3 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 [f#3,f#4]@3, ~@6 c#4@5 ~@2 e4@6 ~@3 e3@5 ~@2 f#3@5 ~@3 g#3@5 ~@3 e3@5 ~@3 b2@5 ~@6]/8", // B F#
})).s("gm_electric_guitar_clean").gain(0.42)
// other · shanai
const shanai = note(`<
A@2 B C D@2 B E F ~@6 G H ~@6 G H ~@33 I@3 J@4 K@3 ~@26 L@2 M@4 N@2 O@2 M@4 P@2 ~@2
>`.pickRestart({
A: "[e5@20 d#5@2 c#5@2 b4@3 [b4,c#5] a4@4]/2", B: "b4", C: "~@2 a4@2 g#4 a4@3, b4@3 ~",
D: "[e5@20 d#5@2 c#5@2 b4@2 c#5 b4 a4@4, g#4@7 ~@9]/2", E: "~@2 a4@2 g#4 a4@3, b4@13 ~@3", F: "g#4@7 ~",
G: "b4@2 a4@2 g#4 a4@3", H: "g#4@9 ~@7",
I: "[~@4 b4@4 a4@4 g#4@2 a4@6 e5@20 d#5@2 c#5@2 b4@3 [b4,c#5], ~@20 g#4@9 ~@19]/3", // Bsus2
J: "[a4@2 b4@8 ~@2 a4@2 g#4 a4@3 g#4@10 a4 g#4 f#4@2, ~@5 b4@3 ~@8]/4", K: "[g#4@2 e4@8 b4@2 a4@2 g#4 a4@3 g#4@6]/3",
L: "[~@4 e5@10 d#5 c#5]/2", M: "[b4@3 [b4,c#5] a4@4 b4@16 ~@4 a4@4 g#4@2 a4@6 g#4@20 a4@2 g#4@2, ~@6 b4@3 ~@7]/4",
N: "[f#4 g#4 e4@4 b4 a4]/2", O: "[g#4 a4@3 e5@10 d#5 c#5, ~@8 g#4@13 ~@11]/2", P: "[f#4 g#4 e4@4 ~@2]/2",
})).s("gm_shanai").gain(0.51)
// other · electric guitar muted
const electric_guitar_muted = note(`<
A B C D A B C D A B C D A B C D A B C D A B C D A E D A B C F D@2 G H I G H I G H I G J@2 K L M N M O P Q R S P Q R S
P Q R S P Q R S P T O P Q R U I D V W X V W X V W X V Y@2 Z@2 AA AB AA AC AD F AE AF AD F AE AF AD F AE AF AD F AE
AG@2 ~
>`.pickRestart({
A: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", B: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
E: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", F: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ a2 ~ a2 ~ a2 ~ a2 ~",
G: "a2 ~ a2 ~ a2 ~ e3 ~ e3 ~ e3 ~ b2 ~ b2 ~", H: "b2 ~ b2 ~ b2 ~ b2 ~ c#3 ~ c#3 ~ c#3 ~ a2 ~",
I: "a2 ~ a2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", J: "[b2 ~ b2 ~ b2 ~ b2 ~ c#3@6 a2@6 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~]/2",
K: "b1@4 b2@11 ~", L: "f#3@3 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", M: "a2 ~ a2 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
N: "e3 ~ e3 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", O: "e3 ~ e3 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
P: "b2 ~ b2 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", Q: "c#3 ~ c#3 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
R: "a2 ~ a2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", S: "e2 ~ e2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
T: "c#3 ~ c#3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", U: "e2 ~ e2 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ a2 ~ a2 ~",
V: "b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ e3 ~ e3 ~ e3 ~", W: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ c#3 ~ c#3 ~",
X: "c#3 ~ a2 ~ a2 ~ a2 ~ b2 ~ b2 ~ b2 ~ b2 ~", Y: "[b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ c#3@6 a2@6 b2 ~ b2 ~ b2 ~ b2 ~]/2",
Z: "[b2 ~ b2 ~ b1@4 b2@11 ~ f#3@3 ~ a2 ~ a2 ~ a2 ~ a2 ~]/2", AA: "a2 ~ a2 ~ a2 ~ a2 ~ e3 ~ e3 ~ e3 ~ e3 ~",
AB: "e3 ~ e3 ~ e3 ~ e3 ~ a2 ~ a2 ~ a2 ~ a2 ~", AC: "e3 ~ e3 ~ e3 ~ e3 ~ b2 ~ b2 ~ b2 ~ b2 ~",
AD: "b2 ~ b2 ~ b2 ~ b2 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", AE: "a2 ~ a2 ~ a2 ~ a2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
AF: "e2 ~ e2 ~ e2 ~ e2 ~ b2 ~ b2 ~ b2 ~ b2 ~", AG: "[e2 ~ e2 ~ e2 ~ e2 ~ b2 ~ b2 ~@3 b2@9 ~@9]/2",
})).s("gm_electric_guitar_muted").gain(0.25)
// chords · piccolo
const piccolo = note("<~@32 A B C D B C D E F D B C G H ~@30 I J K I J K L M K I J N O@2 ~@22>".pickRestart({
A: "~@12 [b5,a6] ~ [b5,b6] ~", // B7 B
B: "[c#6,c#7] ~ [c#6,b6] c#6 [c#6,a6] ~ [b5,b6] ~ [b5,a6] ~ [b5,g#6] ~ [b5,f#6]@2 e6 ~", // C# C#7 F#m B B7 E B5
C: "d#6 ~ e6 ~ [c#6,f#6] ~ [b5,g#6] ~ [g#5,e6]@4 g#5 ~ a5@2, ~@14 c#6 ~", // F#5 E C#m
D: "[b5,d#6] ~ [a5,e6] ~ b5@2 e6 ~ [b5,f#6] ~ [b5,g#6] ~ [b5,a6] ~ [b5,b6] ~, ~@4 f#6 ~@11", // B A5 B5 E B7 B
E: "[c#6,c#7] ~ [c#6,b6] c#6 [c#6,a6] ~ [b5,b6] ~ [b5,a6] ~ [c#6,g#6] ~ f#6@2 [c#6,e6] ~, ~@12 b5 ~@3", // C# C#7 F#m B B7 C#5 C#m
F: "[c#6,d#6] ~ [b5,e6] ~ [c#6,f#6] ~ [b5,g#6] ~ [g#5,e6]@4 g#5 ~ a5@2, ~@14 c#6 ~", // C#sus2 E5 F#5 E C#m
G: "[b5,d#6] ~ [a5,e6] ~ [b5,f#6]@4 [b5,d#6] ~ [a5,c#6] ~ [b5,d#6] ~ [d#6,f#6] ~", H: "[b5,g#6] ~@3 [b5,f#6]@12",
I: "[b5,a6] ~ [b5,b6] ~ [c#6,c#7] ~ [c#6,b6] c#6 [c#6,a6] ~ [b5,b6] ~ [b5,a6] ~ [b5,g#6] ~", // B7 B C# C#7 F#m B B7 E
J: "[b5,f#6]@2 e6 ~ d#6 ~ e6 ~ [c#6,f#6] ~ [b5,g#6] ~ [g#5,e6]@4", // B5 F#5 E C#m
K: "g#5 ~ a5@2 [b5,d#6] ~ [a5,e6] ~ b5@2 e6 ~ [b5,f#6] ~ [b5,g#6] ~, ~@2 c#6 ~@5 f#6 ~@7", // B A5 B5 E
L: "[b5,a6] ~ [b5,b6] ~ [c#6,c#7] ~ [c#6,b6] c#6 [c#6,a6] ~ [b5,b6] ~ [b5,a6] ~ [c#6,g#6] ~", // B7 B C# C#7 F#m B B7 C#5
M: "f#6@2 [c#6,e6] ~ [c#6,d#6] ~ [b5,e6] ~ [c#6,f#6] ~ [b5,g#6] ~ [g#5,e6]@4, b5 ~@15", // C#m C#sus2 E5 F#5 E C#m
N: "g#5 ~ a5@2 [b5,d#6] ~ [a5,e6] ~ [b5,f#6]@4 [b5,d#6] ~ [a5,c#6] ~, ~@2 c#6 ~@13", // B A5 B5 B A
O: "[[b5,d#6] ~ [d#6,f#6] ~ [b5,g#6] ~@3 [b5,f#6]@12 ~@12]/2", // B D#m E B5
})).s("gm_piccolo").gain(0.24).pan(0.3)
// drums · kick
const kick = s("bd").struct(`<
A@7 B A@7 C A@7 B A@8 B A@4 D E A D A@2 F G H I@4 J I@8 G I@6 H I@8 K I L I G L K I@3 G M N A O A@4 P A@7 Q A@6 C ~@2
>`.pickRestart({
A: "x!2", B: "x ~@4 x ~@2", C: "x ~@3 x ~@2 x", D: "x ~@2 x!2 ~@3", E: "x ~@3 x!2 ~ x", F: "x!2 ~@2 x ~@2 x",
G: "~ x!2 ~@3 x ~", H: "~ x ~@2", I: "~ x ~ x", J: "~@2 x ~@3 x!2", K: "~@2 x ~@4 x", L: "~@2 x ~@2 x!2 ~",
M: "~@2 x!2 ~@2 x ~", N: "~ x ~ x!2 ~@3", O: "~ x", P: "x!2 ~@2 x ~@3", Q: "~@3 x!2 ~@3",
})).gain(0.72)
// drums · clap
const clap = s("cp").struct("<~@24 [~ x ~@2] ~@42 [~ x] ~@44>").gain(0.64)
// drums · snare
const snare = s("sd").struct(`<
A@23 B A@8 C A@5 D A@4 E F G F H@4 I H@14 J I H@7 J K H@5 I H@3 L M N O A@4 E A@7 P A@7 ~@2
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@3 x ~@3 x!2 ~@2", D: "~@4 x ~@7 x!2 ~@2",
E: "~@4 x ~ x!2 ~@4 x ~@3", F: "~ x", G: "x", H: "x!2", I: "x ~ x!2 ~@4 x ~@7", J: "x ~ x!2", K: "x!2 ~@6 x ~@7",
L: "x ~@7 x ~ x!2 ~@4", M: "x ~@2 x", N: "~ x ~@2", O: "~@3 x", P: "x ~@3 x ~@2 x ~@4 x ~@3",
})).gain(0.64)
// drums · hihat
const hihat = s("hh").struct(`<
A B C D E D@2 F G B H C I J D K A L J E C D@2 F A B H D C D@3 ~@6 M ~@4 N ~ O P C Q J R S C T E@2 J D@2 P C Q D U J D
O P C J E@2 D@2 O ~ P C V W X K Y O D S Z AA N AB X L Q L AC X L J AD Q D F AB X C J X L K ~@3
>`.pickRestart({
A: "~@2 x!5 ~", B: "x ~ x!3 ~ x!2", C: "x ~ x ~ x!3 ~", D: "x!4", E: "x ~ x ~ x ~ x!2", F: "x!2 ~@2", G: "~@2 x!6",
H: "x!3 ~ x!3 ~", I: "x ~ x ~ x!4", J: "x!3 ~ x ~ x ~", K: "x!3 ~", L: "x ~ x!3 ~ x ~", M: "~@3 x", N: "~ x ~@2",
O: "x", P: "~@4 x!4", Q: "x!5 ~ x ~", R: "x!3 ~ x ~@3", S: "x ~@3 x!4", T: "x!5 ~ x!2", U: "x ~@3 x ~@3 x!3 ~ x ~@3",
V: "x!5 ~@3", W: "x ~ x!2", X: "x!3 ~ x ~ x!2", Y: "~@2 x!2", Z: "x ~@3 x ~@2 x", AA: "x ~ x!2 ~@4", AB: "~@6 x!2",
AC: "~@2 x ~@3 x!2", AD: "x ~ x ~ x ~@3 x ~@3 x!3 ~",
})).gain(0.56)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
A B C D@2 E@2 F ~ B G H I J E D A B J D H E@2 F A B G D C E@3 ~@15 C K J L ~ C M D N J E@2 ~ C K E G J E F ~ C J D O
E@2 F ~@2 P M Q L H K Q D L F ~@3 O Q K B ~ O Q J M K E H ~ O P J M Q B R ~@2
>`.pickRestart({
A: "~@7 x", B: "~ x ~@3 x ~@2", C: "~ x ~ x ~@3 x", D: "~ x ~ x ~ x ~@2", E: "~ x ~ x ~ x ~ x", F: "~ x ~@6",
G: "~@3 x ~@3 x", H: "~ x ~ x ~@4", I: "~@2 x ~@2 x!2 ~@9", J: "~@3 x ~ x ~ x", K: "~@5 x ~ x", L: "~@3 x ~@4",
M: "~@5 x ~@2", N: "~@6 x ~@2 x!2 ~@5", O: "~@3 x ~ x ~@2", P: "~ x ~@5 x", Q: "~ x ~@3 x ~ x", R: "~@3 x",
})).gain(0.32)
// drums · low tom
const low_tom = s("lt").struct("<~@45 x!2 ~@41 [~ x ~@2]!2 ~@19 [~@3 x] ~@2>").gain(0.72)
// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@14 B ~@7 C ~@42 D ~@19 E ~@2>".pickRestart({
A: "~@3 x", B: "~@5 x ~ x", C: "x", D: "~ x ~@2", E: "~@5 x!2 ~@9",
})).gain(0.56)
// … 51 more lines
More by Angelo Branduardi
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.