0:00/0:00
// Gente di mare — Raf
// 88 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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@2 B@3 C@2 D E@3 F@3 G@3 H@3 I@3 J@3 K@6 L@3 M@8 N@4 O@3 P@3 Q@8 R@4 ~ S@2 T U@3 V@3 W@3 X@4 Y@3
>`.pickRestart({
A: "[~@9 a3 ~@4 b3@2, ~@2 [a2,e4]@3 [g#2,e4]@3, ~@4 [a3,c#4]@2 [c#4,d#4]@4 b3@3 d#3@3, ~@5 e3@3 e3@2 ~@2 d#4@4, ~@6 a3@3 ~@2 g#3@5]/2", // A5 C#m A C#sus2
B: "[[a3,e4]@2 e4 [e3,g#4]@3 [a3,c#4]@3 ~@3, ~ [b2,c#4,a4]@2 ~@3]/3", C: "[~@37 [c#4,e4,g#4]@35 ~@24]/2",
D: "~ [a2,a3,c#4,e4]@2 [c#3,a3,c#4,e4,g#4]", // A Amaj7
E: "[[b2,b3,d#4,f#4]@29 ~ [f#2,c#4,e4]@6 [b2,b3,d#4,f#4]@17 ~ e4@18 [e3,g#3,b3,e4]@35 ~@30 a3@6 ~, ~@30 a3@4 ~@19 a2@54 [a2,c#4]@36 ~, ~@54 [a3,c#4]@53 a4@12 [d#4,a4]@24 ~, ~@113 a3@12 ~@7 e4@11 ~]/3", // B F#7 B E A D#dim
F: "[[e2,b3,e4]@36 [b2,b3,d#4,f#4]@36 ~ [c#4,e4,g#4]@35 ~@36]/3", // E5 B C#m
G: "[[a2,a3,c#4,e4]@24 [c#3,a3,c#4,e4,g#4]@12 [b2,b3,d#4,f#4]@29 ~ [f#2,c#4,e4]@6 [b2,b3,d#4,f#4]@17 ~ [a3,c#4,e4]@18 [e2,e3,e4]@28 ~@2 [e3,a3,c#4,e4]@6, ~@66 a3@4 ~@19 a2@19 [g#3,b3]@36, ~@17 e2]/3", // A Amaj7 B F#7 B A E A …
H: "[[e2,e3,g#3,b3,e4]@35 ~ [a1,a2,a3]@28 ~@2 [a3,d#4,f#4]@6 [a3,c#4,e4]@35 ~ [b1,f#4]@28 ~@2 [c#4,e4,f#4]@6, ~ [c#4,e4] ~ [b3,d#4], ~@64 a1@43 ~@29 b1@8, ~@66 a2@41 b2@36 ~]/3", // E A D#dim A B5 F#7 C#m B
I: "[[b1,b2,b3,d#4,f#4]@35 ~ [e2,e4]@28 ~@2 [c#4,e4,a4]@6 [e2,e3,b3,e4,g#4]@35 ~ [e3,e4,a4]@36, ~ [e3,b3,g#4] ~@2, ~@64 e2@8 ~@35 [a2,c#4]@37]/3", // B E A E A5 E A
J: "[[b3,d#4,f#4]@3 ~@15 [e2,e3,b3,e4,g#4]@14 ~ e3 ~@2 [b3,e4,g#4]@3 ~@15 [c#4,e4]@18, [b2,f#3]@36 ~@28 e2@7 ~ [e2,e3]@35 [a2,e3,a3]@36 ~, ~@65 e4@4 ~@75, ~@65 [c#4,a4]@2 ~@77]/3", // B E C#m B5 E A5 F#m
K: "[[b3,d#4,f#4]@6 [b3,d#4]@30 [c#2,c#3,e4,g#4,c#5]@17 ~ [f#2,f#3,a#3,c#4,f#4]@18 [b1,b2,b3,d#4,f#4,b4]@36 [e3,g#3,b3,e4]@35 ~@25 e5@12 [e2,e4,b4]@36 [b2,b3,d#4,f#4]@36 ~ [c#4,e4,g#4]@35, [b2,f#3]@36 ~@107 c#5@36 ~@109, ~@143 a2@18 e3@19 ~@108, ~@143 a4@12 [a4,d#5]@25 ~@108, ~@149 a3@30 ~@109]/6", // B C#m F# B E E5 B C#m …
L: "[~@36 [a2,a3,c#4,e4]@24 [c#3,a3,c#4,e4,g#4]@12 [b2,b3,d#4,f#4]@29 ~ [f#2,c#4,e4]@6 [b2,b3,d#4,f#4]@17 ~ [a3,c#4,e4]@18, ~@102 a3@4 ~@19 a2@18 ~]/3", // A Amaj7 B F#7 B A
M: "[[e2,e3,e4]@28 ~@2 [e3,a3,c#4,e4]@6 [e2,e3,g#3,b3,e4]@35 ~ [a1,a2,a3]@28 ~@2 [a3,d#4,f#4]@6 [a3,c#4,e4]@35 ~ [b1,f#4]@28 ~@2 [c#4,e4,f#4]@6 [b1,b2,b3,d#4,f#4]@36 [e2,e4]@28 ~@2 [c#4,e4,a4]@6 [e2,e3,b3,e4,g#4]@35 ~ [e3,e4,a4]@36 [b3,d#4,f#4]@6 ~@30 [e2,e3,b3,e4,g#4]@24, [g#3,b3]@3 ~@3 [c#4,e4]@3 ~@3 [b3,d#4]@3 ~@17, ~@28 e2@8 ~@64 a1@43 ~@29 b1@8 ~@64 e2@8 ~@35 [a2,c#4]@37 [b2,f#3]@36 ~@24, ~@102 a2@41 b2@36 ~@37 [e3,b3,g#4]@36 ~@132]/8", // E A E A D#dim A B5 F#7 …
N: "[~@6 e3@2 ~@4 [b3,e4,g#4]@6 ~@30 [c#4,e4]@36 [b3,d#4,f#4]@6 [b3,d#4]@30 [c#2,c#3,e4,g#4,c#5]@17 ~ [f#2,f#3,a#3,c#4,f#4]@18 [b1,b2,b3,d#4,f#4,b4]@36, ~@4 e2@7 ~ [e2,e3]@35 [a2,e3,a3]@36 ~ [b2,f#3]@36 ~@72, ~@5 e4@4 ~@183, ~@5 [c#4,a4]@2 ~@185]/4", // E C#m B C#m F# B E A5 …
O: "[[e2,e3]@9 ~@15 e4@6 [a2,c#4,e4,a4]@6 b3@12 b3@5 ~ b3@12 [g#2,b3]@6 c#4@18 c#4@6 [a3,c#4,e4,a4]@11 ~ b3@12 [b2,b3]@6 b3@12 b3@6, g#4 ~@3, e4@3 b3@3 ~@6 [a3,e4]@4 ~@8, b3 e3 ~@10, ~@9 e2@27 [e2,e3,e4,g#4]@18 [f#2,f#4]@18 a2@35 ~ [b1,d#4,f#4]@18 [a1,a2,d#4,f#4]@18]/3", // E A G#m A B A5 E F# …
P: "[b3@12 b3@6 ~@12 b3@6 [a1,a2,a3,c#4,e4]@18 f#3@12 f#3@5 ~ [b1,b2]@9 ~@21 [b1,b2]@6 a#3@6 a#3@6 c2@6 ~@12 [c2,a#3]@6, [g#1,g#2,e4]@18 [e2,e3,e4,g#4]@18 ~@18 [a#1,a#2,c#4,f#4]@17 ~ [d#4,f#4]@24 [d#4,f#4]@12 g4@24 ~@12, ~@72 b3@18 b3@17 ~@37, ~@27 b1@7 ~@2 [c2,c3,e4]@4 ~@2 c2@4 ~@2, ~@14 b2@3 ~@3 [c3,a#3,e4]@2 [c3,e4,g4]@2]/3", // A B C7 C#m E F# D#m C …
Q: "[[f2,f3,f4]@28 ~@2 [f3,a#3,d4,f4]@6 [f2,f3,a3,c4,f4]@35 ~ [a#1,a#2,a#3]@28 ~@2 [a#3,e4,g4]@6 [a#3,d4,f4]@35 ~ [c2,g4]@28 ~@2 [d4,f4,g4]@6 [c2,c3,c4,e4,g4]@35 ~ [f2,f4]@28 ~@2 [d4,f4,a#4]@6 [f2,f3,c4,f4,a4]@35 ~ [f3,f4,a#4]@36 [c4,e4,g4]@6 ~@30 [f2,f3,c4,f4,a4]@24, [a3,c4]@3 ~@3 [d4,f4]@3 ~@3 [c4,e4]@3 ~@17, ~@28 f2@8 ~@64 a#1@43 ~@29 c2@8 ~@64 f2@8 ~@35 [a#2,d4]@37 [c3,g3]@36 ~@24, ~@102 a#2@41 c3@36 ~@37 [f3,c4,a4]@36 ~@132]/8", // F A# F A# Edim A# C5 G7 …
R: "[~@3 f3 ~@2 [c4,f4,a4]@3 ~@15 [d4,f4]@18 [c4,e4,g4]@3 [c4,e4]@15 [d2,d3,f4,a4,d5]@9 [g2,g3,b3,d4,g4]@9 [c2,c3,c4,e4,g4,c5]@18, ~@4 f2@7 ~ [f2,f3]@35 [a#2,f3,a#3]@39 ~@106, ~@5 f4@4 ~@183, ~@5 [d4,a#4]@2 ~@77 [c3,g3]@37 ~@71]/4", // F Dm C Dm G C F A#5 …
S: "[~@39 f4@8 ~@8 c5@19 ~@22, ~@17 f2@58 ~@21, ~@25 c3@49 ~@22, ~@36 c4@11 c4@27 ~@22, ~@26 a4@11 ~@11]/2",
T: "~@7 [c2,c3,a#3,d4,f4]@17", // A#
U: "[~@2 [f2,f3,f4]@28 ~@2 [f3,a#3,d4,f4]@6 [f2,f3,a3,c4,f4]@35 ~ [a#1,a#2,a#3]@28 ~@2 [a#3,e4,g4]@6 [a#3,d4,f4]@34, ~ [a3,c4]@18 ~@18 [d4,f4]@18 ~@17, ~@15 f2@4 ~@32 a#1@21, ~@13 a#2@5]/3", // F A# F A# Edim A# Am Dm
V: "[~@2 [c2,g4]@28 ~@2 [d4,f4,g4]@6 [c2,c3,c4,e4,g4]@35 ~ [f2,f4]@28 ~@2 [d4,f4,a#4]@6 ~ a4@33, ~ [c3,c4,e4]@18 ~@18 [f3,c4,a4]@18 ~@17, ~@15 c2@4 ~@32 f2@4 [f2,f3,c4,f4]@17]/3", // C5 G7 C F A# C F F5
W: "[~@2 [a#2,f3,f4,a#4]@36 ~ g4@5 ~@31 [f4,a4]@27 ~@2 [f3,d4,a#4]@2 ~@4 [c4,f4,a4]@6 ~@28, ~ d4@37 [c3,g3]@36 [f2,f3,c4]@28 f2@7 ~ [f2,f3]@34, ~@19 [c4,e4]@3 ~@30 f4@2 ~@18]/3", // A#5 F A# F C5 F5 F C
X: "[~@2 [a#2,f3,a#3,d4,f4]@36 [c4,e4,g4]@6 [c4,e4]@30 ~ [d2,d3,a4,d5]@17 [g2,g3,b3,d4,g4]@18 [c2,c3,c4,e4,g4,c5]@38 ~@44, ~@38 [c3,g3]@36 f4@17 ~@101]/4", // A# C D5 G C C5
Y: "[~@58 f4@7 ~@8 c5@46 ~@25, ~@36 f2@83 ~@25, ~@44 c3@75 ~@25, ~@54 c4@11 c4@54 ~@25, ~@70 a4@49 ~@25]/3",
})).s("gm_piano").gain(0.33)
// chords · piano · soft notes
const piano_soft = note(`<
~@3 A@3 B@3 C ~ D@2 E@2 ~ F ~@7 G H@2 I ~@2 J@2 K L ~ M ~@6 N@2 O P@2 ~ Q R ~@3 S ~@6 T@2 U V@2 ~@2 W@2 ~@7 X@2 Y Z@2
~@3 AA@2
>`.pickRestart({
A: "[~@3 f#3 ~ b3 [b3,e4]@6 [a2,e4,a4]@6 [e2,e3,b3,e4,g#4]@6, [f#2,c#4] ~@5, ~ f#3@2 ~@21, ~ c#3 ~@10]/3", // E5 A5 E F#5
B: "[[b2,b3,d#4,f#4]@36 [c#3,g#3]@36 ~ [b2,d#4,f#4]@35 ~@36, ~@72 b3@35 ~@37]/3", C: "~@14 b2 ~@9",
D: "[~@29 a3@12 ~@7 e3@35 ~@13, ~@47 g#3@37 ~@12]/2", E: "[~@24 [c#3,g#3]@36 ~ [b2,d#4,f#4]@35, ~@60 b3@35 ~]/2",
F: "~@8 b2 ~@15", G: "~ [b3,d#4,f#4]@5 ~@2", H: "[~@5 [b3,e4,g#4]@5 ~@6]/2", I: "~ f#4@5 ~@2",
J: "[~@29 a2@6 ~ e3@36 ~@24, ~@35 g#4@37 ~@24]/2", K: "~ [c#3,g#3]@3", L: "~ [b2,d#4,f#4]@35 ~@12, b3@35 ~@13",
M: "~@2 b2 ~@21", N: "[~@7 [b3,d#4,f#4]@5 ~@4]/2", O: "~@18 [b3,e4,g#4]@29 ~", P: "[~@7 f#4@5 ~@4]/2", Q: "~@2 e3 ~",
R: "~@3 e4 ~@4", S: "~@6 a#3 ~", T: "[~@7 [c4,e4,g4]@5 ~@4]/2", U: "~@3 [c4,f4,a4]@5", V: "[~@42 g4@31 ~@23]/2",
W: "[~@32 a3@10 ~@22 a5@11 ~@21, ~@29 f3@13 f3@32 ~@22, ~@22 a3@15 ~@11, ~@49 f4@25 ~@22, ~@58 f5@17 ~@21]/2",
X: "[~@45 c4@29 ~@22, ~@22 [e4,g4]@15 ~@11]/2", Y: "~@5 [c4,f4,a4]@7", Z: "[~@22 g4@15 ~@11]/2",
AA: "[~@3 a3@10 ~@20 a5@38 ~@25, f3@13 f3@59 ~@24, ~@14 a3@57 ~@25, ~@5 f4@13 ~@6, ~@27 f5@44 ~@25]/2",
})).s("gm_piano").gain(0.22)
// bass · fretless bass
const bass = note(`<
~@3 A B@2 C D@2 E@3 F@3 G@3 H@3 I@2 J K@3 L@3 M N@2 O@3 P@3 Q@2 R S@2 T U@3 V@2 W X@3 Y@3 Z@2 AA AB@2 AC AD@3 AE@4
AF@3 AG@3 AH@3 AI@7
>`.pickRestart({
A: "~@7 e2", B: "[b2@6 e3@17 ~ a2@32 ~@10 e2@4 ~@2 b1@4 ~@2 e2@16 ~@2]/2", C: "b1@33 ~@9 c#2@5 ~",
D: "[g#2@4 ~@2 e3@14 ~@4 d#3@9 b2@3 f#2@4 ~@2 b2@14 ~@4 a2@22 ~@2 c#3@12]/2",
E: "[b2@29 ~ f#2@6 b1@17 ~ a1@19 ~@5 e2@6 b2@6 e3@17 ~ a2@32 ~@4]/3",
F: "[~@6 e2@4 ~@2 b1@4 ~@2 e2@16 ~@2 b1@33 ~@9 c#2@5 ~ g#2@4 ~@2 e3@14 ~@4 d#3@9 b2@3 f#2@4 ~@2 b2@14 ~@4]/3",
G: "[a2@22 ~@2 c#3@12 b2@29 ~ f#2@6 b1@17 ~ a1@18 e2@34 ~@2]/3",
H: "[e2@3 ~@3 e2@30 a1@34 ~@2 a1@3 ~@3 a1@27 ~@3 b1@33 ~@3]/3",
I: "[b1@4 ~@2 b1@28 ~@2 e2@35 ~ e2@3 ~@3 e2@12 e2@6]/2", J: "f#2 g#2 a2@5 c#2",
K: "[b1@3 ~@3 b1@27 ~@3 e2@34 ~@2 e2@2 ~@4 e2@24 b1@5 ~ a1@35 ~]/3",
L: "[b1@3 ~@3 b1@26 ~@4 c#2@17 ~ a#1@18 b1@34 ~@8 e2@6 b2@6 e3@17 ~]/3", M: "a2@16 ~@5 e2@2 ~",
N: "[b1@4 ~@2 e2@16 ~@2 b1@33 ~@9 c#2@5 ~ g#2@4 ~@2 e3@14 ~@4]/2",
O: "[d#3@9 b2@3 f#2@4 ~@2 b2@14 ~@4 a2@22 ~@2 c#3@12 b2@29 ~ a1@6 b1@17 ~ a1@18]/3",
P: "[e2@17 ~ e2@18 a1@17 ~ a1@15 c#2@3]/3", Q: "[b1@35 ~ b1@3 ~@3 b1@12 b1@5 ~ c#2@6 d#2@6 e2@18 g#2@6]/2",
R: "e3@3 ~@3 f#3@3 ~@3 [e2,g#3]@31 ~@5", S: "[a1@30 c#2@6 b1@31 ~@5 e2@24]/2",
T: "~@4 e2 ~ b1@6 e2@17 ~ e2@6 f#2@6 g#2@6", U: "[a1@36 b1@31 ~@5 c#2@18 a#1@18 b1@33 ~@3]/3",
V: "[e2@29 ~ a1@6 e2@18 f#2@12 g#2@6 a1@23 ~]/2", W: "c#2@12 b1@18 a1@17 ~",
X: "[g#1@18 e2@17 ~ a1@18 a#1@17 ~ b1@35 ~ c2@35 ~]/3",
Y: "[f2@26 ~@2 f2 ~ c2@6 f2@26 ~@2 f2 ~ c2@6 a#1@29 ~ f1@6 a#1@33 ~@3]/3",
Z: "[c2@29 ~ g1@6 c2@16 ~@2 c2@6 d2@6 e2@6 f2@24]/2", AA: "~@4 f2 ~ c2@6 f2@16 ~@2 f2@5 ~ g2@6 a2@6",
AB: "[a#1@17 ~ g2@12 f2@6 c2@23 ~ c2@6 d2@6 f2@24]/2", AC: "~@4 f2 ~ c2@6 f2@29 ~ b1@6",
AD: "[a#1@27 ~@3 d3@6 c3@17 ~ c2@18 d2@18 b1@17 ~ c2@35 ~]/3", AE: "[~@2 a#1@23 c2@40 f2@85 ~@8 c2@34]/4",
AF: "[~@2 f2@17 ~ d3@12 c3@6 f2@16 ~@2 f2@6 g2@5 ~ a2@6 a#1@17 ~ g2@12 f2@6 a#1@17 ~ a#2@6 b1@6 b2@4]/3",
AG: "[~@2 c2@17 ~ a2@12 g2@6 c2@17 ~ c2@6 d2@6 e2@6 f2@17 ~ a2@6 c3@6 c2 ~@5 f2@23 ~ c2@6 b1@4]/3",
AH: "[~@2 a#1@17 ~ g2@12 f2@6 c2@30 g2@6 f2@26 ~@3 f2 c2@6 f2@18 f2@6 g2@6 a2@4]/3",
AI: "[~@2 a#2@30 d3@6 c3@17 ~ c2@18 d2@18 b1@18 c2@38 a#1@32 ~ c2@46 ~ f2@83 ~@25]/7",
})).s("gm_fretless_bass").gain(0.33)
// chords · rock organ
const rock_organ = note("<~@3 A@6 B@6 C@2 D@7 E@3 F@6 G@3 ~@50>".pickRestart({
A: "[~ [g#4,b4] [a4,c#5] g#4 [d#4,f#4] [e4,g#4,c#5] [d#4,f#4,b4] [e4,a4,c#5], ~ e4@3 ~@4, ~@3 b4@2 ~@3]/6", // G#m A D#m C#m B A
B: "[[b3,f#4]@2 [g#4,b4] [a4,c#5] g#4 [d#4,f#4] [e4,g#4,c#5] [d#4,f#4,b4], b4@3 ~ e4@6 ~@6, ~@2 b4 ~]/6", // B5 G#m A D#m C#m B
C: "[[e4,a4,c#5]@3 [b3,f#4]@5, ~@6 b4@9 ~]/2", // A B5
D: "[~@12 [g#4,b4]@71 ~ [a4,c#5]@72 [f#4,b4,d#5]@54 [a4,c#5]@18 [g#4,b4]@72 [a4,c#5]@36, ~@12 e4@143 ~@55 e4@126]/7", // G#m A B A G#m A
E: "[[f#4,d#5] g#4@2 [a4,c#5], b4@3 ~, ~ e4@3]/3", // D#m A
F: "[[f#4,b4,d#5]@36 [g#4,e5]@18 a#4@18 [b4,d#5]@35 ~ [g#4,b4]@36 [a4,c#5]@36 g#4@36 [d#4,f#4]@36 [e4,g#4,c#5]@36, ~ c#5 ~@3 b4@2 ~, ~@3 f#4@3 e4@6 ~@4]/6", // B C#m B G#m A D#m C#m
G: "[[d#4,f#4,b4] [e4,a4,c#5] [b3,f#4]@2, ~@4 b4@3 ~]/3", // B A B5
})).s("gm_rock_organ").gain(0.11).pan(0.9)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~ A@4 ~@20 B@2 C@2 D E@3 F@3 ~@6 G@3 H I@2 J@6 K@3 L@3 M@2 N O@6 P@4 Q@3 R@2 S T@7
>`.pickRestart({
A: "[~@4 [c#3,c#5]@2 [d#3,d#5]@2 [e3,e5]@2 [b2,b4]@3 [b2,d#5] [c#3,e5] e3 d#3@3 [c#3,a5]@3 [b2,g#3,e4,g#5]@6 ~@4, ~ e4@3 ~@4, ~@2 a3@3 f#4@6 ~@5, ~@5 g#3@3 a3@3 ~@5, ~@15 b5@4 ~@13]/4", // C# D# E B C#m F#m E
B: "[~@4 e3@5 g#3 a3 c#4@2 e4@3]/2", C: "[f#4@12 e4@6 ~@6 b3@7 ~, ~@9 f#4@7]/2", D: "a3 g#3@3", E: "[a2 e2 b2 c#3]/3",
F: "[b2@6 a2@4 [c#3,e5]@2 d#5@3 ~@2 f#2 b2@3 [a2,a3,e4]@3, ~@12 b2@5 ~ [b3,f#4]@6, ~@90 e5@18 f#5@31 ~@5]/3", // C#m A5 B5
G: "[c#5@6 d#5@6 e5@5 c#5 b4 g#4 e4 b3 e3 g#3]/3", H: "a3 c#4 b4 a4@2 g#4 f#4 b3",
I: "[c#5 b4 g#4 f#4 c#4@3 e4@3 [c#4,f#4,a4]@6]/2", // F#m
J: "[[g#3,b3]@5 [a3,c#4] g#3@3 [f#3,d#4]@2 g#3 ~@3 e5@3 f#4 ~ c#5 b4 ~ d#5 ~@2 b4 b5@3 [a3,c#6]@3 [a#3,g#5]@3 [b3,d#4,f#5]@6 [c4,e4,g4,g5]@6, e4@9 ~@2 e4@7 d#4@6 ~@3 e4@6 ~@15, ~@2 b3@2 [a3,c#4]@2 b3 a3 [g#3,b3]@2 c#4@2 ~@4, ~@54 d#5@6 ~@12 f#5@7 ~@65, ~@38 f#4@6 f#4@7 f#4@3 ~@12 f#4@18 ~@12]/6", // G#m A D#m A A#7 B C A …
K: "[f5@6 d5 f5]/3", L: "[g5@5 f5 e5@3 f5@8 d5 c5@3 f5 a5 c6]/3", M: "[f6@3 e6@3 f6@2]/2",
N: "g6 f6 c6 a5 g5 f5 c5 a4",
O: "[d5@30 a5@6 g5@24 f5@6 d5@6 d5@18 d5@18 g5@18 ~@20 [a#3,d6]@23 c4@39 ~ [f3,a4]@76 ~@3, ~@108 [a#4,d5]@61 [c5,c6]@115 ~@4, ~@54 c4@19 ~@71, ~@126 a#5@43 ~@119]/6", // A# F A# C
P: "[~@7 [c3,a#3,d4,f4]@18 f5@54 d5@9 f5@8]/4", Q: "[~ g5@15 f5@3 e5@9 f5@24 d5@3 c5@9 f5@3 a5@3 c6@2]/3",
R: "[~ f6@18 e6@18 f6@11]/2", S: "~ g6@3 f6@3 c6@3 a5@3 g5@3 f5@3 c5@3 a4@2",
T: "[~@2 d5@30 a5@6 g5@24 f5@6 d5@6 d5@18 d5@18 ~@38 [a#3,d6]@33 c4@46 ~ [f3,a4]@84 ~@24, ~@110 [a#4,d5]@71 [c5,c6]@131 ~@24, ~@55 c4@19 ~@94, ~@110 g5@25 ~@201, ~@129 a#5@53 ~@154]/7", // A# F A# C
})).s("gm_string_ensemble_1").gain(0.25).pan(0.2)
// chords · string ensemble 2
const string_ensemble_2 = note("<~@23 A B@3 C@3 ~@3 D@3 E@3 F@6 G@3 H I@2 J@3 K@3 L@6 M@7 N@3 O@6 P@7>".pickRestart({
A: "~ [a3,c#4,e4]@3", B: "[[d#4,f#4]@6 g#4@5 [c#4,a4] [b3,g#4]@6 [a3,c#4,e4]@6, b3@11 ~@13, ~ e4@2 ~]/3",
C: "[[b3,d#4,f#4]@18 [g#3,e4]@9 a#3@9 b3@19 ~@17, ~ c#4@2 ~, ~@27 f#4@28 ~@17]/3", // B C#m
D: "[[b3,d#4,f#4]@6 [a3,c#4,e4]@4 [c#4,e4,g#4]@2 [b3,d#4,f#4]@5 [a3,c#4,f#4] [b3,d#4,f#4]@3 [a3,c#4,e4]@3]/3", // B A C#m B F#m B A
E: "[[g#3,b3]@5 [a3,c#4] [g#3,b3]@6 c#4@5 [d#4,f#4] [c#4,e4]@6, e4@17 ~@7, ~ a3]/3", // G#m A G#m D#m C#m
F: "[[b3,d#4]@5 [c#4,e4] [b3,d#4]@6 g#3@5 [a3,c#4] g#3@3 g#4@3 [a3,c#4,a4]@6 [d#4,f#4]@6 g#4@5 [c#4,a4] [b3,g#4]@6, f#4@12 e4@18 ~@6 e4@11 ~, ~@2 b3 b3 ~ b3@2 ~]/6", // B C#m B A D#m F#m E
G: "[[a3,c#4,e4]@2 [b3,d#4,f#4]@2 [g#3,e4] a#3 b3@2, ~ c#4, ~@5 f#4@3]/3", H: "e4 b3 g#3 e4 b3 a3 g#3 e3",
I: "[b3 f#4 e4 d#4 c#4 e3 a3 [c#4,e4]@3 b3@3 a3@3, ~@5 d#4@3]/2", // C#m
J: "[f#4 e4 [a3,c#4] a#3 a3@2 a#3@2, [g#3,b3] ~@3]/3", // A G#m
K: "[[a3,c4]@5 [a#3,d4] [a3,c4]@6 d4@5 [e4,g4] f4@3 f4@3, f4@17 ~ d4@6, ~ a#3]/3", // Am A# Am Em
L: "[[c4,g4]@5 [d4,f4] ~@3 g4 ~@2 a3@5 [a#3,d4] ~@3 a4@3 [a#3,d4,a#4]@6 [e4,g4]@6 a4@5 [d4,a#4] [c4,a4]@6, e4@6 e4@7 ~@23 [f3,f4]@12, ~ c4 f4@3 ~@3, ~@12 c4@6 [a3,c4]@6 ~@6 c4@11 ~@7]/6", // C5 Dm A# Em Gm F Am
M: "[[a#3,d4,f4]@36 [c4,e4,g4]@36 [a3,f4]@18 b3@18 c4@38 [a#3,d4,f4]@23 [c4,e4,g4]@39 ~ [f3,a3,c4,f4]@83 ~@44, ~@36 d4@37 ~@95, ~@45 g4@28 ~@95]/7", // A# C Dm A# C F
N: "[~ [a3,c4]@15 [a#3,d4]@3 [a3,c4]@18 d4@15 [e4,g4]@3 f4@9 f4@8, ~ f4@51 ~@3 d4@17, ~@37 a#3@35]/3", // Am A# Am Em
O: "[~ [c4,g4]@15 [d4,f4]@3 ~@9 g4@3 ~@6 a3@15 [a#3,d4]@3 ~@9 a4@9 [a#3,d4,a#4]@18 [e4,g4]@18 a4@15 [d4,a#4]@3 [c4,a4]@17, ~ e4@18 e4@21 ~@69 [f3,f4]@35, ~@19 c4@18 f4@54 ~@53, ~@37 c4@18 [a3,c4]@18 ~@18 c4@33 ~@20]/6", // C5 Dm A# Em Gm F Am
P: "[~@2 [a#3,d4,f4]@36 [c4,e4,g4]@36 [a3,f4]@18 b3@18 c4@38 [a#3,d4,f4]@33 [c4,e4,g4]@46 ~ [f3,a3,c4,f4]@95 ~@13, ~@37 d4@37 ~@94, ~@23 g4@14 ~@47]/7", // A# C Dm A# C F
})).s("gm_string_ensemble_2").gain(0.3).pan(0.7)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
~@10 A B C D E F G H C I J K L B M L B N O H P Q R S T ~ C U B V W H P X H P Y@2 C Z AA C AB AC AD AE AF AG AH AI AJ
AK AI AJ AL ~@5 AM AN AO AP AQ AR AS AT AR AS AU ~@5
>`.pickRestart({
A: "~@14 [b3,e4,g#4] ~", B: "~@10 [c#4,e4,a4] ~@5", C: "~@6 [b3,e4,g#4] ~@9",
D: "~@2 [b3,d#4,f#4] ~@11 [c#4,e4,g#4] ~", E: "~@10 [b3,d#4,f#4] ~@5", F: "~@9 [c#4,e4,a4] ~@14",
G: "~@3 [d#4,f#4,b4] ~@20", H: "~@10 [b3,e4,g#4] ~@5", I: "~@2 [c#4,e4,a4] ~@11 [c#4,e4,a4] ~",
J: "~@10 [d#4,f#4,b4] ~@5", K: "~@18 [c#4,e4,a4]@17 ~@13", L: "~@2 [b3,e4,g#4] ~@11 [b3,e4,g#4] ~",
M: "~@9 [d#4,b4]@2 ~@13, ~@9 f#4 ~@14", N: "~@9 [d#4,f#4,b4] ~@14", O: "~@3 [c#4,f#4,a#4]@8 ~@13",
P: "~@6 [c#4,e4,a4] ~@9", Q: "~@2 [b3,e4,g#4] ~@11 [b3,d#4,f#4] ~", R: "~@10 [c#4,e4,g#4] ~@5",
S: "~@6 [b3,d#4,f#4] ~@9", T: "~@3 [c#4,e4,a4] ~@17 [d#4,f#4,b4] ~@2", U: "~@2 [b3,e4,g#4] ~@11 [c#4,e4,a4] ~",
V: "~@6 [d#4,f#4,b4] ~@9", W: "~@6 [c#4,e4,a4]@17 ~@19 [b3,e4,g#4]@3 ~@3",
X: "~@6 [d#4,b4]@4 ~@32 [b3,e4,g#4]@3 ~@3, ~@3 f#4 ~@20", // G#m E
Y: "[~@6 [d#4,f#4,b4]@2 ~@34 [c#4,f#4,a#4]@16 ~@2 [d#4,f#4,b4]@31 ~@5]/2", Z: "~@3 [b3,e4,g#4] ~@17 [c#4,e4,a4] ~@2",
AA: "~@30 [d#4,f#4,b4]@17 ~", AB: "~@6 [c#4,f#4,a#4]@17 ~@19 [d#4,f#4,b4]@3 ~@3", AC: "~@10 [e4,g4,c5] ~@5",
AD: "~@6 [c4,f4,a4] ~@9", AE: "~@2 [c4,f4,a4] ~@11 [d4,f4,a#4] ~", AF: "~@10 [d4,f4,a#4] ~@5",
AG: "~@6 [e4,g4,c5] ~@9", AH: "~@6 [d4,f4,a#4]@17 ~@19 [c4,f4,a4]@3 ~@3", AI: "~@10 [c4,f4,a4] ~@5",
AJ: "~@6 [d4,f4,a#4] ~@9", AK: "~@2 [e4,g4,c5] ~@11 [c4,f4,a4] ~", AL: "~@6 [e4,g4,c5]@2 ~@34 [d4,g4,b4]@3 ~@3",
AM: "~@20 [c4,f4,a4]@3 ~@25", AN: "~@8 [c4,f4,a4]@3 ~@33 [d4,f4,a#4]@3 ~", AO: "~@32 [d4,f4,a#4]@3 ~@13",
AP: "~@20 [e4,g4,c5]@3 ~@25", AQ: "~@8 [d4,f4,a#4]@17 ~@19 [c4,f4,a4]@3 ~", AR: "~@32 [c4,f4,a4]@3 ~@13",
AS: "~@20 [d4,f4,a#4]@3 ~@25", AT: "~@8 [e4,g4,c5]@3 ~@33 [c4,f4,a4]@3 ~", AU: "~@8 [e4,g4,c5]@2 ~@34 [d4,g4,b4]@3 ~",
})).s("gm_electric_guitar_clean").gain(0.33)
// drums · rim
const rim = s("rim").struct("<[~@3 x] [~ x ~@6] ~@84>").gain(0.36)
// drums · kick
const kick = s("bd").struct(`<
~@9 A B ~@6 C D E F D E C D E F G H C D E F G I J K I F K I L M I F K N O M I L K I J M I F K I L M I F K N C P Q ~ R
S T U S T V W T U S X R Y Z ~@2
>`.pickRestart({
A: "~@5 x ~@2", B: "~@3 x!2 ~@3", C: "~ x ~@2", D: "x!2 ~@3 x!2 ~", E: "~@4 x!2 ~@2", F: "~ x!2 ~@5",
G: "x!2 ~@4 x ~", H: "~ x ~@2 x ~@3", I: "~ x", J: "~@3 x ~@12", K: "x ~@4 x!2 ~", L: "~@2 x ~ x ~@4 x ~@6",
M: "x ~@4 x ~@4 x ~ x ~@3", N: "~ x ~@6 x ~@4 x ~@2", O: "~@4 x ~@4 x ~@6", P: "~@2 x ~@22 x ~@22", Q: "~@17 x ~@30",
R: "~@7 x ~@16", S: "~ x ~@14 x ~@2 x ~@4", T: "~@13 x ~@10", U: "~@4 x ~@2 x ~@16", V: "~@8 x ~@5 x ~@14 x ~@18",
W: "~@2 x ~@14 x ~@14 x ~@5 x ~@9", X: "~@5 x ~@20 x ~@14 x ~@6", Y: "~@4 x ~@32 x ~@10", Z: "~@3 x",
})).gain(0.45)
// drums · snare
const snare = s("sd").struct(`<
~@35 A B C D B C D B C D B C E B C D B C A B C D B C D B C D B C ~@3 F ~ G H I G H I G H I G H ~@5
>`.pickRestart({
A: "~ x ~@2", B: "~@3 x ~@4", C: "~ x ~@5 x", D: "~@5 x ~@2", E: "~@10 x!2 ~@4", F: "~@13 x ~@10", G: "~@5 x ~@6",
H: "~@2 x ~@8 x", I: "~@2 x",
})).gain(0.45)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C B D E B D E F G H C G H C B@6 H B@5 H B@5 I J B G B K L M B G B N O M B@2 J P I M K B@2 F Q M K G B N R ~@4 S
T U@2 V W S T X U Y Z ~@4
>`.pickRestart({
A: "~@4 x!4", B: "x!8", C: "x!3 ~ x ~ x!2", D: "x ~ x ~ x!4", E: "x!5 ~ x ~", F: "x!4 ~ x!3", G: "x!7 ~",
H: "x ~ x!6", I: "x!2 ~ x!5", J: "~ x!7", K: "x!3 ~ x!4", L: "x!6 ~@2", M: "~ x!2 ~ x!4", N: "x!4 ~ x!2 ~",
O: "x!2 ~ x!2 ~@3", P: "x!3 ~@2 x!3", Q: "x!5 ~@3", R: "x!2 ~@6", S: "~@4 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~",
T: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~", U: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
V: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~", W: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10",
X: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", Y: "~ x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@4", Z: "~ x ~@2 x ~@19",
})).gain(0.27)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A B C B D E B D E B F G C F G C B@6 G B@5 G B@5 H ~@50>".pickRestart({
A: "~@9 x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@3 x ~@3 x ~ x",
// … 60 more lines
More by Raf
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.