0:00/0:00
// Innamorato — Morandi
// 71.5 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 24, 4/4 at bar 25, 2/4 at bar 45, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 73 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71.5/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("<~@14 A@3 B@4 C@4 D E@6 F@4 G@4 H@5 I J K L M N O I J K L M N P Q R K L M N S T U V@5>".pickRestart({
A: "[~@20 c2 ~ g2@4 c2@10 g1@4 ~@2 c1@14 ~@2 c2@9 ~@3 g1 ~@3 c1@15 ~ a#1@5 ~]/3",
B: "[a#1 ~@3 a#1 ~ a#1@2 ~@2 a#1@12 ~@4 a1@9 ~@3 a1@3 ~@5 f1 ~@3 g1@4 c2@2 d2@2 f#2@11 ~ f#1 ~ f#1@17 ~ g1@11 ~ g1@15 ~ g1@4 g#1@6]/4",
C: "[~@4 g#1 ~ g#1@2 ~@2 e1@15 ~ f1@10 ~@2 c2@3 ~ f2@34 c2@8 ~@2 g1 ~ c2 ~@3 c2@15 ~ b1@9 ~@3 f1 ~@3 e1@4]/4",
D: "~@6 e1 ~ g#1@2 ~@2 a1@11 ~ a1 ~@3 g1@4",
E: "[~@8 g1@2 ~@2 f1@7 ~@3 f1 ~ f1 ~@3 f1@12 f1@4 e1@8 ~@2 e1 ~ g1@2 ~@2 a1@10 ~@2 a1@4 d1@9 ~ d1 ~ d1 ~@3 c2@11 ~ a1@2 c2@2 b1@28 ~@4 g#1@30 ~@4 a1@18]/6",
F: "[~@6 g2@4 g1@3 ~ c2@10 g1@4 ~@2 c1@14 ~@2 c2@9 ~@3 g1 ~@3 c1@15 ~ a#1@5 ~ a#1 ~@3 a#1 ~ a#1@2 ~@2 a#1@12 ~@4 a1@8 ~@2 f1 ~ a1@4 ~@2]/4",
G: "[f1 ~ f1@4 g1@3 ~ d2@4 c2@10 g1@4 ~@2 c1@14 ~@2 c2@9 ~@3 g1 ~@3 c1@15 ~ a#1@5 ~ a#1 ~@3 a#1 ~ a#1@2 ~@2 a#1@12 ~@4 a1@8 ~@4 a1@6]/4",
H: "[~@6 g1@8 f#2@11 ~ f#1 ~ f#1@17 ~ g1@11 ~ g1@15 ~ g1@4 g#1@9 ~ g#1 ~ g#1@2 ~@2 e1@15 ~ f1@10 ~@2 c2@3 ~@2 f2@33]/5",
I: "c2@8 ~@2 g1 ~ c2 ~@3 c2@15 ~", J: "b1@9 ~@3 f1 ~@3 e1@8 ~@2 e1 ~ g#1@2 ~@2",
K: "a1@11 ~ a1 ~@3 g1@9 ~@3 g1@2 ~@2", L: "f1@7 ~@3 f1 ~ f1 ~@3 f1@12 f1@4",
M: "e1@8 ~@2 e1 ~ g1@2 ~@2 a1@10 ~@2 a1@4", N: "d1@9 ~ d1 ~ d1 ~@3 c2@11 ~ a1@2 c2@2", O: "b1@6 a1@2 g1@6 a1 b1",
P: "b1@12 a1@4 g#1@3 ~ d2@4 g#2@4 g#1@4", Q: "c2@8 ~@2 g1 ~ c2 ~@3 c2@11 ~ c2@4", R: "a1@2 g1@2 f1@2 e1 e2", S: "b1",
T: "~ g#1@31", U: "~@3 a1@29", V: "[~@3 a1@23 ~@2 e2@8 a1@31 ~ a1@24 e2@8 ~ a1@31 ~ a1@3 ~@24]/5",
})).s("gm_electric_bass_finger").gain(0.62)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
~@13 A B@4 C@2 D@7 E@4 ~ F@4 G@4 H@7 I J@2 K L M@2 I J@2 K N O P Q J@2 K R ~ S@5 T
>`.pickRestart({
A: "~@13 c4@2 e4",
B: "[~@4 e4@6 a3@15 ~@9 f4@3 ~ f4@2 ~@2 e4@4 e4@3 ~ e4@4 ~@12 f4@3 ~ f4@2 ~@2 e4@4 e4@3 ~ e4@4 ~@12 e4@3 ~ e4@2 ~@2 d4@4 d4@3 ~ d4@4 ~@4 [c4,g4]@6, ~@2 b3@4 ~@24 c4@27 ~@5 c4@27 ~@5 c4@27 a3@4 ~@3, ~@40 g3@18 ~@14 g3@18 ~@14 f3@17 a2@7]/4", // C5
C: "[~@2 f4@24 ~@8 a3@3 ~ a3@16 ~@8 g4@2, ~@30 d4@25 ~@9]/2",
D: "[~@2 g3@3 ~ g3@5 ~@11 d4@4 ~@8 b4@20 ~@4 [a3,e4]@13 ~@4 d4@32 ~ [c4,f4]@13 ~@3 e4@15 ~@2 f4@12 ~@3 e4@15 ~@9 e4@4 a3@4 g3@15 ~@21, ~@14 g3@12 ~@4 e4@24 ~@3 [f2,f3]@14 ~@2 [f2,f3]@34 c3@5 ~@10 c3@17 [b2,a3]@14 ~ e3@17 ~@5 c4@28 ~@20, ~@74 g#3@33 g3@14 ~@2 [g3,c4]@16 ~ d4@12 ~@3 [g#3,d4]@16 ~ a3@8 ~@44]/7", // A5 F5 F B7 C5 G#dim
E: "[~@12 g4@15 ~@7 e4@2 d4@8 ~@12 a3@4 ~@12 a3@3 ~ [a3,d#4]@28 ~@24, ~@9 c3@5 ~@14 a2@16 d3@16 c3@16 ~@52, ~@10 g3@17 ~@3 g3@14 ~@4 a3@7 ~@9 a3@7 ~@57, ~@11 [c4,d4]@16 ~@5 c4@12 ~@8 f4@15 ~ f4@8 ~@52]/4", // Adim Csus2
F: "[~@10 g2@4 ~@8 f4@3 ~ f4@2 ~@2 e4@4 e4@3 ~ e4@4 ~@12 f4@3 ~ f4@2 ~@2 e4@3 ~ e4@3 ~ e4@4 ~@12 e4@3 ~ e4@2 ~@2 d4@3 ~ d4@3 ~ d4@4 ~@5 g4@7 f4@6 ~@2 f4@2, ~@18 c4@27 ~@5 c4@27 ~@5 c4@27 ~ c4@8 ~@10, ~@28 g3@18 ~@14 g3@18 ~@14 f3@17 a2@10 ~@9, ~@55 a3@2 ~@7]/4",
G: "[~@22 f4@3 ~ f4@2 ~@2 e4@4 e4@3 ~ e4@4 ~@12 f4@3 ~ f4@2 ~@2 e4@4 e4@3 ~ e4@4 ~@12 e4@3 ~ e4@2 ~@2 d4@4 d4@3 ~ d4@4 ~@5 g4@7 f4@10, ~@18 c4@27 ~@5 c4@27 ~@5 c4@27 ~ c4@8 ~@10, ~@28 g3@18 ~@14 g3@18 ~@14 f3@17 a2@10 ~@9, ~@55 a3@2 ~@7]/4",
H: "[~@22 a3@3 ~ a3@16 ~@16 c4@16 ~@12 b4@20 ~@5 e4@12 ~@4 [g#3,d4]@31 ~@3 f4@12 ~@3 e4@15 ~@2 f4@12 ~@3 [d4,e4]@15 ~, ~@18 d4@25 ~@3 c3@28 ~@35 [f2,f3]@14 ~@2 f2@34 ~ c4@13 ~@19 d4@12 ~@20, ~@50 c4@7 ~@53 a3@13 ~@3 f3@33 g3@14 ~@2 [g3,c4]@16 ~@16 [e3,g#3]@17, ~@54 g4@21 ~@7 e4@24 ~@52 c3@5 ~@11 c3@17 [b2,a3]@14 ~@19]/7", // G#dim Dsus2 F C5 E B7
I: "~@8 e4@4 a3@4 g3@15 ~, a3 ~@3, ~ c4@7",
J: "[~@32 g4@15 ~@7 e4@2 d4@8, ~@29 c3@5 ~@14 a2@16, ~@30 g3@17 ~@3 g3@14, ~@31 [c4,d4]@16 ~@5 c4@12]/2", // Csus2
K: "~@12 a3@4 ~@12 a3@3 ~, d3 c3, ~@4 a3@7 ~@9 a3@7 ~@5, ~@8 f4@15 ~ f4@8",
L: "~@12 g3@7 ~ g3@7 ~@5, ~@4 g3@7 ~@21, ~@4 g4@11 ~",
M: "[~@8 c4@4 d4@4 ~@4 g3@8 ~@5 f4@12 ~@3 [d4,e4]@15 ~, c3@23 ~@8 [b2,a3]@14 ~@2 [e3,g#3]@17, ~@4 g3@9 ~@3 c4@12 ~@4 d4@12 ~@20]/2", // Dsus2 B7 E
N: "~@12 g3@4 ~@8 g4@4 g#4@3 ~, ~@4 g3@7 ~@5 g#3@8 ~@8, ~@8 g4@8 ~@4 d4@11 ~", O: "f4@3 ~@5",
P: "~ f4 ~ e4 ~ d4 ~ d4, ~ c4@3 ~ b3@3 ~ a3@3 ~ g#3@3", Q: "~@8 e4@4 a3@4 g3@15 ~, ~ c4@7", R: "[a3,d#4]@7 ~",
S: "[~@4 a4@15 g#4@8 e4@8 f#4@16 ~@9 e4@6 ~@10 e4@4 a4@4 g#4@8 e4@7 ~@17 b4@8 e4@7 ~@2 [a4,e5]@17 ~@10, ~@2 e3@25 ~@25 b4@15 c#4@3 ~@2 c#4@23 ~@4 a3@22 ~@11 a3@18 ~@10, ~@2 a2@18 ~@36 e3@7 ~@3 a2@10 ~@84, ~@3 c#4@53 ~@11 e3@18 ~@16 f#4@20 ~@11 e4@12 ~@16, ~@68 a4@8 ~@24 d4@21 ~@39]/5", // A5
T: "~@5 a1@3 ~@24",
})).s("gm_electric_guitar_clean").gain(0.48)
// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@14 A@5 ~@9 B ~@3 C@4 D@4 ~@10 E F ~@5 E ~@6 E ~@4 G H ~@2>".pickRestart({
A: "[~@28 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 f3@3 ~ f3@3 ~ f3@3 ~@15 d4@4 ~@4 a3@6 ~@2 a3@3 ~@23, ~@26 c3@29 ~@3 c3@29 ~@3 a#2@29 ~@41]/5",
B: "~@6 c4 ~",
C: "[~@16 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 f3@3 ~ f3@3 ~ f3@3 ~@15 d4@4 ~@4 a3@6 ~@2 a3@3 ~@3, ~@14 c3@29 ~@3 c3@29 ~@3 a#2@29 ~@21]/4",
D: "[~@6 f4@6 ~@4 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 g3@3 ~ g3@3 ~ g3@3 ~@15 e4@4 ~@2 f3@3 ~ f3@3 ~ f3@3 ~@15 d4@4 ~@4 a3@6 ~@2 a3@3 ~@3, ~@14 c3@29 ~@3 c3@29 ~@3 a#2@29 ~@21]/4",
E: "~@3 c4 ~@4", F: "~@7 g3", G: "~@12 e3@3 ~", H: "e3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.24)
// other · timpani
const timpani = note("<~@22 A B ~@19 C D ~@13 E ~@12 F G>".pickRestart({
A: "~@10 f2 g2 f2 g2 f2 ~ g2 ~@15", B: "~@2 f2 g2 f2 [f2,g2] g2 f2 g2 f2 g2 f2 ~@20", C: "~@31 f2",
D: "g2 f2 g2 f2 g2 ~@18 f2 [f2,g2] g2 f2 g2 f2 g2 [f2,g2] f2", // Fsus2
E: "~@3 g2 f2 ~ g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 [f2,g2] g2 f2 g2 f2 g2 [f2,g2] f2", // Fsus2
F: "~@13 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 [f2,g2] g2 f2", G: "g2 f2 g2 [f2,g2] f2 g2 ~@26",
})).s("gm_timpani").gain(0.26)
// other · timpani · soft notes
const timpani_soft = note("<~@22 A B ~@20 C ~@13 D ~@12 E ~>".pickRestart({
A: "~@17 f2 g2 f2 g2 ~ f2 g2 f2 g2 f2 g2 f2 g2 f2 g2", B: "f2 g2 ~@30",
C: "~@6 f2 g2 f2 g2 ~ f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 f2 g2 ~@9", D: "f2 g2 f2 ~@29", E: "~@9 f2 g2 ~ f2 ~@19",
})).s("gm_timpani").gain(0.13)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
~@6 A@8 B@8 C@6 D E@8 ~@4 F@4 G H I J@2 K@2 L M N O P Q R S T U V W X Y Z@7
>`.pickRestart({
A: "[~@25 f3@16 e3@16 f3@16 ~@33 d3@16 g3@8 f3@16 e3@8 [d3,a3]@32 [e3,c4]@16 [d3,b3]@16 b3@32 c4@6, ~@25 c3@65 a#2@32 c3@24 ~@110, ~@73 e3@33 ~@112 e3@38]/8", // D5 C G
B: "[~@10 [e3,a3]@15 ~ f3@16 e3@16 f3@16 e3@16 [d4,a#4]@32 [g3,c4]@24 [e4,c5]@8 f#4@16 d4@16 e4@16 [b4,d5]@12 c5@4 b4@16 e5@8 d5@8 [a4,c5]@6, ~@13 c3@32 ~@32 d5@16 g4@16 g#4@16 ~@3]/8", // A5 Gm C5 C Bm Am
C: "[~@5 [d4,f4,g#4]@17 [a4,f5]@8 ~@4 g3@4 a4@8 g#4@6 d5@2 [e4,c5]@16 [a4,c5]@8 d5@8 e5@6 d5@2 c5@2, ~@15 [g4,e5]@4 e5@7 ~@13 g4@8 ~]/6", // Ddim Dm C Am C
D: "~ b4@2 f4@2 [a4,f5]@2 [g4,e5]", // Dm C
E: "[~@2 a4@4 [a4,d#5]@16 b4@17 [c#4,a4]@12 [a3,f4]@4 f3@8 e3@8 f3@8 e3@8 [d4,a#4]@16 [g3,c4]@12 ~@13, ~@44 d5@17 ~@49 [c3,e4]@64 ~@82]/8", // Adim F#m Dm Gm C5 C
F: "[~@15 d5@6 c5@2 e5@8 d5@8 [a4,c5]@8 [d4,f4,g#4]@17, ~@23 b4@16 ~@25]/4", G: "[a4,f5]@2 ~ g3, ~ [g4,e5]",
H: "a4@4 g#4@3 d5, e5@7 ~", I: "[e4,c5]", J: "[[a4,c5]@4 d5@4 e5@3 d5 c5@2 b4@2, ~ g4@2 ~]/2",
K: "[~@3 [c4,a4] c5@4 d5@5 [e4,c5] [f4,d5] [b4,g5], ~@4 f4@9 ~@3]/2", L: "[a4,g5] [e5,c6]",
M: "f5@2 e5@2 d5@2 c5 [d5,b5], a4@4 g#4@3 ~", N: "a5 g4, c5", O: "[a4,c5]@2 [g4,d5] [d5,b5]",
P: "[b4,g5]@3 [b5,d6] c6@3 [g4,e5]", Q: "[a4,f5]@2 [g4,e5] [e4,a4]", R: "~ d6 ~ d6, d5, g4 g#4",
S: "[g#4,f5]@15 ~@11 g5@2 c6@2 g6@2, ~ [g4,e5]", T: "f6 e6 d6 c6", U: "b5 a5@2 [d5,b5] [e5,c6]@4, e5@3 ~@5",
V: "e4@2 a5@2 [b4,g5]@3 [c5,a5], c5 ~", W: "[e4,c5] [d4,b4] [c4,a4] [b3,g4]", X: "f4 [a4,f5] [g4,e5] a4",
Y: "[a4,d#5]", // Adim
Z: "[~ b4@34 [c#4,a4]@16 [b3,g#4]@16 [a3,f#4]@24 ~ g#4@8 [c#4,a4]@16 [b3,g#4]@8 e4@8 f#4@15 ~ f#4@8 [g#3,e4]@8 ~ [c#4,a4]@33 ~@26, ~ d5@17 ~@114 a3@24 ~@68]/7", // F#m E D F#m E C#m F#m
})).s("gm_string_ensemble_2").gain(0.34).pan(0.7)
// other · string ensemble 1
const string_ensemble_1 = note("<~@36 A@2 B C@3 ~@31>".pickRestart({
A: "~@16 g4 ~ c5 ~ g4 ~ f5 ~@3 f5 ~@3 e5 ~", B: "~@16 f4 ~ c5 ~ f4 ~ e5 ~ f4 ~ e5 ~ f4 ~ d5 ~",
C: "[f4 ~ d5 ~ f4 ~@9 g5@8 f5@16 c6@8 d6@24 a5@9 ~@17]/3",
})).s("gm_string_ensemble_1").gain(0.68).pan(0.7)
// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@37 [~@2 e5 ~@3 e5 ~@25]!2 [~@6 d5 ~@25] ~@33>")
.s("gm_string_ensemble_1").gain(0.23).pan(0.7)
// chords · string ensemble 2
const string_ensemble_2_2 = note("<~@6 A@8 B@8 C@7 D@3 E@8 F@5 G H I J@3 K L H M N@3 O@2 P Q J@3 R S@7>".pickRestart({
A: "[~@25 c2@65 a#1@32 a1@32 f#2@32 g2@32 g#2@32 a2@6]/8",
B: "[~@10 f2@16 c2@64 [a#2,f3]@31 ~@25 [g3,c4]@8 ~@16 a3@16 c4@16 ~@12 a4@4 [e3,d4]@32 [f3,e4]@6, ~@122 a2@31 ~ f#3@32 g2@32 ~@38, ~@101 d4@8 ~@19]/8", // A#5 C5 E7 Fmaj7
C: "[~@5 [d3,g#3]@17 c4@16 [b2,a3]@8 ~@6 d4@2 a4@8 g4@8 c4@8 ~@8 e3@8 e4@4 d4@4 d3@8 c3@2, ~@92 b3@16 a3@32 f3@33 ~@51, ~@39 b3@8 a3@6 ~@3]/7", // Ddim B7
D: "[~@2 c4@4 [b3,f4]@16 [g#3,e4]@17 [a2,e3]@9]/3", // Bdim C#m A5
E: "[~@6 g2@8 c2@64 [a#2,f3]@31 ~ a2@31 ~ f4@16 e4@16 f4@16 e4@16 [a#2,f3]@31 ~ [a2,f3]@18, ~@142 [c2,g3]@65 ~@49]/8", // A#5 Dm C5
F: "[~@3 [g3,c4]@4 d4@8 a3@8 c4@8 d4@6 a4@2 [e3,d4]@16 [f3,e4]@8 [d3,g#3]@17, ~@7 f#3@16 g2@16 ~@41]/5", G: "c4",
H: "[b2,a3]@4 ~@3 d4, ~ b3", I: "a4 g4, a3",
J: "[c4@2 ~@2 e3@2 e4 d4 d3@2 ~ c4, f3@33 ~@47 c3@16, ~@2 b3@4 a3@3 ~@3]/3", K: "[b2,d4]@3 [a2,c4] [g2,b3]@4",
L: "[c4,g4]", M: "a4 e4, a3", N: "[c4@4 ~@4 e3@4 a3@3 ~ d3@4 ~@2 c4@2, f3@33 ~@47 c3@16, ~@4 b3@8 e4@2 ~ d4@2 ~@7]/3",
O: "[[b2,d4]@12 [a2,c4]@4 ~@9 a#4@2 ~@5 f4@16 e4@16, ~ g#2 c3@2, ~@16 g#3@2 b3@2 d4@2 f4@2 g#4@2 ~ b4@2 d5@2 e5@2 ~@31, ~@17 a#3@2 c4@2 e4@2 g4@2 ~@3 c5@2 d#5@2 ~@32]/2", // Bm Am
P: "[a3,c5]@8 [g3,b4]@8 [f3,a4]@8 [e3,g#4]@7 ~", Q: "[a3,e4]@16 d4@8 c4@7 ~, ~ g3", R: "[b3,f4]",
S: "[~ [g#3,e4]@34 ~@16 [b3,g#4]@16 d3@24 ~ b3@8 ~@24 c#4@8 d3@24 [e2,b2]@8 ~ [e2,a2]@32 ~@27, ~@35 a2@60 ~@5 a2@57 ~@67, ~@35 e3@32 ~@33 e3@33 ~@91]/7", // C#m E E5 A5
})).s("gm_string_ensemble_2").gain(0.33).pan(0.3)
// chords · piano
const piano = note("<A@6 B@8 C@6 D@8 E@4 F@8 G@5 H I J K L M N H I J K L M O P Q R K L M S@8>".pickRestart({
A: "[~@52 d4@4 ~@20 g3@4 ~@6 [c3,g3]@2 ~@20 g3@4 c4@4 ~@2 g2@2 ~@21 g3@4 ~@6 g3@2 ~@28 f3@4 ~@4 a3@3, ~@12 c2@16 c2@16 c2@16 c2@17 ~@19, ~@24 [c4,f4]@8 [c4,f4]@7 ~ e4@16 ~@16 e4@12 d4@4 ~@28 d4@4 ~@16 e4@13 d4@4 ~@4 f3@8 f3@8 f3@8 ~@11, ~@28 g3@8 g3@8 g3@12 ~@4 g3@8 g3@8 ~@4 g3@5 ~@7 g3@8 g3@8 ~@16 g3@8 g3@8 ~@7 g3@4 ~@2 a#2@32 [a2,c4,g4]@7, ~@40 c4@8 c4@8 [c4,f4]@8 [c4,f4]@8 c4@10 c4@5 ~ [c4,f4]@8 [c4,f4]@7 ~ [c4,e4]@9 ~@7 [c4,f4]@8 [c4,f4]@8 c4@8 ~ c4@7 ~ [c4,e4]@8 [c4,e4]@8 [a#3,d4]@8 [a#3,d4]@8 ~@7]/6", // C5 F5 Am7 F5 C F5 C A#
B: "[~@13 a3@3 f#2 g2@4 g1@4 ~@20 g3@4 c4@4 ~@2 g2@2 ~@20 g3@4 ~@2 g3@3 ~@2 g3@2 ~@28 f3@4 [g3,c4,g4]@8 [g3,c4,f4]@6 ~@2 [a2,g3,c4,f4]@6 ~ f#2 [g2,g3,c4,e4]@8 [f#3,a3,d4]@8 [f#3,a3,d4]@6 ~@2 [f#3,a3,c4,e4]@8 [f#3,a3,c4]@7 [f2,f#2] [g3,c4,e4]@8 g3@4 g3@4 [g3,b3,d4]@6 ~@8 g2@2 [g#3,b3,e4]@8 [g#3,b3,e4]@8 ~@12 g#2@4 [a2,c4]@4 e4@2, ~ g4@16 ~@8 [c4,f4]@8 [c4,f4]@7 ~ [c4,e4]@9 ~@3 d4@4 [c4,f4]@8 [c4,f4]@8 e4@15 ~@6 f3@8 f3@8 f3@8 ~@92 [g3,b3,d4]@4 [d3,g3,b3]@4 ~@38, ~ c4@8 [c4,f4]@8 [f3,a3,c4]@8 ~@4 g3@8 g3@8 ~@16 g3@8 g3@8 ~@9 d4@4 [c4,e4]@8 [c4,e4]@8 [a#3,d4]@8 [a#3,d4]@8 ~@72 [c4,e4]@7 ~@33 [b3,d4,g#4]@8 [b3,d4,g#4]@8 ~@6, ~@5 a3@8 ~@3 f2@2 ~@7 c2@32 c2@34 ~@31 [a1,a2]@16 ~@6 f2@2 ~@8 f#2@16 ~@16 g2@15 ~@7 g2@6 ~@4 g#2@16 ~@4 g#2@8 ~@10, ~@73 c4@8 c4@7 ~@2 a#2@32 ~@14 a1@10 ~@22 f#1@18 ~@16 g1@4 ~@6 g1@4 ~@40]/8", // C5 Csus4 F C D F#m7b5 F#dim F#maj7 …
C: "[~@4 e4@6 [f2,a3]@16 ~@20 g3@4 c4@4 ~@2 g2@2 ~@20 g3@4 ~@6 g3@2 ~@28 f3@4 ~@20 a3@4 g2@4 g1@4 [f#3,a3,d4]@8 [f#3,a3,d4]@6 ~@2 [f#3,a3,c4,e4]@8 [f#3,a3,c4]@7 [f2,f#2] [g2,g3,c4,e4]@6, ~@2 [g2,b3]@8 ~@16 c2@31 ~ c2@34 ~@38 c4@8 [c4,f4]@8 ~@46, ~@26 [c4,f4]@8 [c4,f4]@7 ~ [c4,e4]@9 ~@3 d4@4 [c4,f4]@8 [c4,f4]@8 e4@15 ~@5 f3@8 f3@8 f3@8 ~@8 a3@8 a3@8 ~@4 [f3,a3,c4]@8 ~@14 f#1@18 ~@6, ~@15 g3@4 g3@4 ~@8 g3@4 g3@4 ~@3 g3 d4@2 [c4,e4]@4 [c4,e4]@4 [a#3,d4]@4 [a#3,d4]@4 [c4,g4]@4 g4@8 ~@23, ~@74 c4@8 c4@7 ~ a#2@32 a2@24 ~@8 f#2@16 ~@22]/6", // F D F#m7b5 F#dim F#maj7 C G F5 …
D: "[~@2 g3@4 g3@4 [g3,b3,d4]@6 ~@8 g2@2 [g#3,b3,e4]@8 [g#3,b3,e4]@8 ~@12 g#2@4 ~@8 d4@8 [f2,g#3,d4]@32 ~@14 c4@2 f4@2 [c4,e4]@4 ~@8 c3@4 a3@8 [a3,e4]@8 [a3,d4]@8 [g#3,d4]@7 ~ [c4,e4]@8 ~@4 a2@4 c4@8 [c4,g4]@7 ~ [a3,c4]@8 [a3,c4]@8 d4@8 ~@4 f2@4 ~@12 [e2,g3,d4]@4 [a2,g3,c4]@4, ~@2 [c4,e4]@7 ~ g1@4 ~@2 g2@4 g1@4 ~@22 g#2@8 ~@4 [f1,a3,e4]@16 ~@42 c3@16 [c4,e4]@8 ~@40 [c4,e4]@8 ~@32 b3@16 ~@4 e3@12 ~@4, ~@18 [g3,b3,d4]@4 [d3,g3,b3]@4 g#2@16 [b3,d4,g#4]@8 [b3,d4,g#4]@8 ~@4 f2@12 ~@34 [c2,f4]@10 g3@17 ~@5 [b2,f4]@16 ~@16 a2@12 ~@4 [g2,e4]@14 ~@26 [d4,g4]@8 ~@8 e4@8 ~@4, ~@32 c2@3 ~@4 e2@4 ~@8 f2@4 f2@3 ~ [e2,g3]@3 ~@2]/8", // G E Ddim C A5 D5 G#dim C …
E: "[~@8 a2@4 [c4,f4]@8 ~@4 d3@4 c4@8 [c4,e4]@8 [d#4,f4,a4]@8 [d#4,f4,a4]@8 [d#4,f4,a4]@8 ~@8 [b3,e4]@8 ~ [b3,e4]@8 e4@4 ~@8 b3@4 ~@13 e3@4 c#4@2, ~@4 [c4,g4]@8 d3@12 ~@4 [c3,f4]@16 b2@53 e3@13 ~@4 e3@8 ~@6, ~@20 [c4,f4]@8 ~@40 [d#4,f4,a4]@31 ~@2 e4@9 ~@18, ~@38 g#2@17 [a2,a3,c#4]@9, ~@93 b3@12 ~@13 b3@8 ~@2]/4", // F5 C F7 E5 C5 F5 F7 A
F: "[~@4 f2 f#2 g2@4 g1@4 ~@20 g3@4 c4@4 ~@2 g2@2 ~@20 g3@4 ~@6 g3@2 ~@28 f3@4 ~@20 a3@4 [g2,c4]@4 [g1,d4]@4 ~@20 g3@4 c4@4 ~@2 g2@2 ~@20 g3@4 ~@6 g3@2 ~@28 f3@4 ~@12 a3@4 [c4,f4]@2, ~@6 [f3,a3,c4]@8 c2@31 ~ c2@34 ~@62 c2@31 ~ c2@34 ~@48, ~@14 [c4,f4]@8 [c4,f4]@7 ~ [c4,e4]@9 ~@3 d4@4 [c4,f4]@8 [c4,f4]@8 e4@15 ~@5 f3@8 f3@8 f3@8 ~@8 a3@8 a3@8 ~@4 [f3,a3]@8 ~@4 g3@8 g3@8 ~@16 g3@8 g3@8 ~@6 g3@2 d4@4 [c4,e4]@8 [c4,e4]@8 [a#3,d4]@8 [a#3,d4]@8 [c4,g4]@8 [c4,g4]@10, ~@18 g3@8 g3@8 ~@16 g3@8 g3@8 ~@6 g3@2 d4@4 [c4,e4]@8 [c4,e4]@8 [a#3,d4]@8 [a#3,d4]@8 c4@8 [c4,f4]@8 [c4,f4]@8 ~@8 [c4,f4]@8 [c4,f4]@7 ~ [c4,e4]@9 ~@3 d4@4 [c4,f4]@8 [c4,f4]@8 e4@15 ~@5 f3@8 f3@8 f3@8 ~@8 a3@8 ~@6, ~@62 c4@8 c4@7 ~ a#2@32 [a2,g4]@24 ~@56 c4@8 c4@7 ~ a#2@32 a2@18]/8", // C5 G5 F5 F F5 C F5 F …
G: "[~@2 a3@4 [g2,g3,c4,e4]@8 [f#3,a3,d4]@8 [f#3,a3,d4]@6 ~@2 [f#3,a3,c4,e4]@8 [f#3,a3,c4]@7 [f2,f#2] [g3,c4,e4]@8 g3@4 g3@4 [g3,b3,d4]@6 ~@8 f2@2 [g#3,b3,e4]@8 [g#3,b3,e4]@8 ~@12 g#2@4 ~@8 d4@8 [f2,g#3,d4]@32 ~@2, ~@14 f#2@14 f#1@18 g2@15 ~ g1@4 ~@2 g2@4 g1@4 ~@2 e2@16 ~@4 g#2@8 ~@4 [f1,a3,e4]@17 ~@33, ~@54 [c4,e4]@7 ~@9 [g3,b3,d4]@4 [d3,g3,b3]@4 ~@16 [b3,d4,g#4]@8 [b3,d4,g#4]@8 ~@4 f2@12 ~@34]/5", // C D F#m7b5 F#dim F#maj7 C G E …
H: "~@6 c4 f4 [c4,e4]@2 ~@4 c3@2, [c2,f4]@10 g3@17 ~@5, ~ c3@2 [c4,e4], ~@5 c2@3", // C F5 C
I: "a3@8 [a3,e4]@8 [a3,d4]@8 [g#3,d4]@7 ~, [b2,f4] e2", // A5 D5 G#dim Bdim
J: "[c4,e4]@8 ~@4 a2@4 c4@8 [c4,g4]@7 ~, a2@6 ~@2 [g2,e4]@7 ~, ~ [c4,e4] ~@2", // C C5 C
K: "[a3,c4]@2 [a3,c4]@2 d4@2 ~ f2, f2 b3, ~@4 f2@3 ~, ~@3 [d4,g4]", // Am G5
L: "~@3 [e2,g3,d4] [a2,g3,c4]@2 ~ a2, [e2,g3]@3 ~@5, ~ e3@3 ~@4, ~ e4 ~ [c4,g4]", // Em7 Am7 Em C5
M: "[c4,f4]@2 ~ d3 c4@2 [c4,e4]@2, d3@3 ~ [c3,f4]@4, ~ [c4,f4] ~@2", // F5 C F5
N: "[g3,d4]@2 ~ [a2,c4] ~@3 g4, b2@15 ~ [g2,b3]@9 ~@7, ~@4 g3@5 ~ g3@6, ~@8 d4@7 ~@9 d4@8", // G5 Am G
O: "[g3,d4]@2 ~ [a2,c4] ~@3 g#1, b2@15 ~ [c4,d4]@8 [c4,d4]@8, ~@8 [g3,d4]@7 ~ g#3@16, ~@5 g#2@3", // G5 Am Csus2 G5
P: "[c2,f4]@4 ~@2 c4 f4 [c4,e4]@2 ~@4 c3@2, ~ c3@2 [c4,e4], ~@10 g3@17 ~@5, ~@5 c2@3", // F5 C
Q: "[a2,a3,c4,f4]@8 [g2,g3,b3,e4]@8 [f2,f3,a3,d4]@8 [e2,e3,g#3,c4]@7 ~", // F Em Dm Eaug
R: "~@12 a2@4 c4@8 [c4,g4]@7 ~, ~@4 [c4,e4]@4 [g2,e4]@7 ~", // C5 C
S: "[[d#4,f4,a4]@8 [d#4,f4,a4]@8 [d#4,f4,a4]@8 ~@9 [b3,e4]@8 [b3,e4]@8 ~ e4@4 ~@9 b3@4 [c#4,e4,a4]@8 [c#4,e4,a4]@8 e4@8 e4@7 ~ [a3,d4,f#4]@16 [a3,d4,f#4]@9 ~@4 a2@4 [c#4,e4,a4]@8 [c#4,e4,a4]@8 [b3,e4]@8 [g#3,b3,e4]@8 [a3,d4,f#4]@24 ~ [e2,g#3,b3,e4]@7 ~@23 a2 e3 ~@4 e3 a2!2 ~ a2@2 ~@25, b2@54 e3@14 ~@139 a1@22 a1 ~@26, ~@25 [d#4,f4,a4]@32 ~ b4@9 ~@81 g#4@16 ~@34 e4@33 ~@25, ~@33 g#2@34 a2@32 a2@25 ~@8 a2@32 a2@32 [a2,e3]@11 a2 e3 a2 e3 a2 e3 a2 e3 a2 e3 a2 e3@2 a2 e3 a2 e3 a2@2 e3@2 e3@3 ~@25, ~@50 b3@12 ~@21 [b3,g#4]@15 ~@26 [b3,e4,g#4]@9 ~@64 [b3,c#4]@34 ~@25]/8", // F7 E5 A D A E5 E D …
})).s("gm_piano").gain(0.64)
// other · sitar
const sitar = note(`<
~@9 A B ~@3 C@2 D E@2 F@3 G ~@2 H I J K L ~@2 M N O P M N O Q R S@2 T ~@3 U V W X Y ~ Z AA V W X AB ~ AC AD V W X AE ~
AF@2 AG AH@2 ~
>`.pickRestart({
A: "~@13 g5 ~@2", B: "~ f5 ~@14", C: "[~@15 g3@2 f4@2 g3 ~ e4 ~ e4 ~@7 g3]/2",
D: "~@2 f4@3 ~ g3@2 ~@2 e4@2 ~@2 e4@2 ~@14 f3@2",
E: "[~@2 e4@3 ~ f3@2 ~@2 d4@2 ~@14 g4@4 c4@4 f4@4 ~@4 c4@3 ~@5 c4@2 ~@12]/2",
F: "[~@30 [g3,g4]@4 ~@8 [g3,d4]@4 ~@16 e4@4 b4@3 ~@21 e4 ~@5, ~@62 b3 ~@33]/3", G: "~@5 f4 ~@10",
H: "~@16 c4@4 e4@3 ~ e4@4 c4@4", I: "~@4 c4@4 ~@12 a3@3 ~@5 b3@3 ~", J: "~@4 e4@3 ~@5 g4 ~@19",
K: "a2@2 ~@2 b2@2 ~@2 c3 ~@7 a3@2 ~@2 f4 ~@3 a3 ~@7", L: "a3 ~@3 f4@2 ~@2 a3 ~@3 d#4 ~@19",
M: "~@9 g3@2 f4@2 g3 ~ e4", N: "~@2 e4@2 ~@14 g3@3 ~ f4@3 ~ g3@2 ~@2 e4@2",
O: "~@2 e4@2 ~@14 f3@3 ~ e4@3 ~ f3@2 ~@2 d4@2", P: "~@7 g4@2 ~@2 f4@2 ~@3", Q: "~@7 g4@2 c4@2 f4@2 ~@2 c4",
R: "~@3 c4 ~@12", S: "[~@18 [g3,g4]@4 ~@8 [g3,d4]@4 ~@16 e4@4 b4@3 ~@7, ~@50 b3 ~@13]/2", T: "~@14 e4 ~@15 f4@2",
U: "~@4 c4@4 e4@3 ~ e4@4 c4@4 ~@4 c4@4 ~@4", V: "~@8 a3@3 ~@5 b3@3 ~@5 e4@3 ~@5",
W: "g4 ~@19 a2@2 ~@2 b2@2 ~@2 c3 ~@3", X: "~@4 a3@2 ~@2 f4 ~@3 a3 ~@7 a3 ~@3 f4@2 ~@2 a3 ~@3",
Y: "~@4 g3@2 ~@2 g4@2 ~@2 g3 ~@19", Z: "f5 ~@7 e5 ~@7 d5 ~@7 b4 ~@7", AA: "c5 ~@3 c4@4 e4@3 ~ e4@4 c4@4 ~@4 c4@4 ~@4",
AB: "~@4 g3@2 ~@2 g4@2 ~@2 g3 ~@3 g#4@2 ~@14", AC: "f3 ~@7 e3 ~@7 d3 ~@7 c3 ~@7",
AD: "~@4 c4@3 ~ e4@3 ~ e4@3 ~ c4@3 ~@5 c4@4 ~@4", AE: "d#4 ~@31",
AF: "[~@7 c#4@4 e4@4 a4@4 g#4@8 e4@8 a4@5 ~@12 b4@2 ~@6 e4@3 ~, ~@3 a4@11 ~@50]/2",
AG: "~ a4 ~@2 a4 g#4 b3 e4, ~@12 e4@7 ~@13", AH: "[b3@2 ~@2 a4@2 ~@14 b4@8 g#4@8 ~ e5 ~@26, ~@5 g#4 ~@10]/2",
})).s("gm_sitar").gain(0.3)
// other · sitar · soft notes
const sitar_soft = note("<~@10 A ~@4 B C D E ~@14 F G H E F G I ~@29 J ~@3>".pickRestart({
A: "~@5 f5 ~@3 f5 ~@6", B: "~@9 e4 ~ e4 ~@4", C: "~@18 e4@2 ~@2 e4 ~@9", D: "~@7 d4 ~ d4 ~@6", E: "~@3 c4 ~@12",
F: "~@3 e4 ~ e4 ~@10", G: "~@6 e4@2 ~@2 e4 ~@21", H: "~ d4 ~ d4 ~@5 c4@2 ~@2 c4 ~ c4", I: "~ d4 ~ d4 ~@9 c4 ~@2",
J: "~@8 c#4@5 ~@19",
})).s("gm_sitar").gain(0.1)
// other · pad warm
const pad_warm = note("<~ A@5 B@8 C@2 ~@2 D@2 ~@2 E@2 ~@6 F@4 G@4 ~@2 H ~@2 I@3 ~@2 J K ~@5 J K ~@16>".pickRestart({
A: "[~@23 d2@2 c2@27 ~@4 c2@65 a#1@32 a1@7]/5",
B: "[~@17 g1@8 c2@64 a#1@32 ~ a1@24 ~@8 f#2@32 g2@31 ~ g#2@32 a2@6]/8", C: "[~@2 g2@8 f2@11 ~@5 c2@24 ~@14]/2",
D: "[~@9 c4@4 d4@5 ~@14]/2", E: "[~@10 f1@35 ~@19]/2", F: "[~@13 g#1@32 a1@25 g1@8 c2@24 ~@26]/4",
G: "[~@6 c5@8 a#4@29 ~@3 c5@23 ~ c4@8 c2@24 ~@26, ~@39 d4@5 ~@20]/4", H: "~@3 c4@4 d4@5 ~@4",
I: "[~@14 a3@12 g3@4 f1@35 ~@31, ~@30 f3@17 ~@49]/3", J: "c4@16 d4@15 ~", K: "g4@11 e4@5 c4@15 ~",
})).s("gm_pad_warm").gain(0.35)
// other · brass section · Em
const brass_section = note("<~@59 [f4 [e4,g4]] [f4 e4 d4 c4] [b3@4 a3@19 ~@9] ~@11>").s("gm_brass_section").gain(0.45)
// other · french horn
const french_horn = note("<~@62 A B C ~ D E@6>".pickRestart({
A: "a3@2 b3 g4", B: "e4 d4 c4 b3", C: "a3@3 ~ e4@2 a3@2", D: "~ g#1@31",
E: "[~@3 e4@15 ~ b3@8 e4@8 d4@24 ~ e4@24 b3@8 e4@8 f#4@16 f#4@8 e4@7 ~@2 [a3,e4]@33 ~@26, ~@25 d4@6 ~@17]/6", // A5
})).s("gm_french_horn").gain(0.3)
// chords · distortion guitar
const distortion_guitar = note("<~@14 A@8 ~ B@8 ~ C@8 D@4 ~ E F G H I J K E F G H I J L ~@14>".pickRestart({
A: "[~@13 c2@32 a#1@16 a1@12 c2@4 d2@16 g2@16 g#2@16 ~@3]/8",
B: "[~@12 [g3,d4]@6 ~@2 [g3,d4]@4 [c3,g3]@20 b2@16 e2@12 e2@4 a2@16 g2@16 f2@31 e2@17 [a2,e3]@16 ~@12 [a2,d3]@4 [g2,c3]@16 b1@32 ~@20, ~@18 c2@5 ~@149 d2@16 ~@68]/8", // G5 C5 A5 D5 C5
C: "[~@14 c2@64 a#1@32 a1@24 c2@7 ~ c2@64 a#1@32 a2@18]/8", D: "[~@3 g2@4 f#2@16 g2@16 g#2@16 ~@9]/4",
E: "[g3,d4]@3 ~ [g3,d4]@2 [c3,g3]@10, ~@6 c2@5 ~@21", F: "b2@4 e2@3 e2", G: "a2 g2", H: "f2", I: "e2 [a2,e3]",
J: "~@3 [a2,d3] [g2,c3]@4, d2 ~", K: "b2@3 a2 g2@2 d3 g3", L: "b2@3 ~@5",
// … 141 more lines
More by Morandi
Andavo a cento all'oraC minor · 170 bpmBanane e lamponiD minor · 93 bpmC'era un ragazzoF major · 124 bpmC'era un ragazzo che come me amava i Beatles e i Rolling StonesF major · 124 bpmDove va a finire il mio affettoF♯ minor · 122 bpmIn ginocchio da teE♭ major · 108 bpmOcchi di ragazzaE♭ major · 120 bpmBanane e lamponeD minor · 92 bpm
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.