0:00/0:00
// Foxie Foxtrot — Haak
// 101 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 65 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(101/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(`<
~@3 A B C D E F G@2 H I J K L M N O P Q R S T U V W H I J K L M N O P Q R S T U V X Y Z AA AB AC AD AE AF AG AH AI AJ
AK AL AM AN AM AN AO AP AQ AR
>`.pickRestart({
A: "[f3,a3] ~@2 [a3,c4] ~@2 [f3,a3] ~@2 [a3,c4] ~@2 [f3,a3] ~@2 [a3,c4] ~ f3 c2@2 f3 f2@2 f3, f2@3 ~@3 c2@3 ~@3 f2@5 a3@2 ~ [a3,c4]@4", // F Am F Am F Am
B: "[f3,g3,b3] ~@2 [f3,b3,d4] ~@2 [f3,b3] ~@2 [f3,b3,d4] ~@2 g2@3 [f2,a3]@3 [e2,g3]@3 [d2,f3]@2 ~, g2@5 ~ d2@5 [f3,b3]@3 ~@10", // G7 Bdim Fdim Bdim F Em Dm Fdim
C: "[c2,e3]@3 c4@2 ~ g2 ~ [g3,c4] g2 ~ e3 [c2,bb3,c4]@4 ~@2 g2 ~ g3 [c2,e3]@3, ~@3 g3 ~ e3@2 ~@10 [bb3,c4]@4 ~@3", // C C5 C7 C Bbsus2
D: "[f2,f3]@3 [a3,c4]@4 ~@2 f2 ~@2 [f2,a3,c4] ~@2 [eb2,g3]@3 [d2,f3]@3 eb3@2 ~, ~@8 f3@3 ~@10 c2 ~@2", // F Am F Eb Dm
E: "[bb2,d3]@3 [bb3,d4]@3 ~@2 f3@3 ~ [bb2,d4,f4]@5 ~ f2 ~@2 [bb2,f3]@3, ~@6 f2@4 ~@7 f3@3 [bb3,d4]@2 ~@2", // Bb Bb5 Bb
F: "f3@3 ~@3 c3@2 ~ f2@2 ~ gb2 ~@2 gb2@2 gb3 [d2,d4]@2 ~ [gb2,a3,c4]@2 ~, f2@5 ~@19, ~@3 [a3,c4]@5 f3@2 ~ gb3@2 ~ [a3,d4]@2 ~@2 a3 ~@5", // D Gbdim Am D5
G: "[[g3,b3]@2 ~ [b3,d4]@5 ~ g2@3 [g3,d4,g4]@3 g2@2 [g3,d4]@3 ~ g2@3 ~@6 c3 ~@2 c3@2 c4 c2 ~ [c2,c4,e4]@4 [d2,f4]@2 ~ [e2,c4,g4]@2 ~, g2@3 ~@5 g3@3 ~@6 f4@5 ~@2 e4@13 ~@5 [c4,d4] ~@5, ~@10 g3@5 ~ g3 ~@7, ~@8 [c2,c4]@3 ~@5]/2", // G Bm G5 C Dm C Csus2 C
H: "f2@3 [a3,c4] ~@2 c2@2 ~ [f3,a3,c4] ~@2 f2@3 [a3,c4] f3 ~@2 [a3,c4] ~ [f2,f3] ~@2, f3 ~@5 f3 ~@5 f3 ~@5 f2@2 ~@4", // Am F Am F
I: "g2@3 [b3,d4] ~@2 d2@3 [b3,d4] g3@2 g2@2 ~ [f2,a3]@2 ~ e2@2 ~ [d2,f3] ~@2, g3 ~@5 g3 ~@11 g3 ~@5", // Bm F Dm
J: "[c2,e3]@3 [g3,c4] e3 ~@2 [g3,c4] ~ g2 ~@2 c2@3 [g3,c4] e3 ~ g2 [bb3,c4] ~ e2@2 ~, f3 ~@5 g2@2 ~@4 e3 ~@11", // C C5 Bbsus2
K: "f2@3 [a3,c4] ~@2 c2@3 [a3,c4] f3 ~ f2 [a3,c4] ~ f2@3 [a3,c4] ~@2 [c2,f3] ~@2, f3 ~@5 f3 ~@8 f3 ~@8", // Am F5
L: "f2@3 [a3,c4] ~@2 c2@3 [a3,c4] f3 ~@2 [a3,c4] ~ f3 ~@2 c2@3 [f2,a3,c4] ~@2, f3 ~@5 f3 ~@5 f2@3 ~@3 f3 ~@5", // Am F
M: "g2@3 [b3,d4] ~@2 d2@3 [b3,d4] f3@2 g2@2 ~ [f2,a3]@3 [e2,g3]@2 ~ f3@2 ~, f3 ~@5 f3 ~@14 d2 ~@2", // Bm F Em
N: "[c2,e3]@3 c4 e3 ~ g2 [g3,c4] ~ g2 ~@2 c2@3 c4 g3 ~ g2 e3 ~ e2@2 ~, ~@3 g3@2 ~@7 e3 ~@2 bb3@2 ~@7", // C C5
O: "f2@3 [a3,c4] f3 ~@2 [a3,c4] ~@2 eb3@2 ~ [a3,c4] ~@2 eb3 ~ [a3,c4]@3 [f2,eb3] ~@2, f3 ~@5 c2@2 ~ f2@4 ~@2 f2@2 ~@7", // Am F7
P: "bb2@3 [f3,bb3,d4]@3 ~ [f3,bb3,d4] ~ bb2@3 [f3,b3,d4]@3 bb2 f3 ~@2 f3 ~@2 f3@2, ~@16 [b3,d4]@5 bb2@2 ~", // Bb Bdim Bm
Q: "~ [f3,c4]@2 c3@2 ~ [f3,a3,c4]@3 f2@2 ~ [d3,gb3,a3,d4]@4 gb3 ~ d3 gb3@2 ~ f3@2, f2@2 ~@19 d3@2 ~, ~ a3 ~@14 [a3,d4]@6 ~@2", // F5 F D D5
R: "g2 [b3,d4] ~ d3 f3 ~ [f3,b3,d4]@3 d3 ~@2 [g2,b3,d4,g4]@3 g3 [d4,f4]@3 g3@2 b2@2 ~, ~@8 g3 ~@3", // Bm Bdim G Dm
S: "[c3,c4,e4]@13 ~@2 [c3,c4,e4]@3 [d3,c4,f4]@2 ~ [e3,c4,e4,g4] ~@2, g3@3 ~@15 d4 ~@5", // C Dm7 C
T: "[f3,a3] ~@2 [a3,c4] ~@2 [f3,a3] ~@2 [a3,c4] ~@2 [f3,a3] ~@2 c4 f3 ~ c3 c4@2 ~ f3 ~, f2@2 ~@4 c3@3 ~@3 f2@3 a3@3 ~ a3 ~ f2@2 ~", // F Am F Am F
U: "[g2,f3,g3,b3] ~@2 [f3,b3,d4] ~@2 [f3,b3] ~@2 [b3,d4] [g2,f3]@2 ~@3 [f2,a3]@2 ~ g3@2 ~ f3@2 ~, ~@6 d3@3 ~ b3@4 ~@4 e2 ~@2 d2 ~@2", // G7 Bdim Fdim Bm G7 F
V: "[c2,e3]@3 [g3,c4] e3@2 g2 [g3,c4] ~ g2 e3 ~ [c2,e3,bb3,c4]@3 ~ [bb3,c4]@3 g3 ~ e2@3, ~@15 c3@2 ~@7, ~@16 e3 ~@4 e3 ~@2", // C C5 C7 Bbsus2
W: "f2@2 ~ [a3,c4]@3 ~ [f3,a3] ~ c3 f3 ~ [f2,f3,a3,c4]@4 [c3,c4] ~@2 [c4,f4] ~ [f3,a3] ~@2, f3@5 ~@2 d4@2 ~@7 f4@2 ~@6", // Am F C F5 F
X: "f2@3 [f3,a3,c4]@3 f2 [f3,a3,d4]@2 f2 ~@2 [db2,ab3,b3,db4]@3 ~ [ab3,b3,db4]@5 [db2,db3] ~@2, ~@5 db3 ~@2", // F Dm Db7 Db
Y: "[db4,gb4,bb4] ~@20 [db4,gb4,bb4] ~@2", Z: "[c4,eb4,ab4] ~@20 [c4,eb4,ab4] ~@2",
AA: "[db4,f4,ab4] ~@20 [db4,f4,ab4] ~@2", AB: "[bb3,db4,gb4] ~@23",
AC: "gb2@3 [bb3,db4] ~@2 db2@3 [bb3,db4] gb3 ~@2 [bb3,db4] ~ gb3 ~@2 db2@3 [gb2,bb3,db4] ~@2, gb3 ~@5 gb3 ~@5 gb2@3 ~@3 gb3 ~@5", // Bbm Gb
AD: "ab2@3 [c4,eb4] ~@2 eb2@3 [c4,eb4] gb3@2 ab2@2 ~ [gb2,bb3]@3 [f2,ab3]@2 ~ gb3@2 ~, gb3 ~@5 gb3 ~@14 eb2 ~@2", // Cm Gb Fm
AE: "[db2,f3]@3 db4 f3 ~ ab2 [ab3,db4] ~ ab2 ~@2 db2@3 db4 ab3 ~ ab2 f3 ~ f2@2 ~, ~@3 ab3@2 ~@7 f3 ~@2 b3@2 ~@7", // Db Db5
AF: "gb2@3 [bb3,db4] gb3 ~@2 [bb3,db4] ~@2 e3@2 ~ [bb3,db4] ~@2 e3 ~ [bb3,db4]@3 [gb2,e3] ~@2, gb3 ~@5 db2@2 ~ gb2@4 ~@2 gb2@2 ~@7", // Bbm Gb7
AG: "b2@3 [gb3,b3,eb4]@3 ~ [gb3,b3,eb4] ~ b2@3 [gb3,c4,eb4]@3 b2 gb3 ~@2 gb3 ~@2 gb3@2, ~@16 [c4,eb4]@5 b2@2 ~", // B Cdim Cm
AH: "~ [gb3,db4]@2 db3@2 ~ [gb3,bb3,db4]@3 gb2@2 ~ [eb3,g3,bb3,eb4]@4 g3 ~ eb3 g3@2 ~ gb3@2, gb2@2 ~@19 eb3@2 ~, ~ bb3 ~@14 [bb3,eb4]@6 ~@2", // Gb5 Gb Eb Eb5
AI: "ab2 [c4,eb4] ~ eb3 gb3 ~ [gb3,c4,eb4]@3 eb3 ~@2 [ab2,c4,eb4,ab4]@3 ab3 [eb4,gb4]@3 ab3@2 c3@2 ~, ~@8 ab3 ~@3", // Cm Cdim Ab Ebm
AJ: "[db3,db4,f4]@13 ~@2 [db3,db4,f4]@3 [eb3,db4,gb4]@2 ~ [f3,db4,f4,ab4] ~@2, ab3@3 ~@15 eb4 ~@5", // Db Ebm7 Db
AK: "[gb3,bb3] ~@2 [bb3,db4] ~@2 [gb3,bb3] ~@2 [bb3,db4] ~@2 [gb3,bb3] ~@2 db4 gb3 ~ db3 db4@2 ~ gb3 ~, gb2@2 ~@4 db3@3 ~@3 gb2@3 bb3@3 ~ bb3 ~ gb2@2 ~", // Gb Bbm Gb Bbm Gb
AL: "[ab2,gb3,ab3,c4] ~@2 [gb3,c4,eb4] ~@2 [gb3,c4] ~@2 [c4,eb4] [ab2,gb3]@2 ~@3 [gb2,bb3]@2 ~ ab3@2 ~ gb3@2 ~, ~@6 eb3@3 ~ c4@4 ~@4 f2 ~@2 eb2 ~@2", // Ab7 Cdim Gbdim Cm Ab7 Gb
AM: "[db2,f3]@3 [ab3,db4] f3@2 ab2 [ab3,db4] ~ ab2 f3 ~ [db2,f3,b3,db4]@3 ~ [b3,db4]@3 ab3 ~ f2@3, ~@15 db3@2 ~@7, ~@16 f3 ~@4 f3 ~@2", // Db Db5 Db7 Bsus2
AN: "gb2@2 ~ [bb3,db4]@3 ~ [gb3,bb3] ~ db3 gb3 ~ [gb2,gb3,bb3,db4]@4 [db3,db4] ~@2 [db4,gb4] ~ [gb3,bb3] ~@2, gb3@5 ~@2 eb4@2 ~@7 gb4@2 ~@6", // Bbm Gb Db Gb5 Gb
AO: "db3@3 [ab3,db4,f4] ~@2 ab2 ~ [ab3,db4,f4] ab2 ~@2 [db3,db5,db6] ~@4 [db5,db6] db3 ~@2 ab3@2 ~, ~@21 ab2 ~@2", // Db
AP: "db3@3 [ab3,db4,f4] ~@4 [ab3,db4,f4] ab2 ~@2 [ab3,b3,db4,f4]@3 db3 ~ [ab3,b3,db4,f4] db3 ~ ab3 db3 ~ bb3, ~@12 db3 ~@11", // Db Db7
AQ: "gb2@2 [bb3,db4,gb4] gb3 ~@2 [bb3,db4,gb4]@3 gb3@2 ~ [b2,b3,eb4,gb4]@5 eb4@3 b3 b2@2 ~, ~@17 gb4@6 ~, ~@17 b3@2 ~@5", // Gb B
AR: "[gb3,bb3,db4,gb4] ~@2 [db3,db4] c3 [db3,db4] [d3,d4]@3 [db3,db4] ~@5 [db4,b4,db5] ~@2 [gb3,gb4,bb4,db5,gb5] ~@5, ~@2 c4 ~@9", // Gb Db D Db Db7 Gb
})).s("gm_piano").gain(0.56).pan(0.8)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
~@3 A B C D E F G H I B J K L B J D M N O P I Q R S I B J K L B J D M N O P I Q R T ~@4 U V W X Y Z AA AB AC AD AE AF
AE AF AG AH AI AJ
>`.pickRestart({
A: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [a3,c4,f4] [a3,c4,f4]@2 ~", // F
B: "~@3 [b3,d4,g4] ~@5 [b3,d4,g4] ~@4 [b3,d4,g4]!2 ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2", // G
C: "~@3 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [bb3,e4,g4] ~@4 [bb3,e4,g4] [bb3,e4,g4]@2 ~", // C Edim
D: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [a3,c4,eb4,f4]!2 ~@2 [a3,c4,eb4,f4] ~@2 [a3,c4,eb4,f4] ~@2", // F F7
E: "~@3 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@4 [bb3,d4,f4]!2 ~@2", // Bb
F: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [a3,c4,d4,gb4] ~@5 [a3,c4,d4,gb4] ~@2", // F D7
G: "~@3 [g3,b3,d4,f4] ~@5 [g3,b3,d4,f4] ~@5 [g3,b3,d4,f4] ~@4 [g3,b3,d4,f4]!2 ~@2", // G7
H: "~@3 [g3,a3,c4,e4] ~@5 [g3,a3,c4,e4] ~@4 [g3,bb3,c4,e4]!2 ~@2 [g3,bb3,c4,e4] ~@2 [g3,bb3,c4,e4] ~@2", // Am7 C7
I: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [a3,c4,f4]!2 ~@2", // F
J: "~@3 [bb3,e4,g4] ~@5 [bb3,e4,g4] ~@5 [bb3,e4,g4] ~@4 [bb3,e4,g4]!2 ~@2", // Edim
K: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [a3,c4,f4]!2 ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2", // F
L: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [a3,c4,f4] ~@2", // F
M: "~@3 [bb3,d4,f4] ~@5 [bb3,d4,f4] ~@5 [b3,d4,f4] ~@5 [b3,d4,f4] ~@2", // Bb Bdim
N: "~@3 [a3,c4,f4] ~@4 [a3,c4,f4]!2 ~@5 [a3,c4,gb4] ~@5 [a3,c4,gb4] ~@2", // F Gbdim
O: "~@3 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [b3,d4,f4] ~@4 [b3,d4,f4]!2 ~@2", // G Bdim
P: "~@3 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [bb3,e4,g4] ~@2 [bb3,e4,g4] ~@2 [bb3,e4,g4] ~@2", // C Edim
Q: "~@3 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [b3,d4,g4] ~@4 [b3,d4,f4,g4]!2 ~@2", // G G7
R: "~@3 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [bb3,e4,g4] ~@5 [bb3,e4,g4] ~@2", // C Edim
S: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [a3,c4,f4] [a3,c4,f4]@2 ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~@2", // F
T: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4 [db4,e4,f4,ab4] [db4,f4,ab4]@2 ~ [db4,f4,ab4]@2 ~ [db4,f4,ab4]@2 ~", // F Db
U: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@2", // Gb
V: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@4 [c4,eb4,ab4]!2 ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2", // Ab
W: "~@3 [b3,f4,ab4] ~@5 [b3,f4,ab4] ~@5 [b3,f4,ab4] ~@4 [b3,f4,ab4]!2 ~@2", // Fdim
X: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@4 [bb3,db4,e4,gb4]!2 ~@2 [bb3,db4,e4,gb4] ~@2 [bb3,db4,e4,gb4] ~@2", // Gb Gb7
Y: "~@3 [b3,eb4,gb4] ~@5 [b3,eb4,gb4] ~@5 [c4,eb4,gb4] ~@5 [c4,eb4,gb4] ~@2", // B Cdim
Z: "~@3 [bb3,db4,gb4] ~@4 [bb3,db4,gb4]!2 ~@5 [bb3,db4,g4] ~@5 [bb3,db4,g4] ~@2", // Gb Gdim
AA: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,gb4] ~@4 [c4,eb4,gb4]!2 ~@2", // Ab Cdim
AB: "~@3 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@5 [b3,f4,ab4] ~@2 [b3,f4,ab4] ~@2 [b3,f4,ab4] ~@2", // Db Fdim
AC: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@4 [bb3,db4,gb4]!2 ~@2", // Gb
AD: "~@3 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@4 [c4,eb4,gb4,ab4]!2 ~@2", // Ab Ab7
AE: "~@3 [db4,f4,ab4] ~@5 [db4,f4,ab4] ~@5 [b3,f4,ab4] ~@5 [b3,f4,ab4] ~@2", // Db Fdim
AF: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@4 [bb3,db4,gb4] [bb3,db4,gb4]@2 ~ [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2", // Gb
AG: "~@3 [ab3,b3,db4,f4] ~@5 [ab3,b3,db4,f4] ~@5 [ab3,b3,db4,f4] ~@4 [ab3,b3,db4,f4]!2 ~@2", // Db7
AH: "~@3 [ab3,b3,db4,f4] ~@5 [ab3,b3,db4,f4] ~@5 [ab3,b3,db4,f4] ~@5 [ab3,b3,db4,f4] ~@2", // Db7
AI: "~@3 [bb3,db4,gb4] ~@5 [bb3,db4,gb4] ~@5 [b3,eb4,gb4] ~@4 [b3,eb4,gb4]!2 ~@2", // Gb B
AJ: "[bb3,db4,gb4] ~@14 [b3,db4,f4]@2 ~ [bb3,db4,gb4] ~@5", // Gb Db7 Gb
})).s("gm_acoustic_guitar_nylon").gain(0.56).pan(0.2)
// bass · fretless bass
const bass = note(`<
~@3 A B C D E F G H I J K L I M N O P Q R S T U C V I J K L I M N O P Q R S T U C W X Y Z AA AB AC AD AE AF AG AH AI
AJ AK AL AM AL AM AN AO AP AQ
>`.pickRestart({
A: "f2@3 ~@3 c2@2 ~@4 f2@2 ~@4 c2@2 ~@4", B: "g2@2 ~@4 d2@2 ~@4 g2@2 ~ f2@2 ~ e2 ~@2 d2 ~@2",
C: "c2@3 ~@3 g1@3 ~@3 c2@2 ~@4 g1@3 ~@3", D: "f2@2 ~@4 c2@3 ~@3 f2@2 ~ eb2 ~@2 d2@2 ~ c2 ~@2",
E: "bb1@2 ~@4 f1@2 ~@4 bb1@2 ~@4 f1@3 ~@3", F: "f2@3 ~@3 c2@3 ~@3 d2@3 ~@3 a1@4 ~@2",
G: "g1@4 ~@2 d2@3 ~@3 g2@3 ~@3 d2@4 ~@2", H: "c2@2 ~@4 g1@3 ~@3 c2 ~@2 c2@2 ~ d2@2 ~ e2@2 ~",
I: "f2 ~ c2 ~ f2 ~ c2 ~", J: "g2@3 ~@3 d2@3 ~@3 g2@2 ~ f2@2 ~ e2@2 ~ d2@2 ~", K: "c2 ~ g1 ~ c2 ~ g1 ~",
L: "f2@2 ~@4 c2@3 ~@3 f2@2 ~ e2@2 ~ d2@2 ~ c2@2 ~", M: "g2@3 ~@3 d2@3 ~@2 g2 ~@2 g2 f2@2 ~ e2@2 ~ d2 ~@2",
N: "c2@3 ~@3 g1@3 ~@3 c2@4 ~@2 g1@4 ~@2", O: "f2@3 ~@3 c2@4 ~ f2 ~@2 f2 eb2@2 ~ d2@2 ~ c2@2 ~",
P: "bb1@3 ~@3 f1@3 ~@3 b1@4 ~@2 f1@3 ~@3", Q: "c2@3 ~@3 c2@3 ~@3 d2@4 ~@2 a1@3 ~@3",
R: "g1@4 ~@2 d2@4 ~@2 g2@4 ~@2 g1@5 ~", S: "c2@3 ~@3 g1@4 ~@2 c2@2 ~@10", T: "f2@2 ~@4 c2@3 ~@3 f2@3 ~@3 c2@3 ~@3",
U: "g2@3 ~@3 d2@3 ~@3 g2!2 ~ f2@2 ~ e2@2 ~ d2@2 ~", V: "f2@3 ~@3 c2@3 ~@3 f2@2 ~ c2@2 ~ d2@2 ~ e2@2 ~",
W: "f2@3 ~@3 c2@4 ~@2 db2 ~@2 db2@2 ~ eb2 ~@2 f2@2 ~", X: "gb2@3 ~@18 gb2@2 ~", Y: "ab2@3 ~@18 ab2@2 ~",
Z: "db2@3 ~@18 db2@2 ~", AA: "gb2@3 ~@9 db2 ~@2 db2@2 ~ eb2@2 ~ f2@2 ~",
AB: "gb1@2 ~ ab1@2 ~ bb1@2 ~ db2@2 ~ gb2@2 ~ gb1@2 ~ ab1@3 bb1@2 ~",
AC: "ab1@2 ~ bb1@2 ~ c2@2 ~ eb2@2 ~ ab2@3 g2@2 ~ gb2@3 eb2@2 ~",
AD: "db2@2 ~ eb2@2 ~ f2@2 ~ ab2@2 ~ db3@3 db2@3 eb2@2 ~ f2@2 ~",
AE: "gb2@3 db2@2 ~ bb1@3 db2@3 gb1@2 ~ gb1@3 ab1@2 ~ bb1@2 ~", AF: "b1@3 ~@3 gb1@3 ~@3 c2@4 ~@2 gb1@3 ~@3",
AG: "db2@3 ~@3 db2@3 ~@3 eb2@4 ~@2 bb1@3 ~@3", AH: "ab1@4 ~@2 eb2@4 ~@2 ab2@4 ~@2 ab1@5 ~",
AI: "db2@3 ~@3 ab1@4 ~@2 db2@2 ~@10", AJ: "gb2@2 ~@4 db2@3 ~@3 gb2@3 ~@3 db2@3 ~@3",
AK: "ab2@3 ~@3 eb2@3 ~@3 ab2!2 ~ gb2@2 ~ f2@2 ~ eb2@2 ~", AL: "db2@3 ~@3 ab1@3 ~@3 db2@2 ~@4 ab1@3 ~@3",
AM: "gb2@3 ~@3 db2@3 ~@3 gb2@2 ~ db2@2 ~ eb2@2 ~ f2@2 ~", AN: "db2@2 ~@4 ab1@2 ~@4 db2@3 ~@3 ab1@2 ~@4",
AO: "db2@2 ~@4 ab1@2 ~@4 db2@2 ~@4 ab1@3 ~@3", AP: "gb2 ~ db2 ~ b1 ~ ab1 ~",
AQ: "gb2 ~@2 db2 c2 db2 d2@3 db2 ~@5 db2 ~@2 gb2 ~@5",
})).s("gm_fretless_bass").gain(0.56)
// other · trombone
const trombone = note("<A B@2 ~@16 C D E F ~@3 G H@2 I J K L M N C D E F ~@12 O P Q R ~@10>".pickRestart({
A: "~@21 c3@2 d3", B: "[f3 ~ f3@2 ~ f3 ~@2 f3 ~@2 f3 ~@2 f3 e3@2 f3 d3@2 c3 ~@2 c3@13 f3 ~@5 f2@5 ~]/2", C: "bb2 b2",
D: "c3@11 ~ d3@11 ~", E: "g3@23 ~", F: "c3@13 ~@11", G: "~@17 c3@3 d3 c3@2 ~",
H: "[f3@3 ~@3 g3@3 ~@3 a3@4 ~@8 b3@15 ~@6 b3@3, ~@21 c4@5 ~@22]/2", I: "bb3@13 ~@2 g3@3 e3@2 ~ c3@2 ~",
J: "f3@17 ~@4 c3 ~@2", K: "f3@11 ~ a3@6 ~@3 c4@3", L: "b3@17 ~@4 b3@3", M: "bb3@14 ~ g3@3 e3 ~@2 c3@2 ~", N: "f3@3 ~",
O: "b2 c3", P: "db3@11 ~ eb3@11 ~", Q: "ab3@23 ~", R: "db3@13 ~@11",
})).s("gm_trombone").gain(0.72).pan(0.4)
// chords · alto sax
const alto_sax = note(`<
A B@2 ~@4 C D ~@10 E F G H I J K L@2 M N O P Q R S E F G H I J K T U V W X ~@4 Y Z AA AB AC AD AE AF AE AF AG AH AI AJ
>`.pickRestart({
A: "~@21 [c3,c4]@2 [d3,d4]", // C D
B: "[[f3,f4] ~ [f3,f4]@2 ~ [f3,f4]@2 ~ [f3,f4]@2 ~ [f3,f4]@2 ~ [f3,f4] [e3,e4]@2 ~ [d3,d4]@2 [c3,c4]@2 ~ [c3,c4]@3 [b2,b3] [c3,c4]@2 [db3,db4] [d3,d4]@2 [e3,e4]@4 f4@2 ~@10, ~@17 [f3,f4]@2 ~@17 f3 ~@11]/2", // F E D C B C Db D …
C: "[f3,bb3,d5]@6 [bb3,d4,f5]@6 [d4,f4,bb5]@11 ~", // Bb
D: "[c4,f4,a5]@6 [b3,e4,ab5]@3 [bb3,eb4,g5]@3 [d4,gb5]@11 ~, ~@4 a3@3 ~", E: "[f3,bb3,d4] [f3,b3,d4]",
F: "[a3,c4,f4]@11 ~ [a3,c4,gb4]@11 ~", G: "[g3,b3,f4]@23 ~", H: "[g3,c4,e4]@13 ~@11", I: "[c4,f4,a4]@23 ~",
J: "[d4,g4,b4]@23 ~", K: "[c4,e4,bb4]", L: "[~@12 c6@25 ~@2 a5 ~@2 a5@2 c6 a5@2 ~, [f4,a4]@19 ~@29]/2",
M: "b5@2 ~ b5 ~@2 b5 ~ a5@2 ~ f5@4 ~@8 f5", N: "e5@2 ~ g5@2 ~ e5 ~ c5@2 ~ c5@2 ~ c5 ~@3 c5 ~ d5 c5@2 ~",
O: "f5@2 ~ f5 ~@2 f5@2 g5@2 ~@2 a5@2 ~@10", P: "c5 ~@2 c5@2 ~ f5 ~ g5@2 ~@2 a5 ~@2 a5 ~@2 bb5@2 ~ a5@2 ~",
Q: "g5@2 ~ a5@2 ~ g5 ~ f5@2 ~ d5@8 ~@4 d5", R: "c5@2 ~ c5@2 ~ e5@2 ~ g5 ~ bb5@2 ~ bb5@3 ~ g5@2 ~ e5@2 ~",
S: "f5@11 ~@13", T: "[c4,f4,a4]@11 ~ [db4,f4,ab4]@11 ~", U: "[gb4,bb4,db5] ~@20 [gb4,bb4,db5] ~@2",
V: "[eb4,ab4,c5]@2 ~@19 [eb4,ab4,c5] ~@2", W: "[f4,ab4,db5]@2 ~@19 [f4,ab4,db5] ~@2",
X: "[gb4,bb4,db5] ~@5 [f4,ab4,db5] ~@5", Y: "[gb3,b3,eb4] [gb3,c4,eb4]", Z: "[bb3,db4,gb4]@11 ~ [bb3,db4,g4]@11 ~",
AA: "[ab3,c4,gb4]@23 ~", AB: "[ab3,db4,f4]@13 ~@11", AC: "[db4,gb4,bb4]@23 ~", AD: "[eb4,ab4,c5]@23 ~",
AE: "[db4,f4,b4]", AF: "[gb4,bb4]@19 ~@5", AG: "[ab3,b3,db4]@11 ~ [b3,db4,f4]@5 ~ [db4,f4,ab4]@5 ~",
AH: "[f4,ab4,b4]@5 ~ [f4,ab4,b4]@5 ~ [db4,f4,bb4]@5 ~ [b3,f4,ab4]@5 ~", AI: "[bb3,db4] b3, gb4, ~@6 eb4@5 ~",
AJ: "[bb3,db4,gb4] ~@2 db4 ~ db4 d4@3 db4 ~@5 [b3,db4,f4] ~@2 [bb3,db4,gb4]@2 ~@4, ~@2 c4 ~@9", // Gb Db7 Gb
})).s("gm_alto_sax").gain(0.48).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
~@3 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B C@3 D A@3 B A@3 B A@3 B A B A@3 E
>`.pickRestart({
A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x ~@6 x", D: "x ~@4 x!3", E: "x ~@4 x!2 ~",
})).gain(0.64)
// drums · snare
const snare = s("sd").struct(`<
~@3 A B A C A D A E A F A G A H A B A D A E A F A G A F A G A H A B A D A E A F A G I@3 J A H A B A D A E A F A G A K
A L A M
>`.pickRestart({
A: "~ x ~ x ~ x ~ x", B: "~@3 x ~@5 x ~@4 x ~@3 x ~@2 x ~ x", C: "~@3 x ~@5 x ~@5 x ~@4 x ~@3",
D: "~@3 x ~@5 x ~@4 x!2 ~@4 x!2 ~@2", E: "~ x ~ x!2 ~@3", F: "~@3 x ~@5 x ~@5 x ~@4 x ~@2 x",
G: "~@3 x ~@5 x ~@5 x ~@4 x!2 ~ x", H: "~@3 x ~@5 x ~@4 x!2 ~@2 x ~@2 x ~@2", I: "x ~@6 x",
J: "x ~@11 x ~@2 x!4 ~ x!2 ~@2", K: "~@3 x ~@5 x ~@4 x!10", L: "~@3 x ~@5 x ~@5 x ~@5 x ~ x",
M: "x ~@2 x!4 ~@2 x ~@5 x ~@2 x ~@5",
})).gain(0.64)
// drums · hihat
const hihat = s("hh").struct("<~@3 A@7 B A@7 B A@3 B A@11 B A@3 B A@4 ~@4 A@3 B A@3 B A@6 ~@4>".pickRestart({
A: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2",
})).gain(0.48)
// drums · crash
const crash = s("cr").struct("<~@10 A ~@11 A ~@15 A ~@4 A ~@2 B ~@7 A ~@9 C>".pickRestart({
A: "x", B: "~ x", C: "x ~@4 x!2 ~",
})).gain(0.64)
// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
~@43
[x ~@2 x!4 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2 x ~@2]
[x!4 ~ x!2 ~ x!2 ~ x!5 ~ x!2 ~ x!2 ~ x]
[x ~ x!5 ~ x!5 ~ x!2 ~ x!2 ~ x!2 ~ x]
[x ~@2 x!4 ~ x!2 ~@14]
~@14
[x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x]!3
// … 4 more lines
More by Haak
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.