0:00/0:00
// It's Too Late — Quartz
// 110 bpm, 4/4, key A minor. 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: Full arrangement: all 111 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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(`<
~@13 A@2 B@2 C@3 D E@6 F G H@2 I@7 J K L M N@2 O@2 P@3 Q@8 R ~@7 S@4 T@2 U@3 ~@3 V@6 W X Y@8 Z@6 AA AB AC@6 AD@4
>`.pickRestart({
A: "[~@3 [g3,c4,e4]@4 ~@2 [g3,c4,e4]@2 ~@2 [f#3,a3,d4]@18 ~]/2", // C D
B: "[~@6 [g3,c4,e4]@4 ~@8 [g3,c4,e4]@4 ~@5 [f#3,a3,d4]@36 ~]/2", // C D
C: "[~@7 [c4,e4,g4]@4 ~@8 [c4,e4,g4]@4 ~@4 [a#3,d4,f4]@16 [a#3,d4,f4]@16 [a#3,d4,f4]@4 [a3,c4,e4]@12 ~ [a3,c4,e4]@2 ~@2 [a3,c4,e4]@12 [a3,c4,e4]@2 ~@2]/3", // C A# Am
D: "[a3,c4,e4]!2 ~ [a3,c4,e4]@4 ~", E: "[[a3,d4,f4]@3 [a3,d4,f4]@4 [a3,c4,e4]@4 [a3,c4,e4]@5]/2",
F: "[a3,c4,d4,f4]@3 [a3,c4,d4,f4]@5", G: "[a3,b3,d4,e4]",
H: "[~@8 [g3,c4,e4]@8 ~@4 [g3,c4,e4]@4 ~@5 [f#3,a3,d4]@35]/2", // C D
I: "[~@9 [a3,c4,e4]@8 ~@5 [a3,c4,e4]@4 ~@4 [a3,d4,f#4]@36 ~@8 [g3,c4,e4]@8 ~@5 [g3,c4,e4]@4 ~@4 [f#3,a3,d4]@36 ~@8 [g3,c4,e4]@4 ~@8 [g3,c4,e4]@4 ~@4 [f#3,a3,d4]@36 ~@9 [c4,e4,g4]@4 ~@8 [c4,e4,g4]@4 ~@4]/7", // Am D C D C D C
J: "[a#3,d4,f4]!2", K: "[a#3,d4,f4]@2 [a3,c4,e4]@6 [a3,c4,e4] ~ [a3,c4,e4]@6",
L: "[a3,c4,e4]@2 ~@2 [a3,c4,e4]@4 [a3,c4,e4]@4 ~@5 [a3,c4,e4]@15", M: "~@5 [a3,d4,f4]@12 [a3,d4,f4]@15",
N: "[~ [a3,c4,e4]@16 [a3,c4,e4]@20 [a3,d4,f4]@12 [a3,d4,f4]@15]/2", // Am Dm
O: "[~ [a3,c4,e4]@8 [a3,c4,e4]@10 [a3,d4,f4]@6 [a3,d4,f4]@7]/2", // Am Dm
P: "[~@2 [a3,c4,e4]@16 [a3,c4,e4]@20 [a3,c4,d4,f4]@12 ~ [a3,c4,d4,f4]@20 [b3,d4,g4]@8 [b3,d4,g4]@8 [b3,d4,g4]@5 [b3,d4,g4]@4]/3", // Am Dm7 G
Q: "[~@2 [b3,d4,g4]@5 [b3,e4,g4]@28 ~ [a3,c4,e4]@32 [a3,d4,f4]@36 ~ [g3,c4,e4]@20 [g3,c4,e4]@8 [a#3,d4,f4]@16 ~ [a#3,d4,f4]@16 [a3,c4,e4]@16 [a3,c4,e4]@16 ~ [c4,d4,f4]@16 [c4,d4,f4]@16 [c4,d4,f4]@4 [a3,b3,d4,e4]@2 ~@2 [a3,b3,d4,e4]@2 ~@6 [a3,b3,d4,e4]@8 ~]/8", // G Em Am Dm C A# Am Dm7 …
R: "[a3,b3,d4,e4]@3 ~@5", // Asus4
S: "[~@10 [a3,d4]@12 [a3,e4,g4]@24 [a3,d4,f#4]@12 ~ [a3,d4,f#4]@15 ~ [a3,d4]@12 [a3,e4,g4]@12 [a3,e4,g4]@12 [a3,d4,f#4]@12 [a3,d4,f#4]@4 ~, ~@37 f#4@6 ~@21]/4", // D5 A7 D D5 A7 D
T: "[~@3 [a3,d4,f#4]@4 ~@4 [a3,d4,f#4]@12 [a3,e4,g4]@12 [a3,e4,g4]@12 ~ [a3,d4,f#4]@16]/2", // D A7 D
U: "[~ [a3,d4,f#4] ~ [a3,d4,f#4]@3 [a3,e4,g4]@3 [a3,e4,g4] ~ [a3,d4,f#4]@7 ~@6]/3", // D A7 D
V: "[~@27 [g3,c4,e4]@8 ~@4 [g3,c4,e4]@4 ~@4 [f#3,a3,d4]@36 ~@9 [g3,c4,e4]@8 ~@5 [g3,c4,e4]@4 ~@4 [f#3,a3,d4]@36 ~@8 [c4,e4,g4]@8 ~@5 [c4,e4,g4]@4 ~@4 [a#3,d4,f4]@14]/6", // C D C D C A#
W: "~ [a#3,d4,f4]@8 [a#3,d4,f4]@2 [a3,c4,e4]@5", // A# Am
X: "~@3 [a3,c4,e4]@2 ~@2 [a3,c4,e4]@12 [a3,c4,e4]@2 ~@2 [a3,c4,e4]@4 [a3,c4,e4]@2 ~@3", // Am
Y: "[~@3 [a3,c4,e4]@12 ~@9 [a3,d4,f4]@12 [a3,d4,f4]@16 [a3,c4,e4]@16 [a3,c4,e4]@20 [a3,d4,f4]@12 [a3,d4,f4]@16 ~ [a3,c4,e4]@16 [a3,c4,e4]@20 [a3,d4,f4]@12 [a3,d4,f4]@16 [a3,c4,e4]@16 [a3,c4,e4]@20 [a3,c4,d4,f4]@32 ~ [b3,d4,g4]@6]/8", // Am Dm Am Dm Am Dm Am Dm7 …
Z: "[~@2 [b3,d4,g4]@8 [b3,d4,g4]@8 [b3,d4,g4]@8 [g3,b3,e4]@28 [c4,e4,g4]@16 [c4,e4,g4]@16 ~ [a3,d4,f4]@16 [a3,d4,f4]@12 [a3,d4,f4]@4 [a3,c4,e4]@4 ~@4 [a3,c4,e4]@28 [a#3,d4,f4]@12 [a#3,d4,f4]@4 [a#3,d4,f4]@4 [a#3,d4,f4]@4 ~@4 [a#3,d4,f4]@4 [a3,c4,e4]@4 ~]/6", // G Em C Dm Am A# Am
AA: "[a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4]@2 [a#3,d4,f4]@2", AB: "[a#3,d4,f4]!3 [c4,d4,g4]",
AC: "[[c4,d4,g4]@8 [b3,d4,g4]@8 [b3,d4,g4]@12 [g3,b3,e4]@20 ~ [g3,b3,e4]@8 [f3,a3,c4]@36 ~ [g3,b3,e4]@20 [g3,b3,e4]@8 [f3,a3,c4]@36 ~ [g3,b3,e4]@12 [g3,b3,e4]@2 ~@2 [g3,b3,e4]@12 [g3,b3,e4]@2 ~@2 [g3,b3,e4]]/6", // Csus2 G Em F Em F Em
AD: "[~@3 [g3,b3,e4]@8 ~ [g3,b3,e4]@85 ~@31]/4", // Em
})).s("gm_piano").gain(0.4)
// bass · synth bass 2
const bass = note(`<
~@8 A@2 B@2 C@2 D@6 ~ E F G H G H I J K@2 L@2 M@5 N O P Q R S@6 T@4 U V W@2 X@2 Y@2 Z@2 AA@2 AB AC@8 AD AE AF AG AH AI
AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW@4 AX@3 AY AZ@6 BA@4
>`.pickRestart({
A: "[~@7 a1@2 ~@3 c2 a1 d2@2]/2", B: "[~@9 a1@4 d2@4 e2@4 c2@8 a1@8 ~@12 c2@4 a1@4 d2@7]/2",
C: "[~@15 a1@4 ~@6 c2@2 a1@2 d2@3]/2",
D: "[~@10 a1@4 d2@4 e2@4 c2@8 a1@8 ~@12 c2@4 a1@4 ~ d2@8 ~@8 a1@4 d2@4 e2@4 c2@8 a1@8 ~@4 a1@4 a1@4 a1@4 ~@4 a1@4 g1@4 g1@4 ~@4 g1@4 a#1@4 a#1@4 d2@4 e2@4 f2@12 ~ f2@4 f2@12 f2@4]/6",
E: "a#1@5 ~ a#1@2 a#1@3 a#1 a#1@2 c2@2", F: "f1@4 ~@2 f1@2 f1@3 f1 f1@2 a1@2",
G: "a#1@4 ~@2 a#1@2 a#1@3 a#1 a#1@2 c2@2", H: "f1@4 ~@2 f1@2 f1@3 f1 f1@2 f1@2", I: "d1@4 ~@2 d1@2 f1@3 f1 f1@4",
J: "e1", K: "[a1@8 ~@12 c2@4 a1@4 ~ d2@8 ~@27]/2", L: "[~ a1@8 ~@13 c2@4 a1@4 d2@8 ~@16 d3@10]/2",
M: "[~@2 a1@8 ~@13 c2@4 a1@4 d2@8 ~@8 a1@4 d2@4 e2@4 c2@8 a1@8 ~@12 c2@4 a1@4 d2@8 ~@8 a1@4 d2@4 e2@4 c2@8 ~ a1@8 ~@4 a1@4 a1@4 a1@4 ~@4]/5",
N: "a1 g1!2 ~ g1 a#1!2 d2", O: "e2 f2@3 f2 f2@3", P: "f2 ~@7", Q: "~@5 a#1@8 ~@4 a#1@4 a#1@6 a#1@2 a#1@3",
R: "~ c2@4 f1@8 ~@4 f1@4 f1@6 f1@2 f1@3",
S: "[~ a1@4 a#1@8 ~@4 a#1@4 a#1@6 a#1@2 ~ a#1@4 c2@4 f1@8 ~@4 f1@4 f1@6 f1@2 f1@4 f1@4 a#1@8 ~@4 a#1@4 a#1@6 a#1@2 a#1@4 c2@4 f1@8 ~@4 f1@4 f1@6 f1@2 f1@4 f1@4 d1@8 ~@5 d1@4 d1@6 d1@2 d1@4 d1@4 g1@8 g1@8 g1@5 g1@4]/6",
T: "[~@2 g1@5 c1@28 ~ f1@32 a#1@36 ~ a1@4 ~@4 a1@4 ~@4 a1@4 ~@3]/4", U: "~ a1@4 ~@4 g1@8 ~@5 g1@4 c1@6",
V: "~@3 c1@2 f1@4 ~@2 f1@2 f1@3", W: "[f1@2 f1@4 ~ f1@4 d1@8 ~@4 d1@4 f1@8 f1@8 e1@16 ~@5]/2",
X: "[e2@2 e3 a1@10 ~ e3@2]/2", Y: "[g2@8 a2@4 a1@40 ~@5 e3@7]/2", Z: "[~ g2@8 a2@4 a1@40 ~@4 e3@7]/2",
AA: "[~ g2@8 a2@4 ~ a1@40 ~@4 e3@6]/2", AB: "~ g2@4 a2@2 a1@9",
AC: "[~@2 e2@4 a2@4 d2@15 ~@2 e3@8 a2@4 d2@4 e2@4 a1@20 e2@4 a2@4 d2@15 ~ e3@8 a2@4 d2@4 e2@4 a1@20 e2@4 a2@4 ~ d2@15 ~ e3@8 a2@4 d2@4 e2@4 a1@20 e2@4 a2@4 d2@16 e3@20 ~ g1@8 ~@7]/8",
AD: "~@5 b1@4 c2@4 d2@8 ~@11", AE: "~@9 a1@4 ~@3", AF: "~@3 c2@2 a1@2 d2@4 ~@5", AG: "~@19 a1@8 ~@5",
AH: "~@7 c2@4 a1@4 d2@8 ~@9", AI: "a1 d2 e2 c2@2 a1@2 ~", AJ: "~@9 c2@4 a1@4 d2@8 ~@7",
AK: "~ a1@4 d2@4 e2@4 c2@8 a1@8 ~@3", AL: "~ a1@2 a1@2 a1@2 ~@2 a1@2 g1@2 g1@2 ~",
AM: "~ g1@2 a#1@2 a#1@2 d2@2 e2@2 f2@5", AN: "~@3 f2@4 f2@12 f2@4 ~@9", AO: "~@3 a#1",
AP: "~@2 a#1@2 a#1@3 a#1 a#1@2 c2@2 f1@4", AQ: "~@2 f1@2 f1@3 f1 f1@2 a1@2 a#1@4",
AR: "~@4 a#1@4 a#1@6 a#1@2 a#1@4 ~ c2@4 f1@7", AS: "~@5 f1@4 f1@6 f1@2 f1@4 f1@4 a#1@7",
AT: "~@5 a#1@4 a#1@6 a#1@2 a#1@4 c2@4 f1@7", AU: "~@5 f1@4 f1@6 f1@2 f1@4 f1@4 d1@7",
AV: "~@3 d1@2 d1@3 d1 d1@2 d1@2 a1@3", AW: "[~@2 g1@6 ~@2 g1@6 ~@2 g1@6 ~@2 c1@28 f1@32 ~ a#1@36 a1@4 ~]/4",
AX: "[~@3 a1@4 ~@4 a1@4 ~@4 a1@4 ~@4 g1@8 ~@4 g1@4 c1@8 ~@4 c1@4 f1@8 ~@5 f1@4 f1@8 ~@4 f1@4 g1@4]/3", AY: "g1!4",
AZ: "[g1@8 g1@8 g1@12 c2@20 ~ c2@8 f1@24 f2@8 c2@24 ~ c2@8 f1@24 f2@12 ~ c1@8 ~@4 c1@4 c1@8 ~@4 c1@4 c1]/6",
BA: "[~@3 c1@8 ~ c1@85 ~@31]/4",
})).s("gm_synth_bass_2").gain(0.45).pan(0.4)
// other · marimba
const marimba = note("<~@4 A B C D C D E F ~@17 G H I@2 ~@28 J K L M L N@2 O@2 P Q R ~@38>".pickRestart({
A: "~@27 a2@4 ~", B: "~@15 c3@4 a2@4 d3@4 ~@5", C: "~@7 a2", D: "~@4 c3 a2 d3 ~", E: "~@9 c3@4 d3@4 d3@4 ~@8 a2@3",
F: "~@17 c3@4 a2@4 d3@4 ~@3", G: "a2@4 ~@16 c3@4 a2@4 ~ d3@3", H: "~@13 c3@4 d3@4 d3@4 ~@7",
I: "[~ a2@4 ~@17 c3@4 a2@4 d3@4 ~@12 c3@4 d3@4 d3@4 ~@6]/2", J: "~@13 a2@4 ~@15", K: "~ c3@4 a2@4 d3@4 ~@19",
L: "~@7 a2@2 ~@7", M: "~ c3@2 a2@2 d3@2 ~@9", N: "[~@2 c3@4 a2@4 d3@4 ~@13 c3@4 d3@4 d3@4 ~@8 a2@4 ~@13]/2",
O: "[~@3 c3@4 a2@4 d3@4 ~@12 c3@4 d3@4 d3@4 ~@8 a2@4 ~@13]/2", P: "~@3 c3@4 a2@4 ~ d3@4 ~@12 c3@4",
Q: "d3!2 ~@2 a2 ~@3", R: "~ c3 a2 d3 ~@4",
})).s("gm_marimba").gain(0.45)
// chords · string ensemble 2
const string_ensemble_2 = note("<A@6 B@4 ~@97 C@4>".pickRestart({
A: "[~@27 [g3,b3,c4,d4,e4]@30 a3@7, ~@57 f#3@4 ~@3]/2", B: "[~@14 [g3,b3,c4,d4,e4]@15 [f#3,a3]@3]/2",
C: "[~@6 [c3,g3,b3,e4]@43 ~@15]/4", // Cmaj7
})).s("gm_string_ensemble_2").gain(0.4)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~@21 A B A B A B C D E F G H ~@8 I@3 J@6 K@8 ~@11 L@2 E@2 ~@8 M H N ~ O@8 P@8 Q@6 R@4
>`.pickRestart({
A: "[a#3,d4,f4,a4]", B: "[a3,c4,e4,g4]", C: "[a3,c4,d4,f4]", D: "[a3,b3,d4,e4]", E: "a5 ~ a5 ~ a5 ~ a5 ~",
F: "~ a5@4 ~@4 a5@4 ~@4 a5@4 ~@4 a5@4 ~@3", G: "~ a5@4 ~@4 a5@4 ~@4 a5@4 ~@5 a5@4 ~@2",
H: "~ a5@2 ~@2 a5@2 ~@2 a5@2 ~@2 a5@2 ~", I: "[~@5 [a#3,d4,f4,a4]@32 [a3,c4,e4,g4]@32 [a#3,d4,f4,a4]@27]/3",
J: "[~@6 [a3,c4,e4,g4]@32 [a#3,d4,f4,a4]@32 [a3,c4,e4,g4]@32 [a3,c4,d4,f4]@32 ~ [b3,d4,g4]@32 [b3,e4,g4]@25]/6", // Am7 A#maj7 Am7 Dm7 G Em
K: "[~@8 [a3,c4,e4]@32 [a3,d4,f4]@32 ~ [g3,c4,e4]@32 [a#3,d4,f4]@32 ~ [a3,c4,e4]@32 ~ [a3,c4,d4,f4]@32 [g3,b3,d4,e4]@32 ~@21]/8", // Am Dm C A# Am Dm7 Em7
L: "[~@15 a5@4 ~@4 a5@4 ~@4 a5@4 ~@4 a5@4 ~@5 a5@4 ~@4 a5@4 ~@4]/2", M: "~@17 a5@4 ~@4 a5@4 ~@3",
N: "~ a5@2 ~@2 a5@2 ~@9",
O: "[~@24 [a#3,d4,f4,a4]@32 [a3,c4,e4,g4]@32 [a#3,d4,f4,a4]@32 ~ [a3,c4,e4,g4]@32 [a#3,d4,f4,a4]@32 [a3,c4,e4,g4]@32 [a3,c4,d4,f4]@32 ~ [b3,d4,g4]@6]/8", // A#maj7 Am7 A#maj7 Am7 A#maj7 Am7 Dm7 G
P: "[~@26 [g3,b3,e4,g5]@32 [f3,a3,c4,c5]@32 ~ [a3,a#3,d4,f4]@32 [g3,a3,c4,e4]@32 [g3,a#3,d4,f4]@32 [a3,c4,e4,g4]@32 ~ [a#3,d4,f4,g4]@32 [c4,d4,g4]@4]/8", // Em F A#maj7 Am7 Gm7 Am7 Gm7 Csus2
Q: "[~@12 b3@16 [g3,b3,e4]@32 ~ [f3,a3,c4]@32 ~ [g3,b3,e4]@32 [f3,a3,c4]@32 ~ [g3,b3,e4]@10 ~@2 [g3,b3,e4]@2 ~@2 [g3,b3,e4]@12 [g3,b3,e4]@2 ~@2 [g3,b3,e4]]/6", // Em F Em F Em
R: "[~@3 [g3,b3,e4]@7 ~@2 [g3,b3,e4]@86 ~@30]/4", // Em
})).s("gm_string_ensemble_1").gain(0.35)
// other · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@49 A@2 B@2 C@2 D@4 ~@34 E@6 F G H@6 I@4>".pickRestart({
A: "[~@7 g4@20 f4@4 e4@4 ~ f4@8 e4@4 d4@4 c4@8 d4@4]/2", B: "[e4@4 e4@8 d4@4 c4@4 d4@8 ~ e4@8 c4@8 a3@19]/2",
C: "[~@9 c4@4 d4@4 ~ e4@4 f4@4 e4@4 f4@4 g4@4 a4@8 e4@8 e4@10]/2",
D: "[~@7 e4@4 f4@4 e4@4 d4@4 c4@8 d4@4 e4@4 e4@19 ~ b4@16 ~ a4@40 ~@12, ~@59 a#4@3 ~@66]/4",
E: "[~@14 a4@12 g4@20 f4@4 e4@4 g4@8 a4@8 c4@12 ~@11 g4@2 a4@4 c5@2 ~@4 a4@6 g4@8 a4@16 e4@6 c4@2 a3@2 ~@10 c4@4 d4@4 e4@4 f4@4 e4@4 f4@4 e4@4 d4@8 ~]/6",
F: "c4@2 a3@2 a3 c4 d4@2", G: "d4@2 d4@2 c4 d4 e4@2",
H: "[d4@8 d4@8 c4@4 d4@8 e4@28 ~ c4@32 e4@32 ~ c4@36 ~ e4@8 ~@4 e4@4 e4@8 ~@4 e4@4 e4]/6",
I: "[~@3 e4@8 ~ e4@85 ~@31]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.7)
// other · lead 3 calliope
const lead_3_calliope = note("<~@20 A@2 B ~@18 C@2 ~@42 D@3 ~@23>".pickRestart({
A: "[~@7 c5@2 c5@2 c5@2 a4 a4@2]/2", B: "g4 g4@2 e4@3 ~@2", C: "[~ c5@8 c5@8 c5@8 a4@4 a4@8 g4@4 g4@8 e4@12 ~@3]/2",
D: "[~@5 c5@2 c5@2 c5@2 a4 a4@2 g4 g4@2 e4@3 ~@4]/3",
})).s("gm_lead_3_calliope").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@4 A B C D@3 E@2 F G@2 H I@3 J K@8 L K M N O P B@3 D@3 Q E@2 R G@3 S I T U V M W O X B D@3 E@3 Y G@2 H I@3 J K@2 Z M
AA AB B C D AC E G H I J K@2 V M@3 O@3 P B@3 D@3 AC R G AD ~@5
>`.pickRestart({
A: "~@27 x ~@4", B: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", C: "~@3 x ~@7 x ~@8 x ~@7 x ~@3", D: "~ x ~ x ~ x ~ x",
E: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", F: "~@5 x ~@7 x ~@8 x ~@7 x ~", G: "~@3 x ~@3 x ~@3 x ~@3 x",
H: "~@6 x ~@7 x ~@7 x ~@8 x", I: "~@7 x ~@7 x ~@7 x ~@7 x", J: "~@7 x ~@8 x ~@7 x ~@7", K: "x!4", L: "x",
M: "~ x ~@7 x ~@7 x ~@7 x ~@6", N: "~ x ~@7 x ~@7 x ~@8 x ~@5", O: "~ x ~@3 x ~@3 x ~@3 x ~@2",
P: "~@2 x ~@7 x ~@8 x ~@7 x ~@4", Q: "~@4 x ~@7 x ~@8 x ~@7 x ~@2", R: "~@5 x ~@7 x ~@7 x ~@8 x ~",
S: "~@6 x ~@8 x ~@7 x ~@7 x", T: "~@15 x ~@7 x ~@7 x", U: "~ x!3", V: "x ~@7 x ~@7 x ~@8 x ~@6",
W: "~ x ~@7 x ~@8 x ~@7 x ~@5", X: "~@2 x ~@8 x ~@7 x ~@7 x ~@4", Y: "~@5 x ~@8 x ~@7 x ~@7 x ~",
Z: "~@17 x ~@7 x ~@6", AA: "~ x ~@8 x ~@7 x ~@7 x ~@5", AB: "~@2 x ~@7 x ~@7 x ~@8 x ~@4",
AC: "~@4 x ~@8 x ~@7 x ~@7 x ~@2", AD: "~@6 x ~@7 x ~@8 x ~@7 x",
})).gain(0.45)
// drums · snare
const snare = s("sd").struct(`<
~@5 A B C D C E F G H I H J K J L M N O N O N O@2 ~ N P Q R S T U T V W V X Y Z AA AB AC AB AD AE AF AG AH AI AJ AK AL
A AM C AM F AN F AO H AP H AQ K AQ L AR N AS AT AU AV AW AX AY Z AZ AB BA BB BC BD BE BD BF AI BF AK BG AK BH A BI A D
C D BJ E H BK ~@5
>`.pickRestart({
A: "~@3 x ~@15 x ~@12", B: "~@3 x ~@16 x ~@5 x ~@5", C: "~ x ~@3 x ~@2", D: "~@2 x ~@7 x ~@2 x ~@2",
E: "~@5 x ~@15 x ~@5 x ~@4", F: "~@5 x ~@15 x ~@10", G: "~@5 x ~@16 x ~@5 x ~@3", H: "~@3 x ~@7 x ~@4",
I: "~@3 x ~@7 x ~@2 x ~", J: "~@7 x ~@15 x ~@5 x ~@2", K: "~@7 x ~@15 x ~@8", L: "~@7 x ~@16 x ~@7",
M: "~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x!2", N: "~ x ~ x", O: "~@4 x ~@7 x ~@2 x", P: "~@9 x ~@15 x ~@5 x",
Q: "~@9 x ~@16 x ~@5", R: "~@5 x ~@7 x ~@2", S: "x ~@9 x ~@16 x ~@4", T: "~@11 x ~@15 x ~@4",
U: "~ x ~@9 x ~@15 x ~@4", V: "~ x ~@4 x ~@7 x ~", W: "~@3 x ~@3 x", X: "~@8 x ~@3 x ~ x ~@6 x ~@5 x ~@4",
Y: "~ x ~ x ~@9 x ~@15 x ~@2", Z: "~@13 x ~@15 x ~@2", AA: "~@3 x ~@9 x ~@16 x ~", AB: "~@7 x ~@7 x",
AC: "~@2 x ~@4 x ~@7 x", AD: "~@4 x ~@10 x ~@15 x", AE: "~@15 x ~@15 x", AF: "~@5 x ~@9 x ~@15 x", AG: "~ x",
AH: "x ~@2 x ~@4 x ~@7", AI: "~ x ~@15 x ~@14", AJ: "~ x ~@5 x ~@10 x ~@13", AK: "~ x ~@7 x ~@6",
AL: "~@2 x ~@6 x ~@9 x ~@12", AM: "~@2 x ~@2 x ~@4 x ~@5", AN: "~@5 x ~@5 x ~@9 x ~@10", AO: "~@5 x ~@5 x ~@10 x ~@9",
AP: "~@3 x ~@2 x ~@4 x ~@4", AQ: "~@7 x ~@5 x ~@9 x ~@8", AR: "~@4 x ~@2 x ~@4 x ~@3", AS: "~@25 x ~@6",
AT: "~@9 x ~@15 x ~@6", AU: "~@5 x ~@2 x ~@4 x ~@2", AV: "~@10 x ~@16 x ~@4", AW: "~@11 x ~@5 x ~@9 x ~@4",
AX: "~@11 x ~@16 x ~@3", AY: "~@6 x ~@2 x ~@4 x ~", AZ: "~@13 x ~@5 x ~@9 x ~@2", BA: "~@14 x ~@5 x ~@10 x",
BB: "~@15 x ~@11 x ~@3 x", BC: "~ x ~@5 x ~@5 x ~@6 x ~ x ~@9", BD: "x!2", BE: "x ~@7 x ~@2 x ~@4",
BF: "~ x ~@15 x ~@5 x ~@8", BG: "~ x ~@7 x ~@2 x ~@3", BH: "~@2 x ~@16 x ~@5 x ~@6", BI: "~@3 x ~@15 x ~@5 x ~@6",
BJ: "~@4 x ~@16 x ~@10", BK: "~@6 x ~@16 x ~@5 x ~@2",
})).gain(0.45)
// drums · hihat
const hihat = s("hh").struct(`<
~@4 A B C D E F G@2 H I@2 J K@3 L M N@7 O P Q R S T U@3 V W@2 X Y Z AA AB@3 AC AD@2 AE AF AG AH AI AJ AK AL AM F G@3
AN I@2 J K@3 L N M AO Q AP AQ U AR W AS Z AB AT AD AU AV@2 AW AG@3 AI@3 AX AY@3 AM@3 AZ BA I BB ~@5
>`.pickRestart({
A: "~@27 x ~@3 x", B: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
C: "~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3", D: "x!8", E: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
F: "~@4 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~@2 x", G: "~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x",
H: "~@5 x ~@3 x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x ~", I: "x ~@2 x ~ x!4 ~@2 x ~ x!3",
J: "x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@4 x ~ x ~ x", K: "~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x",
L: "~ x ~@5 x ~@4 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~", M: "x!2 ~@2 x ~ x!3 ~ x ~ x ~ x ~",
N: "x!2 ~@2 x ~ x!4 ~@2 x ~ x!2", O: "x", P: "x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@4 x ~ x",
Q: "~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x", R: "~ x ~ x ~@5 x ~@3 x ~ x ~ x ~@2 x ~@5 x ~@3 x ~",
S: "x!3 ~@2 x ~ x!4 ~@2 x ~ x", T: "x ~ x ~ x ~@5 x ~@3 x ~ x ~@2 x ~ x ~@5 x ~@3 x",
U: "~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x", V: "~ x!3 ~@2 x ~ x!4 ~@2 x ~", W: "x!4 ~@2 x ~ x!4 ~@2 x ~",
X: "x ~ x ~ x ~ x ~@5 x ~@4 x ~ x ~ x ~@3 x ~@3 x ~@2", Y: "~ x ~@3 x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@2",
Z: "~ x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@2", AA: "~ x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@6 x ~",
AB: "~ x!4 ~@2 x ~ x!4 ~@2 x", AC: "~@2 x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x ~ x ~@5 x",
AD: "~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x", AE: "~@2 x!4 ~@2 x ~ x!4 ~@2",
AF: "x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~@2 x ~ x ~@4", AG: "~ x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@4",
AH: "~ x ~@3 x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x ~ x ~@3", AI: "~ x ~ x!4 ~@2 x ~ x!4 ~",
AJ: "~@2 x ~@4 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@2", AK: "~@3 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~@4",
AL: "x ~ x ~ x ~ x!2 ~@2 x ~ x!4", AM: "~@2 x ~ x!4 ~@2 x ~ x!4",
AN: "~@5 x ~@3 x ~ x ~@2 x ~ x ~@5 x ~@3 x ~ x ~ x ~", AO: "~@17 x ~ x ~@5 x ~@3 x ~ x",
AP: "~ x ~@2 x ~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~", AQ: "x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@6 x ~@3 x",
AR: "~ x ~ x ~ x ~@5 x ~@3 x ~@2 x ~ x ~ x ~@5 x ~@3", AS: "x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x ~ x ~@5 x ~@2",
AT: "~@2 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~@2 x ~@5 x", AU: "~@3 x ~ x ~ x ~@3 x ~@4 x ~@3 x ~@3 x ~ x ~@5",
AV: "x ~ x!4 ~@2 x ~ x!4 ~@2", AW: "x ~@3 x ~ x ~ x ~ x ~@5 x ~@4 x ~ x ~ x ~ x ~@4",
AX: "~@2 x ~@3 x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x ~ x ~@2", AY: "~@3 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~@2",
AZ: "~@4 x ~@4 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x", BA: "~@5 x ~@3 x ~ x ~ x ~ x ~@5 x ~@3 x ~ x ~@2 x ~",
BB: "x ~@5 x ~@3 x ~ x ~ x ~ x ~@6 x ~@3 x ~ x ~ x",
})).gain(0.3)
// drums · open hat
const open_hat = s("oh").struct(`<
// … 28 more lines
More by
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.