0:00/0:00
// Puttin'on the Ritz — Taco
// 190 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/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.
// other · flute
const flute = note(`<
A B ~@2 C D E ~@4 F G@2 H I J K L M N@2 O P Q ~ R S ~@2 T U V W X Y Z@2 AA AB ~@2 AC AD ~@2 AE AF AG AH ~@2 AI AJ AK
AL AM AN AO ~@3 AP AQ AR AS AO ~@3 AP AQ AR AT AU AV AW@2 AX AY AZ BA BB BC BD BE BF@2 BG BH ~@2 BG BI BJ BK
>`.pickRestart({
A: "f5 ~ ab5 ~ c6 ~ c6 ~", B: "b5 ~ ab5 ~@3 bb5@8 ~@2", C: "f5 ~@3 ab5@2 ~@2 c6 ~@3 c6@2 ~@2",
D: "b5 ~ ab5 ~@3 bb5@4 ~@2 ab5@2 ~@2", E: "f5 ~@7", F: "~@4 c5@2 ~@2 e5@2 ~@2 g5 ~@3",
G: "[bb5@20 ~@4 c6 ~ bb5 ~ ab5 ~ g5 ~]/2", H: "f5@5 ~ ab5 ~", I: "b5@2 ab5 ~@3 bb5@8 ~@2",
J: "f5@2 ~@2 ab5@2 ~@2 c6@2 ~@2 c5 ~ f5@2", K: "~@2 ab5@2 c6@2 ~@2 c5 ~@3 f5@2 ~@2",
L: "ab5@2 ~@2 c6 ~@3 c5 ~ f5@2 ~@2 ab5@2", M: "c6 ~@3 c5@2 ~@2 e5@2 ~@2 g5@2 ~@2",
N: "[bb5@23 ~ c6@2 bb5@2 ab5@2 g5@2]/2", O: "f5@9 ~@3 ab5@2 ~@2", P: "bb5@7 ~ c6@8", Q: "db6 ~@7", R: "~@6 bb5 ~",
S: "db6@5 ~ bb5@8 ~@2", T: "~@6 c6 ~", U: "db6@5 ~@2 c6@7 ~@2", V: "f5@2 ab5@2 c6 ~ c5 f5", W: "~ ab5 c6 ~ c5@2 f5@2",
X: "ab5@4 c6@2 ~@2 c5@2 f5 ~@3 ab5@2", Y: "c6 ~ c5 ~ e5 ~ g5 ~", Z: "[bb5@22 ~@2 c6@2 bb5 ~ ab5@2 g5@2]/2",
AA: "f5@11 ~ c6@3 ~", AB: "bb5@6 c6@5 ~@5", AC: "c5@2 d5@2 f5 ~ f5 ~", AD: "f5 e5 ~ g5@5",
AE: "eb5@2 f5@2 ab5 ~ ab5 ~", AF: "ab5@2 g5@2 ~@2 bb5@7 ~@3", AG: "c6@7 ~ g5@5 ~ a5 ~",
AH: "g5@2 ~@2 f5@2 ~@2 e5 ~ d5@5 ~", AI: "a5@4 ~@2 a5 ~ e5@2 ~@2 e5@2 ~@2", AJ: "a5@7 ~",
AK: "b5@2 ~@2 b5 ~ b5@2 ~@2 a5@2 g5@2 ~@2", AL: "c6@7 ~", AM: "db6@2 ~@2 db6 ~ db6@2 ~@2 b5@2 a5@2 ~@2",
AN: "d6@7 ~ eb6@7 ~", AO: "d6@13 ~@3", AP: "~@2 c6@4 a5 ~", AQ: "c6@3 ~", AR: "~@4 d6@7 ~ bb5@3 ~",
AS: "db6@2 bb5@2 ~@2 c6@7 ~@3", AT: "c6@6 d6@7 ~@3", AU: "c6 ~ d6 ~ eb6 ~ f6 g6",
AV: "~@3 f6@2 ~@3 eb6@2 ~@2 d6@2 ~@2, ~ g6 ~@6", AW: "[c6@2 ~ c6@12 ~]/2",
AX: "bb5@2 ~@2 c6@2 ~@2 d6@2 ~@2 eb6 ~ f6@2", AY: "~ f6 eb6 ~ d6 ~ c6 ~", AZ: "bb5@4 ~@2 bb5@5 ~ d6@2 ~@2",
BA: "eb6@5 ~ d6@8 ~@2", BB: "g5 ~@3 bb5 ~@3 d6 ~@3 d5 ~ g5 ~", BC: "~@2 bb5@2 d6 ~@3 d5 ~@3 g5@2 ~@2",
BD: "bb5 ~@3 d6 ~@3 d5 ~ g5@2 ~@2 bb5@2", BE: "d6 ~@3 d5 ~@3 gb5 ~@3 a5@2 ~@2",
BF: "[c6@18 ~@6 d6 ~ c6 ~ bb5 a5@2 ~]/2", BG: "g5 ~ bb5 ~ d6 ~ bb5 ~", BH: "db6 bb5 ~ c6@4 ~",
BI: "db6 bb5 ~ c6@2 ~ bb5 ~", BJ: "g5@3 ~@5 d6 ~ c6 ~ bb5 ~ a5@2", BK: "g5 ~@7",
})).s("gm_flute").gain(0.22)
// other · oboe
const oboe = note(`<
A B ~@2 C D E ~@4 F G@2 H I ~@3 J K@2 L M N ~ O P ~@2 Q R S T U@2 V W X Y ~@2 Z AA ~@2 AB AC AD AE ~@2 AF AG AH AI AJ
AK AL ~@3 AM AN AO AP AL ~@3 AM AN AO AQ AR AS AT@2 AU AV AW AX AY AZ BA BB BC BD BE BF ~@2 BE BG BH BI
>`.pickRestart({
A: "f4@2 ~@2 ab4@2 ~@2 c5 ~@3 c5@2 ~@2", B: "b4 ~ ab4 ~@3 bb4@7 ~@3", C: "f4 ~ ab4 ~ c5 ~ c5 ~",
D: "b4 ~ ab4 ~@3 bb4@4 ~@2 ab4@2 ~@2", E: "f4 ~@7", F: "~@4 c5@2 ~@2 e5 ~@3 g5@2 ~@2",
G: "[bb5@20 ~@4 c6@2 bb5@2 ab5@2 g5 ~]/2", H: "f5@11 ~ ab5@2 ~@2", I: "b5 ~ ab5@2 ~@2 bb5@9 ~",
J: "~@2 c5 ~ e5 ~ g5 ~", K: "[bb5@21 ~@3 c6 ~ bb5 ~ ab5 ~ g5 ~]/2", L: "f5@4 ~@2 c5 ~", M: "bb4@8 c5@7 ~",
N: "db5 ~@7", O: "~@6 bb4 ~", P: "db5@5 ~ bb4@8 ~@2", Q: "~@6 c5 ~", R: "db5@5 ~ c5@6 ~@4",
S: "f5@2 ab5@2 c6 ~ c5 f5", T: "~ ab5 c6 ~ c5@2 f5@2",
U: "[ab5@4 c6@2 ~@2 c5@2 ~ f5 ~@4 c6@2 ~@2 c5@2 ~@2 e5@2 ~@2 g5@2 ~@2, ~@15 ab5@2 ~@15]/2", V: "bb5",
W: "~@8 c6 ~ bb5 ~ ab5@2 g5 ~", X: "f5@9 ~@4 c6@3", Y: "bb5@5 ~ c6@8 ~@2", Z: "c5@2 d5@2 f5 ~ f5 ~",
AA: "f5@2 e5@2 ~@2 g5@9 ~", AB: "eb5@2 f5@2 ab5 ~ ab5 ~", AC: "ab5 ~ g5@2 ~@2 bb5@5 ~@5", AD: "c6@6 ~@2 g5@5 ~@2 a5",
AE: "g5 ~@3 f5@2 ~@2 e5 ~ d5@4 ~@2", AF: "a5@4 ~@2 a5 ~ e5@2 ~@2 e5 ~@3", AG: "a5@13 ~@3",
AH: "b5@2 ~@2 b5 ~@2 b5@2 ~ a5 ~ g5@2 ~@2", AI: "c5@13 ~@3", AJ: "db5@2 ~@3 db5 ~ db5@2 ~ b4 ~ a4@2 ~@2",
AK: "d5@7 ~@2 eb5@7", AL: "d5@15 ~", AM: "~@2 c5@3 ~ a4 ~", AN: "c5@3 ~@5", AO: "~@4 d5@7 ~ bb4@2 ~@2",
AP: "db5 ~ bb4 ~@3 c5@7 ~@3", AQ: "c5@6 d5@7 ~@3", AR: "c5 ~ d5 ~ eb5 ~ f5 g5",
AS: "~@2 g5 ~ f5@2 ~@2 eb5@2 ~@2 d5@2 ~@2", AT: "[c5@4 ~@2 c5@23 ~@3]/2", AU: "bb4 ~ c5 ~ d5 ~ eb5 f5",
AV: "~ f5 eb5 ~ d5 ~ c5 ~", AW: "bb4@4 ~@2 bb4@4 ~@2 d5@3 ~", AX: "eb5@4 ~@2 d5@7 ~@3",
AY: "g4@2 ~@2 bb4@2 ~@2 d5@2 ~@2 d4 ~ g4@2", AZ: "~@2 bb4 ~ d5@2 ~@2 d4@2 ~@2 g4@2 ~@2",
BA: "bb4@2 ~@2 d5 ~@3 d4 ~ g4@2 ~@2 bb4 ~", BB: "d5@2 ~@2 d4@2 ~@2 gb4 ~@3 a4@2 ~@2", BC: "c5",
BD: "~@8 d5 ~ c5 ~ bb4 ~ a4 ~", BE: "g4 ~ bb4 ~ d5 ~ bb4 ~", BF: "db5 ~ bb4 ~@3 c5@9 ~",
BG: "db5 ~ bb4 ~@3 c5@5 ~ bb4@2 ~@2", BH: "g4 ~@3 d5 eb5 e5 gb5", BI: "g5 ~@7",
})).s("gm_oboe").gain(0.21)
// chords · alto sax
const alto_sax = note(`<
A B A C A D E@2 F@4 G H I J F@4 K@2 L M N ~ O P ~@2 Q R S T U V W@2 X Y Z AA AB AC AD AE AF AG AH@4 AI AJ AK AL AM AN
AO@6 AP AQ AO@6 AP AR AS AT AU@2 AV AW AX AY AZ@4 BA@2 BB BC BD BE BF BG BH BI
>`.pickRestart({
A: "[c5,f5]@15 ~", B: "[b4,eb5]@6 ~ bb4@8 ~, ~@3 e5@4 ~", C: "[b4,eb5]@5 ~ [bb4,e5]@9 ~",
D: "[b4,eb5]@6 [bb4,e5]@5 ~ [bb4,db5]@4", E: "[ab4@2 ~@6 [b4,eb5]@6 [bb4,e5]@15 ~@3, c5 ~@31]/2",
F: "[[c5,f5]@7 e5]/4", G: "~@4 [c5,e5]@7 ~ [bb4,db5]@2 ~@2", H: "[c5,e5]@3 ~", I: "~@4 [c5,f5]@7 ~ [ab4,c5]@2 ~@2",
J: "[b4,eb5]@5 ~ [bb4,e5]@8 ~@2", K: "[[c5,e5]@15 ~]/2", L: "[c5,f5]@7 ~", M: "[bb4,db5]@8 [c5,eb5]@7 ~",
N: "[db5,f5] ~@7", O: "~@6 db5 ~, ~@12 bb4 ~@3", P: "[db5,f5]@5 ~@2 [bb4,db5]@6 ~@3", Q: "~@6 [eb5,f5] ~",
R: "[db5,f5]@5 ~ [c5,e5]@8 ~@2", S: "[d5,f5]@4 [f5,ab5]@4 [ab5,c6]@2 ~@2 c5 ~@2 [d5,f5]",
T: "~@2 [f5,ab5] ~ [ab5,c6]@2 ~@2 c5@4 [d5,f5]@4", U: "[f5,ab5]@4 [ab5,c6]@2 ~@2 c5 ~ [d5,f5]@2 ~@2 [f5,ab5]@2",
V: "[ab5,c6] ~ c5 ~ e5 ~ [g4,g5] ~, ~@8 bb4 ~@7", W: "[[c5,e5]@10 ~@2 c6 bb5 ab5 g5, ~@12 e5@3 ~]/2",
X: "f5@8 ~@4 [d5,f5] ~@3", Y: "[d5,f5]@2 ~ [c5,e5]@3 ~@2", Z: "c5@4 d5@4 f5 ~@3 f5@2 ~@2, a4@8 b4@7 ~",
AA: "f5@2 e5@2 ~@2 g5@7 ~@3, bb4@15 ~", AB: "c5@2 d5@2 f5 ~ f5 ~, a4@7 ~ b4@7 ~",
AC: "f5 ~ e5@2 ~@4 db5@8, bb4 ~, ~@3 g5@4 ~", AD: "eb5@2 f5@2 ab5 ~ ab5 ~, c5 d5", AE: "ab5 g5 ~ bb5@4 ~, db5@3 ~",
AF: "eb5@2 f5@2 ab5 ~ ab5 ~, c5@7 ~ d5@7 ~", AG: "ab5@2 g5 ~@3 bb5@6 ~@4, db5@11 ~@5",
AH: "[c5@8 bb4@8 b4@15 ~, g4@31 ~]/2", AI: "[a4,c5]", AJ: "~@4 [c5,d5]@7 ~ [c5,d5]@3 ~", AK: "[b4,d5]",
AL: "~@4 [c5,e5]@8 [c5,e5]@3 ~", AM: "[db5,e5]@15 ~", AN: "d5@8 eb5@7 ~, c5",
AO: "[[bb4,g5]@25 ~ d5 ~ gb4 ~@3 c5@10 ~@6, ~@5 a4@2 ~]/6", AP: "~@2 [bb4,d5]@3 ~ [bb4,d5] ~",
AQ: "[db5,g5]@6 [c5,gb5]@7 ~@3", AR: "[c5,eb5]@6 [d5,f5]@7 ~@3",
AS: "[c5,eb5] ~ [d5,f5] ~ [eb5,g5] ~ [f5,a5] [g5,bb5]", AT: "~ [g5,bb5] [f5,a5] ~ [eb5,g5] ~ [d5,f5] ~",
AU: "[[c5,eb5]@5 ~ [c5,eb5]@22 ~@4]/2", AV: "[bb4,d5] ~ [c5,eb5] ~ [d5,f5] ~ [eb5,g5] [f5,a5]",
AW: "~@2 [f5,a5]@2 [eb5,g5]@3 ~ [d5,f5]@2 ~@2 [c5,eb5]@2 ~@2", AX: "[bb4,d5]@5 ~ [bb4,d5]@6 [d5,f5]@2 ~@2",
AY: "[eb5,g5]@5 ~ [d5,gb5]@7 ~@3", AZ: "[[d5,g5]@53 ~@3 [c5,d5]@5 ~@3]/4", BA: "[~ [d5,gb5]@17 ~@14]/2",
BB: "[d5,g5]@7 ~", BC: "[db5,f5]@4 ~@2 [c5,gb5]@7 ~@3", BD: "g4 ~ bb4 ~ d5 ~ bb4 ~", BE: "db5@2 bb4 ~@3 [a4,c5]@10",
BF: "[d5,g5]", BG: "[db5,f5]@3 [c5,gb5]@2 ~ [c5,gb5] ~", BH: "[bb4,g5] ~@3 [d5,d6] [eb5,c6] [e5,bb5] [gb5,a5]",
BI: "g5 ~@3 g4 ~@3",
})).s("gm_alto_sax").gain(0.31)
// other · tenor sax
const tenor_sax = note(`<
A B A B A C D@2 E@4 F G H I J@4 K@2 L M N O P@2 Q R S T U V W X K@2 Y Z AA AB AA AC AD AE AD Z AF AG AH AI AJ AK AI AL
AM AN AO@2 AP AQ@3 AR AS AO@2 AP AQ@3 AR AT ~@6 AU AV AW@4 AX@2 AY AZ BA BB AY BC BD BE
>`.pickRestart({
A: "ab3", B: "f3@3 g3@5", C: "f3@3 g3@3 ab3 ~", D: "[f3 ~@3 f3@3 g3@7 ~@2]/2", E: "[ab3@27 ~ g3@4]/4",
F: "~@4 bb3@7 ~ g3@2 ~@2", G: "bb3@3 ~", H: "~@2 ab3@3 ~ ab3 ~", I: "f3@5 ~ g3@8 ~@2", J: "[ab3@7 g3]/4",
K: "[bb3@15 ~]/2", L: "ab3@7 ~", M: "f3@3 ~", N: "bb3@2 ~@2 ab3 ~@3 bb3@2 ~@2 c4 ~@2 db4",
O: "~@2 db4@2 c4@2 ~@2 bb3@2 ~@2 ab3 ~@3", P: "[g3@5 ~ g3@21 ~@5]/2", Q: "ab3@2 ~@2 g3@2 ~@2 ab3 ~@3 bb3@2 ~ c4",
R: "~@3 c4 bb3@2 ~@2 ab3@2 ~@2 g3@2 ~@2", S: "ab3@2 ~ ab3@3 ~@2", T: "b3@5 ~ bb3@6 ~@4", U: "ab3@2 c4@2 d4 ~ c4 ab3",
V: "~@2 c4@2 d4@2 ~@2 c4@2 ~@2 ab3 ~@3", W: "c4@2 d4 ~ c4 ab3 ~ c4", X: "d4 ~ c4 ~ bb3 ~ g3 ~", Y: "ab3@5 ~ ab3 ~",
Z: "bb3@11 ~@5", AA: "f3 d3", AB: "g3@7 ~", AC: "g3@8 bb3@7 ~", AD: "ab3 f3", AE: "bb3@7 ~", AF: "e3@15 ~",
AG: "f3@7 ~", AH: "e3@7 ~", AI: "f3", AJ: "e3", AK: "~@4 gb3@7 ~ gb3@2 ~@2", AL: "~@4 bb3@7 ~ bb3@3 ~", AM: "g3@15 ~",
AN: "gb3@7 ~", AO: "[g3@2 ~@2 bb3@2 ~@2 d4@2 ~@2 d3 ~@2 g3@2 ~ bb3@2 d4@2 ~@2 d3 ~@3 g3@2 ~@2]/2",
AP: "bb3 ~ d4 ~ d3 g3 ~ bb3", AQ: "[d4@2 ~@2 d3 ~@3 gb3@28 ~@4 d4@2 c4@2 bb3@2 a3@2]/3", AR: "g3@11 ~ bb3 ~@3",
AS: "bb3@5 ~ a3@7 ~@3", AT: "c4@6 b3@7 ~@3", AU: "~@6 f3 ~", AV: "a3@5 ~ c4@9 ~", AW: "[bb3@54 ~@2 a3@5 ~@3]/4",
AX: "[c4@9 ~@7]/2", AY: "bb3@15 ~", AZ: "g3@5 ~ a3@7 ~@3", BA: "g3 ~ bb3 ~ d4 ~ bb3 ~", BB: "g3!2 ~ gb3@5",
BC: "g3@5 ~ a3@5 bb3@2 ~@3", BD: "g3 ~@3 d4 eb4 e4 gb4", BE: "g4 ~@3 g3 ~@3",
})).s("gm_tenor_sax").gain(0.35)
// other · baritone sax
const baritone_sax = note(`<
A B A B A B C@2 D E F E G H I J D K@3 L M I N O P Q R S T U V D K@2 D L G K L W X Y Z AA AB AA AC AD AE AF AG AH AI AJ
AK AH AL AM@4 AN AO AP AQ AM@4 AN AO AP AR AS AT AU AV AW AU AX AY AZ BA BB BC BD BE AZ BF AZ BG AZ BG BH BI
>`.pickRestart({
A: "f3 eb3", B: "db3@3 c3@3 e3 ~", C: "[f3 ~@3 db3@3 c3@2 ~ c3 ~ d3 ~ e3 ~]/2", D: "f2@3 ~@5 c3@2 ~@6",
E: "f2 ~@3 c3 ~@3", F: "f2@2 ~@6 c3 ~@7", G: "g2 ~@3 c3 ~@3", H: "g2@2 ~@6 c3@3 ~@5", I: "f3@8 eb3@7 ~",
J: "db3@5 ~@2 c3@8 ~", K: "f2@3 ~@5 c3@3 ~@5", L: "g2@3 ~@5 c3@3 ~@5", M: "g2 ~@3 c3@2 ~@2", N: "f3@7 ~",
O: "bb2@4 ~@5 f2@2 ~@5, c3 ~@15", P: "bb2@3 ~@5 bb2@3 ~@5", Q: "eb2@3 ~@5 eb2@3 ~@5",
R: "bb2@3 ~ eb2@2 ~@2 f2@2 ~@2 g2@2 ~@2", S: "ab2@2 ~@6 ab2@3 ~@5", T: "eb2@3 ~@5 eb2@2 ~@6", U: "ab2@5 ~ ab2@7 ~@3",
V: "g2@5 ~ c3@8 ~@2", W: "f2 ab2", X: "g2@4 c3 ~ e2 ~", Y: "f2@7 ~ ab2@8", Z: "g2@7 ~ eb2@2 ~@2 g2@2 ~@2",
AA: "ab2 b2", AB: "bb2@4 eb2 ~ g2 ~", AC: "bb2@4 eb3 ~ db3 ~", AD: "c3 ~ db3 ~", AE: "d3@3 ~@5 g2@3 ~@5",
AF: "c3@4 ~@4 db3@3 ~@5", AG: "d3 ~ g2 ~", AH: "a2 ~ a2 ~", AI: "d2 ~ d2 ~", AJ: "g2 ~ g2 ~",
AK: "c3@4 ~@4 c3@4 bb2@3 ~", AL: "d3 ~ c3 ~ bb2 ~ a2 ~", AM: "g2@3 ~@5 d2@3 ~@5", AN: "a2@3 ~@5 d2@3 ~@5",
AO: "a2@4 ~@4 d2@3 ~@5", AP: "g2 ~ f2 ~", AQ: "eb2@6 d2@7 ~@3", AR: "eb3@6 d3@7 ~@3", AS: "c3@3 ~@5 g2@3 ~@5",
AT: "c3@3 ~@5 c3@3 ~@5", AU: "f2 ~ f2 ~", AV: "c3@3 ~@5 f2@4 ~@4", AW: "bb2@3 ~@5 bb2@4 ~@4", AX: "bb2 ~ bb2 ~",
AY: "a2@5 ~ d2@7 ~@3", AZ: "g2@7 ~ f2@7 ~", BA: "eb2 d2", BB: "g2@7 ~ f2@8", BC: "eb2@7 ~ d2@8", BD: "a2 ~ gb2 ~",
BE: "d2 ~@7", BF: "eb2@3 d2@3 gb2 ~", BG: "eb2@6 d2@5 ~ gb2@2 ~@2", BH: "g2 ~@7", BI: "~@4 g2 ~@3",
})).s("gm_baritone_sax").gain(0.35)
// chords · trumpet
const trumpet = note(`<
A B ~@2 A C D ~ E F G H I@2 J K L F G H M@2 N O P ~ Q R ~@2 S T ~@6 U V ~@4 W X W X Y Z AA AB AC AD AE AF AG AH AI ~@3
AJ AK AL AM AI ~@3 AJ AK AL AN ~@2 AO AP ~@2 AQ AR AS AT AU AV@3 AW AX ~@2 AY AZ BA BB
>`.pickRestart({
A: "f4 ~ ab4 ~ c5 ~ c5 ~", B: "b4@2 ab4@2 ~@2 bb4@7 ~@3", C: "b4 ~ ab4 ~@3 bb4@5 ~ ab4@2 ~@2", D: "f4 ~@7",
E: "f4 ~@3 ab4@2 ~@2 c5@2 ~@2 c4 ~ f4 ~", F: "~@2 ab4 ~ c5 ~@3 c4 ~@3 f4 ~@3", G: "ab4 ~@3 c5 ~@3 c4 ~ f4 ~@3 ab4 ~",
H: "c5 ~@3 c4 ~@3 e4 ~@3 g4 ~@3", I: "[bb4@11 ~ c5 bb4 ab4 g4]/2", J: "f4@6 [f4,ab4] ~",
K: "b4@2 [f4,ab4] ~@3 [e4,g4,bb4]@7 ~@3, f4 ~@15", L: "f4@2 ~@2 ab4@2 ~@2 c5@2 ~@2 c4 ~ f4 ~",
M: "[[e4,g4,bb4]@11 ~ c5 bb4 ab4 g4, ~@24 e4@7 ~]/2", N: "f4@6 ab4 ~", O: "[f4,bb4]@4 [eb4,a4,c5]@3 ~",
P: "[f4,bb4,db5] ~@7", Q: "~@6 [f4,g4,bb4] ~", R: "[g4,bb4,db5]@5 ~ [f4,g4,bb4]@7 ~@3", S: "~@12 [f4,ab4,c5]@3 ~",
T: "[f4,g4,db5]@5 ~ [e4,g4,c5]@8 ~@2", U: "~@4 [f4,ab4]@6 ~@2 [f4,ab4,c5]@3 ~",
V: "[f4,g4,bb4]@5 ~ [e4,bb4,c5]@8 ~@2", W: "eb4@4 f4@4 ab4@3 ~ ab4@3 ~", X: "ab4@2 g4@2 ~@2 bb4@7 ~@3",
Y: "[e4,g4,c5]@6 ~@2 g4@5 ~ a4 ~", Z: "g4@3 ~ f4@2 ~@2 e4 ~ d4@4 ~@2", AA: "[e4,g4,c5]@7 ~ g4@5 ~ a4 ~",
AB: "g4@2 ~@2 f4@3 ~ e4 ~ d4@4 ~@2", AC: "a4@5 ~ a4 ~ e4@2 ~@2 e4@2 ~@2", AD: "a4@13 ~@3",
AE: "[d4,f4,b4]@2 ~@2 [d4,f4,b4] ~ [d4,b4] ~@3 [d4,f4,a4] ~ [d4,f4,g4]@2 ~@2, ~@3 f4 ~@4", AF: "[e4,g4,c5]@7 ~",
AG: "[e4,g4,db5]@2 ~@2 [e4,g4,db5] ~@2 g4@2 ~ [e4,g4,b4] ~ [e4,g4,a4]@2 ~@2, ~@3 [e4,db5] ~@4", // Dbdim Em A7 Dbm
AH: "[gb4,a4]@8 [gb4,c5,eb5]@7 ~, d5@3 ~@5", AI: "[g4,bb4,d5]@15 ~", AJ: "~@2 [gb4,a4,c5]@3 ~ [d4,gb4,a4] ~",
AK: "[gb4,a4,c5]@3 ~", AL: "~@4 [g4,bb4,d5]@7 ~ [d4,g4,bb4]@2 ~@2",
AM: "[g4,bb4,db5]@2 [g4,bb4]@2 ~@2 [gb4,a4,c5]@9 ~", AN: "[eb4,g4,c5]@6 [d4,f4,d5]@9 ~", AO: "~@6 g4 ~",
AP: "[f4,a4]@5 ~ [eb4,a4,c5]@9 ~", AQ: "~@6 [f4,bb4,d5] ~", AR: "[g4,a4,eb5]@5 ~@2 gb4@8 ~, ~@3 [c5,d5]@4 ~",
AS: "g4@2 ~@2 bb4@2 ~@2 d5 ~@3 d4@2 g4@2", AT: "~@2 bb4 ~ d5@2 ~@2 d4 ~@3 g4 ~@3",
AU: "bb4@2 ~@2 d5 ~@3 d4 ~ g4 ~@3 bb4 ~",
AV: "[d5 ~@3 d4@2 ~@10 c5@18 ~@6 d5@2 c5 ~ bb4@2 a4 ~, ~@4 gb4@13 ~@7, ~@6 a4@11 ~@7]/3",
AW: "g4 ~ bb4 ~ [g4,bb4,d5] ~ [g4,bb4] ~", AX: "[g4,bb4] ~ [g4,bb4]@2 ~@2 [gb4,a4,c5]@9 ~, db5 ~@7",
AY: "g4@2 ~@2 bb4@2 ~@2 [g4,bb4,d5]@2 ~@2 [g4,bb4]@3 ~", // Gm
AZ: "[g4,bb4,db5] ~ [g4,bb4]@2 ~@2 [gb4,a4,c5]@5 ~ [gb4,bb4]@2 ~@2", BA: "g4 ~@7", BB: "~@4 g3 ~@3",
})).s("gm_trumpet").gain(0.72)
// chords · trombone
const trombone = note(`<
A B C D E F G@2 ~@4 H I J K L M N O P@2 Q R S T U@2 V W X Y ~@4 Z AA AB AC AD AE AD AF AG AH AG AI AJ AK AL AM AN AO
AP AQ AR AS AT AU AV AW@3 AX AY AT AU AV AW@3 AX AZ ~@2 BA BB ~@2 BC BD BE BF BG BF BH BI BJ BK BL BM BN BO BP BQ
>`.pickRestart({
A: "f3@6 ~@2 eb3@5 ~@3", B: "db3@5 ~ c3@5 ~@5", C: "f3 ~ ab3 ~ c4 ~ c4 ~", D: "b3 ab3 ~ bb3@4 ~", E: "f3@3 ~ eb3@3 ~",
F: "db3@5 ~ c3@5 ~ e3@2 ~@2", G: "[f3@2 ~@6 db3@4 ~@2 c3@5 ~ c3@2 ~@2 d3@2 ~@2 e3@2 ~@2]/2",
H: "~@4 [g3,bb3,c4]@7 ~ [e3,g3,bb3]@2 ~@2", I: "[g3,bb3,c4]@3 ~", J: "~@4 [f3,ab3,c4]@7 ~ [f3,ab3,c4]@2 ~@2",
K: "[f3,ab3,b3]@5 ~ [g3,bb3,c4]@9 ~", L: "~@4 c4@8 ~ f3@2 ~", M: "ab3", N: "~@5 ab3@7 f3@2 ~@2", O: "c4@11 ~@5",
P: "[~@4 e3 ~@3 g3 ~@3 [e3,g3,bb3]@12 ~@4 [g3,bb3,c4]@3 ~]/2", Q: "[f3,ab3,c4]@7 ~", R: "db4@8 eb4@7 ~",
S: "bb3 ~ [ab3,c4] ~ [bb3,db4] ~ [c4,eb4] [db4,f4]", // Ab Bbm Cm Db
T: "~@2 [db4,f4] ~ [c4,eb4]@2 ~@2 db4@2 ~@2 [ab3,c4]@2 ~@2, ~@8 bb3 ~@7", // Db Cm Ab
U: "[[g3,bb3]@2 ~ bb3@12 ~, ~@6 g3@21 ~@5]/2", V: "ab3 ~ [g3,bb3] ~ [ab3,c4] ~ db4 [c4,eb4], ~@12 bb3 ~@3",
W: "~@2 [c4,eb4] ~ [bb3,db4]@2 ~@2 [ab3,c4]@2 ~@2 [g3,bb3]@2 ~@2", X: "ab3@5 ~ ab3@7 ~@3",
Y: "[f3,g3,b3]@5 ~ [e3,bb3,c4]@7 ~@3", Z: "~@2 g3@4 [e3,g3,bb3] ~", AA: "[g3,bb3,c4]@7 ~",
AB: "~@4 [f3,ab3,d4]@7 ~ [f3,ab3,c4]@2 ~@2", AC: "[f3,g3,bb3]@5 ~ [e3,bb3,c4]@8 ~@2", AD: "[f3,a3] [d3,b3]",
AE: "[g3,bb3]@15 ~", AF: "[g3,bb3] [bb3,db4]", AG: "[ab3,c4] [f3,d4]", AH: "[bb3,db4]@15 ~",
AI: "bb3@7 ~ g3@3 ~ f3@2 ~@2, db4@15 ~", AJ: "c4@7 ~ bb3@8, [e3,g3]", AK: "[f3,g3,b3]@15 ~", AL: "c4 bb3, [e3,g3]",
AM: "[f3,g3]@15 ~, b3@13 ~@3", AN: "[e3,a3,c4]@15 ~", AO: "~@4 [gb3,a3,c4]@7 ~ [gb3,a3,c4]@2 ~@2", AP: "[f3,g3,b3]",
AQ: "~@4 [g3,bb3,c4]@7 ~ [g3,bb3,c4]@2 ~@2", AR: "[g3,a3]@7 ~, db4", AS: "[gb3,a3,c4]@15 ~",
AT: "g3 ~ bb3 ~ d4 ~ d3 g3", AU: "~@2 bb3@2 d4@2 ~@2 d3 ~@3 g3@2 ~@2", AV: "bb3@2 ~@2 d4@2 ~@2 d3 ~ g3@2 ~@2 bb3 ~",
AW: "[d4@2 ~@2 d3@2 ~@10 c4@20 ~@4 d4 ~ c4 ~ bb3 ~ a3 ~, ~@2 gb3@7 ~@3, ~ a3@2 ~]/3", AX: "g3@11 ~ [f3,g3,bb3]@2 ~@2",
AY: "[g3,bb3,db4]@5 ~ [gb3,a3,c4]@8 ~@2", AZ: "[eb3,g3,c4]@3 [f3,g3,d4]@4 ~", BA: "~@6 g3 ~",
BB: "[f3,a3]@5 ~@2 a3@8 ~, ~@3 [eb3,c4]@4 ~", BC: "~@6 [f3,bb3,d4] ~",
BD: "[g3,a3,eb4]@5 ~ [gb3,c4]@7 ~@3, ~@6 d4@9 ~", BE: "g3@5 ~@3 f3@5 ~@3", BF: "eb3@5 ~@3 d3@5 ~@3",
BG: "g3@5 ~@3 f3@4 ~@4", BH: "~@2 d3 ~ gb3 ~ a3 ~", BI: "[gb3,a3,c4] ~@7", BJ: "g3@4 ~@4 f3@5 ~@3",
BK: "eb3@5 ~ d3@6 gb3@2 ~@2", BL: "g3 ~ bb3 ~ d4 ~ bb3 ~", BM: "[g3,db4] ~ [g3,bb3]@2 ~@2 [gb3,a3,c4]@8 ~@2",
BN: "~@4 [g3,bb3,d4]@7 ~ [g3,bb3,d4]@2 ~@2", BO: "[g3,bb3,db4]@5 ~ [gb3,a3,c4]@5 ~ [gb3,c4,eb4]@2 ~@2",
BP: "[g3,bb3] ~@7, d4 ~@15", BQ: "~@4 g2 ~@3",
})).s("gm_trombone").gain(0.46)
// bass · tuba
const bass = note(`<
A B C D A E F@2 G@3 H I J K L M@2 N H O P Q R S T U V W X Y Z H@4 P@2 H P AA AB AA AC AD AE AD AF AG AH AI AJ AK AL AM
AN AO AP AQ AR AQ@2 AS AT AU AV AQ AR AQ@2 AS AT AU AV AW AX AY AZ BA BB BA BC BD BE BD BE BF BG AU BH AU BI AU BH BJ
BK
>`.pickRestart({
A: "f2@7 ~ eb2@6 ~@2", B: "db2@5 ~@2 d2 ~@4 e2@3 ~, ~@6 c2@5 ~@5", C: "f2@7 ~ eb2@7 ~", D: "db2@6 c2@5 ~ e2@2 ~@2",
E: "db2@5 ~ c2@5 ~ e2@2 ~@2", F: "[f2@2 ~@6 db2@5 ~ c2@15 ~@3]/2", G: "f2 ~@3 c2 ~@3", H: "f2 ~ c2 ~",
// … 69 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.