0:00/0:00
// Knock Three Times — DaWN
// 122 bpm, 4/4, key C# 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 23, 4/4 at bar 23, 2/4 at bar 30, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 108 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · fretless bass
const bass = note(`<
~ A B C@2 D E D F G H I J K L M N O P Q R S T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AK AN AO AP AQ AR
AS AT AU AV AW AX AY@3 AZ@5 BA BB BC BD BE BF BG BH BI BJ BK@2 BL@2 BM BN BO BP BQ BR BS BT@2 BU@2 BV@4 BW BX BY BZ CA
BX CB BT@2 CC@2 CD@5
>`.pickRestart({
A: "db2@6 ~ db2", B: "gb2@6 ~ gb2", C: "ab2@5 ~ ab2@5 ~", D: "db2@6 ~@3 db2 ~@2 db2@6 ~@3 db2 ~@2",
E: "db2@6 ~@3 db2 ~@2 db2@3 ab1@3 bb1@3 ab1@3", F: "db2@6 ~@3 db2 ~@2 db2@3 f2@3 gb2@3 g2@3",
G: "ab2@6 ~@3 ab2 ~@2 ab2@6 f2@3 eb2 ~@2", H: "ab1@6 ~@3 ab1 ~@2 ab1 ~@2 ab1@3 c2@3 eb2@3",
I: "ab2@6 ~@3 ab2 ~@2 ab2 ~@3 ab2@3 f2@3 eb2@2", J: "~ ab1@6 ~@3 ab1 ~@2 c2@3 db2@3 d2@3 eb2@2",
K: "~ ab1@4 ~@5 ab1 ~@2 ab1 ~@2 ab1@3 c2@3 eb2@2", L: "~ ab2@6 ~@3 ab2 ~@2 ab2 ~@2 ab2@3 f2@3 eb2@2",
M: "~ ab2@6 ~@3 ab2 ~@2 ab2@6 f2@3 eb2 ~", N: "~ ab1 ~@2 ab1 ~@5 ab1@3 ab2@3 gb2@3 f2@3 eb2@2",
O: "~ db2@6 ~@3 db2 ~@2 db2@6 ~@3 db2 ~", P: "~ db2@6 ~@3 db2@2 ~ db2@3 db2@3 eb2@3 f2@2",
Q: "~ gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@6 gb1@2", R: "~ gb1@3 ab1@3 bb1@3 c2@3 db2@3 ~ db2 ~@5 db2",
S: "~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@5 db2", T: "~@2 db2@3 f2@3 gb2@3 g2@3 ab2@3 ab2 ~@5 ab2",
U: "[~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@5 ab2@3 bb2@3 ab2@3 f2@3 eb2@3 db2@3 db2 ~@5 db2]/2",
V: "~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@6", W: "db2@3 db3@3 b2@3 bb2@3 ab2 ~@2 gb2@3 ~@3 gb2@3",
X: "~ gb2 ~@3 gb1 ab1 bb1", Y: "c2@3 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@5",
Z: "db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 f2@3 gb2@3", AA: "g2@3 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@5",
AB: "ab2 ~@2 ab2@21", AC: "ab1 db2@6 ~", AD: "db2@3 gb2@9 gb2@3 ab2@3 ab1@3 bb1@2 ~",
AE: "c2@3 db2@6 ~@3 db2 ~@2 db2@6 ~@3", AF: "db2 ~@2 db2@6 ~@3 db2 ~@2 db2@3 ab1@3 bb1@3",
AG: "ab1@3 db2@6 ~@3 db2 ~@2 db2@6 ~@3", AH: "db2 ~@2 db2@6 ~@3 db2 ~@2 db2@3 f2@3 gb2@3",
AI: "g2@3 ab2@6 ~@4 ab2 ~@2 ab2@6 f2@2", AJ: "~ eb2 ~@2 ab1@6 ~@3 ab1 ~@2 ab1 ~@2 ab1@3 c2@2",
AK: "~ eb2@3 ab2@6 ~@3 ab2 ~@2 ab2 ~@2 ab2@3 f2@2", AL: "~ eb2@3 ab1@6 ~@3 ab1 ~@2 c2@3 db2@3 d2@2",
AM: "~ eb2@3 ab1@4 ~@5 ab1 ~@2 ab1 ~@2 ab1@3 c2@2", AN: "~ eb2@3 ab2@6 ~@3 ab2 ~@2 ab2@6 f2@2",
AO: "~ eb2 ~@2 ab1 ~@2 ab1 ~@5 ab1@3 ab2@3 gb2@3 f2@2", AP: "~ eb2@3 db2@6 ~@3 db2 ~@2 db2@6 ~@2",
AQ: "~ db2 ~@2 db3@2 ~ db3@3 b2@3 b2@3 bb2@3 bb2@3 ab2@2", AR: "~ ab2@3 gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@5",
AS: "~ gb1@3 gb1@3 ab1@3 bb1@3 c2@3 db2@3 db2 ~@4", AT: "~ db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@4",
AU: "~ db2 ~@2 db2@3 f2@3 gb2@3 ~ g2@3 ab2@3 ab2 ~@3", AV: "~@2 ab2 ~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@3",
AW: "~@2 ab2@3 bb2@3 ab2@3 f2@3 eb2@3 db2@3 db2 ~@3", AX: "~@2 db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@3",
AY: "[~@2 db2@3 db3@3 b2@3 bb2@3 ab2 ~@2 gb2@3 ~@3 gb2@3 ~@3 gb2@3 ~@9 gb1@3 ab1@3 bb1@3 c2@3 db2@3 db2 ~@5 db2 ~@2 db2@3 db2 ~@3]/3",
AZ: "[~@2 db2 ~@2 db2@3 db2 ~@5 db2 ~@2 db2@3 f2@3 gb2@3 g2@3 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@2 f2@3 eb2 ~@2 ab2@3 ab2 ~@5 ab2 ~@2 ab2@3 ab2 ~@2 f2@3 eb2 ~@2 db3 ~@2 db3@6 ~ bb2 ~ db3 ~@2 db3@6 ab2 ~ bb2 d2@6 ~@2 d2 ~@2 d2@6 ~@2, ~@43 ab2 ~@16]/5",
BA: "~ d2 ~@2 d2@6 ~@3 d2 ~@2 d2@3 a1@3 b1@2", BB: "~ a1@3 d2@6 ~@3 d2 ~@2 d2@6 ~@2",
BC: "d2 ~@2 d2@6 ~@3 d2 ~@2 d2@3 gb2@3 g2@3", BD: "ab2@3 a2@6 ~@3 a2 ~@2 a2@6 gb2@3",
BE: "e2 ~@2 a1@6 ~@3 a1 ~@2 a1 ~@2 a1@3 db2@3", BF: "e2@3 a2@6 ~@3 a2 ~@2 a2 ~@3 a2@3 gb2@2",
BG: "~ e2@3 a1@6 ~@3 a1 ~@2 db2@3 d2@3 eb2@2", BH: "~ e2@3 a1@4 ~@5 a1 ~@2 a1 ~@2 a1@3 db2@2",
BI: "~ e2@3 a2@6 ~@3 a2 ~@2 a2 ~@2 a2@3 gb2@2", BJ: "~ e2@3 a2@6 ~@3 a2 ~@2 a2@6 gb2@2",
BK: "[~ e2 ~@2 a1 ~@2 a1 ~@5 a1@3 a2@3 g2@3 ~ gb2@3 e2@3 d2@6 ~@3 d2 ~@2 d2@6 ~]/2",
BL: "[~@2 d2 ~@2 d2@4 ~@5 d2@3 d2@3 d2@3 e2@3 gb2@3 g2@3 ~@3 g2@3 ~@3 g2@3 ~@4]/2",
BM: "~@3 g1@3 g1@3 a1@3 b1@3 db2@3 d2@3 d2 ~@2", BN: "~@3 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2 ~@2",
BO: "~@3 d2 ~@2 d2@3 gb2@3 g2@3 ~ ab2@3 a2@3 a2 ~", BP: "~@4 a2 ~@2 a2@3 a2 ~@5 a2 ~@2 a2@3 a2 ~",
BQ: "~@4 a2@3 b2@3 a2@3 gb2@3 e2@3 d2@3 d2 ~", BR: "~@4 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2 ~",
BS: "~@4 d2@3 d3@3 c3@3 ~ b2@3 a2 ~@2 g2@3 ~",
BT: "[~@2 g2@3 ~@3 g2@3 ~@9 g1@3 a1@3 b1@3 db2@3 d2@3 d2 ~@5 d2 ~@2 d2@3 d2]/2",
BU: "[~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2@3 ~@3 a2 ~@2 a2@3 a2]/2",
BV: "[~@2 gb2@3 e2@3 a1@3 a1 ~@5 a1@3 a1@3 db2@3 d2@3 e2@3 d2@6 ~@3 d2 ~@2 d2@6 ~@3 d2 ~@2 d2@4 ~@5 d2@3 d2@3 d2@3 e2@3 gb2@3 g2@3 ~@3 g2@3 ~@3 g2@3 ~]/4",
BW: "~@5 g1@3 g1@3 a1@3 b1@3 db2@3 d2@3 d2", BX: "~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 d2",
BY: "~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2", BZ: "~@5 a2 ~@2 a2@3 a2 ~@5 a2 ~@2 a2@3 a2",
CA: "~@5 a2@3 b2@3 a2@3 gb2@3 e2@3 d2@3 d2", CB: "~@5 d2@3 d3@3 c3@3 b2@3 a2 ~@2 g2@3 ~",
CC: "[~@5 d2 ~@2 d2@3 d2 ~@5 d2 ~@2 d2@3 gb2@3 g2@3 ab2@3 a2@3 a2 ~@5 a2 ~@2 a2@3 a2]/2",
CD: "[~@5 a2 ~@2 a2@18 a1@6 d2@18 ~@3 d2@3 g2@18 ~@3 g2@3 d2@18 ~@3 a1@3 d2@3 ~@3 d2 ~@2 d2 ~@2 d2@2 ~@2]/5",
})).s("gm_fretless_bass").gain(0.45)
// chords · epiano2
const epiano2 = note(`<
~ A B C D E@2 F@2 G@2 H@2 I@2 J K L@2 ~@13 M@3 ~@5 N O N O P@5 ~@19 Q R S R T@5 ~@12 U@3 ~@12 V@4
>`.pickRestart({
A: "[f3,ab3,db4]@23 ~", B: "[gb3,bb3]@23 ~", C: "[ab3,c4]@6 [ab3,c4]@5 ~", D: "[ab3,c4]@9 ~@3 [ab3,c4]@10 ~@2",
E: "[[db4,f4,ab4]@23 ~]/2", // Db
F: "[f5@4 eb5@4 ~ f5@3 eb5@4 db5@4 ~ eb5@3 db5@4 c5@4 ~ db5@3 c5@4 bb4@4 ~ ab4@3, f4, ab4@15 ~]/2",
G: "[[ab4,bb4]@6 ~@3 ab4@38 ~, eb4@47 ~]/2", // Absus2
H: "[[c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@3 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 ~@17]/2", // Cm Bbm Ab
I: "[~ [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 ~@17]/2", // Cm Bbm Ab
J: "~ [ab3,gb4,bb4]@23", K: "~ [ab3,c5,eb5]@23", L: "[~ [f4,db5]@24 [f4,b4]@22 ~, ~ ab4@46 ~]/2",
M: "[~ [f3,ab3,db4]@8 [bb3,gb4]@8 ~@7]/3", // Db Ebm
N: "~@4 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~", // Cm Bbm
O: "~ [bb4,db5]@5 ~ [ab4,c5]@3 ~@14", // Bbm Ab
P: "[~@2 [gb4,bb4]@12 [ab3,c5,eb5]@12 [f4,db5]@12 [f4,b4]@11 ~@11, ~@2 ab3@11 ~@13 ab4@23 ~@11]/5", // Gb Ab Db Fdim
Q: "~@3 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5]@4 ~@3 [b4,d5] ~", // Dbm Bm
R: "~ [b4,d5]@5 ~ [a4,db5]@3 ~@14", // Bm A
S: "~@4 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5] ~@2 [db5,e5]@4 ~@2 [b4,d5] ~", // Dbm Bm
T: "[~@4 [a3,g4,b4]@24 [a3,db5,e5]@24 ~ [gb4,d5]@24 [gb4,c5]@23 ~@20, ~@53 a4@47 ~@20]/5", // Em A D Gbdim
U: "[~@4 [gb4,d5]@12 [gb4,c5]@11 ~@9, ~@4 a4@23 ~@9]/3", // D Gbdim
V: "[~@8 [gb3,a3,d4]@23 ~ [g3,b3]@22 ~@2 [gb3,a3,d4]@23 ~@17]/4", // D G D
})).s("gm_epiano2").gain(0.4)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
~@5 A@3 B C@2 D E@2 F ~@2 G H I J@6 K ~ L M N O@4 P@3 Q R S@4 ~@2 T U V W X Y Z AA AB AC ~ AD AE AF AG AH AI AJ@2 AK
AL AM AN AO@3 ~@2 AP AQ AR AS AT AU AV AW AX AY ~ AZ@2 BA BB BC BD BE BF BG BH BI BJ BK BL ~ BC BG BA BM@2 ~@2 BN
>`.pickRestart({
A: "[f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3", // Db
B: "[f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@8", // Db
C: "[c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3", // Ab
D: "[c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 ~ [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@2", // Ab
E: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@2", // Ab
F: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@6", // Ab
G: "~ [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@2", // Db
H: "~ [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@2", // Fdim
I: "~ [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@8", // Gb
J: "[~@13 [f3,ab3,db4]@3 ~ [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3]@2 ~@5]/6", // Db Ab Db Fdim
K: "[f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3]@2 ~@4 [f3,ab3,b3]@3 ~@9", // Fdim
L: "~@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5", // Db
M: "[f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5", // Db
N: "[f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5", // Db Ab
O: "[~@3 [c4,eb4,ab4]@24 [f3,ab3,db4]@24 [bb3,gb4]@24 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4]/4", // Ab Db Ebm Db
P: "[f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4", // Db
Q: "~@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@3", // Ab
R: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@3", // Ab
S: "~ [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@4", // Ab
T: "~@4 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@4", // Db
U: "~ [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@4", // Db Fdim
V: "~ [f3,ab3,b3]@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@3 [bb3,db4,gb4]@3 ~@5", // Fdim Gb
W: "~@16 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@3", // Db
X: "~ [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@3", // Db
Y: "~ [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4]@2 ~@5 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@2", // Db Ab
Z: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@2", // Ab
AA: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Ab Db
AB: "~@2 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@3", // Db Fdim
AC: "~@2 [f3,ab3,b3]@3 [f3,ab3,b3]@3 [f3,ab3,b3] ~@5 [f3,ab3,b3]@3 ~@7", // Fdim
AD: "~@5 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Db
AE: "~@2 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Db
AF: "~@2 [f3,ab3,db4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@3", // Db Ab
AG: "~@2 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@3 [c4,eb4,ab4]@3 [c4,eb4,ab4] ~@3", // Ab
AH: "~@2 [c4,eb4,ab4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@5 [f3,ab3,db4]@3 [f3,ab3,db4]@3 [f3,ab3,db4] ~@3", // Ab Db
AI: "~@2 [f3,ab3,db4]@3 [gb3,a3,d4]@2 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@4", // Db D
AJ: "~ [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@4", // D
AK: "[gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5", // D
AL: "~@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5", // A
AM: "[db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4", // A
AN: "[db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 ~ [db4,e4,a4]@2 ~@3", // A
AO: "~ [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@3", // A
AP: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@2", // D
AQ: "~@2 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@4 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@2", // D Gbdim
AR: "~@2 [gb3,a3,c4]@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@4", AS: "~@18 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~",
AT: "~@3 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~", // D
AU: "~@3 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2", // D A
AV: "~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2", // A
AW: "~@4 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2", // A D
AX: "~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2", // D Gbdim
AY: "~@4 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]@2 ~@5 [gb3,a3,c4]@3 ~@4", // Gbdim
AZ: "[~@8 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]@2 ~@4 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]]/2", // D
BA: "~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // D A
BB: "~@8 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // A
BC: "~@8 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // D
BD: "~@5 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4] ~@5 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]", // D Gbdim
BE: "~@5 [gb3,a3,c4]@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~", BF: "~@20 [gb3,a3,d4]@3 [gb3,a3,d4]",
BG: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // D
BH: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // D A
BI: "~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4]", // A
BJ: "~@5 [db4,e4,a4]@3 [db4,e4,a4]@3 [db4,e4,a4] ~@5 [db4,e4,a4]@3 [gb3,a3,d4]@3 [gb3,a3,d4]", // A D
BK: "~@5 [gb3,a3,d4]@3 [gb3,a3,d4]@3 [gb3,a3,d4] ~@5 [gb3,a3,d4]@3 [gb3,a3,c4]@3 [gb3,a3,c4]", // D Gbdim
BL: "~@5 [gb3,a3,c4]@3 [gb3,a3,c4]@3 [gb3,a3,c4] ~@5 [gb3,a3,c4]@3 ~@4", BM: "[~ [db4,e4,a4]@3 ~@2]/2",
BN: "~@14 [a4,d5] ~@2 [a4,d5] ~@2 [a4,d5] ~@3", // D5
})).s("gm_acoustic_guitar_steel").gain(0.3)
// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
~@9 A B C@2 D@2 ~ E F G ~ H I@4 J K ~@2 L ~@8 M N O P Q R@2 ~@5 S T ~@2 U V ~@2 W@2 ~@9 X Y Z AA@3 ~@3 AB AC ~@2 AD AE
~@2 AF AG ~@5 AH AI ~@2 AJ@2 ~@2 AF AG ~@5
>`.pickRestart({
A: "~@3 ab4 c5 ab4 c5 ab4", B: "c5@3 ab4@3 c5@3 ab4@3 bb4@3 gb4@3 bb4@3 gb4 ~@2",
C: "[[c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@3 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5]@5 ~ [gb4,bb4]@3 [ab4,c5]@2]/2", // Cm Bbm Ab Gb Ab
D: "[~ [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@4 ~@2 [bb4,db5] ~@2 [bb4,db5]@5 ~ [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@3 [ab4,c5]@6 [bb4,db5]@5]/2", // Cm Bbm Ab Bbm
E: "~ [eb4,ab4]@23", F: "~ db5@3 ab4@3 db5@3 ab4@3 db5@3 ab4@3 db5@3 ab4@2",
G: "~ b4@3 ab4@3 b4@3 ab4@3 b4@3 ab4@3 b4@3 ab4@2", H: "~@23 [bb4,db5]",
I: "[~@2 [bb4,db5]@4 [c5,eb5]@3 ~@2 [c5,eb5] ~@2 [c5,eb5]@3 [db5,f5]@3 ~@3 [db5,f5]@3 [db5,f5]@6 ~@6 ab4@3 eb4@3 c4@3 bb4@3 ab4@3 eb4@3 ab4@3 bb4@6 ab4@3 eb4@3 c4@3 bb4@3 ab4@3 eb4@3 c4@3 ~@10]/4", // Bbm Cm Db
J: "~@14 f4@3 [ab4,b4]@6 ~", K: "f4@3 [ab4,b4]@3 f4@2 ~ [ab4,b4]@3 ~@12",
L: "~ [gb4,bb4] [f4,ab4] ~ [gb4,bb4] [f4,ab4] ~@2", M: "~@6 c5@3 db5@3 ~ eb5@6 eb5@5",
N: "~ eb5@6 db5@6 c5@3 db5@6 c5@2", O: "~ bb4@3 ~@20",
P: "~@7 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5]@6 [gb4,bb4]@2", Q: "~ [ab4,c5]@10 ~@13",
R: "[~@7 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5] ~@2 [c5,eb5]@6 [ab4,c5]@6 ~@20]/2", S: "~@16 [gb4,bb4]@3 [f4,ab4] ~@4",
T: "~ [gb4,bb4]@3 [f4,ab4] ~@19", U: "~@17 [db4,f4]@3 [eb4,gb4]@3 ~",
V: "~@2 [db4,f4]@3 [f4,ab4]@3 ~@3 [eb4,gb4]@3 [db4,f4] ~@9", // Db Fm Ebm Db
W: "[~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [db4,f4]@6 [c4,eb4]@12 ~@7]/2", // Gb Fm Gb Fm Db Cm
X: "~@7 [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@6 [b4,d5]@2", Y: "~ [db5,e5]@11 ~@12",
Z: "~@7 [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@2 ~ [a4,db5]@6 [a4,db5] ~", AA: "[~ [g3,b3,d4]@6 [e3,a3,db4]@6 ~@5]/3",
AB: "~@18 [g4,b4]@3 [gb4,a4] ~@2", AC: "~@3 [g4,b4]@3 [gb4,a4] ~@17", AD: "~@19 [d4,gb4]@3 [e4,g4]@2",
AE: "~@4 [d4,gb4]@3 [gb4,a4]@3 ~@4 [e4,g4]@3 [d4,gb4] ~@6", AF: "~@8 [g4,b4]@3 [gb4,a4] ~@5 [g4,b4]@3 [gb4,a4] ~@3",
AG: "~ [d4,gb4]@3 [db4,e4]@6 ~@2", AH: "~@20 [g4,b4]@3 [gb4,a4]", AI: "~@5 [g4,b4]@3 [gb4,a4] ~@15",
AJ: "[~@20 [d4,gb4]@3 [e4,g4]@3 ~@3 [d4,gb4]@3 [gb4,a4]@3 ~@3 [e4,g4]@3 [d4,gb4] ~@6]/2", // D Em D Gbm Em D
})).s("gm_acoustic_guitar_steel").gain(0.4)
// other · french horn
const french_horn = note("<~ A B C D ~@62 E@2 ~@35 F@4>".pickRestart({
A: "~@3 db5 ~@5 db5@3 eb5@3 db5@3 c5@3 bb4 eb4 ~", B: "~@3 bb4 ~@5 bb4@3 c5@3 bb4@3 ab4@3 gb4@3", C: "bb4 ab4",
D: "bb4@12 ~ c5@10 ~", E: "[~@3 e4 ~ gb4 e4 ~ d4 db4 ~ d4 db4 ~ b3 a3@12 ~@21]/2",
F: "[~@11 d5 ~@5 d5@3 e5@3 d5@3 db5@3 b4 ~ e4 ~@3 b4 ~@5 b4@3 db5@3 b4@3 a4@3 g4@3 ~@3 d5 ~@5 d5@3 e5@3 d5@3 db5@3 b4 ~ e4 ~@16]/4",
})).s("gm_french_horn").gain(0.4)
// chords · trombone
const trombone = note(`<
~ A B C D ~@14 E ~ F@3 ~@5 G@3 H I J@2 K L M@2 ~ N O@2 P@3 Q@2 ~ R S@2 ~@5 T@3 U@3 ~@5 V W@2 X@5 ~ Y Z@3 ~@4 AA AB ~
AC@3 ~ AD AE@3 ~@4 AA AB ~ AF AG AF AH
>`.pickRestart({
A: "db3@5 ~@3", B: "gb3@5 ~@3", C: "~ ab2 ~ ab2, bb3 ab3", D: "~ ab2 [ab2,c4]@2, bb3 ~",
E: "~ [db4,gb4] ~@5 [db4,gb4] ~@5 [db4,gb4] ~@10", // Gb5
F: "[~@14 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [db4,f4]@6 [c4,eb4]@30 ~@4]/3", // Gb Fm Gb Fm Db Cm
G: "[~@3 [gb4,bb4]@3 [f4,ab4] ~@5 [gb4,bb4]@3 [f4,ab4] ~@5 [bb4,db5]@6 [ab4,c5]@24 ~@21]/3", // Gb Fm Gb Fm Bbm Ab
// … 163 more lines
More by DaWN
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.