0:00/0:00
// Eternita — Camaleonti
// 185 bpm, 4/4, key A 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: duplicate parts dropped: ch 16 piano (copy of ch 5 choir aahs)
// note: Full arrangement: all 153 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(185/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 · acoustic bass
const bass = note(`<
~@7 A@2 B C@8 D@7 E F@4 G H@8 I@3 J@2 K L@3 M N O@3 P Q R@2 S T@4 U@7 ~@5 V@5 W@7 X Y@4 Z@2 AA@2 AB@7 AC AD AE AF AG
AH AI AJ AK AL AM AN AO AP AQ@2 AR AS AT AU AV AW AX AY@2 AJ AK AL AM AN AO AP AQ@2 AR AS AT AU AV AW AX AY@2 AZ BA BB
BC@2 BD@3
>`.pickRestart({
A: "[~@16 g1@26 ~@5 g1]/2", B: "~ g1@23",
C: "[~@8 g1@23 ~@4 g1@8 a#1@19 ~@6 a#1@8 f1@16 ~ f2@16 e2@16 ~ f1@16 a1@23 ~@2 a1@6 ~@3 g1@16]/8",
D: "[~@8 g1@8 ~ f#1@18 ~@7 f#1@8 e1@16 e2@16 ~ a1@15 ~@2 g1@16 f1@16 ~ [e1,e2]@14 ~@2 d2@14 ~@5]/7", // E
E: "d2 ~@6 d2@14 ~@3", F: "[~@2 d2@6 e1@13 e2@6 e1 ~@5 e1@13 e2@6 e1@6 ~ a1@12 a2@5 ~@2 a1 ~@5 a1@12]/4",
G: "~@7 a1@5 ~@2 d2@10",
H: "[~@9 d2@2 ~@4 d2@16 ~@9 d2@14 ~@5 d2@4 ~@3 c2@14 ~@5 c2@6 a#1@15 ~@4 a#1@3 ~@3 a#1@12 ~@7 a#1@6 ~ f1@12 f2@13 f1@13 f2@6 f1@6]/8",
I: "[~ d2@17 ~@2 d2@6 b1@16 ~@3 b1@8 ~@4 b1@15]/3", J: "[~@4 e1@12 ~ e2@11 ~ a1@15 ~@4]/2", K: "a1@3 g#1@7 ~@2",
L: "[g#1@6 f#1@20 ~@5 f#1@12 f#2@10 ~@3 b1@12 ~@4]/3", M: "~@2 b1@6 a#1@13 ~@3", N: "~@3 a#1@6 b1@14 ~",
O: "[~@4 b1@6 e1@12 e2@18 ~ e1@6 e2@6 e1@5 ~ a1@13]/3", P: "~@5 a1@6 g#1@13", Q: "~@5 g#1@6 f#1@13",
R: "[~@8 f#1 ~@2 f#1@12 f#2@6 f#1@6 b1@13]/2", S: "~@5 b1@5 ~ a#1@13",
T: "[~@5 a#1@6 b1@17 ~@4 b1@3 e1@12 e2@18 e1@6 e2@5 ~@7 a1@13]/4",
U: "[~@5 a1@6 g#1@15 ~@3 g#1@5 ~ g1@48 g1@68 ~@17]/7", V: "[~@2 g1@26 ~@5 g1 ~ g1@25 ~@6 g1@23 ~@4 g1@8 a#1@19]/5",
W: "[~@6 a#1@8 f1@16 ~ f2@16 e2@16 ~ f1@16 a1@23 ~@2 a1@5 ~@4 g1@19 ~@5 g1@8 ~ f#1@18 ~@3]/7", X: "~ f#1@2 e1@3",
Y: "[~@4 e2@16 ~ a1@15 ~@2 g1@16 f1@16 ~ [e1,e2]@14 ~@2 d2@9]/4", Z: "[~@10 d2 ~@6 d2@14 ~@5 d2@6 e1@6]/2",
AA: "[~@6 e2@6 ~ e1 ~@5 e1@12 e2@5 ~ e1@6 a1@5]/2",
AB: "[~@8 a2@5 ~ a1 ~@5 a1@12 ~@7 a1@6 d2@13 ~@5 d2@2 ~@4 d2@16 ~@9 d2@14 ~@5 d2@4 ~@2 c2@14 ~@4 c2@6 a#1@15 ~@4 a#1@2 ~@4]/7",
AC: "a#1@11 ~@7 a#1@6", AD: "f1 f2", AE: "f1@2 f2 f1", AF: "d2@8 ~ d2@3", AG: "b1@5 ~ b1@2", AH: "b1 ~@5 b1@14 ~@4",
AI: "e1@12 e2@11 ~", AJ: "a1@5 ~ a1@2", AK: "g#1@13 ~@5 g#1@6", AL: "f#1@5 ~", AM: "f#1@6 f#2@5 ~",
AN: "b1@12 ~@6 b1@5 ~", AO: "a#1@13 ~@5 a#1@6", AP: "b1@13 ~@5 b1@6", AQ: "[e1@12 e2@18 e1@6 e2@6 e1@5 ~]/2",
AR: "a1@7 ~@2 a1@3", AS: "g#1@7 ~@2 g#1@3", AT: "f#1@14 ~@7 f#1 ~@2", AU: "f#1@2 f#2 f#1", AV: "b1@14 ~@4 b1@5 ~",
AW: "a#1@7 ~@2 a#1@3", AX: "b1@17 ~@4 b1@3", AY: "[e1@12 e2@18 e1@6 e2@5 ~@7]/2", AZ: "a1@23 ~", BA: "g#1@23 ~",
BB: "g1", BC: "f#1/2", BD: "[a1@5 ~]/3",
})).s("gm_acoustic_bass").gain(0.5)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~@4 A@2 ~@3 B@3 ~ C@6 ~@3 D@2 E@8 F@7 G H@2 I J@7 K@2 L@7 M@2 N@7 ~@2 O P@2 ~@3 Q@3 R@3 S@3 ~ T@3 U V@8 W@3 ~@2 X@2 Y
Z AA AB AC@4 AD@5 AE@4 AF@3 AG@2 AH@4 AD@5 AI@4 AF@3 AG@2 AJ@3 AK@2 AL@3
>`.pickRestart({
A: "[~@2 d4@4 e4@4 d4@4 ~ a3@4 c4@24 ~@5]/2", B: "[~@11 b3@2 d4@2 f#4@2 a4@4 g4@14 ~]/3",
C: "[~@4 f4@33 e4@16 ~ e5@4 f5@4 e5@4 a4@4 c5@58 ~@16, ~@4 [a4,c5]@43 ~@97]/6", D: "[~@4 g3@16 f3@16 ~ e3@11]/2",
E: "[~@5 [a4,d5]@51 [b4,e5]@51 a4@85, ~@107 c#5@49 ~@36]/8", F: "[~@16 f#5@51 g5@45 ~@22 a#4@8 ~@26, ~@59 f5@25]/7",
G: "~ d5@23", H: "[~@2 a4@21 ~@4 g#4@3 ~@3 b4@6 ~ c#5@6 d5@2, ~ e5@16 ~@7, ~ b4@15 ~@8]/2", I: "~@4 f5@6 e5@6 ~ b4@7",
J: "[~@30 g#4@22 ~@27 a#4@22 ~@3 b4@24 a#4@25 b4@15, ~@5 c#5@98 ~ d5@64, ~@5 e5@71 ~@92, ~@18 f#4@17 ~@21]/7",
K: "[~ f#4@5 ~@4 g#4@37 ~, ~@10 e4@31 ~@7, ~@10 b4@3 ~@35]/2",
L: "[~@11 a4@23 ~ g#4@24 ~@24 a#4@23 ~ b4@21 ~@3 a#4@24 b4@13, ~@11 c#5@96 d5@61, ~@59 f#4@43 ~@66]/7",
M: "[~@11 [e4,g#4]@37, ~@11 b4@23 ~@14]/2", // E
N: "[~@11 a5@3 b5@3 c#6@3 d6@3 e6@12 a5@3 b5@3 c#6@3 d6@3 e6@12 a5@3 b5@3 c#6@3 d6@3 e6@18 [a5,c#6]@6 [b5,d6]@6 [a5,c#6]@6 [g3,g4,a4,c#5,a5,c#6]@52 ~@9]/7", // A Bm A A7
O: "~@3 d4 e4 d4", P: "[~ a3@4 c4@24 ~@19]/2", Q: "[~@7 b3@4 ~ d4@4 f#4@4 a4@8 g4@28 ~@16]/3",
R: "[~@14 [a4,c5]@43 ~@7 e5@4 f5@4, ~@14 f4@33 ~@25]/3", S: "[e5@2 a4@2 c5@29 ~@3]/3", T: "[~@12 a3@49 ~ g3@10]/3",
U: "~@6 f3@16 ~ e3", V: "[~@15 [a4,d5]@51 [b4,e5]@49 a4@77, ~@115 c#5@42 ~@35]/8", W: "[~@22 f#5@45 ~@5]/3",
X: "[~@15 a#4@8 ~@25, f5@47 ~]/2", Y: "d5@23 ~", Z: "[b4,e5]@23 ~, a4@5 ~", AA: "[b4,e5] b4 c#5 d5, g#4 ~@7",
AB: "f5 e5 b4@2", AC: "[~@24 g#4@22 ~@26 a#4@21 ~@3, c#5@95 ~, e5@35 ~@13, ~ f#4]/4",
AD: "[b4@24 a#4@23 ~@16 f#4@5 ~@4 g#4@36 ~@12, d5@5 ~@3, ~@48 b4@20 ~@4 b4@3 ~@45]/5",
AE: "[a4@23 ~ g#4@24 ~@24 a#4@23 ~, c#5@95 ~, ~@48 f#4@43 ~@5]/4", AF: "[b4@7 ~ a#4@8 b4@8, d5@23 ~]/3",
AG: "[[e4,g#4]@13 ~@3, b4@23 ~@25]/2", AH: "[~@24 g#4@22 ~@26 a#4@21 ~@3, c#5@95 ~, e5@23 ~@9, ~ f#4]/4",
AI: "[a4@23 ~ g#4@24 ~@24 a#4@23 ~, c#5@95 ~, ~@12 f#4@11 ~]/4", AJ: "[e5,e6] [f5,f6] [e5,e6] [d5,d6] [c5,c6]@4",
AK: "[[e5,e6] [f5,f6] [e5,e6] [d5,d6] [c5,c6]@12]/2", AL: "[[c#5,e5,a5,c#6]@5 ~]/3",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.6)
// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
A@2 ~@18 B@4 ~@6 C@7 D@4 ~@8 E ~@30 F@2 ~@4 G@4 ~@6 H@7 ~ I@2 ~@9 J K@2 ~@15 J K@2 ~@14 L@3
>`.pickRestart({
A: "[~@12 [d2,a3,d4,f#4]@29 ~@7]/2", B: "[~@2 b3@32 ~ c#4@16 ~@45, ~@2 e4@77 ~@17, ~@2 a3@49 ~@45]/4",
C: "[~@67 a#4@13 ~@4, ~@7 d5@73 ~@4]/7", D: "[~@23 a4@50 ~@23]/4", E: "~@6 g#4 ~@5", F: "[~@23 e4@16 ~@9]/2",
G: "[~@45 c#4@16 ~@35, ~@3 b3@8 ~@13, ~@16 e4@77 ~@3]/4", H: "[~@138 a#4@25 ~@5, ~@7 d5@47 ~@2, ~@119 g5@43 ~@6]/7",
I: "[a4@23 ~]/2", J: "~@3 g#4@2 ~@19", K: "[e4@5 ~@3]/2", L: "[a4@5 ~]/3",
})).s("gm_string_ensemble_1").gain(0.21).pan(0.6)
// other · whistle
const whistle = note("<~@41 A@3 ~@63 B C ~@44>".pickRestart({
A: "[~@9 b5@6 ~ c#6@6 d6@6 f6@6 e6@6 ~ b5@9 ~@22]/3", B: "~ b5 c#6 d6", C: "f6@2 e6@2 b5@3 ~",
})).s("gm_whistle").gain(0.4)
// other · trombone
const trombone = note(`<
~@43 A B@3 C@2 D E@8 F@4 ~@47 G H I@2 J K J L M G H I@2 J K J L M G H I@2 J K J L M G H I@2 J K J L M ~@8
>`.pickRestart({
A: "~@5 a2@19", B: "[~ g#2@4 f#2@7]/3", C: "[~ b2@3 a#2@2]/2", D: "~@3 b2@5",
E: "[~@10 e2@24 e3@25 a2@24 g#2@24 f#2@48 b2@24 a#2@13]/8", F: "[~@11 b2@24 e2@24 e3@25 ~@12]/4", G: "a2", H: "g#2",
I: "f#2/2", J: "b2", K: "a#2", L: "e2", M: "e3",
})).s("gm_trombone").gain(0.62).pan(0.4)
// chords · muted trumpet
const muted_trumpet = note("<~@52 A@8 B@8 ~@50 C D E F G H I J K ~@9 C D E F G H I J L M@3 N@2 O@3>".pickRestart({
A: "[~@23 [c#5,e5,a5]@2 ~@22 [c#5,g#5]@9 ~@3 [a4,c#5,f#5]@20 ~@4 [a#4,c#5,f#5]@20 ~@16 [b4,d5,f#5]@2 ~@22 [a#4,d5,f#5]@3 ~@21 [b4,d5,f#5]@2 ~@22 [g#4,b4,e5], ~@47 e5@7 ~@138]/8", // A C#5 F#m F# Bm A#aug Bm E
B: "[~@11 f#5@6 e5@6 e5@6 d5@6 a4@3 b4@3 c#5@3 d5@3 e5@12 a4@3 b4@3 c#5@3 d5@3 e5@12 a4@3 b4@3 c#5@3 d5@3 e5@18 c#5@6 d5@6 c#5@49 ~@18]/8",
C: "~@6 [c#5,e5,a5] ~@5", D: "~@4 [c#5,g#5]@3 ~, ~@12 e5@7 ~@5", E: "[a4,c#5,f#5]@5 ~", F: "[a#4,c#5,f#5]@5 ~",
G: "~@6 [d5,f#5] ~@5, ~@12 b4 ~@11", H: "~@4 [a#4,d5,f#5] ~@3", I: "~@12 [b4,d5] ~@11, ~@6 f#5 ~@5",
J: "~@12 [g#4,b4,e5] ~@11", K: "f#5@3 e5@3 e5@3 d5@2 ~", L: "f#5 e5!2 d5", M: "e5 f5 e5 d5 c5@4",
N: "[e5 f5 e5 d5 c5@12]/2", O: "[[a4,c#5]@5 ~]/3",
})).s("gm_muted_trumpet").gain(0.39).pan(0.3)
// chords · piano
const piano = note(`<
A@4 B@6 C@8 D@2 E@6 F@4 G@3 H@6 I@4 J K@3 L@2 M N O@8 P Q@8 R@6 S@4 T@5 U@2 V@2 W@6 X@7 Y@3 Z@2 AA AB AC@2 AD AE AF@2
AG AH AG AI AJ AD AE AF@2 AG AH AG AI AJ AD AE AF@2 AG AH AG AI AJ AD AE AF@2 AG AH AG AI AJ AK AL AM AN@2 AO@3
>`.pickRestart({
A: "[~@12 [d2,a3,d4,f#4]@26 ~@42 [a3,c4,f#4]@15 ~, ~@46 d2@21 ~@29, ~@46 [a3,d4,f#4]@12 ~@5 [a3,f#4]@13 ~@20, ~@55 d3@15 ~@2 d3@24, ~@63 d4@11 ~@22]/4", // D F#dim D
B: "[~@10 d3@8 ~ [a3,c4,e4,g4]@15 ~@2 [a3,c4,e4,g4]@15 ~@2 [a3,c4,e4,g4]@14 ~@12 a2@8 ~ [b3,d4,g4]@14 ~@19 [b3,d4,g4]@15 ~ [b3,d4,g4]@7, ~@2 [a3,c4,f#4]@10 ~@7 a2@19 ~@15 a2@19 ~@16 g2@22 ~@3 g2@25 ~@6, ~@70 [a3,c4,e4,g4]@13 ~@21 d4@15 ~@25, ~@26 [b3,g4]@3 ~@7]/6", // Am7 G F#dim Am7 Em
C: "[~@10 [g3,a#3,d4,f4]@15 ~@10 g2@7 ~ [a#3,c#4,f4]@14 ~@3 [a#3,c#4,f4]@8 a#2@8 [a3,c4,f4]@15 ~@18 [a3,c4,e4,f4]@14 ~@11 f2@8 [a3,c4,e4]@14 ~@11 a2@8 ~ [g2,c4,e4]@16, ~@2 g2@27 ~@14 a#2@19 ~@14 f2@17 ~@8 f2@28 ~@13 a2@17 ~@33, ~@27 [g3,f4]@13 ~@53 a3@12 ~@21 [a3,c4,e4,f4]@12 ~@21 [a3,c4,e4]@15 ~@2 g3@14 ~@2, ~@27 [a#3,d4]@11 ~@55 [c4,f4]@14 ~@85]/8", // Gm7 A#m F Fmaj7 Am C G7 Fmaj7 …
D: "[~@8 g2@8 ~ [a3,c4,e4]@13 ~@12 f#2@6, [g3,c4,e4]@15 ~@2 f#2@22 ~@9, ~@11 [a3,c4,e4]@4 ~]/2", // Am C Am
E: "[~@2 [a3,b3,e4]@15 ~@10 e2@8 a2@16 ~ g2@16 [f2,f3]@16 ~ [e2,e3,e4]@13 ~@3 a3@7 ~@31 [d4,f4]@5, ~@2 e2@16 [a3,e4]@13 ~@4 e4@47 ~@19 f4@11 ~@2 f4@20 ~@10, ~@18 b3@11 ~@6 c#4@62 ~@11 d3@12 ~@7 d3@15 ~@2, ~@35 a3@14 ~@3 g3@14 ~@35 d2@16 ~@3 d2@20 ~@4, ~@114 a3@15 ~@4 a3@11]/6", // Asus2 F E Dm A5
F: "[~@2 d3@5 ~ a3@6 ~@7 e4@6 ~@6 g#3@7 ~@12 [e2,e3]@5 ~@2 [a2,a3]@12 ~@13 [g3,c#4,e4]@11 ~, ~@2 d2@2 ~@4 e2@15 ~@4 e2@22 ~@29 a2@18, ~@8 [b3,e4]@11 ~@2 b3@23 ~@2 [g#3,b3,e4]@9 ~@4 e4@11 ~@26, ~@14 e3@10 ~@16 e3@8 ~@23 [a3,e4]@10 ~@15, ~@21 a3@5 ~@7 e4@10 ~@16 c#4@23 ~@14]/4", // E A C#dim E5 E A5
G: "[~ [g3,c#4,e4]@6 a2@5 ~@46 d3@5 ~ [d3,f#4]@7 a3, ~@14 d2@29 ~@2 d2@16 ~@11, ~@14 f4@17 ~@8 d4@20 ~@13, ~@14 [a3,d4]@15 ~@4 a3@27 ~@4 a3@4 ~@4, ~@26 d3@19 ~@7 f4@8 ~@12]/3", // C#dim D D5
H: "[~@11 d3@5 ~@14 [c4,f#4]@7 c3@6 ~@6 a#3@4 ~@28 g4@3 ~@3 a#2@6 ~ [f3,a#3,c4]@11 ~@14 [f3,a3,c4]@10 ~@3 [f3,a3,c4]@6 f2@6, ~@5 a3@12 ~ c3@17 ~@8 a#2@17 ~@2 a#2@21 ~@11 f2@15 ~@4 f2@21 ~@10, ~@5 d4@8 ~@11 a3@13 ~@19 [d4,g4]@15 ~@4 d4@10 ~@21 a#3@9 ~@29, ~@56 a#3@11 ~ a#3@17 ~@21 [f3,c4]@11 ~@27]/6", // Cdim Fsus4 F G5 F5
I: "[~@7 a3@5 ~@8 d3@6 [a3,b3,e4]@11 ~@14 [g#3,b3,e4]@10 ~@9 e2@10 ~@16, ~ d3@15 ~@10 e2@15 ~@4 e2@21 ~@30, ~@13 [a3,c4,d4,f4]@9 ~@17 b3@12 ~@13 e4@11 ~@21, ~@39 [a3,e4]@8 ~@17 [g#3,b3]@8 ~@24]/4", // Asus2 E Dm7 A5 G#m
J: "~@5 [a1,a2]@19", K: "[~ [g#1,g#2]@4 [f#1,f#2]@7]/3", L: "[~ [b1,b2]@3 [a#1,a#2]@2]/2", M: "~@3 [b1,b2]@5",
N: "~@5 [e1,e2]@7", O: "[~@10 [e2,e3]@25 [a1,a2]@24 [g#1,g#2]@24 [f#1,f#2]@48 [b1,b2]@24 [a#1,a#2]@24 [b1,b2]@13]/8",
P: "~@11 [e1,e2]@13", // E
Q: "[~@11 [e2,e3]@24 a3@4 ~@2 a3@4 ~@2 [a3,c#4]@6 ~@6 g#3@11 ~@7 g#2@5 ~ [g3,c#4]@10 ~@42 c#4@27 ~@4 g2@25 ~, ~@35 a2@13 ~@5 a2@6 g#2@14 ~@10 g2@14 ~@4 g2@30 g2@22 ~@39, ~@35 e4@8 ~@4 e4@22 ~@2 g#3@8 ~@16 c#4@16 ~@2 c#4@22 ~@57, ~@56 c#4@14 ~ [c#4,e4]@11 ~ e4@27 ~@23 a3@56 ~@3, ~@95 g3@8 ~@4 g3@24 g3@25 ~@36]/8", // E A Gdim C#m
R: "[~@42 [a3,c4,f#4]@15 ~@11 d3@8 ~ [a3,c4,e4,g4]@15 ~@2 [a3,c4,e4,g4]@15 ~@2 [a3,c4,e4,g4]@14 ~@12 a2@7, ~@2 d2@5 ~@29, ~@8 [a3,d4,f#4]@12 ~@5 [a3,f#4]@13 ~@22 [a3,c4,f#4]@10 ~@58 [a3,c4,e4,g4]@13 ~@3, ~@17 d3@15 ~@2 d3@27 ~@16 a2@19 ~@15 a2@19 ~@14, ~@25 d4@11 ~@108]/6", // F#dim Am7 D F#dim Am7
S: "[~@2 [b3,d4,g4]@14 ~@19 [b3,d4,g4]@15 ~ [b3,d4,g4]@8 ~@9 [g3,a#3,d4,f4]@15 ~@10 g2@3, ~@2 g2@22 ~@2 g2@25 ~@9 g2@27 ~@9, ~@6 d4@5 ~@21, ~@3 [b3,g4]@2 ~@9 [g3,a#3,d4,f4]@2]/4", // G Gm7 Em Gm7
T: "[~@5 [a#3,c#4,f4]@14 ~@3 [a#3,c#4,f4]@8 a#2@8 [a3,c4,f4]@15 ~@18 [a3,c4,e4,f4]@14 ~@11 f2@8 [a3,c4,e4]@14 ~@2, ~@5 a#2@19 ~@14 f2@17 [c4,f4]@14 ~@51, ~@55 a3@12 ~@21 [a3,c4,e4,f4]@12 ~@20, ~@63 f2@29 ~@12 a2@16]/5", // A#m F Fmaj7 Am F5 Fmaj7
U: "[~@9 a2@8 ~ [g3,c4,e4]@15 ~@9 g2@6, ~ [a3,c4,e4]@15 ~@2 g2@20 ~@10, ~@17 [g3,c4,e4]@7]/2", // C Am C
V: "[~@3 [a3,c4,e4]@13 ~@12 f#2@8 [e2,a3,b3,e4]@12, ~@3 f#2@22 ~@23, ~@19 [a3,c4,e4]@12 ~@17]/2", // Am Esus4 Am
W: "[~@13 e2@8 a2@16 ~ g2@16 [f2,f3]@16 ~ [e2,e3,e4]@13 ~@3 a3@7 ~@31 [d4,f4]@7 d3@5 ~ [e2,a3,b3,e4]@6, ~@4 [a3,e4]@14 ~@3 e4@47 ~@19 f4@11 ~@2 f4@20 ~@24, ~@4 b3@11 ~@6 c#4@62 ~@11 d3@12 ~@7 d3@15 ~@16, ~@21 a3@14 ~@3 g3@14 ~@35 d2@16 ~@3 d2@20 ~@6 d2@3 ~@9, ~@100 a3@15 ~@4 a3@13 ~@12]/6", // F E Dm Esus4 A5
X: "[~@6 e4@7 ~@24 [e2,e3]@5 ~ [a2,a3,e4]@12 ~@13 [g3,c#4,e4]@11 ~ [g3,c#4,e4]@7 a2@5 ~@44 d3@4 ~@2 f#4@6 a3@4 ~@2 d4@7 d3@5 ~ c3, e3@9 ~@4 e2@22 ~@27 a2@21 ~@10 d2@28 ~@3 d2@16 ~@28, ~@6 b3@22 ~@15 c#4@22 ~@28 f4@17 ~@7 d4@19 ~@6 a3@4 ~@8 a3@11 ~@3, ~@6 a3@5 ~@8 [g#3,e4]@9 ~@3 [g#3,b3,e4]@9 ~@16 [a3,e4]@10 ~@27 [a3,d4]@15 ~@3 a3@26 ~@5 d3@13 ~@13, ~@25 e3@8 ~@72 d3@18 ~@7 f4@8 ~@30]/7", // E A5 C#dim C#m E A5 D5
Y: "[~@17 c3@5 ~@8 a#3@4 ~@26 g4@3 ~@3 a#2@6, ~@5 a3@13 ~@5 a#2@17 ~@2 a#2@20 ~@10, ~@11 [c4,f#4]@8 ~@17 [d4,g4]@14 ~@4 d4@9 ~@9, ~@18 a#3@5 ~ a#3@8 ~@4]/3", // Cdim G5
Z: "[[f3,a#3,c4]@5 ~@7 [f3,a3,c4]@5 ~ [f3,a3,c4]@3 f2@3, f2@7 ~@2 f2@10 ~@5, ~@12 f3@11 ~@25, ~@4 [a#3,c4]@3 ~@9]/2", // Fsus4 F A#sus2
AA: "~@6 a3@5 ~@7 d3@6, d3@7 ~@5, ~@3 [a3,c4,d4,f4]@2 ~", // Dm7
AB: "[a3,b3,e4]@5 ~ a3@3 e2@3, e2@7 ~@5, ~@12 b3@11 ~, ~@3 e4@2 ~", // Asus2
AC: "[[g#3,b3,e4]@5 ~@4 e2@5 ~@10, e2 ~@11 e4@10 ~@26, ~@3 [g#3,b3]@2 ~@7]/2", AD: "[a1,a2]", AE: "[g#1,g#2]",
AF: "[f#1,f#2]/2", AG: "[b1,b2]", AH: "[a#1,a#2]", AI: "[e1,e2]", AJ: "[e2,e3]",
AK: "[a3,c4,e4]@10 ~@2 [a3,c4,e4]@6 ~@3 c4@2 ~, a2@2 ~ a2", // Am
AL: "g#2@12 ~@6 g#2@5 ~, [c4,e4]@11 ~, g#3@10 ~@2 g#3@9 ~@3", AM: "[g3,c4,e4]@5 ~ g3@3 g2@3, g2@6 [c4,e4]@5 ~",
AN: "[[f#2,e4]@47 ~, c4@43 ~@5, [f#3,a3]@41 ~@7]/2", AO: "[[a2,a3,c#4,e4]@5 ~]/3",
})).s("gm_piano").gain(0.42).pan(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@7 A ~ B C D ~ E F G ~ H I ~ J K L F M N O P Q R S T U V W X Y Z AA AB AC AD E M AE AF A O AA AG C ~ K AH AI AH AI AH
AI@2 ~ K AJ AK AH AL ~@8 AM K AH ~ M AN AO ~ H AA ~ AP AQ AR AN AS AE AT AU W@2 X AV@2 AW Z@2 AA AX@5 AY AZ@2 BA AZ BA
AZ BA AF AZ ~ AZ BA AZ BA AZ BA AX AZ ~ AZ BA AZ BA AZ BA AF AZ ~ AZ BA AZ BA AZ BA AX AZ ~ AZ@4 ~ AZ ~@2
>`.pickRestart({
A: "~@2 x", B: "~ x ~@22", C: "~@5 x ~@6", D: "~@19 x ~@4", E: "~ x ~@4", F: "~@13 x ~@10", G: "~@11 x", H: "~ x ~",
I: "~@17 x ~@6", J: "~ x ~@7 x ~@2", K: "~@11 x ~@12", L: "~ x ~@3 x", M: "~@5 x ~@18", N: "x ~@6 x ~@16",
O: "~ x ~@2 x ~@7", P: "~ x ~ x ~@4", Q: "~@4 x ~@6 x ~@12", R: "~ x!2 ~", S: "~@7 x ~@6 x ~@9", T: "~@3 x ~ x ~@2",
U: "~@5 x ~@2 x ~@3", V: "~@11 x ~@6 x ~@5", W: "~@13 x ~@5 x ~@4", X: "~@7 x ~@2 x ~", Y: "~@15 x ~@6 x ~",
Z: "~@17 x ~@5 x", AA: "~@3 x", AB: "~ x ~@18 x ~@3", AC: "~@2 x ~@18 x ~@2", AD: "~@3 x ~@18 x ~", AE: "~@5 x ~@2",
AF: "x!2 ~@2", AG: "~ x ~ x ~ x ~@2", AH: "~@5 x", AI: "~@5 x ~@5 x ~@12", AJ: "~@11 x ~@8 x ~@3",
AK: "~@8 x ~@2 x ~@12", AL: "~@5 x ~@6 x ~@11", AM: "~ x ~@10", AN: "~@7 x ~@4", AO: "~@23 x", AP: "~ x ~@6",
AQ: "~ x", AR: "~@4 x ~@16 x ~@2", AS: "~@6 x ~@16 x", AT: "~@10 x ~@6 x ~@6", AU: "~@2 x!2", AV: "~@5 x ~ x",
AW: "~@8 x ~@2 x", AX: "x ~@2 x", AY: "~ x ~@16 x ~@5", AZ: "x", BA: "~@3 x ~@2 x ~",
})).gain(0.56)
// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
~@44 A ~ B ~ C ~@4 D ~ D ~ D ~@4 D ~ D ~@45 E ~ E ~ E ~@4 E ~ E ~ E ~@4 E ~ E ~ E ~@4 E ~ E ~ E ~@11
>`.pickRestart({
A: "~ x", B: "~@13 x ~@10", C: "~@5 x ~@2", D: "~@17 x ~@6", E: "~ x ~@2",
})).gain(0.25)
// drums · snare
const snare = s("sd").struct(`<
~@6 A ~ B C ~ D E F ~ G H ~ I J ~@4 K L F M N O P Q R S T B U V W X Y Z AA C AB AC AD AE AF F AG AH N AI N AI N AI N@2
AJ N AK N AI ~@7 F ~ K ~ D E AL ~ AM Z ~ P V AC ~@5 AN AO G AP B AQ J AR V AS E AT E AT E AT E AU AV AW AV AW AV AW AX
AV AY AV AW AV AW AV AW E AV AY AV AW AV AW AV AW AX AV AY AV AW AV AW AV AW E AV AY E@3 ~@5
>`.pickRestart({
A: "~@11 x ~@12", B: "~ x ~", C: "~@17 x ~@6", D: "~ x ~@6", E: "~ x", F: "~@7 x", G: "~ x ~@2", H: "~@5 x ~@2",
I: "x", J: "~@3 x ~@4", K: "~@3 x", L: "~@13 x ~ x ~ x ~ x ~@4", M: "~@8 x!4", N: "~@23 x", O: "~@19 x ~ x ~ x",
P: "~ x ~@22", Q: "~@2 x ~@18 x ~ x", R: "~ x ~@2 x ~@19", S: "~@5 x ~@18", T: "x!4 ~@8", U: "~@3 x ~ x ~ x ~ x ~@14",
V: "~@5 x ~@6", W: "~@5 x ~@2 x ~ x ~ x ~@11", X: "~@13 x ~@10", Y: "~@8 x ~ x ~ x ~@2 x ~@8", Z: "~@2 x",
AA: "~@8 x ~ x ~@2 x ~ x ~ x ~@6", AB: "~ x ~ x ~@2 x ~", AC: "~@19 x ~@4", AD: "~@5 x ~@4 x ~@8 x ~@4", AE: "~@5 x",
AF: "~@2 x ~ x ~@2 x", AG: "~@7 x ~@14 x ~", AH: "~@8 x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x", AI: "~@9 x ~@4 x ~@8 x",
AJ: "~@9 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", AK: "~@8 x ~@5 x ~@8 x", AL: "~@11 x", AM: "~@7 x ~@16", AN: "~@4 x ~@18 x",
AO: "~ x ~ x ~ x ~@18", AP: "~ x ~ x ~ x ~ x ~@16", AQ: "~ x!4 ~@7", AR: "~@2 x!4 ~@6", AS: "~@5 x ~ x ~ x ~ x ~@12",
AT: "~@3 x!4 ~@5", AU: "~@2 x!5 ~@5", AV: "~@6 x ~@4 x", AW: "~ x ~@2 x ~@3", AX: "~@4 x ~@2 x", AY: "x!7 ~@5",
})).gain(0.56)
// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@34 B C ~@8 D ~@8 D ~@11 E ~@34 F ~@8 G ~@8 H ~@8 H ~@8 H ~@8>".pickRestart({
A: "~ x ~@5 x ~@16", B: "~@19 x ~ x ~@2", C: "~ x ~ x ~@20", D: "~@3 x ~@3 x ~@16", E: "~@11 x ~@5 x ~@6",
F: "~@8 x!4", G: "~@8 x ~ x!2", H: "~@4 x!2",
})).gain(0.44)
// drums · hihat
const hihat = s("hh").struct(`<
~@6 A B C D E F G H I J K L C M E F N H O P Q R S T U V W X Y Z AA AB O AC AD R ~ AE AF Y AG AH AD AI AJ AB AK AL@8 AK
AL@3 AM ~@6 AN C E AO G AP I J K L C M E F N H A AQ AR AB O Y AG AH AD AI AJ AB AL AS AF@5 AT ~ AS AF@8 AS AF@8 AS
AF@8 AS AF@9 AU AF ~@5
>`.pickRestart({
A: "~@5 x ~@8 x ~@7 x ~", B: "~@7 x ~@8 x ~@7", C: "x ~@7 x ~@8 x ~@6", D: "~ x ~@7 x ~@7 x ~@6",
E: "~ x ~@3 x ~@3 x ~@2", F: "~@3 x ~@7 x ~@7 x ~@4", G: "~@3 x ~@8 x ~@7 x ~@3", H: "~@4 x ~@8 x ~@7 x ~@2",
I: "~@5 x ~@7 x ~@8 x ~", J: "~@3 x ~@3 x ~@3 x", K: "~@7 x ~@7 x ~@7 x", L: "~ x!2", M: "~ x ~@7 x ~@8 x ~@5",
N: "~ x ~ x ~ x", O: "~@5 x ~@6 x ~@5 x ~@5", P: "x ~@6 x ~@5 x ~@5 x ~@4", Q: "~@2 x ~@5 x ~@5 x ~@6 x ~@2",
R: "~@3 x ~@5 x ~@6 x ~@5 x ~", S: "~@4 x ~@6 x ~@5 x ~@5 x", T: "~@6 x ~@5 x ~@6 x ~@4",
U: "~ x ~@5 x ~@6 x ~@5 x ~@3", V: "~@2 x ~@6 x ~@5 x ~@5 x ~@2", W: "~@4 x ~@5 x ~@5 x ~@6 x",
X: "~@5 x ~@5 x ~@6 x ~@5", Y: "x ~@5 x ~@6 x ~@5 x ~@4", Z: "~ x ~@6 x ~@5 x ~@5 x ~@3",
AA: "~@3 x ~@5 x ~@5 x ~@6 x ~", AB: "~@4 x ~@5 x ~@6 x ~@5 x", AC: "~ x ~@5 x ~@5 x ~@6 x ~@3",
AD: "~@2 x ~@5 x ~@6 x ~@5 x ~@2", AE: "~@11 x ~@5 x ~@6", AF: "x!4", AG: "~ x ~@5 x ~@5 x ~@5 x ~@4",
// … 43 more lines
More by Camaleonti
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.