0:00/0:00
// Jerusalem — Emerson, Lake & Palmer
// 137 bpm, 4/4, key F 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: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 9 "[A-09] SYN.READ" Trumpet 1 -> trumpet
// note: duplicate parts dropped: ch 4 "[A-04] BASS2" acoustic bass (copy of ch 3 "[A-03] BASS1" slap bass 2); ch 7 "[A-07] ORGAN R" drawbar organ (copy of ch 6 "[A-06] ORGAN L" drawbar organ)
// note: Full arrangement: all 95 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · slap bass 2 · "[A-03] BASS1"
const bass = note(`<
A B C@8 D@2 E ~@22 F@4 G H@7 I J@2 K@2 L M@8 N O P Q R@2 S@2 T U@3 V W@6 X@4 Y@8 Z AA ~
>`.pickRestart({
A: "~@12 a2@4 ~@2 a1@5 ~", B: "d2@3 g2 a2@4",
C: "[e2@8 f2@2 ~ d2@6 c2@3 b1@2 ~ c2@12 ~@6 d2@6 g2@8 g2@2 ~@2 c3@8 c3@3 c3@6 c3@3 c3@3 d3@2 ~ c3@5 bb2@3 a2@6 g2@2 ~ f2@5 e2@2 ~ d2@17 a1@21 ~@2 a1@20 ~@2 bb1@3 a1@3 bb1@3 a1@3 bb1@5 bb1@3]/8",
D: "[a1@3 bb1@3 a1@3 bb1@5 bb1@3 a1@3 bb1@3 a1@2 f2@3 e2@3 f2@3 e2@3 f2@3 e2@3 f2@3 e2@2]/2", E: "~ f2@20 ~@3",
F: "[~@8 bb1@6 bb1@6 a1@6 g1@12 c2@12 bb1@12 a1@6 g1@5 f1@6 e1@6 d1@6 bb1@5]/4", G: "~ a1@12 bb1@11",
H: "[c2@12 f1@23 f1@23 a2@4 ~ a1@5 ~ d2@9 g2@2 a2@9 ~@3 e2@8 f2@2 ~ d2@6 c2@3 b1@2 ~ c2@11 ~@6 d2@4 ~@2 g2@8 g2@2 ~ c3@9 c3@3 c3@5 c3@2]/7",
I: "~ c3@3 d3@2 ~ c3@6 bb2@2 a2@6 g2@2 ~", J: "[f2@6 e2@2 ~ d2@17 a1@21 ~]/2",
K: "[~ a1@20 ~@2 bb1@2 ~ a1@2 ~ bb1@2 ~ a1@2 ~ bb1@4 ~@2 bb1@2 a1@2 ~ bb1@2]/2",
L: "~ a1@2 ~ bb1@4 ~@2 bb1@2 a1@2 ~ bb1@2 ~ a1@2 ~ f2@2 ~",
M: "[e2@2 ~ f2@2 ~ e2@2 f2@2 ~ e2@2 ~ f2@2 ~ e2@2 ~ f2@22 ~@2 d2@3 d3@3 a2@3 bb2@3 g2@3 a2@3 f2@3 d2@3 bb1@7 ~@2 bb1@3 bb2@10 ~@2 f2@8 ~ f2@3 f2@6 c2@5 ~ f2@11 ~ bb1@11 ~ a1@11 ~ d2@11 ~ c2@11 ~ bb1@2 ~ f3@2 e3@3 c3@3 d3@3 bb2@2]/8",
N: "~ f2@5 ~ bb1@5 bb2@6 a2@6", O: "f2@6 d2@8 ~ d2@3 a2@4 ~@2", P: "a2@6 d2@8 ~ d2@3 a1@6",
Q: "c2@6 d2@8 ~ d2@3 a2@4 ~@2", R: "[a2 d2@2 c2@2 d2@2 e2]/2", S: "[f2 g2@2 c3@5]/2", T: "c3@2 bb2@2 a2@2 g2 ~",
U: "[g2@3 ~@2 a2@3 ~@3 a2@3 ~@3 bb2@3 ~@3 bb2@3 ~@3 c3@3 ~@3 c3@3 ~@3 g2@3 ~@3 g2@3 ~@2 a2@3 ~@3 a2@3 ~@3 bb2@3 ~@3 bb2@2]/3",
V: "~@4 c3@3 ~@3 c3@3 ~@3 f2@3 f2@3 f2@2",
W: "[~ f2@3 f2@3 f2@3 f2@3 f2@3 f2@3 f2@3 ~ f2@3 f2@3 f2@3 f2@3 f2@3 f2@3 bb1@12 bb1@3 bb1@3 bb1@3 bb1@3 bb1@5 ~ bb2@6 bb2@6 a2@6 g2@3 a1@3 bb1@3 c2@3 d2@3 e2@3 f2@3 a2@3 g2@11 ~ c3@9 bb2@3 a2@6 c2]/6",
X: "[~@2 d2@3 e2@3 f2@3 g2@3 e2@3 f2@6 e2@6 d2@6 bb1@6 ~ a1@12 bb1@12 c2@12 f1@6 f1@6 a1@6]/4",
Y: "[c2@5 d2@17 ~ f2@6 d2@6 c2@3 bb1@3 eb2@17 g1@6 bb1@6 eb2@6 g2@17 ~ bb2@5 g2@6 f2@3 eb2@3 f2@32 eb2@3 f2@33 ~ eb2@4 f2!2 ~ f2!4 ~]/8",
Z: "f2!5 ~ f2!4 ~ f2!5 ~ f2!4 ~ f2!2", AA: "f2!3 ~ f2!4 ~ f2 f2@14",
})).s("gm_slap_bass_2").gain(0.59).pan(0.6)
// bass · electric bass pick · "[A-03] BASS1"
const bass_2 = note("<~@29 A B@6 ~@59>".pickRestart({
A: "~@7 c2@5", B: "[~ g2@24 f2@24 bb1@12 ~@11]/6",
})).s("gm_electric_bass_pick").gain(0.59).pan(0.6)
// bass · lead 2 sawtooth · "[A-05] SYN.BASS"
const bass_3 = note("<A B C@8 D@2 E ~@29 F@5 G H@2 I@2 J K@2 ~@28 L M@6 N@4 ~>".pickRestart({
A: "~@2 a3 a2", B: "d3@3 g3 a3@2 ~@2",
C: "[e3@8 f3@3 d3@6 c3@3 b2@3 c3@12 ~@6 d3@6 g3@8 g3@3 ~ c3@8 c3@3 c3@6 c3@3 c3@3 d3@3 c3@5 bb2@3 a2@6 g2@3 f2@5 e2@3 d2@17 a2@45 bb2@3 a2@3 bb2@3 a2@3 bb2@5 bb2@3]/8",
D: "[a2@3 bb2@3 a2@3 bb2@5 bb2@3 a2@3 bb2@3 a2@2 f3@3 e3@3 f3@3 e3@3 f3@3 e3@3 f3@3 e3@2]/2", E: "~ f3@9 ~@14",
F: "[~@10 a3@5 a2@6 d3@9 g3@2 a3@6 ~@6 e3@8 f3@3 d3@6 c3@3 b2@3 c3@11 ~@6 d3@6 g3@8 g3@3 c3@9 c3@3 c3@5 c3@2]/5",
G: "~ c3@3 d3@3 c3@6 bb2@2 a2@6 g2@3", H: "[f2@6 e2@3 d2@17 a2@22]/2",
I: "[~ a2@22 bb2@3 a2@3 bb2@3 a2@3 bb2@5 ~ bb2@2 a2@3 bb2@2]/2", J: "~ a2@3 bb2@5 ~ bb2@2 a2@3 bb2@3 a2@3 f3@3",
K: "[e3@3 f3@3 e3@2 f3@3 e3@3 f3@3 e3@3 f3@15 ~@13]/2", L: "~@2 f2 a2",
M: "[c3@5 d3@18 f3@6 d3@6 c3@3 bb2@3 eb3@17 g2@6 bb2@6 eb3@6 g3@18 bb3@5 g3@6 f3@3 eb3@3 f3@30 ~@2 eb3]/6",
N: "[~@2 f3@30 ~@4 eb3@4 f3@35 ~@21]/4",
})).s("gm_lead_2_sawtooth").gain(0.4).pan(0.6)
// chords · drawbar organ · "[A-06] ORGAN L"
const drawbar_organ = note(`<
A@2 B@5 C@6 D@2 E@2 F@3 G@5 H I@2 J@8 K@3 L M@7 N O@6 P@8 Q@7 R@4 S@4 T@6 U@7 V@4 ~
>`.pickRestart({
A: "[~@12 [f5,a5,c6]@25 ~@5 [a4,c5]@3 ~@3]/2", // F Am
B: "[[g4,b4,d5]@8 e5@3 [f4,g4,c5,d5]@25 ~@5 [c5,d5]@3 ~@3 [c5,d5,g5]@8 [c5,d5]@2 ~@2 [c5,f5]@8 [c5,e5]@2 ~ [g4,c5]@4 ~@2 [g4,c5,e5]@2 ~ [g4,c5]@2 ~ [a4,d5,gb5]@2 ~ [g4,c5,e5]@5 [g4,c5,e5]@2 ~ [a4,c5,f5]@5 ~ [a4,c5] ~@2 [bb4,d5]@5 [c5,e5]@2 ~ [d5,f5]@10, ~@59 g4@11 ~@50]/5", // G Fsus2 Csus2 F5 C C5 C C5 …
C: "[~@2 f5@3 g5@2 [d5,e5,a5]@37 ~@3 a4@3 c5@2 d5 ~ e5 ~@9 a4@11 g4@15 ~@2 f5@3 e5@2 bb4@23 ~ a4@3 ~@3 [c4,f4]@4 ~@2 [f4,a4]@4 ~@2 [e3,e4,a4,c5]@5, ~@52 bb4@38 ~@2 [f4,bb4]@5 ~@36 f3@6 ~@5, ~@55 d5@35 ~@7 [c5,f5]@27 ~@20]/6", // Dsus2 F5 F Am Bb5 F5
D: "[~ d3@21 c3@3 bb4@4 ~@2 [bb4,d5,f5]@6 [bb4,d5]@6 c5@3 bb4@2, ~ [f4,d5]@28 ~@19, ~ a4@24 bb2@18 [d3,g4]@5]/2", // Bb Dm G5
E: "[~ a4@18 [e4,g4]@6 [f4,a4]@10 ~@2 [bb4,d5]@6 c5@3 bb4@2, ~ c5@34 ~@13, ~ f2@24 f2@12 [bb2,f4]@11, ~ f4@16 ~@31]/2", // Em F Bb Bb5
F: "[~ [f4,a4,c5]@6 [c4,f4,a4]@6 g4@12 ~@6 c3@6 [d4,f4,bb4]@26 ~@4 [d4,f4]@5, ~ a2@12 d3@18 ~@6 bb2@24 ~@11, ~@13 d4@10 ~@2 a4@12 ~@35, ~@25 [d4,f4]@10 ~@37]/3", // F Bb Dm
G: "[~ [e4,a4]@4 ~@2 [e4,a4,c5]@4 ~@2 [f4,a4]@10 ~@2 e4@6 bb4@6 ~@6 f5@6 [c5,e5]@6 d5@3 c5@3 a4@21 ~@9 d5@6 [a4,e5]@6 a4@6 c5@9 b4@2, ~ c4@6 f3@6 d3@36 [a2,a4]@12 [d2,f4]@36 [c3,e4]@12 [d3,e4,a4]@11, ~@13 d5@28 ~@20 d5@29 ~@30, ~@25 g4@12 [f4,a4]@12 ~@36 b4@11 ~@24]/5", // A5 Am F C A5 A Dm C …
H: "~ e3@6 f3@6 [g3,c4,e4,g4]@11, ~ [c4,e4,a4]@12 ~@11", // C Am
I: "[~ [f4,a4]@10 ~@2 [e4,g4]@6 [d4,f4]@5 ~ [c4,e4]@3 ~@3 [c3,e4,g4]@6 ~ [bb2,d4,g4]@6 [a2,c4,gb4,a4]@4, ~ c3@30 ~@17, ~ c5@27 ~@20]/2", // F Em Dm C Gm Gbdim
J: "[~@2 [d4,g4,bb4]@29 ~ [d4,f4,bb4,d5]@5 ~ c5@9 ~@3 [d4,bb4]@27 ~@3 [g2,bb3,d4,g4]@6 [d4,g4,bb4]@6 [e4,a4,c5]@6 d5@9 ~@3 [d5,f5]@22 ~@2 eb5@3 d5@3 c5@6 [f4,bb4,d5]@27 ~@3 [bb2,d4,f4,bb4]@6 [bb2,f4,bb4,d5]@6 [a2,bb4,d5,f5]@4, ~ g2@18 [c3,c4,e4]@6 g2@15 ~@3 g2@6 [f2,f4]@24 bb2@15 ~@8, ~@47 g4@30 ~@21 bb4@34 ~@2 a4@11 ~@47]/8", // Gm Bb Gm Am Dm Bb Bbmaj7 C …
K: "[~@2 g5@9 f5@3 [g4,c5,e5]@10 ~@2 e5@9 d5@3 [a2,f4,a4]@6 [g2,g4,bb4]@5 [f2,f4,a4]@6 [e2,f4,a4,c5]@6 [d2,f4,a4,d5,f5]@6 [bb2,f4,bb4,d5]@5, ~ [g2,bb4,d5]@6 c3@6 [bb2,e4,g4,c5]@6 c5@8 ~@9]/3", // C Dm Gm F Fmaj7 Dm Bb Gm …
L: "~ c5@6 d5@5 ~ [bb2,d4,f4,a4]@11, ~ [a2,f4,a4]@12 ~@11", // Bbmaj7 Dm
M: "[f4@9 e4@2 ~ bb3@23 a3@20 ~@3 [f5,a5,c6]@25 ~@3 [a4,c5]@3 ~@3 [g4,b4,d5]@7 ~ e5@2 ~ [f4,g4,c5,d5]@24 ~@5 [c5,d5]@3 ~@3 [c5,d5,g5]@8 [c5,d5]@2 ~ [g4,c5,f5]@7 ~@2 [g4,c5,e5]@2 ~ [g4,c5]@4 ~ [g4,c5,e5]@2, [c3,c4,g4]@12 [c4,f4]@43 ~@113, ~@4 f2@13 ~@39]/7", // F Am G Fsus2 Csus2 Csus4 C C5 …
N: "~ [g4,c5]@2 ~ [a4,d5,gb5]@2 ~ [g4,c5,e5]@5 ~ [g4,c5,e5]@2 [a4,c5,f5]@5 ~ [a4,c5] ~@2", // C5 D C F Am
O: "[[bb4,d5]@5 ~ [c5,e5] ~@2 [d5,f5]@10 ~ f5@2 ~ g5@2 ~ [d5,e5,a5]@37 ~@3 a4@3 c5@2 d5 ~ e5 ~@9 a4@11 g4@16 ~ f5@3 e5@3 bb4@23 a4@4, ~@71 bb4@39 ~ [f4,bb4]@5 ~@28, ~@74 d5@36 ~@7 [c5,f5]@27]/6", // Bb C Dm Dsus2 Bb5 F5
P: "[~@2 [c4,f4]@4 ~ [f4,a4]@4 ~@2 [e4,a4,c5]@4 ~@3 a4@22 ~@8 [d5,f5]@6 [bb4,d5]@6 c5@3 bb4@3 a4@18 [e4,g4]@6 [f4,a4]@10 ~@2 [bb4,d5]@6 c5@3 bb4@2 ~ [f4,a4,c5]@6 [c4,f4,a4]@6 g4@12 [d4,f4]@10 ~@2 [d4,f4,bb4]@26 ~@2 [d4,f4]@4 ~@2 [e4,a4]@4 ~@2, ~@20 f4@30 ~@12 g4@6 f4@16 ~@20 f4@11 ~@13 d4@10 ~@54, ~@10 d5@14 ~@10 c5@17 ~@45, ~@44 bb4@11 ~@85 a4@12 ~@40]/8", // F5 F Am Dm Bb Em F Bb …
Q: "[[e4,a4,c5]@4 ~@2 [f4,a4]@10 ~@2 e4@6 bb4@6 ~@6 f5@6 [c5,e5]@6 d5@3 c5@3 a4@21 ~@9 d5@6 [a4,e5]@6 a4@6 c5@9 b4@3 [c4,e4,a4]@12 [e4,g4]@10 ~@2 [f4,a4]@10 ~@2 [e4,g4]@6 [d4,f4]@5 ~ [c4,e4]@5 ~, ~@6 d5@28 ~@20 d5@29 ~@85, ~@18 g4@12 [f4,a4]@12 a4@11 ~ f4@35 ~ e4@12 [e4,a4]@11 ~@13 c4@12 ~@30, ~@78 b4@11 ~@49 c5@29 ~]/7", // Am F C A5 Am Em F Em …
R: "[[e4,g4]@5 ~ [d4,g4]@5 ~ [c4,gb4,a4]@5 ~ [d4,g4,bb4]@28 ~ [d4,f4,bb4,d5]@5 ~ c5@9 ~@3 [d4,bb4]@26 ~@3 [bb3,d4,g4]@2, ~@53 [c4,e4]@11 ~@32, ~@62 g4@29 ~@5]/4", // Em G5 Gbdim Gm Bb Gm C
S: "[~@4 [d4,g4,bb4]@6 [e4,a4,c5]@6 d5@9 ~@3 [d5,f5]@23 ~@2 eb5@3 d5@3 c5@6 [f4,bb4,d5]@27 ~@3 [d4,f4,bb4], ~ f4@3 ~@2, ~@16 bb4@35 ~@2 a4@11 ~@32]/4", // Gm Am Dm Bb
T: "[~@5 [f4,bb4,d5]@6 [bb4,d5,f5]@5 ~ g5@30 f5@6 e5@9 d5@3 [f4,a4]@12 [g4,bb4]@12 [f4,a4]@5 ~ c5@6 [d5,f5]@6 [bb4,d5]@6 ~ c5@6 d5@6 [d4,f4,a4]@12 [c4,f4,g4]@6, ~@17 [bb4,d5]@36 [g4,c5]@12 c5@29 ~ f4@18 ~ [f4,a4]@12 ~@18, ~@95 a4@12 ~@37]/6", // Bb F Gm F Dm Bb Dm Csus4 …
U: "[e4@5 ~ [a3,c4,f4]@23 [a3,d4,f4]@34 ~@2 [eb4,g4,bb4]@34 ~ [bb4,c5,eb5,g5]@34 ~ [c5,f5,a5]@32 [bb4,eb5,g5]]/7", // F Dm Eb Cm7 F Eb
V: "[~@2 [c5,f5,a5]@33 ~ [bb4,eb5,g5]@4 [c5,f5,a5]@47 ~@9]/4", // F Eb F
})).s("gm_drawbar_organ").gain(0.29).pan(0.2)
// other · trumpet · "[A-09] SYN.READ"
const trumpet = note("<~@54 A B@2 C D ~ E F G@4 ~ H I J ~@25>".pickRestart({
A: "~@23 a5", B: "[~@2 g5@2 ~ e5@2 ~ f5@2 ~ d5@2 ~ c5@2 ~ e5@2 ~ d5@19 ~@9]/2",
C: "~@5 f5@2 ~ c6@6 d6@2 ~ bb5@2 ~ c6@3 ~", D: "~ f5@8 ~@3", E: "~@13 f5 ~@2 g5 ~@2 a5 ~@2 bb5 ~",
F: "~ f5 ~@2 bb4 ~@2 d5@15 ~@2", G: "[~@9 a5 ~ g5 ~ a5 ~ c6 ~ g6 ~ e6 ~ c6 ~ d6@21 ~@4]/2", H: "~@22 c5 ~",
I: "f5 ~ g5 ~ bb5 ~ a5@6 g5@4 f5 ~ g5@2 c5 ~@3", J: "~ c5@11 ~@12",
})).s("gm_trumpet").gain(0.57).pan(0.3)
// other · lead 1 square · "[A-09] SYN.READ"
const lead_1_square = note("<~@69 A B@2 C D@2 E@4 F@3 G@5 H@7 ~>".pickRestart({
A: "~@11 d5", B: "[c5@2 ~ a4@2 bb4@2 a4@2 d5@2 g4@2 a4@2 f4@2 g4@18 ~@6 g3 a3 ~ bb3 c4 ~ d4, ~ f5 ~@22]/2",
C: "eb4 f4 ~ a4 g4 ~ a4 bb4 ~ c5 d5 ~ eb5 f5 ~ a5 g5@8",
D: "[~ f5 c5 ~ d5 f5 ~ c5 bb4 ~ d5@4 c5 ~ d5@6 d5@6 bb5@9 a5@3 f5@8]/2",
E: "[~@2 g5@3 eb5@6 d5@3 c5@3 d5@23 ~@7 bb4@6 d5@6 f5@6 g5@2 ~ a4@2 ~ c5@2 ~ eb5@2 f5 g5@2 ~ bb5@2 ~ d6@2 ~ f6@2 g6 a6@7, ~@67 g4@2 ~ bb4@2 ~ d5@2 ~@4 a5@2 ~ c6@2 ~ eb6@2 ~@9]/4",
F: "[~@2 g6@3 e6@8 ~ g6@3 c6@27 ~@3 c6@6 f6@6 d6@6 ~ c6@6]/3", G: "[d6@6 a5@12 g5@9 f5@3 f5@54 ~@5 a6@11 g6@20]/5",
H: "[~@4 c7@12 bb6@21 ~@2 c7@29 ~@3 bb6@3 c7@30 ~@4 bb6@4 c7@41 ~@15]/7",
})).s("gm_lead_1_square").gain(0.36).pan(0.4)
// drums · kick
const kick = s("bd").struct(`<
A B C D E F G H ~ I J K L ~@22 M N L O P Q ~ R S T U V W X L Y Z AA AB AC AD AE AD AE AF ~@2 AG AH AI AJ AG AK A@2 AL
AM AN AO AP AQ D AR AS AT AR A AU U AV AR AW AX AY Y L AZ ~@2 L
>`.pickRestart({
A: "~@3 x", B: "~@3 x!2 ~@3", C: "x ~@10 x ~@11 x", D: "~@17 x ~@5 x", E: "~@11 x ~@7 x ~@2 x ~",
F: "~@4 x ~@5 x ~@2 x ~@4 x ~@2 x ~@2", G: "~@3 x ~@2 x ~@4 x ~@2 x ~@5 x ~@3", H: "~@7 x ~@16", I: "~ x ~@4",
J: "~ x ~@2 x ~@3", K: "~ x ~@22", L: "~ x ~@10", M: "~@4 x ~@2 x ~@2 x ~", N: "x!2 ~@5 x ~@4",
O: "~ x ~@5 x ~@5 x ~@10", P: "~@13 x ~@10", Q: "x!2", R: "~@5 x ~@2", S: "~@3 x!2 ~@7",
T: "~@7 x ~@5 x ~@2 x ~@2 x ~@4", U: "~ x!3", V: "~@5 x ~@16 x ~", W: "~@4 x ~@2 x ~@5 x ~ x ~@5 x ~@2",
X: "x ~ x!2 ~ x ~@2", Y: "~@23 x", Z: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~",
AA: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2", AB: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@6", AC: "~@5 x",
AD: "~@5 x ~@11 x ~@2 x ~@2 x", AE: "~@17 x ~@2 x ~@3", AF: "~@5 x ~@11 x ~@2 x ~@3", AG: "~@2 x ~@2 x ~@2",
AH: "~ x!3 ~@4", AI: "~ x!2 ~@2 x ~@2", AJ: "~ x!2 ~@5", AK: "~ x!2 ~@3 x ~", AL: "x ~@4 x ~@5 x ~@5 x ~@5 x",
AM: "~@5 x ~@5 x ~@5 x ~@5 x", AN: "~@2 x ~@2 x ~@2 x ~@2 x", AO: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~",
AP: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x", AQ: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@6",
AR: "~@5 x ~@5 x ~@5 x ~@6", AS: "~@17 x ~@6", AT: "~@5 x ~@18", AU: "~ x ~ x", AV: "x ~@4 x ~@17 x",
AW: "~@5 x ~@2 x ~@2 x", AX: "~@2 x ~@8 x", AY: "~ x ~ x!3 ~@2", AZ: "~@3 x!2 ~",
})).gain(0.54).pan(0.6)
// drums · snare
const snare = s("sd").struct(`<
A B C D E F G ~@3 H ~@21 I@2 J K L ~@2 M N O P Q ~ R S T U ~ V W X Y Z AA@5 AB AC AD AE@2 AF AE@2 AG AH AI AJ AK AL AM
AN AO AP AQ ~ AR ~ AS AT AU AV AW AX AY AZ BA BB ~@2 BC
>`.pickRestart({
A: "~ x", B: "x ~@2 x!2 ~@3", C: "x ~@10 x ~@5 x ~ x ~ x ~ x", D: "~@17 x ~@5 x", E: "~@7 x ~@3 x ~@7 x ~@2 x ~",
F: "~@4 x ~@2 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2", G: "~@3 x ~@2 x ~@4 x ~@2 x ~@5 x ~@3", H: "~@3 x ~@4",
I: "~@4 x!2 ~@2 x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", J: "~@11 x ~@2 x ~@2 x ~@2 x ~@2 x", K: "~ x ~@10", L: "~@5 x ~@18",
M: "~@19 x ~@4", N: "~@6 x ~@11 x!2 ~@4", O: "~@11 x!2 ~@2 x ~ x ~ x ~ x ~@2", P: "x!2 ~@2 x ~@4 x!2 ~@10 x ~@2",
Q: "~@6 x ~ x ~@5 x!4 ~ x ~@4", R: "~@2 x!2", S: "~@2 x ~@9 x!4 ~ x ~@6", T: "~@4 x ~@2 x ~@5 x ~ x ~@5 x ~@2",
U: "x ~ x!2 ~ x ~@2", V: "~ x!5 ~@18", W: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~",
X: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2", Y: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@4 x ~",
Z: "x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x ~@6", AA: "~ x ~", AB: "~@8 x ~@2 x ~ x ~ x!2 ~ x!2 ~ x!2 ~",
AC: "~@2 x ~ x!2 ~ x!3 ~@2 x ~ x!2 ~ x!2 ~@2 x ~@2", AD: "x!2 ~@4 x ~", AE: "~@3 x", AF: "~@5 x!2 ~",
AG: "x!2 ~ x!2 ~@19", AH: "~ x!2 ~@3 x!2", AI: "x ~@2 x!3 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2 x ~@2 x",
AJ: "~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@2 x ~@2 x", AK: "~ x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!3",
AL: "~ x!2 ~ x ~@2 x ~@2 x ~@2 x!2 ~ x ~@7", AM: "~ x ~@2 x ~", AN: "~@5 x ~@5 x ~@5 x ~@4 x!2",
AO: "~ x!2 ~ x ~@18 x", AP: "~@5 x ~@5 x ~@5 x ~@2 x ~@3", AQ: "~@2 x ~@20 x", AR: "~@5 x ~@5 x ~@5 x ~@6", AS: "x",
AT: "~ x!3", AU: "x ~@4 x ~@5 x!7 ~@5 x", AV: "~@5 x ~@5 x ~@2 x ~@2 x ~@6", AW: "~@5 x ~@2 x ~@2 x",
AX: "~@4 x ~@5 x!5 ~ x ~@5 x ~", AY: "~@3 x ~@5 x ~@2 x ~@2 x!2 ~ x!4 ~ x", AZ: "x!2 ~ x!3 ~ x!5 ~ x!6 ~ x!4",
BA: "~@2 x ~ x!4 ~ x!4 ~ x!2 ~ x!5 ~ x", BB: "x!5 ~ x!4 ~@2 x ~@3 x ~@7", BC: "x!2 ~@22",
})).gain(0.42).pan(0.6)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@34 A ~@34 B ~ C ~@16 D E F G ~@3>".pickRestart({
A: "~ x ~", B: "~@23 x", C: "~@11 x", D: "~@17 x ~@4 x ~", E: "~@2 x ~@3 x ~@5 x ~@6 x ~@4",
F: "~@8 x ~@4 x ~@2 x ~@5 x ~", G: "~@5 x ~@4 x ~@13",
})).gain(0.24).pan(0.6)
// drums · low tom
const low_tom = s("lt").struct(`<
~@6 A B C D ~ E F ~@19 G H I ~ J K I L M N O ~ P Q ~@2 R S T ~@10 U ~@4 V ~ W X ~@6 Y Z AA AB AC AD AE AF ~@2 AG ~@7
AH
>`.pickRestart({
A: "~@11 x ~@2 x ~@5 x ~@3", B: "~@2 x!6 ~@16", C: "~@17 x!7", D: "x!4 ~@20", E: "~@19 x!4 ~", F: "x!2 ~@10",
G: "~@2 x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~", H: "x!4 ~@2 x!2 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~", I: "x",
J: "~@14 x ~@5 x!4", K: "~ x ~@18 x!4", L: "~@7 x!5 ~@12", M: "~@6 x ~@13 x!4", N: "x!9 ~@15", O: "~@7 x ~@16",
P: "~ x!7 ~@5 x ~@2 x ~@7", Q: "x!7 ~@17", R: "~@6 x ~@2 x ~@5 x ~@4 x!4", S: "x!2 ~@22", T: "~@12 x!5 ~ x!5 ~",
U: "~ x ~@22", V: "~ x ~@6", W: "~@12 x!2 ~ x!2 ~ x ~@5", X: "~@5 x ~@2", Y: "~@11 x!2 ~ x!2 ~@8", Z: "~@5 x",
AA: "~@2 x ~@2 x ~ x!2 ~ x!2 ~ x!2 ~ x ~@7", AB: "~@7 x!9 ~@7 x", AC: "x!5 ~@19", AD: "~@5 x!2 ~ x ~@2 x!6 ~@7",
AE: "~@21 x!3", AF: "x!6 ~@18", AG: "~ x ~@4", AH: "~ x ~@10",
})).gain(0.36).pan(0.6)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C ~@3 D E F G H ~@22 I J ~@8 K ~@4 L M N O P ~@6 Q ~@7 R ~ S T U V ~@21
>`.pickRestart({
A: "~@3 x", B: "~@5 x ~@18", C: "~@11 x ~@12", D: "~@7 x ~@5 x ~@5 x ~@4", E: "x ~@5 x ~@5 x ~@4 x ~@5 x",
F: "~@4 x ~@5 x ~@5 x ~@4 x ~@2", G: "~@9 x ~@5 x ~@4 x ~@3", H: "~ x ~@5 x ~@5 x ~@5 x ~@4",
I: "~@8 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", J: "~ x ~@10", K: "~@19 x ~@4", L: "~@2 x ~@4 x ~@5 x ~@5 x ~@4",
M: "~ x ~@4 x ~@5 x ~@5 x ~@4 x", N: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@4",
O: "~ x ~@2 x ~@5 x ~ x ~@2 x ~@2 x ~@5", P: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", Q: "~ x ~", R: "x!4",
S: "x ~@10 x ~@11 x", T: "~@11 x ~@11 x", U: "~@5 x ~@5 x", V: "~@5 x ~@6",
})).gain(0.54).pan(0.6)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@5 A B ~ C D E F ~@22 G H I J ~ K ~@3 L H ~@2 D H M N ~@14 D H ~ O P ~@6 Q ~@2 R S T ~@3 S U ~@8
>`.pickRestart({
A: "~@6 x!2", B: "~ x!2 ~@5", C: "~@6 x ~ x!3 ~ x ~ x!3 ~@7", D: "~@7 x", E: "x!3 ~@17 x ~ x!2",
F: "x ~@12 x ~ x!2 ~ x ~@5", G: "~@4 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~ x!2 ~@2 x", H: "x", I: "~@11 x ~@12",
J: "~@10 x!3 ~ x!5 ~@5", K: "~ x!4 ~ x ~@12 x ~@4", L: "~@20 x!4", M: "~@19 x!5", N: "~@6 x!6 ~@12",
O: "~@6 x!2 ~ x!2 ~@13", P: "~@3 x!2 ~@3", Q: "~@5 x ~ x!2 ~ x ~@13", R: "~@17 x!6 ~", S: "~@23 x", T: "~ x ~@10",
U: "x!4 ~@20",
})).gain(0.42).pan(0.6)
// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@8 [~@7 x ~@5 x ~@10] [~@22 x!2] [~@7 x] [~@7 x ~@4] ~@83>").gain(0.24).pan(0.6)
// drums · open hat
const open_hat = s("oh").struct("<~@34 A B ~@18 C D@5 E ~ F G@3 F G ~@27>".pickRestart({
A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~@2 x!2 ~", B: "~ x!2 ~@21", C: "~@5 x", D: "~ x ~@5 x ~@2 x ~",
E: "~ x ~@10", F: "~ x", G: "x!3 ~",
})).gain(0.54).pan(0.6)
// drums · high tom
const high_tom = s("ht").struct("<~@5 A ~ B C D E F ~@25 G H I ~@6 J ~@2 K ~@45>".pickRestart({
A: "~@10 x ~@2 x ~@10", B: "~@19 x!5", C: "x!6 ~@18", D: "~@10 x!5 ~ x!5 ~@3", E: "~@15 x!5 ~@4",
F: "~@7 x!4 ~ x ~@11", G: "~@8 x!2 ~@14", H: "~@19 x!4 ~", I: "x", J: "~@11 x ~@12", K: "~@7 x!10 ~ x ~@5",
})).gain(0.36).pan(0.6)
// … 24 more lines
More by Emerson, Lake & Palmer
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.