0:00/0:00
// Soft as Velvet — Basie
// 65 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 55 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · "Bass"
const bass = note(`<
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z@2 AA AB AC AD AE AF AG AH AI@2 AJ AK AL@2 AM AN AO AP AQ AR AS AT
AU AV AW AX AY ~
>`.pickRestart({
A: "a#1@2 f2@3 ~ c3@19 ~@23", B: "f#1@3 c#2@3 ~ c3@22 ~@19", C: "f2@3 c3@3 g3@31 ~@11", D: "~ c#2@2 g#2@3 g3@31 ~@11",
E: "c2@3 g2@3 d3@26 ~@16", F: "~@24 c3@11 c2@12 ~", G: "~ g2@12 ~@11 g2@13 ~@11", H: "c2@19 g2@6 c3@10 ~ f#2@12",
I: "f2@4 c3 a2 f2@3 c2@3", J: "b1@12 ~@13 f#2@6 g2@6 g#2@6 a2@5", K: "a#2@15 ~ a#1@3 f2@4 ~ e2@12 ~ e2@11",
L: "d#2 ~ d#2 ~", M: "g#2@15 ~ g#2@4 d#2@4 g#1@18 ~ g#1@5", N: "f2 d#2 d2 ~",
O: "g2@17 d3@3 ~ a#2@4 g2@15 ~ g2@3 a2@4", P: "a#2 a#1 c2 c3", Q: "~ f2@19 c2@4 f2@16 c3@3 ~ f2@4",
R: "e2@20 b1@4 d#2@5 ~ f3@3 e3@3 d3@3 c3@3 b2@2 a#2@3 ~", S: "a2@16 a2@4 e2@3 a1@11 ~@14",
T: "d2@12 ~@12 c2@11 ~ c2@12", U: "~ b1@11 b2@11 a#2@12 a#1@13", V: "a1@12 a2@11 ~ d#2@6 e2@6 f2@6 f#2@6",
W: "g2@18 g1@5 g2@13 ~ c#2@11", X: "c2@3 g2 c3@2 f#2@2", Y: "f2@16 c3@3 ~ a2@4 f2@12 c2@11 ~",
Z: "[b1@18 ~ b1@5 b2@11 ~ b1@11 a#1@17 a#2@3 ~ f2@4 e2@12 e2@12]/2", AA: "d#2@12 ~@12 d#2@13 ~@11",
AB: "g#2@7 ~@5 g#2@6 g#1@6", AC: "g#2@12 g#1@12 g#2@11 ~ g#2@12", AD: "c#2@10 ~@14 c#2@16 g#2@3 ~ f2@4",
AE: "f#2@10 ~@13 f#2@13 ~@12", AF: "c2@11 ~@13 f#2@14 ~@10", AG: "f2@13 ~@11 b1@14 ~@10",
AH: "a#1@16 a#2@3 f2@3 ~ e2@12 e2@12 ~", AI: "[d#2@11 ~@13 d#2@15 ~@8 c#2@4 g#2@3 d#3@15 ~@27]/2",
AJ: "~@24 c#2@12 c#2@11 ~", AK: "e2@3 ~ b2@3 f#3@19 ~@22", AL: "[~@24 e2@11 ~ e2@11 a2@17 ~ a2@3 e2@4 a1@12 a2@12]/2",
AM: "g#2@10 ~ g#2@12 ~ g2@12 f#2@11 ~", AN: "f2@11 ~ f2@12 c3@11 ~ f2@12", AO: "a#2@12 a#1@12 a#2@12 ~ a#2@11",
AP: "e2@12 e2@12 b2@11 ~ b1@12", AQ: "a1@11 a2@12 ~ d#2@11 ~ d#2@12", AR: "d2@11 ~@13 g#2@11 ~@13",
AS: "g2@12 ~@11 g2@11 ~@14", AT: "f2@3 c3@3 g3@26 ~@16", AU: "~@24 f2@11 ~ f2@12", AV: "c#2@3 g#2@3 g3@28 ~@14",
AW: "~@24 c#2@11 ~ c#2@11 ~", AX: "c2 g2 d3@9 ~@5", AY: "c2@9 ~@7",
})).s("gm_acoustic_bass").gain(0.31).pan(0.6)
// chords · piano · "Piano - T"
const piano = note("<A B@2 C@3 D E F G@8 H@2 I J K@8 L M N@2 O P@8 Q R S T@2 U V@4 W@3>".pickRestart({
A: "~ [f4,g#4]@3, a#2, ~ f3@15, ~ c4@7, ~@3 c#4@13", // Fm
B: "[~@13 [f4,g#4]@34 ~@13 [c4,d#4]@36, f#2@47 f2@48 ~, ~@3 c#3@44 ~@4 c3@45, ~@7 c4@40 ~@6 g3@42 ~, ~@10 c#4@37 ~@10 g#3@39]/2", // Fm Cm
C: "[~@13 [c4,d#4]@34 ~@50 c7@47, c#2@47 [c2,g2]@96 ~, ~ g#2@15 ~@32, ~@6 g3@42 [e3,a3,d4]@95 ~, ~@9 g#3@39 ~@48 c6@47 ~]/3", // Cm C5 Dsus2
D: "[b3,e4] d#4, [g2,f3]", E: "[c3,f3,a#3,d4]@23 ~ a#3@12 ~ [f#2,a#3]@11, ~@23 c3@25, ~ [e4,a4], ~@3 a#4",
F: "[f2,c3,a3,d4,g4]@35 ~@2 [d4,g4]@11, b4, ~@35 f2@13, ~@3 [c3,a3]", // Dm7 G5 F
G: "[~ [a3,d#4,f4]@23 [f#2,f3,a#3,d#4]@12 [g#2,f#3,c4,f4]@12 ~ [a#2,g#3]@22 ~ [e2,g#3]@23 ~ [g#3,a#3,c#4,f4]@24 g3@14 ~@10 [g#2,d#3,a#3,c4,d#4]@24 g#3@23 ~ [c4,d#4,g4]@22 ~@14 f4@12 ~@25 f3@23 ~@12 g#3@11 ~@13 c5@12 ~ [c3,a3]@47, b2@23 ~ e3@360, ~@48 [d4,g4]@23 [d4,f#4]@24 ~ d#2@48 ~@47 [g#2,g3]@23 ~ [d2,f#3]@25 ~ [g2,f#3]@47 [c#4,f4]@23 a#3@24 ~@49, ~@216 [c4,d#4]@24 [a#3,d4]@49 [a#2,a3]@23 [c3,e4,c#5]@24 [f2,d4,g4,b4]@48]/8", // F7 D#m Fm A#7 E A#m7 G# Cm …
H: "[~ d4@23 ~@12 b4@11 ~ [a2,g#3,c5]@24 g3@24, [e2,a3,a4]@23 ~ [e2,g#3,d4,f4,a#4]@23 [c4,e4]@25 ~@24]/2", // Am A5 A#7 C
I: "[d2,g3,a3,c4,e4]@23 ~ [c3,a3,d4,f#4]@12 [c3,g3,a#3,d#4]@12", J: "[b2,f#3,d4,f#4]@24 [a#2,g#3,c4,d4,f4]@23 a2",
K: "[[g3,c4,e4]@24 [d#2,a#2,g3,c4]@5 ~ [b2,g#3,c#4]@5 [f2,d#3,a3,d4]@6 [f#2,d#4]@6 ~@36 c#2@13 ~ c2@22 ~@13 [f#2,a#4]@11 ~ [c3,a3,d4,g4,b4]@36 [f2,c3,a3,d4,g4]@12 [b2,a3,d#4,f4,g#4]@47 ~ [a#2,g#3,d4,g4]@24 [e2,g#3,d4,f#4]@24 ~ [a#3,c#4]@23 ~@12 e4@12 [g#2,f#3,a#3,c#4,d#4]@47 ~, ~@29 e2@6 ~@6 e3@343, ~@41 a#3@55 [f3,g3,a#3,d4]@24 [c3,e4,a4]@24 ~@240, ~@47 [g2,f3,b3,e4]@49 ~@47 f2@36 ~@109 [d#2,g#3,f4]@24 [d#2,g3,c#4,f4]@24 ~@48, ~@72 d#4@24 ~@23 a#3@24 ~@241]/8", // C Cm7 C#7 Dm D#m F# G Dm7 …
L: "[g#2,f#3,a3,c4,f4]@47 ~", M: "d#4@36 d#4@11 ~, [c#2,f3,g#3,c4]",
N: "[[b3,e4]@24 a#3@23 ~ [c2,g3,a#3,d#4]@23 ~ f#2@23 ~, e3, f#2@48 ~@23 [g#3,a#3,c#4]@24 ~]/2", // E5 Cm7 A#m7
O: "[f2,d#3,g3,a3,c4]@23 ~ [b2,d#4,f4]@24, ~@23 a3@24 ~", // F7 Fm7b5
P: "[[a#2,g#3,d4,g4]@24 [e2,g#3,d4,f#4]@23 [d#2,g#3,c#4,f4]@24 ~ [d#2,g3]@23 c#2@3 ~@3 d#3@3 ~@3 [g#3,b3,d#4]@57 ~@5 [g#3,b3,d#4]@11 ~ [g#3,b3,d#4]@10 ~@14 [b3,d4,f#4]@57 ~@2 [b3,d4,f#4]@11 ~ [e2,b2,g3]@12 [a2,g3]@24 ~ a#3@22 [g#2,f#3,a#3]@23 ~ [g2,f3,b3]@12 [f#2,a#3]@13, ~@71 [c#4,f4,c5]@23 ~@4 g#2@5 ~ e3@275 ~@5, ~@168 [c#2,g#2,f3]@12 [c#2,g#2,f3]@12 e2@10 g3@60 ~@13 b3@36 ~@73, ~@195 b2@66 ~@2 [e2,b2,g3]@12 ~@37 [a2,g3,c#4]@23 ~@49, ~@198 f#3@63 ~@14 [d4,f#4]@14 ~@95]/8", // Gm E7 C# D# G#m Bm Em A7 …
Q: "~ a3@34 ~ [f2,c3,a3,d4,g4,c5]@12, [f2,c3,g4,b4,e5]@35 ~@13", // Dm7 Cmaj7
R: "[a#2,g#3,c4,d#4,g4]@12 ~ d4@11, ~ [a#2,g#3,f4], ~@25 c4@23", // Cm7 A#7
S: "~ g4@23 ~ d4@22 ~, [e2,b2,g3,d4]@24 [a#2,g#3,c4,f4]@23 ~", // Em7 Fm
T: "[[a2,g3,b3,c#4,e4]@22 ~@13 a4@12 ~ [d2,f#3]@24 [g#2,f#3,c4,d#4]@23 ~, ~@23 [d#2,c#4,f4]@24 ~@49, ~@23 a4@12 ~@61, ~@24 g3@23 [c4,d#4]@24 ~@25]/2", // A7 D G#7 C# Cm
U: "[g2,f3,a3,c4,d4]@23 ~@2 f3@21 ~@2, ~@23 [a3,e4]@24 ~, ~@24 [g2,b3]@23 ~", // Dm7 A5 G
V: "[~@13 c4@82 ~@14 [c4,d#4]@83, f2@12 d#4@83 ~@10 g#3@86 ~, ~@3 c3@92 c#2@96 ~, ~@6 g3@89 ~@4 g#2@92 ~, ~@9 g#3@86 ~@7 g3@89 ~]/4", // Cm
W: "[~@12 [b3,d4]@109 ~@23, c2@2 ~, ~ g2@32 ~@15, ~ e3@16 ~@7, ~@3 a3@32 ~@13]/3", // Bm
})).s("gm_piano").gain(0.31).pan(0.4)
// other · alto sax
const alto_sax = note("<A@5 ~@4 B C D@4 E F ~@3 G@2 H@4 ~@2 I J K@4 L@2 ~@3 M@2 N O@2 P@2 Q@2 ~@7>".pickRestart({
A: "[~@45 c#4@5 ~@43 c#4@5 ~@43 g#3@5 ~@43 g#3@5 ~@46, ~@6 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@7 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@7 g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~@7 g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~@49, ~@9 c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~@13 c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~@13 g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~@13 g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~@52]/5",
B: "~@24 d#4@6 e4@6 ~ f4@6 f#4@5", C: "~ g4@22 f#4@25", D: "[f4@21 d#4 d4 c4@23 ~ c4@68 ~@5 c4@23 a#3@49]/4",
E: "f4@23 a4@12 ~ g#4@12", F: "g4", G: "[~@11 d4@8 g4@11 f4@4 ~ d4@3 c4@4 ~ d4@29 ~@24]/2",
H: "[~@6 b3@3 e4@3 f4@3 g#4@3 b4@3 e5@3 d#5@8 ~ c5 a#4@13 d5@24 ~ a4@4 ~@7 g#4@8 g4@36 g4@4 ~ f4@8 d#4@47 ~@5, ~@16 d5 ~@79]/4",
I: "~@9 [f4,f#4]@2 g4 g#4@36", J: "c4@10 a3 a#3 b3 c4 c#4 d4",
K: "[d#4@41 ~@5 a3 ~ b3@23 a#3@72 a3@30 ~@19, ~@23 g#3 ~@72, ~@47 a#3@2 ~@143]/4",
L: "[~@12 g4@10 ~ f#4@16 g4@3 f#4@4 f4@24 d4@2 c4@24, ~@70 d#4 ~@25]/2", M: "[~@47 d4@25 d#4@24]/2",
N: "c#4@11 c4@13 e4@11 g#4@12 ~", O: "[g4@11 g4@9 g4@25 ~@2 g4@13 f4@12 c4@19 ~@5]/2",
P: "[~@11 d4@8 ~ d4@16 d4@7 ~ c#4@27 f4@23 ~@2, ~@71 d#4 ~@24]/2",
Q: "[~@11 a#3 b3@12 a#3@15 b3@4 a#3@4 a3@49, ~@9 g#3@2 ~@85, ~@5 a3 ~@42]/2",
})).s("gm_alto_sax").gain(0.3).pan(0.7)
// other · piccolo · "Alto Sax"
const piccolo = note("<~@52 A@3>".pickRestart({
A: "[~@24 b5@3 c6@3 b5@3 c6@3 b5@3 c6@3 b5@2 c6@3 b5@74 ~@23]/3",
})).s("gm_piccolo").gain(0.4).pan(0.7)
// other · tenor sax
const tenor_sax = note(`<
A@5 B ~@3 C D E@2 F G H I ~@3 J@2 K L@3 ~@2 M N O P@2 Q R@2 S@2 T@3 U@3 V@2 W@2 X@4 Y@3
>`.pickRestart({
A: "[~@45 c#4@5 ~@43 c#4@5 ~@43 g#3@5 ~@43 g#3@5 ~@22 b3@24, ~@6 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@7 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@7 g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~@7 g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~ g3@5 ~@7 d3@5 ~ f#3@5 ~ f#3@5 ~@25, ~@9 c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~@13 c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~@13 g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~@13 g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~ g#3@5 ~@13 d#3@5 ~ g3@5 ~ g3@5 ~@22]/5",
B: "a#3@41 ~@7", C: "~@23 a#3@7 b3@6 c4@6 c#4@6", D: "~ d4@22 ~ d4@24",
E: "[c#4@21 c4 ~ a3 g3@23 a#3@24 g#3@24 ~, ~@11 a#3 ~@36]/2", F: "g3@3 ~ f#3@4", G: "f#3 f3", H: "c#4@23 ~ e4@24",
I: "d4", J: "[~@11 d4@8 g4@12 f4@4 d4@4 c4@3 d4@30 ~@24]/2", K: "~@6 b3@3 e4@3 f4@3 g#4@3 b4@3 e4@3 d#4@9 ~ a#3@13 ~",
L: "[d4@24 e4@4 ~@7 e4@7 d4@37 d4@4 ~ d4@7 ~ a3@47 ~@5]/3", M: "~@9 [f4,f#4]@2 g4 g#4@36",
N: "c4@10 a3 a#3 b3 c4 c#4 d4", O: "d#4@41 ~@6 [g#3,a3]", P: "[b3@23 ~ a#3@72, a#3 ~@95]/2", Q: "a3@5 ~@3",
R: "[~@12 d4@35 c#4@24 g3@23 ~@2]/2", S: "[~@5 d#3@3 e3@3 b3@83 ~@2]/2", T: "[~@6 f#3@3 g3@3 d4@83 b3@24 c#4@25]/3",
U: "[a#3@11 a#3@11 ~ b3@12 d#4@12 d4@12 d4@8 ~ d4@26 ~ d#4@24 g#3@21 ~@4]/3",
V: "[~@11 b3@8 c4@16 ~ c4@8 b3@26 c4 c#4@23 ~@2]/2",
W: "[~@10 a#3 b3@12 a#3@16 ~ b3@3 a#3@4 a3@49, ~@9 [g#3,a3]@2 ~@85]/2", // Amaj7
X: "[~@4 g3@11 ~, ~@6 g3@5 ~ g3@5 ~ g3@5 ~@73, ~@9 g#3@5 ~ g#3@5 ~ g#3@5 ~@70]/2",
Y: "[~ b3@4 ~, ~@6 d3@5 ~ f#3@5 ~ f#3@5 ~@121, ~@9 e3@5 ~ g3@5 ~ g3@5 ~@118]/3",
})).s("gm_tenor_sax").gain(0.48).pan(0.6)
// other · tenor sax
const tenor_sax_2 = note("<~@9 A B C@3 ~ D E ~@6 F@3 ~@8 G@2 ~@3 H@5 I@2 ~@9>".pickRestart({
A: "~@24 e3@6 f3@6 f#3@6 ~ g3@5", B: "~ g#3@23 g#3@24", C: "[g#3@20 f#3@2 f3@2 c#3@23 d#3@66 ~@31]/3",
D: "a3@11 g#3@13 a#3@24", E: "a3", F: "[~@24 a#3@4 ~@7 a#3@8 a3@36 a3@5 a3@7 ~ f3@47 ~@5]/3",
G: "[~@12 g#3@34 ~ g#3@22 g3 ~ c#3@23 ~@2, ~@35 [d#3,f3] ~@12]/2", // D#sus2
H: "[~@47 g3@49 f#3@10 ~ f#3@12 f3@12 a#3@12 a3@12 a3@8 ~ a3@26 ~ g#3@23 ~ d3@19 ~@6]/5",
I: "[~@11 g3@9 g#3@16 g#3@8 g3@52]/2",
})).s("gm_tenor_sax").gain(0.25).pan(0.6)
// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
A B C D E@2 ~@3 F G H@4 I J ~@4 K@2 L@3 ~@2 M N O ~ P@2 Q@4 R@3 S T@2 U@2 V@6 W@3
>`.pickRestart({
A: "a#2 f3@15", B: "f#2 c#3@15", C: "f2 c3@15", D: "c#2 g#2@15", E: "[c2@5 g2@84 ~@7]/2", F: "~@4 f#3 g3 g#3 a3",
G: "a#3@21 ~ f3@2 e3@24, ~@21 [g3,g#3]@2 ~@25", H: "[d#3@23 d#3@23 ~ g#3@67 ~@6 d3@23 g3@49]/4", I: "a#3@23 c4@24 ~",
J: "f3", K: "[~@24 d#3@6 e3@6 f3@5 f#3@5 ~ g3@48 ~]/2",
L: "[c4@7 c4@5 c4@6 ~ c4@4 c4@4 ~@7 f#3@8 f3@36 ~ f3@5 c4@8 b3@46 ~@6]/3", M: "~@36 g#3@11 ~",
N: "g#3@11 g#3@8 ~ g#3@4 ~@7 g#3@17", O: "c#3@7 ~", P: "[~@12 c4@12 f#3@23 f3@24 b3@23 ~@2]/2",
Q: "[~@12 a#3@9 g#3 ~ f3 e3@23 d#3@48 c#3@3 ~ g#3@68 g#3@12 g#3@13, ~@11 g3 ~@84]/4",
R: "[e3@4 b3@67 e3@11 ~ e3@12 a3@24 ~ a3@24]/3", S: "g#3@23 g3@12 f#3@10 ~@3", T: "[f2@12 f2@8 f2@27 a#2@44 ~@5]/2",
U: "[~@11 e3@8 ~ d#2@4 a#2@12 ~ a#2@7 a2@24 [g2,g#2]@2 f2 d#2@23 ~@2]/2", // G#maj7
V: "[~@11 d2@11 ~@2 g#2@23 g2@48 f2@4 c3@86 ~@6 c#2@4 g#2@92 c2, ~@22 d#2@2 g2 ~@263, ~@23 f2@2 ~@263]/6",
W: "[~@3 g2@119 ~@22]/3",
})).s("gm_baritone_sax").gain(0.48).pan(0.6)
// chords · trumpet
const trumpet = note("<~@12 A@2 B C@3 ~@3 D@5 ~@2 E F@2 ~@8 G@7 ~@9>".pickRestart({
A: "[~@47 a#4@48 ~, ~@43 d#4@2 g4@2 ~@49, ~@22 f4 g#4 ~@24]/2", B: "a4@43 ~@5",
C: "[~ f4@23 e4@23 d4@4 g4@3 b4@3 c5@3 b4@3 c5@3 b4@3 c5@3 b4@36 a4@11 ~ a#4@23 ~]/3",
D: "[~@19 [d4,d5]@5 [f4,f5]@11 [g4,g5]@12 [g#4,g#5]@44 [f4,f5]@4 ~ [a#4,f5,a5]@7 ~ [a#4,a5]@3 ~ [a#4,d5,f5,a#5]@6 ~ [f4,a#4,d5,a#5]@4 ~ c6@5 ~@6 [a#4,c#5,a#5,c#6]@7 ~ [b4,d5,g5,b5]@36 ~ c5@3 ~ [f4,a4,f5]@8 [d#4,g#4,b4,d#5]@47 ~@5, ~@95 [a4,d5]@8 [a4,d5,f5]@4 f4@7 f5@5 [a4,c5,e5,a5]@4 ~@7 f#5@8 d6@37 [c#5,f5,a5,c6]@4 c5@8 ~@53]/5", // D F G G# F A#maj7 A# A#m …
E: "~@24 [c#4,f#4,a#4,c#5]@7 ~ c5@3 ~ [c#4,a#4,c#5,f5]@7 ~ [d#5,g#5]@4, ~@19 [f#3,c#4,f#4,a#4]@2 [g#3,g#4,c5]@2 a#3@7 ~@5 f4@8 [d#4,g#4,c#5]@5, ~@20 a#3@2 [c4,d#4]@3 ~@6 [c4,d#4,g#4,d#5]@5 ~@12", // F# A#m G#5 F# G# C#sus2 Cm G#
F: "[[f4,a4,c5,f5,a5]@12 [c4,f4,a4,c5,f5]@8 [a3,c4,f4,a4,c5]@4 ~@6 a3 ~ a4@15 ~ [c4,f4]@43 ~@5, ~@31 [a3,c4,f4]@16 [g#3,d#4,g#4]@44 ~@5]/2", // F F5 F G#5
G: "[~@47 e4@13 f#4@12 g4@12 a4@11 ~ [a#3,c#4,f4]@11 ~ [c4,g#4,c5]@11 [c#4,e4,a4,c#5]@12 [d#4,g#4,c5,d#5]@12 ~ [d4,e4]@32 ~@3 [c4,d4,f4,a4,c5]@4 [d4,e4,g4,b4,d5]@3 [e4,f4,a4,c5,e5]@2 ~@4 g4@11 ~ [g#4,c5]@10 a5 [c5,c6]@13 [g#4,g#5]@7 ~ g4@71 ~@29, ~@95 a#4@12 d#4@13 ~@23 [g4,b4,e5]@31 ~@14 [f4,f#4,a#4,c#5,f5]@2 [f#4,g4]@2 ~@11 [f4,f5]@13 ~@120, ~@189 [b4,d5,f#5]@2 [g#4,c5,d#5,g5]@13 ~@10 g5@2 ~@19 g5@72 ~@29]/7", // A#m Fm A G# Dsus2 Dm7 Em7 Fmaj7 …
})).s("gm_trumpet").gain(0.64).pan(0.4)
// chords · muted trumpet · "Trumpet"
const muted_trumpet = note("<~@52 A@3>".pickRestart({
A: "[~@24 [f#4,b4,c#5,e5,g#5]@3 [g4,c5,d5,f5,a5]@3 [f#4,b4,c#5,e5,g#5]@3 [g4,c5,d5,f5,a5]@3 [f#4,b4,c#5,e5,g#5]@2 [g4,c5,d5,f5,a5]@3 [f#4,b4,c#5,e5,g#5]@3 [g4,c5,d5,f5,a5]@3 [f#4,b4,c#5,e5,g#5]@73 ~@24]/3", // C#m7 Dm7 C#m7 Dm7 C#m7 Dm7 C#m7 Dm7 …
})).s("gm_muted_trumpet").gain(0.4).pan(0.4)
// other · trombone
const trombone = note("<A B C@2 D@2 ~@11 E@2 F G@3 H@3 I J@2 K L M N O ~@2 P@2 Q@3 R@2 S T@2 U V W@4 X@3>".pickRestart({
A: "~ g#4@3", B: "~@13 g#4@35", C: "~ d#4@3", D: "[d4@89 ~@7]/2", E: "[f#4@24 f4@23 e4@48 ~]/2",
F: "e4@23 d4@13 d#4@11 ~", G: "[~@12 d4@7 ~ d4@15 ~ d4@8 d4@22 ~@6 c4@6 c#4@5 d4@6 d#4@6 e4@24 d#4@23 ~@2]/3",
H: "[f4@6 f4@5 d4@6 ~ f4@5 a4@5 ~@7 g#4@7 g4@37 ~ g4@4 d4@7 d#4@47 ~@6]/3", I: "~@7 g4@17 f#4@24",
J: "[f4@24 c4@12 b3@7 a#3@40 ~@2 c#4@11]/2", K: "f4@11 ~ f4@8 c4@4 ~@8 c4@16", L: "g#3@7 ~", M: "g#3@23 ~",
N: "~@12 g4@11 ~ g#4@24", O: "c4@23 f4@25", P: "[~@11 d#4@60 ~ d#4@12 d#4@12]/2",
Q: "[~@12 f#4@58 ~@2 f#4@11 d4@37 c#4@24]/3", R: "[c#4@11 c4@12 c#4@12 d#4@12 d4@12 d4@8 d4@26 ~@3]/2",
S: "d#4@23 d4@19 ~@6", T: "[~@11 g4@8 ~ g4@16 g4@7 ~ e4@27 f4@24 ~]/2", U: "~@11 d#4@37", V: "e4@47 ~",
W: "[~@2 d#4@13 ~]/2", X: "[d4@121 ~@23]/3",
})).s("gm_trombone").gain(0.48).pan(0.4)
// other · trombone
const trombone_2 = note("<A B C D E F ~@11 G H I J@6 K L@2 M@3 N@2 ~@2 O@2 P@3 Q@3 R@2 S T U@2 V@2 W@3>".pickRestart({
A: "~@3 f3@3 c4@3 c#4@2 f4@35 ~@2", B: "~@3 c#3@3 c4@3 c#4@4 f4@34 ~", C: "~@2 c3@4 ~@2 g#3@3 c4@37, ~@3 g3@2 ~@19",
D: "~@3 g#2@3 g3@3 g#3@3 c4@35 ~", E: "~@3 g2@3 d3@3 e3@3 a3@35 ~", F: "a#3@41 ~@7", G: "d4", H: "c4@47 ~",
I: "c4@2 a3 a#3",
J: "[~@11 a3@8 c4@16 ~ c4@7 ~ c4@22 ~@5 g3@6 g#3@6 a3@6 a#3@5 b3@48 ~ d4@7 ~ d4@5 a#3@5 ~ a#3@5 e4@4 ~@8 e4@8 d4@35 d4@6 a3@7 a3@47 ~@6]/6",
K: "~@6 d4@16 ~ d4@25", L: "[c#4@24 g3@12 g3@7 f#3@41 a#3@12]/2",
M: "[c4@11 ~ c4@8 a3@4 ~@7 a3@16 f3@43 ~@5 e3@47 ~@2]/3", N: "[~@12 d#4@11 d#4@24 a3@24 d#4@24 ~]/2",
O: "[~@2 g#2@3 d#3@3 e3@3 g#3@60 ~ g#3@11 ~ g#3@12]/2",
P: "[~@3 b2@3 f#3@3 g3@3 b3@59 ~ d4@11 b3@12 b3@25 a#3@23 ~]/3",
Q: "[a#3@11 a#3@11 ~ b3@12 a#3@12 a3@11 ~ a3@7 ~ a3@27 ~ c4@42 ~@7]/3", R: "[~@12 d4@7 d4@16 ~ d4@8 c#4@51 ~]/2",
S: "~@11 c4@36 ~", T: "c4@23 ~ b3@21 ~@3", U: "[~@3 c3@3 g3@3 g#3@3 c4@77 ~@7]/2",
V: "[~@2 g#2@3 g3@3 g#3@3 ~ c4@77 ~@7]/2", W: "[~@3 g2@3 d3@3 e3@3 a3@109 ~@23]/3",
})).s("gm_trombone").gain(0.4).pan(0.4)
// other · trombone
const trombone_3 = note("<A B C D E F ~@11 G@3 H@3 I@3 J@3 K@2 L M@2 ~@2 N@2 O@3 P@3 Q@2 R S T@2 U@2 V@3>".pickRestart({
A: "~@11 c#4@37", B: "~@13 a#3@35", C: "~@12 g#3@35 ~", D: "~@12 f3@35 ~", E: "e3", F: "f3@7 ~",
G: "[a3@24 g#3@23 g#3@25 g3@23 g3@24 f#3@12 g3@12 ~]/3",
H: "[~@12 f#3@7 g#3@16 ~ g#3@8 g3@22 ~@5 c#3@6 d3@6 d#3@5 ~ e3@5 f3@47 ~@3]/3",
I: "[a#3@6 a#3@6 g3@6 a#3@6 d4@4 ~@7 c#4@7 c4@36 ~ c4@5 f3@7 ~ f3@47 ~@5]/3",
J: "[~@7 g#3@15 ~ g#3@24 g#3@24 ~ c#3@12 c#3@7 ~ c#3@40 f#3@12]/3",
K: "[f#3@11 ~ f#3@7 f#3@4 ~@8 f#3@16 g#2@43 ~@6]/2", L: "c#3@47 ~", M: "[~@12 a#3@12 a#3@23 g3@24 b3@25]/2",
N: "[~@10 e3@61 e3@12 ~ e3@12]/2", O: "[~@12 g3@59 b3@12 ~ g3@11 g3@24 ~ g3@24]/3",
P: "[f#3@11 ~ f#3@11 f3@12 e3@12 c3@11 ~ c3@7 ~ c3@23 ~@5 g#3@44 ~@5]/3", Q: "[~@12 g3@7 g#3@16 ~ g#3@7 g3@52 ~]/2",
R: "~@11 f#3@37", S: "f3", T: "[~@11 g#3@77 ~@8]/2", U: "[~@11 f3@79 ~@6]/2", V: "[e3@121 ~@23]/3",
})).s("gm_trombone").gain(0.4).pan(0.4)
// other · trombone
const trombone_4 = note("<A B C@2 D@2 ~@11 E@3 F@3 G@3 H I@2 J@2 B K@2 ~ L@3 M@6 N@2 O P@8>".pickRestart({
A: "a#2", B: "f#2", C: "[f2@23 c#2@25]/2", D: "[c2@15 ~]/2", E: "[e2@47 a2@48 d3@24 c3@25]/3",
F: "[~@11 b2@8 a#2@15 ~ a#2@7 ~ a2@23 ~@5 d#2@6 e2@6 f2@5 f#2@6 ~ g2@48 ~]/3",
G: "[c3@6 c3@5 ~ c3@5 c3@5 ~ a#3@3 ~@9 a#3@7 a3@36 ~ a3@5 c3@7 b2@46 ~@7]/3", H: "~@7 a#2@17 e2@24",
I: "[d#2@23 ~ d#2@11 ~ d#2@8 g#2@39 ~ g#2@12]/2", J: "[~ g#2@10 ~ g#2@7 ~ g#2@4 ~@7 g#2@16 c#2@43 ~@6]/2",
K: "[~@11 c3@12 ~ e3@23 d#3@24 a3@24 ~]/2", L: "[~@47 c#2@72 ~ c#2@12 c#2@11 ~]/3",
M: "[e2@72 g3@11 f#3@12 a2@48 g#2@23 ~ g2@11 f#2@12 ~ f2@12 ~ f2@7 ~ f2@27 a#1@44 ~@5]/6",
N: "[~@11 e2@7 ~ a#2@12 f2@5 a#1@8 a1@27 d#2@24 ~]/2", O: "~@12 d2@11 g#2@25",
P: "[g2@47 f2@90 ~@6 c#2@89 ~@7 c2@122 ~@23]/8",
})).s("gm_trombone").gain(0.56).pan(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@5 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~@7
>`.pickRestart({
A: "x ~@10 x", B: "x",
})).gain(0.36)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<[x!2 ~@2 x ~ x ~]!5 ~@43 [x!2 ~@2 x ~ x ~]!5 ~@2>").gain(0.2)
// drums · snare
const snare = s("sd").struct(`<
~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7
// … 26 more lines
More by Basie
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.