0:00/0:00
// I Let a Song Go Out of My Heart — Ellington
// 108 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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(`<
A B C D E F G H I J K L M@2 N O I P Q R S@2 T U V W X Y M@2 N O I P Z AA AB AC AD AE AF AG AH AI AB AC AD AE AF AG AJ
AK AL AM AN@2 AO AP@3 AB AC AD AE AF AG AH AI AQ@2 AR AS AF AG AH AI AB AC AD AE AF AG AJ AK AT AU AV AW AX AY AZ BA
BB BC BD BE BF BG BH BI@2 BJ@2 BK BL@2
>`.pickRestart({
A: "~@4 [bb5,bb6] ~@5 f6@2 eb6@4 ~ eb6 [db5,db6]@3 ~@3, ~@10 f5 ~ eb5@6 ~@6, ~@8 f6 ~@3", // Bb Db
B: "eb6@4 f6 eb6 [db5,db6]@2 ~@2 [eb5,eb6] ~@5 [gb4,a4,db5,f5]@8, eb5@3 ~@5 f6@3 ~", // Db Eb Gbm
C: "~@4 [bb4,bb5] ~@5 [f4,f5] ~ eb5@4 f5 eb5 [db4,db5]@3 ~@3, ~@2 eb4 ~", // Bb F Db
D: "eb5@4 f5 eb5 [db4,db5]@2 ~@2 [eb4,eb5] ~@5 [gb3,a3,db4,f4]@8, eb4@3 ~@5 f5@3 ~", // Db Eb Gbm
E: "db3@6 ab2@4 [db4,eb4,ab4]@6 [db4,eb4,ab4] ~@5 db2 ~, [db4,eb4,bb4]@9 ~ db2@11 ~@3", // Dbsus2 Eb7
F: "[f4,db5]@3 ~@3 [gb4,db5]@4 ~@2 [f4,db5]@3 ~ eb4 ~@5 d4 ~", // Db Gb5 Db
G: "[bb2,ab3]@3 ~ [bb2,ab3] ~@5 [ab4,d5,f5,bb5] ~@5 [bb2,ab3]@5 ~ [bb2,ab3] ~", // Bb7
H: "~@6 ab3@4 c4@2 ~@4 [ab3,b3,d4,f4]@7 ~, ~@10 b3 ~@13", // Abdim
I: "[eb2,db4,gb4,bb4]@4 [db4,f4,ab4]@6 ~@2 [gb2,db4,gb4,bb4]@3 ~@3 [g2,db4,f4,g4]@3 ~ [db4,gb4,ab4] ~, ~@2 f2@4 ~@5 ab2", // Ebm7 Db Gb Gm7b5 Dbsus4
J: "~@6 ab2@15 ~ ab2@2, ~@2 [ab3,gb4,ab4,bb4,db5]@9 ~", // Gb
K: "db2@4 [bb3,eb4,f4,ab4] ~@7 [db2,ab3,bb3,eb4,f4,ab4]@6 [ab3,bb3,eb4,f4,ab4]@6", // Bbsus4 Bbm7 Absus2
L: "[eb3,f4,bb4]@9 ~ [ab2,gb4,ab4,bb4,db5]@12 ~@2, db4@7 ~@17", // Ebsus2 Gb
M: "[[db3,ab3,db4]@2 ~@8 [d4,eb4,a4] ~@7 db6 ab5 eb5 ~ ab5 [bb4,eb5] ~ eb5 bb4 f4 bb4 f4 c4 ~@9 db2 ~ ab4@6, ~@5 bb4 ~@2 db4@16, ~@16 ab4@25 ~@7, ~@11 db2@9 ~@4, ~@31 f4@17]/2", // Db5 D Eb5
N: "~@6 g4@5 ~ [ab3,c4,d4,f4]@4 [bb2,ab3,c4,d4,f4] ~@7, bb2@2 ~, ~@4 [ab3,c4]@7 ~@13, ~@5 [d4,f4]@6 ~@13", // Dm7b5 Bb7 Ab Dm
O: "g4@6 ~@6 bb4@4 [ab3,c4,d4,f4] ~@7, [ab3,c4,d4]@5 ~@3, ~@2 f4@3 ~@3", // Dm7b5
P: "~@3 ab2@8 ab2, ~@2 [ab3,gb4,ab4,bb4,db5]@9 ~", Q: "db2@4 [bb3,eb4,f4,ab4] ~@7 [db4,e4,g4]@6 [db4,e4,bb4]@6, ~ g2",
R: "db2@2 ab2@2 [db3,bb3,eb4,f4,ab4] ~@3 db3@2 ab2@2 [bb3,eb4,f4,ab4] ~ ab2@2 ~@2 [bb3,e4,g4]@3 ~ [db4,gb4]@2, ~@6 db2 ~ db3@4", // Bbm7 Bbsus4 Edim Gb5
S: "[~ bb4 c5 db5@2 gb5@3 bb4 db5@2 ~@6 [c4,e4]@7, [eb2,bb3,db4,gb4]@8 ~@3 [ab3,c5,f5]@13]/2", // C Ebm7 Fm
T: "~@4 ab2@7 ~@5 ab2@8, [ab3,db4,gb4,ab4]@11 ~ [ab3,db4,gb4,ab4]@12", // Dbsus4
U: "ab4@4 db2@6 ~@2 [bb3,db4,f4,ab4]@3 ~ db3@2 [c3,c4,eb4,ab4]@3 ~@3, [db3,bb3,db4,f4] ~@3", // Bbm7 Ab Bbm
V: "[bb2,bb3,f4,ab4]@4 [bb3,db4,f4,ab4] ~@5 [ab3,bb3,db4,f4,ab4]@13 ~, db4 ~@11", // Bb7 Bbm7
W: "b2@4 [a4,d5,gb5] ~@5 [a4,d5,gb5]@2 ~@4 [ab4,db5,e5]@5 ~ [ab4,db5,e5] ~, ~@4 e2@3 ~", // D Dbm
X: "~@3 ab4@8 ~, a2@5 e4@17 ~@2, ~ ab3@10 ~, ~@3 b3@20 ~, ~@2 db4@9 ~",
Y: "[db4,f4,bb4]@4 [db4,f4,ab4] ~@5 [ab3,c4,f4] ~@5 [ab3,c4,eb4]@8, eb2@5 ab2@7", // Bbm Db Fm Ab
Z: "db2@4 [bb3,eb4,f4,ab4] ~@7 [bb3,db4,eb4,gb4]@6 [bb3,db4,eb4,gb4]@6, ~ ab2", // Bbsus4 Ebm7
AA: "db2@2 ab2@2 [db3,bb3,eb4,f4,ab4] ~@5 [ab2,bb3,db4,eb4,gb4]@13 ~", // Bbm7 Ebm7
AB: "db3@4 [bb3,eb4,f4,ab4] ~@7 [b3,eb4,f4,bb4]@2 ~@4 [b3,eb4,f4]@4 db3@2, ~@12 db3 ~@5 bb4@3 ~@3", // Bbsus4 Bmaj7 Fm7b5
AC: "[b3,eb4,f4,ab4]@4 [b3,eb4,f4,ab4] ~@11 [b3,eb4,f4,ab4] ~@7", // Fm7b5
AD: "bb2@4 [d4,f4,ab4,bb4] ~@5 bb2 ~ [d4,ab4,c5] ~@5 [d4,f4,ab4,c5]@3 ~ bb2 ~, ~@6 f4 ~@5", // Bb7 Dm7b5
AE: "[f4,bb4]@2 ~@4 [d4,f4,bb4]@4 bb2 ~ [d4,f4,ab4,c5]@3 ~ [d4,f4,bb4] ~@7, d4 ~@23", // Bb5 Bb Dm7b5 Bb
AF: "eb3@4 [db4,f4,bb4] ~@7 bb2@4 eb2 ~ [db4,f4,bb4] ~@5", // Bbm
AG: "ab2@4 [bb3,db4,eb4,gb4] ~@7 [ab2,bb3,eb4,gb4]@12, ~@6 db4@5 ~", // Ebm7 Ebm
AH: "db3@4 [bb3,eb4,f4,ab4] ~@7 bb2@4 [d4,gb4,bb4] ~@7", // Bbsus4 Daug
AI: "[eb3,db4,f4,bb4]@7 ~@3 [ab2,c4,d4]@14, ~@5 [gb3,e4]@6 ~", // Bbm Dm7b5 Gb7
AJ: "db3@4 [bb3,eb4,f4,ab4] ~@7 [gb2,bb3,e4,ab4]@4 ~@2 [gb2,bb3,e4,ab4]@4 ~@2", // Bbsus4 Gb7
AK: "db3@4 [bb3,eb4,f4,ab4] ~@7 [b3,eb4,f4,ab4,bb4]@4 [b3,eb4,f4,ab4,bb4] ~@7", // Bbsus4 Fm7b5
AL: "~@4 [bb3,db4,gb4] ~@7 [bb3,db4,gb4]@3 ~@7 [bb3,db4,g4] ~", // Gb Gdim
AM: "~@6 [bb3,db4,g4] ~@5 [bb3,db4,g4]@3 ~ [bb3,db4,g4] ~@7", // Gdim
AN: "[[bb3,eb4,f4,ab4]@9 ~ [bb3,eb4,f4,ab4] ~@11 [b3,eb4,f4]@8 ~@4 [a3,eb4,f4,ab4,db5]@12 ~@2]/2", // Bbsus4 Fm7b5 Db
AO: "~@4 [bb3,db4,gb4] ~@7 [bb3,db4,gb4] ~@5 [bb3,db4,gb4]@3 ~ [bb3,db4,g4] ~", // Gb Gdim
AP: "[~@6 [bb3,db4,g4] ~@5 [bb3,db4,g4]@3 ~ [bb3,db4,g4] ~@5 [eb4,f4,ab4,c5]@12 [eb4,e4,ab4,b4]@10 ~@2 [db4,eb4,gb4,bb4]@11 ~ [bb3,db4,eb4,ab4]@13 ~]/3", // Gdim Fm7 Emaj7 Ebm7 Bbm7
AQ: "[db3@4 [bb3,eb4,f4,ab4] ~@7 [eb4,f4,bb4]@2 ~@4 [a3,db4,eb4,bb4]@4 db3@2 ab4@3 ~@13 [b3,eb4,f4,ab4] ~@7, ~@12 a3@5 ~@5 [bb3,db4,eb4]@4 ~@22, ~@12 db3 ~@35]/2", // Bbsus4 Ebsus2 Eb7 Fm7b5 Eb7
AR: "bb2@4 [d4,f4,ab4,bb4] ~@5 bb2 ~ a3@5 ~ [a3,f4,ab4]@3 ~ [f4,bb4]@2, ~@12 f4@2 ~@8 [bb2,d4] ~, ~@12 ab4 ~@11", // Bb7 Db Bb5 Bb
AS: "~@6 [d4,f4,bb4]@4 bb2 ~ [d4,f4,ab4,c5]@3 ~ [d4,f4,bb4] ~@7", // Bb Dm7b5 Bb
AT: "[ab3,bb3,db4,eb4]@2 ~@4 [ab3,bb3,db4,eb4]@3 ~@3 [ab3,bb3,db4,eb4]@3 ~ [ab3,bb3,db4,eb4] ~@7", // Absus4
AU: "[g3,bb3,db4,f4]@3 ~@3 [g3,bb3,db4,f4]@3 ~ [g3,bb3,db4,eb4]@5 ~ [g3,bb3,db4,eb4] ~@7", // Gm7b5 Eb7
AV: "~@4 [ab3,bb3,db4,f4] ~@7 [ab3,bb3,db4,f4]@3 ~@3 [ab3,bb3,db4,f4]@3 ~@3", // Bbm7
AW: "~@4 [db3,f3,bb3,b3,e4] ~@7 [db3,f3,bb3,e4]@9 ~@3, ~@12 b3@7 ~@5", // Bbm
AX: "[ab3,bb3,db4,eb4]@3 ~ [ab3,bb3,db4,eb4] ~@7 [ab3,bb3,db4,eb4]@4 [ab3,bb3,db4,eb4] ~@7", // Absus4
AY: "[g3,bb3,db4,f4]@2 ~@4 [g3,bb3,db4,f4]@3 ~ [g3,bb3,db4,eb4]@5 ~ [g3,bb3,db4,eb4] ~@7", // Gm7b5 Eb7
AZ: "~@4 [b3,eb4,f4,bb4]@7 ~ [b3,eb4,f4,bb4]@3 ~@3 [b3,eb4,f4,ab4]@3 ~@3", // Bmaj7 Fm7b5
BA: "~@4 [b3,f4,bb4] ~@5 [b3,eb4,f4,ab4]@6 [b3,eb4,f4,ab4] ~@7, ~@2 eb4 ~@9", // Bb Fm7b5
BB: "db2@2 ~@4 [db4,eb4,bb4]@2 ~@4 [db4,eb4,ab4]@3 ~ [db4,eb4,ab4] ~@5 db2@2", // Eb7 Dbsus2
BC: "[db4,eb4,bb4]@3 ~@3 [db4,eb4,ab4]@4 [db4,eb4,ab4] ~@9 c3@2 b2@2", // Eb7 Dbsus2
BD: "bb2@4 [d4,f4,c5] ~@7 [d4,f4,bb4]@3 ~ [d4,f4,bb4] ~@5 bb2@2", // Dm7 Bb
BE: "[d4,f4,c5]@2 ~@4 [d4,f4,bb4]@3 ~ [d4,f4,bb4] ~@13", BF: "eb2@4 [db4,f4,g4,bb4] ~@7 [eb5,bb5,db6]@12",
BG: "ab2@2 ~@2 [gb4,bb4,db5] ~@17 [db4,eb4,ab4]@2, ~ [gb5,bb5,db6]", BH: "db2@4 [db4,eb4,ab4] ~ f2@6 gb2@6 g2@6",
BI: "[ab2@6 bb2@4 [bb2,db3] ~@7 [b3,eb4,f4,bb4]@30]/2", // Bbm Bmaj7
BJ: "[[b3,eb4,f4,bb4]@8 ~@2 [b3,eb4,f4,bb4] ~@7 [bb3,f4,bb4]@9 ~ [b3,f4,bb4] ~@7 [c4,eb4,f4,bb4]@9 ~ [b3,eb4,f4,bb4] ~, ~@9 eb4@5 ~@10]/2", // Bmaj7 Bb5 Bb Cm7 Bmaj7
BK: "~@6 [bb3,eb4,f4,bb4]@9 ~ [b3,eb4,f4,bb4] ~@7", BL: "[[b3,eb4,f4,bb4]@3 ~]/2",
})).s("gm_piano").gain(0.35)
// bass · acoustic bass
const bass = note(`<
~@3 A B C D E F G H I J K D L M N O P Q R S T U V W X J K D L M N O Y Z AA AB AC AD AE AF AG Z AA AB AC AD AE AH AI AJ
AK AL AM AN AO AP AQ Z AA AB AC AD AE AF AG Z AA AB AC AD AE AF AG Z AA AB AC AD AE AH AR AS AT AU AV AW AX AY AZ BA
BB D BC BD BE BF BG@2 BH@3 BI@2
>`.pickRestart({
A: "~@11 ab1", B: "db2 c2 bb1 ab1", C: "db2@3 ab1@3 f1@3 db2@2 f1", D: "bb1 c2 d2 bb1", E: "ab2 f2 d2 bb1",
F: "eb2@4 f2@8 gb2@3 ~@3 g2@4 ab2 ~", G: "~@2 ab1@4 bb1@3 eb2@2 ab1", H: "db2@6 ab1@6 ab2@5 ~ db2@6",
I: "eb2 ab2 gb2 f2", J: "db2@3 c2@3 bb1@3 ab1@2 ab1", K: "db2 ab1 f1 ab1", L: "f2@3 bb1@3 d2@3 ab2@2 d2",
M: "eb2@4 f2@8 gb2@4 ~@2 g2@3 ~ ab2 ~", N: "~@4 ab1@7 ~ bb1@6 eb2@4 bb1@2", O: "db2 c2 bb1 g1",
P: "db2@5 ~ eb2@6 f2@6 e2@6", Q: "eb2@3 f2@3 gb2@3 bb2@2 db2", R: "ab2!2 eb2 d2", S: "db2 ab1!2 bb1",
T: "db2 ab1 db2 f1", U: "bb1@5 ~ bb1@5 ~ ab1@6 ab1@5 ~", V: "b1@5 ~ b1@5 ~ e1@6 e1@6", W: "a1 e2 db2 a1",
X: "eb2@6 eb2@5 ~ ab1@6 ab1@5 ~", Y: "db2@5 ~ db2@4 ab1@14", Z: "db2@3 ab1@3 b1@3 c2@2 ab1",
AA: "db2@6 eb2@5 ~ f2@6 db2@6", AB: "bb1@6 d2@6 f2@6 ab2@4 f2 ~", AC: "bb2@6 ab2@6 f2@6 d2@5 ~",
AD: "eb2@6 f2@5 ~ gb2@6 g2@4 eb2@2", AE: "ab2 gb2 f2 eb2", AF: "db2@3 b1@3 bb1@3 e2@2 bb1", AG: "eb2 a2 ab2 d2",
AH: "db2@6 ab1@5 ~ gb1@6 ab1@4 gb1@2", AI: "db2 eb2 b1 g1", AJ: "gb2@3 db2@3 gb1@3 gb2@2 gb1",
AK: "g1@6 bb1@6 db2@5 ~ g2@4 ab1@2", AL: "db2@3 bb1@3 ab1@3 bb1@2 ab1", AM: "b1 eb2 db2 ab2",
AN: "gb2@3 db2@3 gb1@3 db2@2 gb1", AO: "g1@3 bb1@3 db2@3 g2@2 bb1", AP: "c2@5 ~ c2@6 e2@6 e2@6", AQ: "eb2!2 ab2 ab1",
AR: "db2@6 eb2@6 b1@6 g1@5 ~", AS: "gb2@2 db2 gb1@3 db2@3 gb2@2 gb1", AT: "g2@2 eb2 db2@3 bb1@3 g1@3",
AU: "db2@3 eb2@2 ab1 f2@3 db2@2 ab1", AV: "b1@6 bb1@6 ab1@6 db2@5 ~", AW: "gb2@5 ~ db2@6 gb1@6 db2@4 gb1@2",
AX: "g2@6 db2@6 g1@6 bb1@5 ~", AY: "b1@3 bb1@3 ab1@3 bb1@2 ab1", AZ: "db2@6 eb2@5 ~ ab2@6 ab1@5 ~",
BA: "db2@2 ab1 bb1@3 ab1@3 bb1@2 ab1", BB: "db2 eb2 f2 db2", BC: "f2 d2 ab2 f2", BD: "eb2 f2 g2 bb2",
BE: "ab2 gb2 f2 ab2", BF: "db2 f1 gb1 g1", BG: "[ab1@5 ~ eb2@4 db2@6 ~@2 db2@9 ~ db2@5 ~@3 db2@10 ~@2]/2",
BH: "[db2@9 ~ db2@2 ~@6 db2@10 db2@8 db2@10 db2@6 ~@2 db2@10 db2@8]/3", BI: "[db2@3 ~]/2",
})).s("gm_acoustic_bass").gain(0.4)
// chords · synth strings 1
const synth_strings_1 = note(`<
~@4 A@2 B@2 C D E F A@2 B@2 G@2 H@2 C I A@2 J K L M A@2 B@2 N O P Q A@2 R@2 C S T U V@2 W X Y Z P AA AB AC E AD AB AC
AE AF AG@2 AH@2 AI S AJ AK AL AM AN AO AI AP AQ AR AS@2 AT X AI AU AV AW C AX E AY C AX AD@2 A@2 AZ@2 BA BB BC ~@7
>`.pickRestart({
A: "[db4,f4,ab4]/2", B: "[d4,f4,ab4]/2", C: "[db4,gb4,bb4]", D: "[bb3,db4,gb4,ab4]", E: "[db4,f4,ab4]",
F: "[db4,gb4,bb4] [bb3,db4,gb4,ab4]", G: "[[db4,gb4,bb4]@27 ~ [bb3,db4,ab4]@20]/2",
H: "[~@6 ab4@6 g4@5 ~ gb4@6 f4@24, db3@43 ~@5]/2", I: "[c4,eb4,ab4] [c4,e4,ab4]", J: "[bb3,db4,f4]",
K: "[b3,d4,gb4] [e4,ab4,b4]", L: "[a3,db4,e4]", M: "[db4,gb4,bb4] [c4,eb4,ab4]", N: "[db4,bb4]@11 ~, gb4",
O: "~ [bb3,db4,ab4]@5", P: "[db4,f4,ab4] [db4,gb4]", Q: "[db4,f4,ab4] [c4,eb4,ab4]", R: "[d4,f4,ab4,bb4]/2",
S: "[c4,eb4,ab4,bb4]", T: "[db4,f4,ab4] [bb3,e4]", U: "[eb4,gb4] [db4,ab4]", V: "[[db4,f4]@3 [b3,f4]]/2",
W: "[bb3,d4]", X: "[d4,f4,ab4]", Y: "[db4,gb4,bb4]@11 ~", Z: "[c4,eb4,ab4]", AA: "[db4,f4] [b3,f4]", AB: "[db4,gb4]",
AC: "[db4,g4]", AD: "[b3,ab4]", AE: "[f4,ab4,c5] [e4,ab4,b4]", AF: "[db4,gb4,bb4]@6 ~ ab4@5, ~@12 [c4,eb4]@11 ~",
AG: "[[db4,f4,ab4]@3 [b3,f4]]/2", AH: "[~ f4, [bb3,d4]@11 ~]/2", AI: "[eb4,gb4,bb4]",
AJ: "[db4,f4,ab4] [db4,gb4,bb4]", AK: "[eb4,gb4,bb4] [c4,e4,ab4]", AL: "[db4,f4,ab4] [a3,f4,ab4]",
AM: "bb3 ab3, [f4,ab4]@11 ~", AN: "bb3 a3, [d4,f4]", AO: "[bb3,d4,f4] [ab3,d4,f4]", AP: "a3 ab3, [db4,gb4]@11 ~",
AQ: "[db4,f4,ab4] [bb3,db4,f4]", AR: "[eb4,gb4,bb4] [ab3,gb4,bb4]", AS: "[[f4,ab4]@6 [eb4,ab4]@5 [f4,ab4]@13]/2",
AT: "[d4,f4,ab4] [eb4,ab4]", AU: "a3 ab3, [eb4,ab4]@11 ~, f4 ~@11", AV: "[db4,f4,ab4] [gb3,c4,e4]",
AW: "[db4,f4,ab4] [b3,f4,ab4]", AX: "[db4,g4,bb4]", AY: "[ab4,db5]", AZ: "[bb3,d4,f4]/2", BA: "[eb4,g4]",
BB: "gb4 eb4, bb3@23 ~", BC: "[db4,f4] [db4,gb4]",
})).s("gm_synth_strings_1").gain(0.17).pan(0.4)
// other · brass section
const brass_section = note(`<
~@36 A ~ B ~ C ~ D E A ~ F ~ C ~ G ~@9 A ~ B ~ C ~ D E H ~ I ~ J K L ~ M N O P J K Q R S T U V W T X Y Z@2 AA@2 AB ~
AC AD@7
>`.pickRestart({
A: "~@2 c3 db3@2 bb3@3 db3 a3@2 ab3", B: "~@4 db3@2 d3@4 c4@6 d3 ~ b3@4 bb3@2",
C: "~@9 [ab2,bb3,db4]@2 [ab2,bb3,db4]", D: "~@2 [e3,e4]@4 [db3,db4]@2 [eb3,eb4] [db3,db4]@2 [bb2,bb3]",
E: "[db3,db4] ~@11", F: "~@2 db3 d3@2 c4@3 d3 b3@2 bb3", G: "~@4 e3@2 f3@4 ab3@2 ~@4 e3@2 f3@4 db4 ~",
H: "[db3,ab3]@2 ~@10 [a3,eb4]@5 ~ [a3,eb4]@4 [bb3,f4] ~", // Db5 Adim Bb5
I: "[d3,ab3]@2 ~@10 [a3,eb4]@5 ~ [a3,eb4]@4 [c4,f4] ~, ~@11 d4", J: "[gb3,bb3,db4,f4] [ab3,c4,bb4]",
K: "[e3,b3,a4] [eb3,bb3,ab4]", // Esus4 Ebsus4
L: "[db3,ab3,f4]@3 ~ [ab3,e4]@2 [bb3,f4]@4 [db4,ab4] ~@5 [ab3,e4]@2 [bb3,f4]@4 [db4,ab4] ~", // Db Dbm Bb5 Db5 Dbm Bb5 Db5
M: "[f3,f4]@12 [eb3,eb4]@6 [ab2,ab3]@4 [db3,db4] ~", N: "~@11 [db3,db4]",
O: "[d3,d4]@4 [bb2,bb3]@2 [c3,c4]@6 [bb2,bb3]@4 [d3,d4] ~@5 [bb2,bb3]@2", P: "[c3,c4]@3 [bb2,bb3]@2 [d3,d4] ~@6",
Q: "[db3,ab3,f4]@3 ~ [ab3,e4]@2 [bb3,f4]@4 [db4,ab4] ~@5 [ab3,e4]@2 [bb3,f4]@4 [db4,ab4]@2", R: "[db4,db5] ~@2",
S: "[db3,db4]@3 [d3,d4]@3 [eb3,eb4] ~@5", T: "[db3,db4]@6 [d3,d4]@4 [eb3,eb4] ~@13",
U: "[db3,db4]@6 [d3,d4]@6 [eb3,eb4] ~@11", V: "[db3,db4]@3 [d3,d4]@2 eb4 ~@6, ~@10 eb3 ~@13",
W: "[db3,db4]@2 [d3,d4]@2 [eb3,eb4] ~@3", X: "[b2,b3]@2 [c3,c4]@2 [db3,db4] ~@3",
Y: "[eb3,eb4]@3 [e3,e4]@2 [f3,f4] ~@6", Z: "[~@10 [bb2,bb3]@2 [b2,b3]@4 [c3,c4]@6 [db3,db4]@15 ~@11]/2",
AA: "[~@5 [b2,b3] [c3,c4]@2 [db3,db4]@3 [d3,d4]@10 ~@3]/2", AB: "~@18 [ab3,f4,bb4]@3 ~ [ab3,f4,bb4]@2",
AC: "~@3 [f3,f4]@3 [gb3,gb4]@2 [f3,f4] [db3,db4]@2 [bb2,bb3]", // F Gb F Db Bb
AD: "[[db3,db4]@3 ~@3 [bb3,bb4]@3 ~ [ab3,ab4]@4 ~@4 [db2,ab3,b3,eb4]@138 ~@12]/7", // Db Bb Ab Abm
})).s("gm_brass_section").gain(0.4).pan(0.6)
// other · alto sax
const alto_sax = note(`<
~@37 A B C D E@2 F B G B H I@2 J K L@2 M N O P Q R S T U V@2 W X Y Z AA AB@2 AC AD@2 AE AF AG AH AI@2 AJ@2 AK AL@2 AM
AN AO AP AQ AR AS AT AU AV AW AX@2 AY AZ@2 BA@2 ~@2
>`.pickRestart({
A: "~@5 eb5@3 db5 bb4 ab4 gb4", B: "f4 ~@7", C: "~@16 f4@2 ab4@3 ~@3", D: "db5@5 bb4@6 ~",
E: "[~@12 f4@4 ab4@2 bb4@4 ab4@12 e4 ~@13]/2", F: "~@10 eb5@5 ~ db5@2 bb4@2 ~ gb4@3, ~@10 ab4 ~",
G: "~@2 f4 ab4@2 eb5@3 db5 bb4 ab4 gb4", H: "~@4 f4@8 ab4@3 ~@3 bb4@3 ~@3",
I: "[db5@10 bb4 ~@7 db5@4 ab4@14 ~@4 f4@4 ab4@4]/2", J: "db4@5 ~@10 f4@2 gb4@2 g4 ab4@2 bb4 ~", K: "db5@11 ~ eb5@12",
L: "[db5@2 gb4 ~@8 bb4@3 db5 eb5 db5 bb4 ab4 g4 eb4 db4 bb3 a3]/2", M: "ab3@4 f4@4 ~@4 gb4@5 ~ g4@5 ~",
N: "ab4@12 bb4@3 ~ db5@4 eb5@2 db5@2", O: "eb5@4 db5@2 eb5@4 bb4 ~ db5@7 ~@5",
P: "~@3 db5@5 bb4@2 db5@2 ab4@4 g4@4 f4@2 g4 ~", Q: "ab4@8 ab4@2 bb4@2 g4@7 ~@5", R: "~@2 eb5@7 db5 bb4 ab4",
S: "f4 ~@11", T: "~@3 ab4@2 ~@2 f5@2 ~@4 ab5@2 ~ f5@2 db5@2 bb4 ~@2 f4, ~@16 e5 ~@7",
U: "~ db5@2 ~ f4@2 b4 c5@2 f4@2 ~ bb4@12", V: "[~@9 bb4@2 bb4@4 db5@3 ~@6]/2",
W: "~@3 f4 gb4 g4 ab4 ab3 bb3 db4 eb4 bb3", X: "db4 ~@7", Y: "~@6 bb3@4 ab3 ~ db4@2 ~@4 e4@4 db4@2",
Z: "e4@6 db4@3 ~ db4 ~@13", AA: "~@2 f4@3 e4 f4@2 bb4 f4@3", AB: "[d4@2 bb3 ~@8 c5@7 bb4@2 ~ bb4@2 ~]/2",
AC: "f4@4 db4@5 ~@7 e4@2 f4@2 ab4@2 bb4@2", AD: "[db4@2 bb3 db4@2 ~@3 db4 f4 ab4@5 bb4@2 db4@3 ~@4]/2",
AE: "~@4 db5@13 ~ e5 ~ db5@2 f5@2, ~@19 f5@2 ~ e5 ~", AF: "db5@5 bb4@3 ~@4", AG: "~@3 ab4@6 f4@2 db4",
AH: "ab4@4 ~@2 gb4@3 ~@3 f4@4 ab4 ~@5 f4@2, g4 ~@23",
AI: "[gb4@4 d4@2 f4@4 bb4@2 ~@4 ab4@2 bb4@4 db5 db5@11 bb4@5 ~@9]/2",
AJ: "[~@16 e4@2 f4@2 ~ bb4@2 db4@6 ~@19, ~@10 ab4 ~@13]/2", AK: "~@2 db5@7 db5@3",
AL: "[bb4@4 db5@2 ~@13 bb4@4 db5@2 ~@14 eb5@8 ~]/2", AM: "db5@3 bb4@2 ~ ab4@3 bb4@3",
AN: "eb4@5 ~ e4@3 ~ f4@6 ab4@2 bb4@3 ~@3", AO: "db5@5 ab4 bb4@4 ~@2 ab4@4 bb4@2 f4@4 ab4@2",
AP: "eb4@10 ~@2 bb3@3 ~ eb4@4 ~@4", AQ: "~@4 ab4@2 bb4@3 ~@3 ab4@6 bb4@3 ~@3", AR: "db5@3 bb4@3 ~@5 db4",
AS: "gb4@3 ~ ab4@2 db4@4 ~@14", AT: "~@5 ab4@4 f4@2 d4, ~@10 g4 ~@13", AU: "a4 bb4@3 f4 ~ bb4@3 ~@15",
AV: "~@9 bb4@2 ~@2 a4@2 ~ ab4@2 ~ g4@2 ~ eb4@2", AW: "~ db4@2 bb3@2 db4@2 ~ eb4@5 ~@11",
AX: "[~@3 f4@3 ~ gb4 ~ g4 ~@2 ab4@6 e4@4 db4@5 ~@15 bb3@4 ab3 ~]/2", AY: "db4@2 ~ e4@2 db4 ~@6",
AZ: "[bb4@5 ~@7 bb4@5 ~@5 bb4@5 ~@3 bb4@5 ~@7 a3 bb3@3 ab3@2]/2", BA: "[db4@3 ~@7 e4@8 db4@18 ~@12]/2",
})).s("gm_alto_sax").gain(0.5)
// drums · kick
const kick = s("bd").struct("<~@4 A@5 B A@7 B A@15 B A@65 C D E F G H ~>".pickRestart({
A: "x!4", B: "x ~ x ~@3 x ~@2 x ~@2", C: "x ~@2 x ~ x ~@3 x ~@2", D: "~ x ~ x ~@2", E: "x ~@4 x ~@3 x ~@2",
F: "~@2 x ~@3 x ~@4 x", G: "~@3 x ~@4 x ~@3", H: "x",
})).gain(0.38)
// drums · rim
const rim = s("rim").struct("<~@4 A@5 B A@7 B A@15 C A@65 D ~@6>".pickRestart({
A: "~ x ~ x", B: "~@3 x", C: "~@2 x ~@6 x ~@2", D: "~ x ~@2",
})).gain(0.38)
// drums · snare
const snare = s("sd").struct("<~@105 [~ x]>").gain(0.27)
// drums · low tom
const low_tom = s("lt").struct("<~@105 [~ x]>").gain(0.22)
// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 A@5 B A@7 B A@15 B A@65 C ~@6>".pickRestart({
A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
// … 20 more lines
More by Ellington
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.