0:00/0:00
// Moby Dick — Moby
// 112 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: metre changes (4/4 at bar 1, 2/4 at bar 41, 4/4 at bar 42, 7/8 at bar 45, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "Double Track Guitar 1" distortion guitar (copy of ch 1 "Guitar 1" overdriven guitar)
// note: Full arrangement: all 123 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/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.
// other · overdriven guitar · "Guitar 1"
const overdriven_guitar = note("<~@17 A B C@2 D E F G@2 ~@97>".pickRestart({
A: "~@9 a4@2 a4@3 [a4,d5]@2 a4@2 g4 ~ f4 d4@2 g4@2 ~ f4@2 d4@4", B: "~ d4@2 c4@2 ~ d4@2 g4@2 f4@5 ~@17",
C: "[~@21 [d5,f5]@2 ~ d5@2 d5@2 [d5,f5]@2 ~ d5@2 d5@2 d5@2 ~ f5@4 ~ d5 a4 g4@2 f5@4 ~ d5 a4 ~ g4@5 ~@4]/2", // Dm
D: "~@31 g4", E: "f4 e4@2 ~ d4 c4 b3@2 ~ bb3 ab3 g3@2 f3 ~ eb3 ~@2 g4 f4 e4@2 ~ d4 c4 b3@2 ~ bb3 a3 g3@2, ~@8 d3@7 ~",
F: "f3 ~ eb3 d3@2 c3 a2 ~ d2@19 ~@5",
G: "[~@14 d3@3 d3 gb3@2 [a3,d4]@2 ~ d4@2 ~ bb3 ~ [d4,gb4]@2 [a4,d5] [a4,d5]@2 d5@2 d5@4 ~ d5@12 ~@12, ~@22 b3@2 ~ d4@2 ~@37]/2", // D5 D D5
})).s("gm_overdriven_guitar").gain(0.32).pan(0.1)
// other · distortion guitar · "Guitar 2"
const distortion_guitar = note(`<
~ A B@3 C@2 D E@4 F@2 G@2 H@2 I J K L@2 M@2 N O@2 P ~@83 Q R@2 S@2 T U@5
>`.pickRestart({
A: "~@25 d2@5 d3@2",
B: "[~@3 d3@2 c3@2 ~ g2@2 f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 d3@2 ~@3 d3@2 c3@2 ~ g2@2 f2@7 g2@2 ~ f2@4 g2@5 f2@2 ~ d2@4 d3@2 ~@3 d3@2 c3@2 ~ g2@2 f2@7 g2@2 ~]/3",
C: "[f2@4 g2@5 f2@2 ~ d2@4 d3@2 ~@3 d3@2 ~ c3@2 g2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ g2@5 g3@2 ~@2 g3@2 ~ f3@2]/2",
D: "d3@2 bb2@7 ~ c3@2 bb2@5 c3@5 bb2@2 g2@5 g3@2 ~",
E: "[~ g3@2 ~ f3@2 d3@2 ~ bb2@7 c3@2 bb2@5 c3@5 bb2@2 d2@5 d3@2 ~@3 d3@2 c3@2 g2@2 ~ f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 d3@2 ~@3 d3@2 c3@2 g2@2 ~ f2@7 g2@2 f2@5 g2@5 f2@2 a2@5 a3@2 ~@3 a3@2 g3@2 ~ e3@2 a3@2 ~@3]/4",
F: "[a3@2 ~@2 e3@2 ~ g3@5 a3@2 d3@2 g3@2 ~ g3@2 g3@2 ~ g3@2 g3@2 f3@2 ~ d3@2 c4@2 d4@5 c4@2 ~ a3@2 g3@2 f3@7 ~ d2@4 d3@2 ~@3]/2",
G: "[d3@2 c3@2 ~ g2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ d2@4 d3@2 ~@3 d3@2 ~ c3@2 g2@2 f2@7 g2@2 ~ f2@5 g2@4]/2",
H: "[f2@2 ~ d2@5 d3@2 ~@2 d3@2 ~ c3@2 g2@2 f2@7 ~ g2@2 f2@5 g2@5 f2@2 d2@5 ~@18]/2",
I: "~@15 d2@5 d3@2 ~@3 d3@2 c3@2 g2@2 ~", J: "f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 ~@6", K: "~@27 g2@5",
L: "[g3@2 ~@3 g3@2 f3@2 ~ d3@2 bb2@7 c3@2 ~ bb2@4 c3@5 bb2@2 g2@5 ~@26]/2",
M: "[~@8 d2@4 d3@2 ~@3 d3@2 c3@2 ~ g2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ d2@5 ~@13]/2", N: "~@20 a2@5 a3@2 ~@2 a3@2 ~",
O: "[g3@2 e3@2 a3@2 ~@3 a3@2 ~@3 e3@2 g3@5 a3@2 ~ d3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ f3@2 d3@2 ~ c4@2 d4@5 c4@2 a3@2 ~ g3@2 f3@7]/2",
P: "[d2,a2,d3] ~@7", Q: "~@24 d2@5 d3@2 ~", R: "[~ d3@2 ~ c3@2 g2@2 f2@7 g2@2 f2@5 g2@4 f2@2 ~ d2@5 ~@30]/2",
S: "[~ g2@4 g3@2 ~@3 g3@2 f3@2 d3@2 ~ bb2@6 c3@2 ~ bb2@4 c3@5 bb2@2 g2@5 ~@22]/2",
T: "~@9 a2@5 a3@2 ~@2 a3@2 g3@2 ~ e3@2 a3@2 ~@3 a3@2",
U: "[~@2 e3@2 g3@5 a3@2 d3@2 g3@2 ~ g3@2 g3@2 g3@2 g3@2 ~ f3@2 d3@2 c4@2 d4@5 c4@2 a3@2 ~ g3@2 f3@7 [d2,d3,a3,d4,gb4]@28 [c3,g3,c4,e4]@28 [a2,e3,a3,db4]@28 ~@26]/5", // D C A
})).s("gm_distortion_guitar").gain(0.32).pan(0.9)
// bass · fretless bass · "Bass"
const bass = note("<~ A B@3 C@2 D E@4 F@2 G@2 H@2 I J K L@2 M@2 N O@2 P ~@83 Q R@2 S@2 T U@5>".pickRestart({
A: "~@25 d2@5 d3@2",
B: "[~@3 d3@2 c3@2 ~ a2@2 f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 d3@2 ~@3 d3@2 c3@2 ~ a2@2 f2@7 g2@2 ~ f2@4 g2@5 f2@2 ~ d2@4 d3@2 ~@3 d3@2 c3@2 ~ a2@2 f2@7 g2@2 ~]/3",
C: "[f2@4 g2@5 f2@2 ~ d2@4 d3@2 ~@3 d3@2 ~ c3@2 a2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ g1@5 g2@2 ~@2 g2@2 ~ f2@2]/2",
D: "d2@2 bb1@7 ~ c2@2 bb1@5 c2@5 bb1@2 g1@5 g2@2 ~",
E: "[~ g2@2 ~ f2@2 d2@2 ~ bb1@7 c2@2 bb1@5 c2@5 db2@2 d2@5 d3@2 ~@3 d3@2 c3@2 a2@2 ~ f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 d3@2 ~@3 d3@2 c3@2 a2@2 ~ f2@7 g2@2 f2@5 g2@5 ab2@2 a2@5 a1@5 a2@2 g2@2 ~ e2@2 a2@2 ~@3]/4",
F: "[a2@2 ~@2 e2@2 ~ g2@5 a2@4 g2@2 ~ g2@2 g2@2 ~ g2@2 g2@2 f2@2 ~ d2@2 c3@2 d3@5 c3@2 ~ a2@2 g2@2 f2@7 ~ d2@4 d3@2 ~@3]/2",
G: "[d3@2 c3@2 ~ a2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ d2@4 d3@2 ~@3 d3@2 ~ c3@2 a2@2 f2@7 g2@2 ~ f2@5 g2@4]/2",
H: "[f2@2 ~ d2@5 d3@2 ~@2 d3@2 ~ c3@2 a2@2 f2@7 ~ g2@2 f2@5 g2@5 f2@2 d2@5 ~@18]/2",
I: "~@15 d2@5 d3@2 ~@3 d3@2 c3@2 a2@2 ~", J: "f2@7 g2@2 f2@5 g2@5 f2@2 d2@5 ~@6", K: "~@27 g1@5",
L: "[g2@2 ~@3 g2@2 f2@2 ~ d2@2 bb1@7 c2@2 ~ bb1@4 c2@5 bb1@2 g1@5 ~@26]/2",
M: "[~@8 d2@4 d3@2 ~@3 d3@2 c3@2 ~ a2@2 f2@7 g2@2 ~ f2@5 g2@4 f2@2 ~ d2@5 ~@13]/2",
N: "~@3 e1@2 ~ gb1@4 gb1@2 ~ g1@4 ab1@2 ~ a1@5 a2@2 a2@2 a2@2 ~",
O: "[g2@2 e2@2 a2@2 ~@3 a2@2 ~@3 e2@2 g2@2 ~ g2@2 a2@2 ~ a2@2 g2@2 g2 ~@2 g2@2 g2@2 g2@2 ~ f2@2 d2@2 ~ d3@4 d3@2 ~ c3@2 a2@2 ~ g2@2 f2@7]/2",
P: "d2 ~@7", Q: "~@24 d2@5 d3@2 ~",
R: "[~ d3@2 ~ c3@2 a2@2 f2@7 g2@2 f2@5 g2@4 f2@2 ~ d2@5 ~@15 e1@2 gb1@5 gb1@2 g1@4 ab1@2]/2",
S: "[~ g1@4 g2@2 ~@3 g2@2 f2@2 d2@2 ~ bb1@6 c2@2 ~ bb1@4 c2@5 bb1@2 g1@5 ~@22]/2",
T: "~@9 a1@5 a2@2 ~@2 a2@2 g2@2 ~ e2@2 ~@5 a2@2",
U: "[~@2 e2@2 g2@2 ~ g2@2 a2@4 g2@2 ~ g2@2 g2@2 g2@2 g2@2 ~ f2@2 d2@2 d3@5 d3@2 c3@2 a2@2 ~ g2@2 f2@7 d2@28 c2@28 a1@28 ~@26]/5",
})).s("gm_fretless_bass").gain(0.48).pan(0.4)
// drums · kick
const kick = s("bd").struct(`<
~ A B C D E F G H I J K L M N O P Q R S T U ~ V W X Y Z AA@2 AB AC AA ~@10 AD AE ~@2 AF AG AH AI ~@5 AJ ~ AK AL ~@3 AM
AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ AA ~@2 BR BS L BT BU BV BW
BX BY BZ CA CB CC CB CD CE CF ~ CG CH CI Z ~ CJ CK CL
>`.pickRestart({
A: "~@25 x ~@6", B: "x ~@4 x ~@4 x ~@6 x ~ x ~@11 x", C: "~@4 x ~@2 x ~@8 x ~@6 x ~@2 x ~@5",
D: "~@6 x ~@6 x ~@8 x ~@9", E: "x ~@11 x ~@6 x ~@4 x ~@3 x ~@3", F: "~ x ~@4 x ~@4 x ~@3 x ~@2 x ~@6 x ~@6",
G: "~@2 x ~@9 x ~@9 x ~ x ~@4 x ~ x", H: "~@9 x ~@6 x ~ x ~@11 x ~", I: "~@5 x ~@9 x ~@8 x ~@7",
J: "~@4 x ~@4 x ~ x ~@9 x ~@10", K: "~@3 x ~@6 x ~@4 x ~ x ~@9 x ~@4", L: "~@7 x ~@8", M: "~ x ~@21 x ~@6 x ~",
N: "~@7 x ~@9 x ~@11 x ~@2", O: "~ x ~@2 x ~@8 x ~@6 x ~@2 x ~@8", P: "~@3 x ~@6 x ~@6 x ~ x ~@7 x ~@4",
Q: "~@2 x ~@4 x ~@24", R: "~@15 x ~@6 x ~@9", S: "x ~@18 x ~@12", T: "~@27 x ~@4", U: "~@2 x ~@9 x ~@18 x",
V: "~@8 x ~@6 x ~@8 x ~@6 x", W: "~ x ~@14", X: "~@20 x ~@6 x ~@4", Y: "~ x ~@4 x ~", Z: "~@11 x ~@20", AA: "x",
AB: "~@15 x", AC: "x ~@14 x", AD: "~@29 x ~@2", AE: "~ x ~@3 x ~@3 x ~@22", AF: "~@7 x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@12",
AG: "~@6 x ~@2 x!3 ~@5 x!3 ~@5 x!3 ~@4", AH: "~ x!3 ~@5 x!3 ~@5 x!3 ~@5 x!3 ~ x!3", AI: "~ x!3 ~ x!3 ~@24",
AJ: "~@26 x ~ x!2 ~ x", AK: "~@4 x!2 ~@15 x ~ x!2 ~@7", AL: "~ x ~ x!2 ~@27", AM: "~@10 x ~ x ~@2 x",
AN: "~@9 x ~ x ~@2 x!2", AO: "~@3 x", AP: "~@2 x ~@2 x ~@2", AQ: "~@3 x ~@4", AR: "~@4 x ~@22 x ~@3 x",
AS: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", AT: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~ x ~@3 x ~@3",
AU: "x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
AV: "x ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~@2 x ~@3 x ~@2 x ~ x",
AW: "~ x ~ x ~ x!2 ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x ~@2 x!2 ~ x ~ x ~ x!2",
AX: "~@2 x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x",
AY: "~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~",
AZ: "x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~",
BA: "x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~",
BB: "x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x",
BC: "x ~@2 x!2 ~ x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x!2 ~ x ~ x ~ x!2",
BD: "~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x", BE: "x ~@2 x ~@11 x!2 ~@15",
BF: "~@4 x!2 ~@24 x!2", BG: "~@9 x!2 ~@4 x ~ x ~@4 x ~@3 x!2 ~ x ~@2",
BH: "~ x ~@6 x ~ x ~@3 x ~@3 x ~@6 x ~ x ~@3 x", BI: "~@3 x ~@6 x ~ x ~@6 x ~@5 x!3 ~@4",
BJ: "~@2 x!3 ~@5 x!3 ~@2 x!2 ~ x ~@5 x ~@3 x!2 ~@2", BK: "~@4 x!3 ~@6 x!2 ~@2 x ~ x ~ x!3 ~@2 x!2 ~@2 x!2",
BL: "x ~ x ~ x ~ x!3 ~@2 x!2 ~@2 x!3 ~ x!3 ~ x!3 ~@2 x!2 ~@2", BM: "x!3 ~@2 x!2 ~ x!3 ~@2 x!2 ~@2 x!3 ~@3 x!5 ~@4",
BN: "x ~@4 x ~@26", BO: "~@3 x ~@28", BP: "x ~ x ~@2 x ~@26", BQ: "~@2 x ~@2 x ~ x ~@11 x ~@3 x ~@3 x ~@4",
BR: "~@31 x", BS: "~@3 x ~@2 x ~", BT: "x ~@11 x ~ x ~@3 x ~@2 x ~@7 x ~ x", BU: "~@10 x ~@6 x ~ x!2 ~@11",
BV: "~@2 x ~ x!2 ~@5 x!2 ~ x ~@6 x!2 ~@9", BW: "~@5 x!3 ~@5 x!2 ~ x ~@5 x!3 ~@5 x ~",
BX: "x!2 ~@5 x!2 ~ x ~@4 x ~ x!2 ~@5 x!2 ~ x ~@4", BY: "x ~ x!2 ~@6 x ~ x ~@4 x ~ x!2 ~@6 x ~ x ~@2",
BZ: "~@2 x ~ x!2 ~@6 x ~ x ~@4 x ~ x!2 ~@8 x", CA: "~@7 x ~@6 x ~@4 x ~@3 x ~@3 x ~@4",
CB: "x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@2", CC: "~@2 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@4",
CD: "~@2 x!2 ~@5 x ~@6 x ~@15", CE: "~@11 x ~@12 x ~@4 x ~ x", CF: "~@4 x ~@3 x ~@6 x ~@2 x ~@13",
CG: "~ x ~@15 x ~@5 x ~@8", CH: "~@3 x ~@4 x ~@3 x ~@4 x ~@4 x ~@3 x ~@4 x", CI: "~@3 x ~@4 x!2 ~@6 x ~@8 x ~@6",
CJ: "~@7 x ~ x ~@22", CK: "~@3 x ~ x ~@25 x", CL: "~ x ~@30",
})).gain(0.32)
// drums · rim
const rim = s("rim").struct("<~@121 [~@19 x ~@12] ~>").gain(0.32)
// drums · snare
const snare = s("sd").struct(`<
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB ~@53 AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ ~
>`.pickRestart({
A: "~@17 x ~ x ~@2 x ~@3 x ~@4 x", B: "~@4 x ~@4 x ~@3 x ~@2 x ~ x ~ x ~@11", C: "~@3 x ~@11 x ~@6 x ~ x ~@4 x ~@2",
D: "~@2 x ~@6 x ~@11 x ~@6 x ~ x ~", E: "~@3 x ~@4 x ~@6 x ~@11 x ~@4", F: "~@2 x ~ x ~@9 x ~@6 x ~@2 x ~@3 x ~@2 x",
G: "~ x ~ x ~@2 x ~ x ~@2 x ~ x ~ x ~@11 x ~@4", H: "~@7 x ~@6 x ~@2 x ~@8 x ~@5",
I: "~ x ~@2 x ~@8 x ~@6 x ~@2 x ~@4 x ~@3", J: "x ~@7 x ~@10 x ~@7 x ~ x ~@2", K: "~@2 x ~@4 x ~@6 x ~@11 x ~@3 x ~",
L: "~@3 x ~@4 x ~@4 x ~@6 x ~ x ~@9", M: "x ~@3 x ~@4 x ~@6 x ~@15", N: "~ x ~@13 x!4 ~@13",
O: "x ~@11 x ~@6 x ~@2 x ~@3 x ~@4 x", P: "~@6 x ~@11 x ~@6 x ~@2 x ~@3", Q: "x ~@4 x ~@6 x ~@2 x ~@8 x ~@4 x ~@2",
R: "~@2 x ~@6 x ~@22", S: "~@10 x ~@14 x ~@6", T: "~@4 x ~@4 x ~@4 x ~@6 x ~@10", U: "~@23 x ~@8",
V: "~@5 x ~@11 x ~@4 x ~@3 x ~@5", W: "~ x ~@30", X: "~@3 x ~@13 x ~@11 x ~@2", Y: "~@7 x ~@6 x ~@17",
Z: "~@15 x ~@13 x ~@2", AA: "~@9 x ~@4 x ~@4 x ~@6 x ~@5", AB: "~@11 x ~@13 x!3 ~@4", AC: "~ x ~ x ~@2 x ~",
AD: "~@14 x ~@12 x ~ x ~@2", AE: "~@7 x ~@6 x ~@5 x ~@3 x ~@7", AF: "x ~@4 x ~@11 x ~@4 x ~@9",
AG: "~@2 x ~@4 x ~@8 x ~@5 x ~ x ~@7", AH: "~@7 x ~@2 x ~@10 x ~@5 x ~@4", AI: "~@9 x ~@2 x ~@19",
AJ: "~@5 x ~@13 x ~@11 x", AK: "~@7 x ~@8 x ~@4 x!2 ~@6 x ~@2", AL: "~@4 x ~@3 x ~ x ~@6 x!2 ~@6 x ~ x ~ x ~@2",
AM: "x ~@9 x ~ x ~@6 x!2 ~@6 x ~ x ~@2", AN: "~@5 x ~@6 x ~ x ~@6 x!2 ~@6 x ~ x", AO: "~@7 x ~@6 x ~ x ~@6 x!2 ~@7",
AP: "x!2 ~@2 x ~@2 x ~@2 x ~@6 x!2 ~@6 x ~ x ~@4", AQ: "~@2 x!2 ~@2 x ~@2 x ~@2 x ~@6 x!2 ~@6 x ~ x ~@2",
AR: "~@4 x!2 ~@2 x ~@2 x ~@2 x ~@6 x!2 ~@6 x ~ x", AS: "~@6 x!2 ~@2 x ~@2 x ~@2 x ~@7 x ~@7",
AT: "~@5 x ~@12 x ~@10 x ~@2", AU: "~@3 x ~@7 x!2 ~@16 x!2 ~", AV: "~@11 x ~@7 x ~@8 x ~@3",
AW: "~@7 x ~ x ~@6 x ~@15", AX: "~ x ~@8 x ~@8 x ~@12", AY: "~@3 x ~@8 x ~@7 x ~@8 x ~@2",
AZ: "~@5 x ~@8 x ~@7 x ~@8 x", BA: "~@9 x ~@6 x ~@9 x ~@5", BB: "~ x ~@9 x ~@14 x!2 ~@4",
BC: "~@3 x ~@13 x ~@8 x ~@5", BD: "~@2 x ~@8 x ~@20", BE: "~@11 x ~@3 x", BF: "~@5 x ~ x ~@6 x!2 ~@6 x ~ x ~@6 x",
BG: "x ~@5 x ~@5 x ~@7 x ~@2 x ~@2 x ~@2 x ~ x", BH: "~@5 x ~@2", BI: "~ x ~@11 x ~@5 x ~@6 x ~@3 x ~",
BJ: "x!2 ~ x!2 ~ x!2 ~@24", BK: "~@10 x ~@10 x ~@4 x ~@3 x ~", BL: "~@5 x!2 ~@16 x ~ x ~@6",
BM: "~@5 x ~@12 x ~@11 x ~", BN: "~@2 x ~@4 x ~@5 x ~@15 x ~@2", BO: "~@11 x ~ x ~@8 x ~@4 x ~@4",
BP: "~@4 x ~@13 x ~@4 x ~@8", BQ: "x ~@6 x ~@6 x ~",
})).gain(0.32)
// drums · low tom
const low_tom = s("lt").struct(`<
~@34 A ~ A ~ B C D E F G H I J ~@11 K ~@12 L M N O P Q R S T U ~ V ~@19 W ~@11 X ~@8
>`.pickRestart({
A: "x", B: "~@13 x ~@2", C: "~@6 x ~@11 x ~@2 x ~ x!3 ~ x ~ x ~ x", D: "x!2 ~@2 x!2 ~ x!3 ~ x ~@20",
E: "~@18 x!2 ~@2 x!2 ~@2 x ~@3 x ~", F: "~ x ~ x ~ x ~ x ~ x ~ x ~@20", G: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@15 x ~ x ~",
H: "x ~@2 x!2 ~@3 x ~@2 x ~@14 x ~@5", I: "x!2 ~@6 x ~@2 x ~@5 x ~ x ~@5 x ~ x ~@4",
J: "~ x ~ x ~@4 x ~@4 x ~ x ~@16", K: "~@3 x ~@28", L: "~@15 x", M: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@6 x ~@3",
N: "x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~ x ~@3 x ~@3 x ~@2", O: "~ x ~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~",
P: "~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~@2 x ~@3 x",
Q: "~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~@2 x",
R: "~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x",
S: "~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~",
T: "~ x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2",
U: "x ~@3 x ~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~", V: "~ x ~@30", W: "~@9 x ~@6", X: "~@27 x!2 ~ x!2",
})).gain(0.32)
// drums · pedal hat
const pedal_hat = s("hh").struct(`<
~ A B C D E F G H B C D I J G H B K L I M G N O C D P Q ~ R S@6 T ~@53 U V W X Y Z AA AB ~@14 AC AD AE AF AG AH AI ~@4
>`.pickRestart({
A: "~@15 x", B: "~@3 x ~@4 x ~@3 x ~@4 x ~@4 x ~@4 x ~@3 x", C: "~@4 x ~@4 x ~@4 x ~@3 x ~@4 x ~@4 x ~@3",
D: "~ x ~@4 x ~@3 x ~@4 x ~@4 x ~@4 x ~@3 x ~@2", E: "~@2 x ~@4 x ~@4 x ~@3 x ~@4 x ~@4 x ~@4 x",
F: "~@3 x ~@4 x ~@4 x ~@4 x ~@4 x ~@3 x ~@4", G: "x ~@4 x ~@4 x ~@3 x ~@4 x ~@4 x ~@4 x ~@2",
H: "~ x ~@4 x ~@4 x ~@4 x ~@3 x ~@4 x ~@4 x ~", I: "~@2 x ~@4 x ~@4 x ~@3 x ~@15", J: "~@18 x ~@8 x ~@4",
K: "~@4 x ~@4 x ~@22", L: "~@10 x ~@9 x ~@4 x ~@3 x ~@2", M: "~@23 x ~@8", N: "~ x ~@30",
O: "~@3 x ~@8 x ~@4 x ~@4 x ~@4 x ~@3 x", P: "~@2 x ~@4 x ~@4 x ~@3 x ~@4 x ~@4 x ~@5", Q: "~@18 x ~@4 x ~@3 x ~@4",
R: "~ x!3", S: "x!4", T: "x!3 ~", U: "~@10 x ~@7 x ~@8 x ~@4", V: "~@12 x ~@7 x ~@8 x ~@2", W: "~@7 x ~@8",
X: "~@2 x!2", Y: "~ x ~@8 x ~@7 x ~@8 x ~@4", Z: "~@3 x ~@8 x ~@7 x ~@8 x ~@2", AA: "~@5 x ~@8 x ~@7 x ~@8 x",
AB: "~@7 x ~@8 x ~@7 x ~@7", AC: "~@20 x ~@8 x ~@2", AD: "~ x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@4 x ~@2",
AE: "~ x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@3", AF: "~@5 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3", AG: "x",
AH: "~@14 x ~@3 x ~@4 x ~@3 x ~@4", AI: "x ~@3 x ~@4 x ~@3 x ~@18",
})).gain(0.32)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@68 A B C D E F G H I J K L M N O P Q R S T U V ~ W X Y Z AA AB AC ~@7 AD AE AF AG AH AI ~ AJ ~ AK ~ AL AM ~@2 AN AO
~
>`.pickRestart({
A: "~@24 x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
C: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~ x ~ x ~ x ~",
D: "x ~ x ~ x ~ x ~ x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~ x ~@3",
E: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~@3 x",
F: "~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~ x ~@2 x!2 ~ x ~ x ~ x!2",
G: "~@2 x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x",
H: "~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~",
I: "x!2 ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~",
J: "x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~",
K: "x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x",
L: "x ~@2 x!2 ~ x!2 ~ x!2 ~@2 x!2 ~ x!2 ~@2 x!2 ~ x!2 ~ x ~ x ~ x!2", M: "~ x ~ x ~ x!2 ~ x ~@23", N: "~@13 x ~@18",
O: "~@2 x ~@26 x ~@2", P: "~@8 x ~@5 x ~@6 x ~@3 x ~@4 x ~", Q: "~@7 x ~@7 x ~@8 x ~@7", R: "x ~@8 x ~@20 x ~",
S: "~ x ~@13 x ~@16", T: "x ~@2 x ~@16 x ~@8 x ~@2", U: "~@7 x ~@3 x ~@4", V: "~@3 x",
W: "~@10 x ~ x ~@6 x!2 ~@6 x ~ x ~@2", X: "~@12 x ~ x ~@6 x!2 ~@6 x ~ x", Y: "~@14 x ~ x ~@6 x!2 ~@7",
Z: "x!2 ~@2 x ~@2 x ~@9 x!2 ~@6 x ~ x ~@4", AA: "~@2 x!2 ~@2 x ~@2 x ~@9 x!2 ~@6 x ~ x ~@2",
AB: "~@4 x!2 ~@2 x ~@2 x ~@9 x!2 ~@6 x ~ x", AC: "~@6 x!2 ~@2 x ~@2 x ~@18", AD: "~@7 x ~@16 x ~@7",
AE: "~@5 x ~@3 x ~@6", AF: "~@12 x!2 ~@2 x ~@3 x ~ x ~ x ~@4 x!2 ~",
AG: "~ x ~@3 x ~ x ~@2 x ~@3 x!2 ~@2 x!2 ~@2 x ~ x ~@2 x!2 ~@2 x",
AH: "x ~@2 x ~ x ~ x ~ x ~@2 x!2 ~@2 x!2 ~@2 x ~@3 x ~ x ~@2 x ~@2", AI: "~ x!2 ~@7 x!2 ~@6 x!2 ~@7 x!2 ~@3",
// … 98 more lines
More by Moby
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.