0:00/0:00
// I'll Take Romance — Kenny Dorham
// 176 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 27, 4/4 at bar 33, 3/4 at bar 99, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/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 · acoustic bass · "Jazz Bass"
const bass = note(`<
~ A B@2 C D E F G H I J K L M N O P Q R S T U V P W@3 X@3 Y Z AA AB AC AD AE AF AG AH ~ B@2 C D AI A ~ P AJ AK AL AM
AN N AO AP AQ AR AS AT U H AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BL BM BN BO BP
BQ BT BU BV@3 X@3 Y Z AA AB AC AD AE AF AG AH ~ B@2 C D AI BW BX BY BZ CA CB CC CD@2
>`.pickRestart({
A: "f2 ~@15", B: "[~@7 bb2 ~@3 ab2 ~@3 gb2@5 ab2@4 bb2@4 ab2@4]/2", C: "gb2 bb2 ab2 gb2", D: "c2 d3 c2!2",
E: "c2@3 c1 c2@2 ~ c2 e2@4 c2@3 c1", F: "f3@3 c2 a2@4 bb2@3 ~ b2@4", G: "c3@3 c2 db3@4 d3@4 e3@4", H: "f2 g2 a2 c3",
I: "g2@3 d2 d3@3 d2 c2@4 c2@4", J: "a1@2 ~ a1 g2@4 ab2@3 ab1 ab2@4", K: "db2@4 db2@4 gb2@2 ~ gb2 e2@4",
L: "f2@4 f2@4 d2@3 d1 ab2@4", M: "g2@3 g1 g2@4 c2@4 g2@4", N: "f2 g2 ab2 eb3", O: "g2@3 g1 g2@4 gb2@4 e2@4",
P: "f2 c3 a2 f2", Q: "g2@3 d2 d3@3 d2 c2@3 g1 g2@3 g1", R: "a1@3 e1 e2@3 e1 ab2@3 eb2 eb3@3 eb2", S: "db2 f2 gb2 e2",
T: "f2@3 c2 c3@3 c2 d2@3 d1 d2@4", U: "g2 b1 c2!2", V: "f2@3 f1 ab2@3 ab1 ab2@4 gb2@3 gb1",
W: "[eb2@12 ab2@7 eb3@5 db2@7 g2@5 db2@12]/3", X: "[eb2@12 ab2@12 db2@11 g2 db3@7 ab2@2 ~@2 db2]/3",
Y: "gb2@3 bb1 e2@3 ~ eb2@4 db2@4", Z: "b1@4 eb2@4 e2@2 ~ e2 b2@4", AA: "a1@4 db2@4 d2@3 d1 d2@4",
AB: "g2@3 d2 d3@3 d2 c2@3 c1 gb2@4", AC: "f2@3 c2 g2@4 a2@3 c2 c3@3 c2", AD: "g2@3 g1 g2@4 c3@4 g2@4",
AE: "a1@2 ~ a1 g2@4 ab2@4 eb3@4", AF: "db2@4 b1@4 c2@3 g1 g2@3 g1", AG: "a1@3 a0 eb2@4 d2@4 gb2@4",
AH: "g2@4 g2@4 c2@3 ~ c2@3 f2", AI: "c2@3 c1 c2@2 ~ c2 c3@4 c3@3 c2", AJ: "g2@4 b1@4 c2@3 c1 c2@4",
AK: "a1@3 e1 e2@3 e1 ab2@4 d2@4", AL: "db2@2 ~ db2 ab2@4 gb2@2 ~ gb2 db3@4", AM: "f2@4 db2@4 d2@3 a1 a2@3 a1",
AN: "g2@2 ~ g2 d3@4 c2@2 ~ c2 e2@4", AO: "db2@3 db1 db2@4 gb2@2 ~ gb2 e2@4", AP: "f2@3 c2 c3@3 ~ a2@4 f2@3 c2",
AQ: "g2@3 d2 d3@3 d2 c2@3 c1 c2@4", AR: "a2 e2 ab2 c2", AS: "db2@2 ~ db2 ab2@4 gb2@3 gb1 gb2@4",
AT: "f2@2 ~ f2 c3@4 d2@3 a1 a2@3 a1", AU: "g2@3 g1 c2@4 f2@3 c2 c3@3 c2", AV: "eb2 g2 ab2!2",
AW: "db2@4 c2@4 db2@3 db1 e2@4", AX: "eb2 e2 ab2!2", AY: "db2 eb2 f2 ab2", AZ: "gb2@3 db2 db3@3 ~ bb2@4 gb2@3 db2",
BA: "bb1 f2 e2 bb1", BB: "a1@3 a0 eb2@4 d2@3 d1 d2@4", BC: "g2@4 db2@4 c2@3 c1 gb2@4", BD: "f2 db2 d2 gb2",
BE: "g2@3 g1 g2@4 c2@3 c1 c2@4", BF: "f2@3 f1 a2@4 ab2@4 eb3@4", BG: "db2!2 c3 g2", BH: "a2@4 e2@4 d2@3 d1 ab2@4",
BI: "g2!2 c2 e2", BJ: "f2@4 f2@4 db2@3 ab1 ab2@3 ab1", BK: "c2@4 e2@4 f2@3 f1 b1@4", BL: "bb2 bb1 d2 f2",
BM: "c3@4 g2@4 db2@2 ~ db2 db2@4", BN: "d2@2 ~ d2 a2@4 db2@3 db1 ab2@4", BO: "g2@4 g2@4 b1@3 b0 f2@3 f1",
BP: "d2@3 a1 a2@3 a1 g2@2 ~ g2 b1@4", BQ: "c3@4 g2@4 f2@3 c2 c3@3 c2", BR: "a1@3 a0 bb1@4 g2@3 g1 g2@4",
BS: "c2@4 eb2@4 f2@3 f1 b1@4", BT: "a1@3 a0 bb1@4 bb2@4 f2@4", BU: "f2@4 c3@4 bb1@2 ~ bb1 f2@4",
BV: "[eb2@12 ab2@6 eb3@5 ~ db2@6 g2@5 ~ db2@12]/3", BW: "bb1 c2 db2 f2", BX: "g2@2 ~ g1 f2@4 e2@4 d2@3 db2",
BY: "c2 d2 e2 g2", BZ: "c3 g2 e2 c2", CA: "f2 g2 ab2 c3", CB: "db2@3 ab1 eb2@4 f2@3 ab1 ab2@3 ab1",
CC: "c2@4 g2@4 c3@4 g2@3 db2", CD: "[c3@2 ~@2 c2@3 f2@25]/2",
})).s("gm_acoustic_bass").gain(0.2).pan(0.4)
// chords · piano
const piano = note(`<
~ A B C D E F G ~ H I J K L M N O@2 P Q R S T U V W X@2 Y@3 Z AA AB AC AD AE AF AG AH AI ~ B C D E F G ~ AJ AK AL AM
AN AE AO AP AQ AR AS AT AU AV@2 AW AX AY AZ BA BB@2 BC BD BE BF BG BH BI BJ BK BL BM@2 BN BO BP@2 BQ BR BM@2 BN BO
BP@2 BS BT W X@2 Y@3 BU AA BV AC BW AE AF AG AH AI ~ B C D BX F BY@2 BZ CA CB CC CD CE@2
>`.pickRestart({
A: "[e3,a3,c4,g4] ~@15", B: "~@7 [bb2,ab3,db4,f4] ~@3 [ab2,g3,c4,eb4] ~@3 [bb3,f4,ab4,bb4,db5]",
C: "~@3 [gb2,gb3,db4,ab4] eb4@2 ~ gb3 [bb3,f4]@2 ~@5 eb3", D: "[f3,gb3,bb3,f4]@9 ~@2 gb2 [bb3,ab4] ~@3, ~@6 f4 ~",
E: "[d4,f4] [bb3,g4] ~@2 c2@2 ~@2 [a3,e4] ~@7", F: "[c2,bb3,d4,f4] ~@6 [c3,g3,a3,e4] ~@3 db4@2 ~@3, ~@11 g4 ~@4",
G: "[f2,a3,c4,e4] ~@15", H: "[c4,d4] [a3,f4] ~@2 f2@2 ~@2 f4@2 d4@2 ~@4, ~@8 d4 ~@7",
I: "~@3 [f3,bb3,d4,g4] ~@7 [bb3,e4,g4,bb4,db5]@4 ~", J: "~@3 [a2,e3,a3,e4] c4@2 ~@2 [eb4,gb4] [c4,ab4] ~@2 ab2@2 ~@2",
K: "[db3,c4,db4,f4] ~@7 [db4,e4] [bb3,gb4] ~@2 gb2@2 ~@2", L: "~@3 [e3,a3,c4,g4] ~@7 d3 [eb4,gb4]@2 ~@2",
M: "~@3 [bb3,f4,g4,bb4,d5]@5 ~@3 [e3,bb3,c4,g4] ~@4", N: "[d3,a3,c4,f4] ~@7 [ab2,gb3,bb3,c4]@6 ~@2",
O: "[[d4,f4] [bb3,g4] ~@2 g2@2 ~@5 [bb3,f4,ab4,bb4,db5]@4 c4@2 ~@10 c2 [f3,a3,d4]@2 ~@2, ~@15 f4 ~@16]/2", // Dm Eb Bbm7 Dm
P: "~@3 [bb3,f4,g4,bb4,d5]@4 db4@2 ~@7, ~@7 g4 ~@8", Q: "[a3,c4] [g3,e4] ~@2 a2@2 ~ [gb3,c4,eb4,ab4]@2 ~@7",
R: "[db3,c4,db4,f4] ~@7 [gb2,e3,gb3,bb3]@6 ~@2", S: "~@3 [e3,a3,c4,g4] ~@4 [eb4,gb4] [c4,a4] ~@2 d3@2 ~@2",
T: "[f3,bb3,d4,g4] ~@7 [c4,e4] [bb3,gb4] ~@2 c3@2 ~@2", // Gm7 C Ebm
U: "~@3 [f2,f3,c4,f4] [ab2,g3,ab3,c4]@6 ~ g2 [db4,f4] [bb3,ab4] ~@2", V: "[f2,a3,e4,g4]@15 ~",
W: "[gb3,db4,eb4,bb4]@5 ~@2 [gb3,db4,eb4,bb4] ~@4 [gb3,a3,c4,e4]@4", // Ebm7 Gbm7b5
X: "[~@3 [gb3,a3,c4,e4] ~@4 db3@3 [e3,bb3,db4,g4] ~@4 [e3,bb3,db4,g4]@2 ~@2 [f3,ab3,bb3,eb4]@5 ~@2 [f3,ab3,bb3,eb4] ~@4, ~@15 db3@3 ~@14]/2", // Gbm7b5 Edim Fm7
Y: "[[gb3,db4,f4,bb4]@5 ~@2 [gb3,db4,f4,bb4] ~@7 [gb3,c4,e4,a4]@2 ~@3 [gb3,c4,e4,a4] ~@3 db3@3 [e3,g3,bb3,db4] ~@4 [e3,g3,bb3,db4]@2 ~@5 [f3,ab3,bb3,eb4]@2 ~@3 [f3,ab3,bb3,eb4] ~@3, ~@31 db3@3 ~@14]/3", // Gbmaj7 Gbm7b5 Edim Fm7
Z: "[e3,bb3,db4,gb4] ~@11 [bb3,e4,gb4,db5]@3 ~, ~@12 ab3 ~@3", AA: "[b2,bb3,b3,eb4] ~@6 [d3,ab3,b3,gb4]@2 ~@7",
AB: "[a3,c4] [g3,e4] ~@2 a2@2 ~@5 d3 [eb4,gb4]@2 ~@2", AC: "[g2,bb3,d4,f4] ~@7 [c3,bb3,db4,e4] ~@7",
AD: "[d3,a3,c4,f4] ~@11 [a3,d4,f4,c5]@3 ~, ~@12 g3 ~@3", AE: "[g2,bb3,d4,f4] ~@10 [bb3,e4,g4,bb4,c5]@5",
AF: "[a2,c3,e3,g3]@6 ~@5 [c4,gb4,bb4,c5,eb5]@5", AG: "[db2,f3,ab3,c4]@6 ~@5 c3 [c4,e4]@2 ~@2",
AH: "[a2,g3,a3,db4] ~@10 [d3,a3,eb4,a4] f4@2 ~@2", // A7 D
AI: "~@3 [bb3,f4,g4,bb4,d5]@5 [c2,e3,g3,bb3]@2 ~@2 [c2,e3,e4]@3 [f2,f3,f4]", // Gm7 C7 C F
AJ: "[f2,d3,f3,a3]@6 ~ e2 [f2,f3,d4,f4]@5 ~@3", AK: "[d4,g4] ~@10 [e3,bb3,c4,g4] ~@4",
AL: "~@3 [c3,g3,a3,e4] ~@4 [ab2,c4,eb4,gb4] ~@7", AM: "~@3 [c4,f4,ab4,c5,eb5]@4 ~@4 gb2 [db4,e4]@2 ~@2",
AN: "~@3 [e3,a3,c4,g4] ~@3 [d2,gb3,a3,c4]@7 ~@2", AO: "[f2,a3,c4,d4] ~@6 [gb3,c4,eb4,ab4]@2 ~@7",
AP: "[f3,c4,db4,ab4] ~@7 [gb2,e3,gb3,bb3]@6 ~ f2", AQ: "[d3,a3,d4]@6 ~@2 d4 d4@6 ~, f4@2 ~@6 [f2,a3,f4]@5 ~@3",
AR: "[g2,bb3,d4,f4] ~@7 [c4,e4] [bb3,g4] ~@2 c3@2 ~@2", AS: "[a2,c3,e3,g3]@6 ~@5 [ab2,bb3,eb4,bb4] f4@2 ~ bb3",
AT: "[f3,c4,db4,ab4] ~@10 [bb3,e4,ab4,bb4,db5]@5", AU: "[f2,a3,c4,e4] ~@10 [d3,a3,eb4,a4] f4@2 ~@2",
AV: "[[g2,bb3,d4,f4] ~@7 [c4,g4] ~@6 [f2,d3,f3,a3]@7 ~ e2 [f2,f3,d4,f4]@5 ~@3]/2", // Gm7 C5 Dm
AW: "[g2,bb3,d4,f4] ~@6 c3 [f2,d3,f3,a3]@6 ~ e2", AX: "~@3 [db3,gb3,bb3,eb4] ~@4 [ab2,gb3,a3,c4]@6 ~@2",
AY: "[db4,e4] [bb3,g4] ~@2 db3@2 ~@5 [f3,c4,db4,ab4] ~@4", // Dbm Eb Dbmaj7
AZ: "~@3 eb2 [bb3,db4]@2 ~@5 [gb3,db4,eb4,gb4,bb4] [eb4,a4] ~@3", // Bbm Ebm7 Ebdim
BA: "[db2,f3,ab3,c4] ~@7 [db3,c4]@2 ~@6, ~@8 [f4,ab4] ~@7", // Dbmaj7 Fm
BB: "[[gb2,e3,gb3,bb3]@6 ~ f2 [gb2,gb3,e4,gb4]@5 ~@2 [bb1,d3,f3,a3]@7 ~ a2 [b3,d4] [ab3,gb4] ~@2 e2@2 ~@2]/2", // Gb7 Bbmaj7 Bm Ab7
BC: "[a2,g3,a3,c4] ~@7 [gb3,c4,e4,a4] ~@7", BD: "[bb3,d4,f4] g4 ~@2 g2@2 ~@5 [c3,g3,db4,g4] eb4@2 ~ g3",
BE: "[a3,c4,d4] f4 ~@2 f2@2 ~@2 [d2,gb3,a3,c4]@6 ~ db3", BF: "[b3,eb4,f4] g4 ~@2 g2@2 ~@2 [db4,g4] ~@7",
BG: "~@3 f2 [c4,d4]@2 ~ eb4@2 ~@7, ~@7 a4 ~@8", BH: "[db4,ab4] ~@10 c3 [c4,e4]@2 ~@2",
BI: "~@3 [g3,db4,f4,g4,a4]@5 [d3,c4,d4,gb4] ~@7", BJ: "[b3,eb4,f4] g4 ~@2 g2@2 ~@2 [c3,bb3,c4,e4] ~@7",
BK: "~@3 f2 ~@7 [e3,b3,db4,ab4] ~@4", BL: "~@3 [bb3,eb4,g4,bb4,c5]@4 ~@4 f2 [c4,eb4]@2 ~@2",
BM: "[[d3,a3,bb3,f4] ~@10 g3 [a3,d4,f4,c5]@3 c4@2 ~@6 [e3,bb3,db4,g4]@2 ~@7, ~@15 g4 ~@16]/2", // Bbmaj7 Dm7 Edim
BN: "[d3,c4,d4,f4] ~@7 [f3,b3,eb4,ab4] ~@7", BO: "~@3 [g2,g3,d4,a4] e4@2 ~ g3 ~@3 b2 ~@3 [f2,f3,db4,f4]",
BP: "[[d2,gb3,bb3,c4]@6 ~@5 [b3,f4,g4,b4,eb5]@4 [e3,bb3,c4,ab4]@2 ~@6 [eb3,a3,db4,f4]@2 ~@7]/2", // Daug Baug Eaug Dbaug
BQ: "~@3 [a2,e3,a3,e4] [a3,bb3,d4] f4 ~@2 [f3,b3,d4,ab4] ~@7", BR: "[c3,bb3,c4,eb4] ~@7 [f2,a3,c4,eb4] ~@7",
BS: "~@3 [a2,e3,a3,e4] [a3,bb3,d4] f4 ~@5 [a3,d4,f4,a4,c5]@5", BT: "~@3 [ab3,eb4,f4,ab4,c5]@5 [b3,f4] ~@7",
BU: "[e3,bb3,db4,gb4] ~@10 ab3 [bb3,e4,gb4,db5]@3 ~", BV: "[g3,a3,c4] e4 ~@2 a2@2 ~@5 d3 [eb4,gb4]@2 ~@2",
BW: "[d3,a3,c4,f4] ~@10 g3 [a3,d4,f4,c5]@3 ~", BX: "[bb3,d4,f4] g4 ~@2 c2@2 ~@2 [a3,e4] ~@7",
BY: "[~@3 bb2 [bb3,db4]@2 ~@2 [ab3,f4]@2 ~ f2 [ab3,db4]@2 ~@2 [g2,b3]@14 ~@2, ~@15 [f4,g4]@15 ~@2]/2", // Bbm Db Db5 G Fsus2
BZ: "[c3,bb3,c4,e4] ~@10 g2 [c4,e4]@2 ~@2", CA: "[e3,bb3,e4,ab4] ~@6 c3 [bb3,ab4]@2 e4 ~@5, ~@8 eb4 ~@7",
CB: "[ab3,c4,eb4] f4 ~@2 f2@2 ~@2 f4@2 eb4@2 ~@4, ~@8 d4 ~@7", CC: "f3@11 ab2 ~@4, [c4,db4]@7 ~",
CD: "~@3 c3 [c4,e4]@2 ~@2 [bb3,ab4]@2 ~ g2 [bb3,e4]@2 ~@2", CE: "[~@4 [c2,c3,c4]@3 [f2,e3,f3,ab3]@25]/2",
})).s("gm_piano").gain(0.13).pan(0.3)
// other · alto sax
const alto_sax = note(`<
~ A@2 B C@3 D ~ E@2 F G H@3 ~ E@2 F G I@2 J K L M N L M N O@2 P@2 Q@2 R S I@2 A@2 B C@3 ~@24 T U V W X Y Z@2 AA AB AC
AD AE@2 AF AG AH@2 AC AD AE@2 AF AG AI@2 L M N L M N O@2 P@2 Q@2 R S I@2 A@2 B C@3 AJ@2 AK@7
>`.pickRestart({
A: "[~@3 c4 f4@3 bb4 g4@3 c5 f5@3 eb5@2 ~@2 c5@13]/2", B: "~@3 f5 eb5@3 f5 eb5@2 ~ eb5 c5@3 eb5",
C: "[c5@2 ~ c5 bb4@3 c5 bb4@3 ab4 f4@3 c4@13 c4@12 c4@8]/3", D: "g4 ~@15",
E: "[~@3 f4@5 d4 ~@3 f4@3 g4@9 ~@3 a4 ~@3 bb4]/2", F: "c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3", G: "c5@3 db5 c5@3 bb4@9",
H: "[bb4@3 c5 bb4@3 a4@4 [bb4,b4] c5@3 g4@9 g4@3 f4 e4@3 d4@17]/3", // Bmaj7
I: "[bb4@3 c5 bb4@3 a4@4 [bb4,b4] c5@3 g4@9 g4@3 f4 e4@3 f4]/2", J: "~@4 eb4@6 ~ ab4@5", K: "c5 ~@15",
L: "~@3 bb4@5 bb4 ~@6 eb4", M: "~@3 eb4!2 ~@6 g4@5", N: "g4 ~@6 ab4 ~@3 ab4!2 ~@3", O: "[ab4@14 ~ gb4@8 b4@9]/2",
P: "[c5@8 eb5@7 d5@9 db5@6 ~ c5]/2", Q: "[~@3 f4 e4@3 f4 d4@3 e4 f4@3 g4@17]/2", R: "~@3 e4@5 f4@2 ~ f4 ~@3 f4",
S: "ab4 ~@3 ab4@3 ab4@9", T: "a4 d5", U: "d5 e5", V: "f5@10 ~ eb5@5", W: "d5@10 ~ db5@5", X: "c5@2 ~ c5 ~@7 f5@5",
Y: "c5@3 db5 c5@3 eb5@9", Z: "[~@3 c5@5 f5@2 ~ eb5 ~@3 bb4@9 eb5@3 d5 db5@2 ~ c5]/2", AA: "~@11 ab4@5",
AB: "g4@7 gb4@9", AC: "f4", AD: "g4@4 g4@2 ~ g4 ~@3 g4@5",
AE: "[~@3 f4!2 ~@3 f4@2 ~ f4 ~@3 f4@5 f4@2 ~ eb4 ~@3 ab4@5]/2", AF: "f4 ~@10 bb4@5", AG: "gb4 ~@10 ab4@5",
AH: "[e4 ~@3 f4 ~@3 db4@2 ~ d4 ~@3 eb4@5 eb4@3 d4@9]/2", AI: "[e4 ~@3 f4 ~@3 a4@2 ~ bb4 ~@3 f4@5 f4@3 f4@9]/2",
AJ: "[~@3 ab4@5 f4 ~@3 ab4@3 bb4@17]/2",
AK: "[~@3 c4 db4@3 c5@4 eb4 e4@3 eb5@5 db5 c5 ~ bb4 c5 db5 ~ c5 ab4 eb4 ~@2 c4@12 c4@3 g4@13 g4@3 c5@9 eb4 e4 ~ ab4 c5 eb5 ~@2 c5@6 ~ e5@25, ~@31 db4@2 ~@46 db5@2 ~@31]/7",
})).s("gm_alto_sax").gain(0.39).pan(0.6)
// other · alto sax
const alto_sax_2 = note(`<
~@7 A ~@15 B A C D E C D E F@2 G@2 ~@2 H I ~@8 J ~@9 K@3 L M N O P Q R@3 ~@2 S T U V W X Y@2 Z AA AB AC AD@2 AE AF
AG@2 AB AC AD@2 AE AF AH@2 C D E C D E F@2 G@2 ~@2 H I ~@17
>`.pickRestart({
A: "e4 ~@15", B: "~@4 c4@6 ~ eb4@5", C: "~@3 f4@5 f4 ~@6 c4", D: "~@3 c4!2 ~@6 db4@5", E: "db4 ~@6 eb4 ~@3 eb4!2 ~@3",
F: "[eb4@14 ~ eb4@8 gb4@9]/2", G: "[e4@8 gb4@7 g4@9 g4@6 ~ g4]/2", H: "~@3 c4@5 c4@2 ~ c4 ~@3 c4",
I: "f4 ~@3 f4@3 eb4@9", J: "g4 ~@15", K: "[~@3 f4@5 e4 ~@3 d4@3 c4@16 e4@8 f4 ~@7 e4]/3", L: "eb4@6 ~ c4 ~@3 eb4@5",
M: "c4 ~@6 g4 ~@3 gb4@5", N: "f4@3 d4 eb4@3 e4@9", O: "~@3 c4 f4@3 bb4 a4@3 f4 ~@3 f4", P: "bb4@4 d5@2 ~ c5 ~@3 f4@5",
Q: "~@3 gb4 db5@3 c5@9",
R: "[~@3 g4 bb4@3 ab4@3 [a4,bb4] [b4,c5,db5] eb5@3 bb4@9 f4 ~@3 f4@3 eb4@9 eb4@3 eb4 eb4@2 ~ eb4, ~@12 d5 ~@35]/3", // Bbmaj7
S: "g4 ab4", T: "a4 db5", U: "c5@10 ~ b4@5", V: "bb4@10 ~ a4@5", W: "g4@2 ~ g4 ~@7 a4@5", X: "ab4@3 a4 ab4@3 ab4@9",
Y: "[~@3 f4@5 bb4@2 ~ bb4 ~@3 eb4@9 ab4@6 ~ g4]/2", Z: "~@11 e4@5", AA: "eb4@7 d4@9", AB: "d4",
AC: "eb4@4 eb4@2 ~ e4 ~@3 e4@5", AD: "[~@3 d4!2 ~@3 eb4@2 ~ eb4 ~@3 db4@5 db4@2 ~ db4 ~@3 eb4@5]/2",
AE: "c4 ~@10 eb4@5", AF: "eb4 ~@10 eb4@5", AG: "[db4 ~@3 d4 ~@3 b3@2 ~ b3 ~@3 c4@5 c4@3 a3@9]/2",
AH: "[db4 ~@3 d4 ~@3 a3@2 ~ bb3 ~@3 eb4@5 eb4@3 d4@9]/2",
})).s("gm_alto_sax").gain(0.39).pan(0.7)
// other · tenor sax
const tenor_sax = note(`<
~@7 A ~@7 B@2 ~@6 C D E F G E F G H@2 I@2 ~@2 J K ~@8 A ~@9 L@3 M N O P Q R S@3 ~@2 T U V W X Y Z@2 AA AB AC AD AE@2
AF AG AH@2 AC AD AE@2 AF AG AI@2 E F G E F G H@2 I@2 ~@2 J K ~@17
>`.pickRestart({
A: "a3 ~@15", B: "[~@7 gb3@8 bb3@8 eb4@7 ~ c4]/2", C: "~@4 eb3@6 ~ db3@5", D: "c3 ~@15", E: "~@3 gb3@5 gb3 ~@6 gb3",
F: "~@3 gb3!2 ~@6 e3@5", G: "e3 ~@6 f3 ~@3 f3!2 ~@3", H: "[e3@14 ~ gb3@8 ab3@9]/2",
I: "[g3@8 c4@7 bb3@9 bb3@6 ~ a3]/2", J: "~@3 g3@5 gb3@2 ~ gb3 ~@3 gb3", K: "ab3 ~@3 ab3@3 e3@9",
L: "[~@3 f3@5 e3 ~@3 d3@3 c3@16 g3@8 gb3 ~@7 gb3]/3", M: "f3@6 ~ e3 ~@3 e3@5", N: "e3 ~@6 g3 ~@3 gb3@5",
O: "f3@3 d3 eb3@3 e3@9", P: "~@3 c3 f3@3 bb3 a3@3 f3 ~@3 f3", Q: "bb3@4 d4@2 ~ c4 ~@3 f3@5", R: "~@3 gb3 db4@3 c4@9",
S: "[~@3 g3 bb3@3 ab3@3 [a3,bb3] [b3,c4,db4] eb4@3 bb3@9 gb3 ~@3 gb3@3 f3@9 f3@3 f3 f3@2 ~ e3, ~@12 d4 ~@35]/3", // Bbmaj7
T: "c4!2", U: "bb3 e4", V: "d4@10 ~ c4@5", W: "b3@10 ~ bb3@5", X: "a3@2 ~ a3 ~@7 c4@5", Y: "bb3@3 b3 bb3@3 bb3@9",
Z: "[~@3 g3@5 c4@2 ~ c4 ~@3 f3@9 bb3@6 ~ a3]/2", AA: "~@11 ab3@5", AB: "g3@7 eb3@9", AC: "f3",
AD: "g3@4 g3@2 ~ g3 ~@3 g3@5", AE: "[~@3 a3!2 ~@3 ab3@2 ~ ab3 ~@3 db3@5 db3@2 ~ gb3 ~@3 a3@5]/2", AF: "gb3 ~@10 f3@5",
AG: "e3 ~@10 a3@5", AH: "[ab3 ~@3 a3 ~@3 f3@2 ~ f3 ~@3 g3@5 g3@3 eb3@9]/2",
AI: "[ab3 ~@3 a3 ~@3 a3@2 ~ bb3 ~@3 ab3@5 ab3@3 ab3@9]/2",
})).s("gm_tenor_sax").gain(0.39).pan(0.4)
// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
~ A@2 B C@3 D ~@7 E@2 ~ F G H I@2 J D K@6 L@2 M@2 N@2 O P Q@2 A@2 B C@3 D ~@9 R@3 S T U V W X Y@3 ~@2 Z AA AB AC AD AE
AF@2 AG AH AI AJ AK@2 AL AM AN@2 AI AJ AK@2 AL AM AO@2 K@6 L@2 M@2 N@2 O P Q@2 A@2 B C@3 AP@2 AQ@7
>`.pickRestart({
A: "[~@3 c3 f3@3 bb3 g3@3 c4 f4@3 eb4@2 ~@2 c4@13]/2", B: "~@3 f4 eb4@3 f4 eb4@2 ~ eb4 c4@3 eb4",
C: "[c4@2 ~ c4 bb3@3 c4 bb3@3 ab3 f3@3 c3@13 c3@12 c3@8]/3", D: "f2 ~@15", E: "[~@7 ab2@8 g2@8 gb2@7 ~ f2]/2",
F: "~@3 bb3 c4@3 db4@9", G: "c4@3 eb4 g4@3 gb4@9", H: "f4@7 e4@9", I: "[g4@3 f4 e4@3 eb4@8 d4@9 db4@6 ~ c4]/2",
J: "~@4 ab2@6 ~ gb2@5", K: "[eb2 ab2 db2 db2]/3", L: "[gb2@14 ~ b2@8 e2@9]/2", M: "[a2@8 d3@7 g2@9 c3@6 ~ f2]/2",
N: "[~@3 f3 e3@3 f3 d3@3 e3 f3@3 g3@17]/2", O: "~@3 a2@5 ab2@2 ~ ab2 ~@3 ab2", P: "db3 ~@3 db3@3 c3@9",
Q: "[bb3@3 c4 bb3@3 a3@4 [bb3,b3] c4@3 g3@9 g3@3 f3 e3@3 f3]/2", R: "[~@3 f3@5 e3 ~@3 d3@3 c3@16 a2@8 ab2 ~@7 ab2]/3",
S: "db2@6 ~ gb2 ~@3 gb2@5", T: "f2 ~@6 g3 ~@3 gb3@5", U: "f3@3 d3 eb3@3 e3@9", V: "~@3 c3 f3@3 bb3 a3@3 f3 ~@3 f3",
W: "bb3@4 d4@2 ~ c4 ~@3 f3@5", X: "~@3 gb3 db4@3 c4@9",
Y: "[~@3 g3 bb3@3 ab3@3 [a3,bb3] [b3,c4,db4] eb4@3 bb3@9 ab2 ~@3 ab2@3 db2@9 db2@3 db2 db2@2 ~ gb2, ~@12 d4 ~@35]/3", // Bbmaj7
Z: "a3 gb3", AA: "g3 bb3", AB: "a3@10 ~ d3@5", AC: "g3@10 ~ c3@5", AD: "f3@2 ~ f3 ~@7 gb3@5",
AE: "f3@3 gb3 f3@3 e3@9", AF: "[~@3 a2@5 d3@2 ~ d3 ~@3 g2@9 c3@6 ~ f3]/2", AG: "~@11 db3@5", AH: "c3@7 f2@9",
AI: "bb2", AJ: "c3@4 c3@2 ~ db3 ~@3 db3@5", AK: "[~@3 d3!2 ~@3 db3@2 ~ db3 ~@3 gb2@5 gb2@2 ~ b2 ~@3 f2@5]/2",
AL: "d2 ~@10 g2@5", AM: "c3 ~@10 f2@5", AN: "[a2 ~@3 bb2 ~@3 g2@2 ~ g2 ~@3 c3@5 c3@3 f2@9]/2",
AO: "[a2 ~@3 bb2 ~@3 a2@2 ~ bb2 ~@3 f2@5 f2@3 bb2@9]/2", AP: "[~@3 ab3@5 f3 ~@3 ab3@3 bb3@17]/2",
AQ: "[~@3 c3 db3@3 c4@4 eb3 e3@3 eb4@5 db4 c4 ~ bb3 c4 db4 ~ c4 ab3 eb3 ~@2 c3@12 c3@3 g3@13 g3@3 c4@9 eb3 e3 ~ ab3 c4 eb4 ~@2 c4@6 ~ e4@25, ~@31 db3@2 ~@46 db4@2 ~@31]/7",
})).s("gm_baritone_sax").gain(0.39).pan(0.8)
// other · trumpet · "Trumpet 1"
const trumpet = note(`<
~ A B@3 C@2 A ~@7 D@2 ~@6 E F G@3 H@3 I@2 J K ~ L M N O@2 ~ B@3 C@2 A ~@10 P@2 Q R ~@2 S T U V@2 ~@12 W X Y@2 Z AA
AB@2 W X Y@2 Z AA AC@2 G@3 H@3 I@2 J K ~ L M N O@2 ~ B@3 C@2 AD AE@3 AF@2 AG AH@2
>`.pickRestart({
A: "c6 ~@15", B: "[~@7 ab5 ~@3 bb5 ~@3 c6@33]/3", C: "[~@3 bb4@5 c5 ~@6 d5@5 e5 ~@6 g5@5]/2",
D: "[~@7 f4@7 ~ bb4@7 ~ eb5@7 ~ c5]/2", E: "~@4 f4@6 ~ c5@5", F: "f5 ~@3 f4 ~@3 a4@2 ~ c5@5",
G: "[db5@12 eb5@12 c5@12 bb4@11 ~]/3", H: "[~@3 db5 ~@3 db5 ~@3 bb4 db5@2 ~ eb5@9 c5@6 ~ db5@5 bb4@11 ~]/3",
I: "[~@4 bb4@2 ~ db5@7 ~ bb4@5 b4@3 ab4@9]/2", J: "~@3 a4 a4@2 ~ a4 ~@3 c5 bb4@2 ~ g4",
K: "~@3 g4@5 g4@3 bb4 a4@2 ~ f4", L: "~@3 d4 e4@2 ~ f4 g4@2 ~ a4 bb4@2 ~ c5", M: "~@3 c5@5 f5@2 ~ f5 ~@3 f5",
N: "c5 ~@3 c5@2 ~ eb5@9", O: "[~@3 f5@5 eb5@6 ~ d5@9 db5@6 ~ c5]/2", P: "[~@3 bb4@5 a4 ~@3 g4@3 c5@8 f5 ~@7 e5]/2",
Q: "eb5@6 ~ c5 ~@3 eb5@5", R: "c5 ~@15", S: "~@11 f5@5", T: "ab5@6 ~ f5@9", U: "eb5@6 ~ c5@9",
V: "[~@3 db5@5 bb5 ~@3 a5@3 ab5@9 ab5@2 ~ ab5 ab5@2 ~ ab5]/2", W: "~@3 f4 bb4 ~@3 d5@6 ~ bb4",
X: "eb5@4 c5@2 ~ e5 ~@3 g5@5", Y: "[~@3 f5!2 ~@3 f5@2 ~ f5 ~@3 bb5@5 f5@2 ~ eb5 ~@3 ab5@5]/2", Z: "f5 ~@10 db6@5",
AA: "bb5 ~@10 ab5@5", AB: "[e5 ~@3 f5 ~@3 db5@2 ~ d5 ~@3 eb5@5 f5@3 d5@9]/2",
AC: "[e5 ~@3 f5 ~@3 a4@2 ~ bb4 ~@3 eb5@5 f5@3 d5@9]/2", AD: "ab5@15 ~", AE: "[~@3 ab5@5 f5 ~@3 ab5@3 bb5@33]/3",
AF: "~@3 g5@5 g5 ~@7", AG: "~@4 c6@11 ~", AH: "[~@7 c6@25]/2",
})).s("gm_trumpet").gain(0.59).pan(0.6)
// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
// … 227 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.