0:00/0:00
// Mornin' — Al Jarreau
// 86 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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 · epiano2
const epiano2 = note(`<
A@2 B C D E B F G H I E J K B F G H I E L M@2 N O P@2 Q@2 R B S D K B F T H I E U V W X Y Z AA AB AC AD AE AF AG AH AI
AJ AK R B S D E B F G H I AL L M@2 AM O P@2 AN@2 AO AP AQ AR AS AT AO AU AO AP AQ AR AS AV AO AU AW ~@2
>`.pickRestart({
A: "[~@23 e4 [e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@2 a4, ~@12 [c8,d8]@4 [a6,b6] [e6,f#6,g6]@8 ~@23, ~@13 [a7,b7]@5 [c6,d6] [g5,a5,b5]@6 ~@20 c#5 ~@2, ~@14 [f#7,g7]@6 [d5,e5,f#5] [b4,c5] [g4,a4] f#4@2 ~@23, ~@15 [c7,d7,e7]@10 ~@23]/2", // A Bm Csus2 Asus2 Em Asus2 Csus2 G …
B: "[e4,a4,c#5]@3 [f#4,b4,d5]", C: "[e4,a4,c#5]@18 [e4,a4,c#5]@2 ~ [f#4,b4,d5]@2 ~",
D: "[e4,a4,c#5]@14 e4 [b4,e5,g5]@3 [a4,d5,f5]@3 [b4,e5,g5]@3", E: "[e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@3",
F: "[e4,a4,c#5]@17 a4 [e4,a4,c#5]@3 [f#4,b4,d5]@3", G: "[e4,a4,c#5]", H: "[g4,c5,e5]@12 ~@6 g5@5 ~, ~ [g4,b4,d5]",
I: "~@5 g5@4 ~@3 [b4,d5]@12, [g4,c5,e5]@12 g4 ~@11", J: "[e4,a4,c#5]@15 [b4,e5,g5]@3 [a4,d5,f5]@2 ~ [b4,e5,g5]@3",
K: "[e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@2 ~", L: "[e4,a4,c#5]@23 ~",
M: "[~@12 f5@11 ~, [a#4,d5]@23 ~, f5@11 ~@13, ~@9 a#5@14 ~]/2", // A#
N: "[f#4,a4,c#5]@17 ~ [f#4,a4,c#5]@3 [f#4,b4,d5]@2 ~, ~@21 c#5 ~@2", O: "[f#4,a4,c#5]@23 ~",
P: "[~@9 f5@3 d5@11 ~, [f4,a#4]@23 ~, d5@11 ~@13]/2", // A#5
Q: "[~@24 g6@11 ~@4 [b4,e5,g5]@3 [a4,d5,f5]@2 ~ [b4,e5,g5]@3, [g4,b4,d5]@3 ~]/2", // Em Dm Em G
R: "[e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@2 a4, ~@21 c#5 ~@2", S: "[e4,a4,c#5]@6 [e4,a4,c#5] [f#4,b4,d5]",
T: "[d4,f#4,a4] [f#4,a4,b4] [b4,d5] [b4,d5,e5,g5], ~@12 g4@11 ~", // D B7 Bm Em7
U: "[f#4,a4,c#5]@5 ~ [f#4,a4,c#5]@5 ~ [g4,b4,d5]@5 ~ [a4,c#5,e5]@6", V: "[g4,b4,f#5]", W: "[e4,g4,c#5]",
X: "[f#4,a4,c#5]", Y: "f5@6 f#5@6 [a5,c6]@4 [g5,b5]@4 [f#5,a5]@3 ~, [b4,d#5] ~", Z: "a5@2 ~ [e5,g5]@3, f#5 ~, ~ b5@2",
AA: "[b4,c#5,e5]", AB: "[a#4,d#5,f#5]", AC: "~@6 [d#4,f#4,a#4]@6 [e4,g#4,b4]@4 ~@2 [f#4,a#4,c#5]@5 ~",
AD: "[f#4,b4,d#5]@23 ~", AE: "a#4@11 a4@12 ~, d#4, f#4@11 ~", AF: "[f4,g#4,c#5]", AG: "[d#4,f#4,a#4]@23 ~",
AH: "[d#4,b4], f#4@11 ~", AI: "[f4,c#5], g#4@11 ~", AJ: "[f#4,a#4,d#5]@23 ~",
AK: "[f#4,b4,d#5]@6 [g#4,c#5,f5]@5 ~ [b4,d#5,f#5]@5 ~ [c#5,f5,g#5]@5 ~", // B C# B C#
AL: "[e4,a4,c#5]@17 ~ [e4,a4,c#5]@2 ~ [f#4,b4,d5]@2 ~", // A Bm
AM: "[f#4,a4,c#5]@17 ~ [f#4,a4,c#5]@3 [f#4,b4,d5]@3, ~@21 c#5 ~@2", // F#m Bm
AN: "[~@24 g6@11 ~@4 [b4,e5,g5]@3 [a4,d5,f5]@2 ~ [b4,e5,g5]@3, [f#4,b4,d5]@3 ~]/2", // Em Dm Em Bm
AO: "[f4,a#4,d5]@17 ~ [f4,a#4,d5]@3 [g4,c5,d#5]@3", AP: "[f4,a#4,d5]@3 [g4,c5,d#5]",
AQ: "[f4,a#4,d5]@17 a#4 [f4,a#4,d5]@3 [g4,c5,d#5]@3", // A# Cm
AR: "[d#4,g4,a#4] [g4,a#4,c5] [c5,d#5] [c5,d#5,f5,g#5], ~@12 g#4@11 ~", // D# C7 Cm Fm7
AS: "[g#4,c#5,f5]@12 ~@6 g#5@5 ~, ~ [g#4,c5,d#5]", AT: "~@5 g#5@4 ~@3 [c5,d#5]@12, [g#4,c#5,f5]@12 g#4 ~@11",
AU: "[f4,a#4,d5]@5 [c5,f5,g#5] [a#4,d#5,f#5] [c5,f5,g#5]", AV: "~@5 g#5@4 [c5,d#5]@15, [c#5,f5] ~, g#4@3 g#4 ~@4",
AW: "[f4,a#4,d5]@23 ~", // A#
})).s("gm_epiano2").gain(0.25).pan(0.3)
// bass · electric bass finger
const bass = note(`<
~ A B A C D E F G H I J K L E F G M I J N O P Q R S T U V A B A W A X D Y Z AA A AB AC AD AE AF AG AH AI AJ AK AD AL
AM AK AN AF AO AP B A AQ L E D G AR I AS K AT P Q AU AV T U AW AX AY AX AZ BA BB AX BC BD AY BE BF BA BB AX BC BG@2 ~
>`.pickRestart({
A: "d2@2 ~@6 a1 b1@2 a1 d2@2 ~@10", B: "d2@2 ~@9 d2!2 ~@11", C: "d2@2 ~@9 d2 d2@3 a1@3 g1@3 a1@3",
D: "d2 ~@7 a1 b1@2 a1 d2@2 ~@10", E: "d2 ~@10 d2 d2@2 d2 ~@9", F: "d2 ~@7 a1 b1@2 a1 d2 ~@11",
G: "d2@2 ~@9 d2 d2@2 d2 ~@9", H: "a1@2 ~@9 a1 a1@2 ~@10", I: "a1@2 ~@3 g#2 a2@2 ~@3 e2 a1@2 ~@10",
J: "d2@2 ~@6 a1 b1@2 ~ d2@2 ~@10", K: "d2@2 ~@9 d2 d2@2 ~ a1@3 g1@2 ~ a1@2 ~",
L: "d2@2 ~@6 a1 b1@2 a1 d2@2 ~@10, a1 ~@23", M: "a1@2 ~@9 a1!2 ~@11", N: "d2@2 ~@9 d2 d2@2 d2 ~@3 d1@5 ~",
O: "a#1@2 ~@9 a#1 a#1@2 ~@10", P: "a#1 ~@10 a#1 a#1@5 ~ a#1@6", Q: "d2@2 ~@6 a1 b1@3 d2@2 ~@10",
R: "d2@2 ~@9 d2 d2@2 d2 ~@3 d1@6", S: "c2 ~@10 c2 c2@2 c2 ~@9", T: "c2@2 ~@9 c2 c2@5 ~ c2@6",
U: "a1@10 ~ a1 a1@2 ~@10", V: "a1@2 ~@6 e1 g1 ~ e1 a1@2 ~@4 a1@2 ~@4", W: "d2@2 ~@7 d2@2 d2 ~@12",
X: "d2@2 ~@9 d2 d2@2 ~@10", Y: "d2@5 ~ b1@6 g1@6 e1@6", Z: "a1@3 ~@8 a1!2 ~@11", AA: "a1@4 ~ g#2 a2@4 ~ e2 a1@11 ~",
AB: "d2@2 ~@4 d2@5 ~ e2@6 f#2@5 ~", AC: "g2@10 ~ g2 g2@8 ~ g2@3", AD: "c#2@10 ~ c#2 c#2@8 ~ c#2@3",
AE: "f#2@9 ~@2 f#2 f#2@8 ~ f#2@2 ~", AF: "b1@10 ~ b1 b1@8 ~ b1@2 ~", AG: "e2@10 ~ e2 e2@8 ~ e2@2 ~",
AH: "c#2@10 ~ c#2 c#2@6 ~@3 c#2@3", AI: "b1@9 ~@2 b1 b1@5 ~ f#1@6", AJ: "b1@9 ~@2 b1 c#2@8 ~ c#2@3",
AK: "g#1@10 ~ g#1 g#1@8 ~ g#1@2 ~", AL: "f#1@10 ~ f#1 a#1@7 ~@2 a#1@3", AM: "d#2@9 ~@2 d#2 d#2@8 ~ d#2@2 ~",
AN: "a#1@10 ~ a#1 a#1@8 ~ a#1@2 ~", AO: "c#2@5 ~ c#2@5 ~ c#2@5 ~ c#2@6", AP: "d2@2 ~@6 a1 b1@2 a1 d2 ~@11",
AQ: "d2 ~@8 d2@2 d2 ~@12", AR: "a1 ~@10 a1 a1@2 ~@10", AS: "d2@2 ~@6 a1 b1@2 ~ d2 ~@11",
AT: "a#1@2 ~@9 a#1 a#1@2 ~@10, d1 ~@23", AU: "d2@2 ~@9 d2!2 ~ d2 ~@3 d1@6", AV: "c2@2 ~@9 c2 c2@2 c2 ~@9",
AW: "a1@2 ~@6 e1 g1@2 e1 a1@2 ~@4 a1@2 ~@4", AX: "d#2@2 ~@6 a#1 c2@2 a#1 d#2@2 ~@10", AY: "d#2@2 ~@9 d#2 d#2@2 ~@10",
AZ: "d#2@5 ~ c2@6 g#1@6 f1@6", BA: "a#1@3 ~@8 a#1 a#1@2 ~@10", BB: "a#1@4 ~ a2 a#2@4 ~ f2 a#1@11 ~",
BC: "d#2@2 ~@9 d#2 d#2@2 ~ a#1@3 g#1@3 a#1@2 ~", BD: "d#2 ~@7 a#1 c2@2 a#1 d#2@2 ~@10",
BE: "d#2@2 ~@6 a#1 c2@2 a#1 d#2 ~@11", BF: "d#2 c2 g#1 f1", BG: "[[d#1,d#2]@37 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.48)
// chords · electric guitar muted
const electric_guitar_muted = note(`<
~ A B C B C B C B D E A B C B C B D E C B F G C B H G I J C B A B C B C B D E C B ~@16 C B C B A B C B D E C B H G A B
K G L J M N M N O P M N M N M N O P Q N ~@3
>`.pickRestart({
A: "[a3,c#4] ~ [a3,c#4]!2 ~ [a3,c#4] ~@2 [b3,d4] ~@8 [b3,d4] ~@2 [a3,c#4] [b3,d4] ~@2", // A Bm A Bm
B: "[a3,c#4] ~ [a3,c#4]!2 ~ [a3,c#4] ~@2 [b3,d4] ~@2 [a3,c#4] ~@12", // A Bm A
C: "[a3,c#4] ~ [a3,c#4]!2 ~ [a3,c#4] ~@2 [b3,d4] ~@8 [b3,d4] ~@3 [b3,d4] ~@2, ~@10 [a3,c#4] ~", // A Bm A
D: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [b3,d4] ~@8 [b3,d4] ~@2 [a3,c4] [b3,d4] ~@2", // Am Bm Am Bm
E: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [b3,d4] ~@2 [g3,b3] ~@12", // Am Bm G
F: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [a#3,d4] ~@8 [a#3,d4] [a3,c4]@2 [a3,c4] [a#3,d4]@2 ~", // Am A# Am A#
G: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [a#3,d4] ~@2 [g3,a#3] ~@12", // Am A# Gm
H: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [a#3,d4] ~@8 [a#3,d4] [a3,c4]@2 ~ [a#3,d4]@2 ~, ~@10 [a3,c4] ~", // Am A# Am A# Am
I: "[b3,d4] ~ [b3,d4]!2 ~ [b3,d4] ~@2 [c#4,e4] ~@8 [c#4,e4] [b3,d4]@2 ~ [c#4,e4]@2 ~, ~@10 [b3,d4] ~", // Bm C#m Bm C#m Bm
J: "[b3,d4] ~ [b3,d4]!2 ~ [b3,d4] ~@2 [c#4,e4] ~@2 [a3,c#4] ~@12", // Bm C#m A
K: "[a3,c4] ~ [a3,c4]!2 ~ [a3,c4] ~@2 [a#3,d4] ~@8 [a#3,d4] [a3,c4] ~@2 [a#3,d4]@2 ~, ~@10 [a3,c4] ~", // Am A# Am A# Am
L: "[b3,d4] ~ [b3,d4]!2 ~ [b3,d4] ~@2 [c#4,e4] ~@8 [c#4,e4] [b3,d4]@2 ~ [c#4,e4] ~@2, ~@10 [b3,d4] ~", // Bm C#m Bm C#m Bm
M: "[a#3,d4] ~ [a#3,d4]!2 ~ [a#3,d4] ~@2 [c4,d#4] ~@8 [c4,d#4] ~@3 [c4,d#4] ~@2, ~@10 [a#3,d4] ~", // A# Cm A#
N: "[a#3,d4] ~ [a#3,d4]!2 ~ [a#3,d4] ~@2 [c4,d#4] ~@2 [a#3,d4] ~@12", // A# Cm A#
O: "[a#3,c#4] ~ [a#3,c#4]!2 ~ [a#3,c#4] ~@2 [c4,d#4] ~@8 [c4,d#4] ~@2 [a#3,c#4] [c4,d#4] ~@2", // A#m Cm A#m Cm
P: "[a#3,c#4] ~ [a#3,c#4]!2 ~ [a#3,c#4] ~@2 [c4,d#4] ~@2 [g#3,c4] ~@12", // A#m Cm G#
Q: "[a#3,d4] ~ [a#3,d4]!2 ~ [a#3,d4] ~@2 [c4,d#4] ~@8 [c4,d#4] ~@2 [a#3,d4] [c4,d#4] ~@2", // A# Cm A# Cm
})).s("gm_electric_guitar_muted").gain(0.29)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
~ A@4 ~@8 B@4 C@2 D@2 E@4 F@8 G@3 H I@2 J@2 K@3 L@3 M N@3 O@3 P Q R S@4 G@3 H I@2 T@2 E@4 U@4 V@3 W X Y Z@2 AA ~@2 W X
Y Z@2 ~@3
>`.pickRestart({
A: "[[c#4,f#4]@29 ~@3, a4@19 ~@29]/4", B: "a5/4", C: "[[c5,e5] [b4,d5] [c5,e5] [b4,d5], g5]/2", D: "[c#5,f#5,a5]/2",
E: "[[d4,f4] [c#4,e4], a3]/4", F: "[g3@8 a3@8 c#4@13 ~@3, d4@48 a4@19 ~@29, f4@23 ~ f#4@63 ~@9]/8", G: "a5/3",
H: "d4@5 ~@7 g4@6 g5@6, [f#4,a4] d5, ~ b4@3", I: "[[c4,e4] [b3,d4] [c4,e4] [b3,d4], g4]/2",
J: "[[f#4,a4]@29 ~ [c#4,f#4,a4]@6 [d4,g4,b4]@6 [e4,a4,c#5]@6, c#4@13 ~@11]/2", // F#m G A
K: "[[d5,f#5] ~ f#4, g4@37 ~@35, ~ e5@2, ~@4 c#5@7 ~]/3", // D
L: "[f4 f#4@3 e4@4 c#4@4, b4@67 ~@5, d#5@23 ~ g4@30 ~@18]/3", M: "[b3,d#4,f#4]",
N: "[~ [f#3,b3,d#4] [g#3,c#4,e4] [a#3,f#4] g#4@4 f#4@4, ~ d#4@3, ~ b3@2]/3", // B C#m D#m
O: "[c#4@4 ~ f#4@3 [g#3,b3]@4, a#3@2 ~, f4@5 ~@7, ~ d#4@2]/3", P: "[a#3,c#4,f4]", Q: "[b3,d#4,f#4]@23 ~",
R: "[f#3,b3,d#4] [g#3,c#4,f4] [b3,d#4] [c#4,f4,g#4], ~@12 f#4@5 ~@7", // B C# B C#
S: "[[d4,f#4]@81 [d4,f#4,a4] ~ [d4,f#4,a4] ~@12, a4@19 ~@29]/4", T: "[c#4,f#4,a4]/2",
U: "[[g3,f4]@47 ~ a3@48, d4, ~@4 f#4@3 ~]/4", V: "a#5/3", W: "d#4@5 ~@7 g#4@6 g#5@6, [g4,a#4] d#5, ~ c5@3",
X: "[c#5,f5] [c5,d#5], g#5 ~@23", Y: "[c#5,f5] [c5,d#5]", Z: "[d5,g5,a#5]/2", AA: "a#5 ~@23",
})).s("gm_string_ensemble_2").gain(0.2)
// other · french horn
const french_horn = note("<~@40 A B C D E F G H ~ I J K L M N O ~@40>".pickRestart({
A: "~ c#4 d4 e4", B: "f#4@5 ~ d#4@6 e4@6 f#4@6", C: "g4@21 f#4 g4 ~", D: "g#4@11 ~ c#4@6 e4@6", E: "f4 f#4@2 ~",
F: "d4", G: "e4 c4", H: "c#4", I: "~@8 c#4 d#4 f#4 g#4", J: "a#4 a4", K: "g#4@3 c#4", L: "f4 f#4 c#4@2",
M: "d#4@21 c#4 d#4 ~", N: "f4@21 d#4 f4 ~", O: "a#4",
})).s("gm_french_horn").gain(0.33).pan(0.3)
// other · whistle
const whistle = note("<~@61 A@2 B C D E F G ~@27>".pickRestart({
A: "[f#6@2 a6 ~@2 a6@2 ~ a6@2 ~ f#6 a6@2 f#6 a6@2 b6@2 ~ c#7 ~@2 d7@12 ~ c#7@2 a6 b6 ~ f#6 ~@2 e6 ~ d6 ~]/2",
B: "f#6@8 ~ e6@2 d6 c#6@2 a5 ~@2 b5 ~@5 a5", C: "b5@2 c#6 d6@2 e6 f6@2 f#6 a6@2 b6 ~@2 c#7@2 d7 ~ e7 ~ f#7 ~ g7@2",
D: "a7@11 ~ g7@2 f#7@2 ~ e7 ~ e7 f#7@3 ~, ~@20 f7 ~@3", E: "d7@8 ~ [a6,b6] ~ a6@9 ~ g6@2 a6",
F: "f#6@8 d6 e6@3 d6@8 ~ b5@2 d6", G: "a5@13 ~@11",
})).s("gm_whistle").gain(0.3).pan(0.7)
// other · synth strings 1
const synth_strings_1 = note("<~@41 A B C D@3 E F G H I@2 J K E L M@2 ~@37>".pickRestart({
A: "~ f#4 g4 a4", B: "b4@5 ~ a#4@2 e5@2 d5@2, ~@5 c#5 ~@6, ~@11 b4@2 ~@11", C: "c#5",
D: "[~ d#5 e5 f#5@3 ~@2 g5@2 a5@2, ~@36 b4@31 ~@5]/3", E: "a#5", F: "~ a#4 b4 c#5", G: "d#5@8 c#5 d#5 f#5 g#5",
H: "a#5 a5", I: "[g#5@3 ~ f5 f#5 c#5 a#4, ~@18 c#5@13 ~@17]/2", J: "b4@3 f#5 g#5 a#5", K: "g#5 c#5",
L: "b4 a#4 g#4 d#5", M: "[c#5@19 ~@5]/2",
})).s("gm_synth_strings_1").gain(0.36)
// chords · epiano2
const epiano2_2 = note(`<
A@3 B@2 C@2 D@2 E@2 F G C@2 D@2 H@2 I@2 J@2 K@2 L@2 M@2 N@4 O@3 P Q@2 R@2 S T U V W X Y@2 Z AA AB AC AD AE AF AG AH@4
AI@2 D@2 H@2 I@2 J@2 K@2 L@2 AJ@2 AK@3 AL AM@2 AN AO AK@3 AL AM@2 AN AO AP@2 ~
>`.pickRestart({
A: "[~@24 [e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@3 [a4,c#5]@18 [a4,c#5,e5]@6, ~@11 d8@4 [a6,b6,c7]@2 [c6,d6] [g5,a5,b5] [d5,e5,f#5] [a4,b4,c5] c#4@18 ~@2 c#4@31, ~@12 [a7,b7,c8]@9 [f#4,g4]@2 a3@48 ~, ~@13 [f#7,g7]@3 [e6,f#6,g6]@8 d3@48, ~@14 [d7,e7]@11 ~@20 [a4,c#5] ~@2 e4@24]/3", // A Bm A Am Csus2 G D Am …
B: "[[c#4,e4,a4,c#5]@17 ~ [e4,c#5]@3 [f#4,b4,d5]@3 [e4,a4,c#5]@14 [d3,a3,c#4] [b4,e5,g5]@3 [a4,d5,f5]@3 [b4,e5,g5]@2 ~, [d3,a3]@19 ~@5, ~@17 c#4@21 ~@10, ~@3 a4 ~@4, ~@21 c#5 ~@26]/2", // A C#m Bm A Dmaj7 Em Dm Em …
C: "[[d3,c#4,e4,a4,c#5]@16 ~@2 [e4,a4,c#5]@3 [f#4,b4,d5]@2 ~@20 e5@5, ~@17 [d3,c#4]@31, ~ [e4,a4,c#5], ~@19 c#6@5, ~@41 a5@7]/2", // A Bm Dmaj7 A
D: "[~@17 e6@4 ~@12 e4@6 ~@6 c#5@3, [d3,c#4]@13 e4 a4@2, c#5 e7, a4@7 e6@9, e4@5 e5@11]/2", // Dmaj7
E: "[g4@10 g4@2 ~@6 g5@6 ~@23 a4, a3 [a3,c5,e5], [c5,e5]@12 a2@23 [a2,g4,b4,d5]@13, ~@12 [g4,b4,d5]@12 g4@11 ~@11 e4@2, ~@29 g5@13 g5@6]/2", // Am C G
F: "[d3,a3,c#4,e4,a4,c#5]@17 ~@4 [f#4,b4,d5]@3, ~@17 [d3,a3,c#4]@7, ~@3 [e4,a4,c#5]", // A Bm Dmaj7 A
G: "[d3,a3,c#4,e4,a4,c#5]@14 [d3,a3,c#4] [b4,e5,g5]@3 [a4,d5,f5]@3 [b4,e5,g5]@3", // A Dmaj7 Em Dm Em
H: "[g4@10 g4@2 ~@6 g5@6 ~@23 a4, a3@12 [a3,c5,e5]@11 e4, [c5,e5]@12 a2@23 a2@13, ~ [g4,b4,d5] g4 [g4,b4,d5], ~@29 g5@13 g5@6]/2", // Am C G
I: "[[c#4,e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@2 ~ e4@11 ~@10 a3@3, d3@7 c#5, ~@17 c#4@31, ~@8 c#5@5 a4@3, ~@2 a4 e4]/2", // A Bm
J: "[~@29 a#6@18 ~, [a#2,a#3,a4,d5,f5]@5 f7@7, ~@8 f6@15 a6@24 ~, ~@11 a5@36 ~, ~@14 a#5@33 ~]/2", // A#maj7
K: "[[d3,c#4,e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@3 e4@8 ~@10 e5@6, ~@17 [d3,c#4]@31, ~@21 c#5 ~@2 c#5@13 c#5@11, ~@12 a4@5 a4@7, ~@2 e4]/2", // A Bm Dmaj7
L: "[~@3 f5, [c3,c4,d5] g4, g4@7 g5@17, a#4@11 a#5@37, f5@8 f6@11 f5@3 a#4@26]/2", // Csus2
M: "[[b4,d5]@11 ~@33 [e4,f#4]@4, [a2,a3]@37 [c7,d7] [g6,a6,b6] [d6,e6,f#6] [b5,c6] [f#5,g5,a5] [c5,d5,e5] [g4,a4,b4]@5, g4@3 [e7,f#7,g7], ~@11 [b4,d5]@24 [a7,b7]@13, ~@11 g5@13 [b5,d6,g6]@10 c8@14]/2", // Bm Esus2 A Csus2 G D Cmaj7 F#m …
N: "[[d3,c#4,e4,a4,c#5]@17 ~ [e4,a4,c#5]@3 [f#4,b4,d5]@3 [e4,a4]@14 ~@4 [e4,a4,c#5]@3 [f#4,b4,d5]@2 a4 [d3,e4,a4,c#5]@17 ~@4 [f#4,b4,d5]@3 [d3,e4,a4,c#5]@14 [d3,c#4] [b4,e5,g5]@2 ~ [a4,d5,f5]@3 [b4,e5,g5]@3, ~@17 d3@30 ~@18 d3@7 ~@24, ~@17 c#4@24 c#4@24 c#4@21 ~@10, ~@21 c5 ~@2 c#5@17 ~@7 f#4 ~@17 [e4,a4,c#5]@6 ~@24]/4", // A Bm A5 A Bm A Bm A …
O: "[~@23 a5@18 ~ [e4,a4,c#5]@3 ~ a3@2 ~@12 e5@12, [d3,c#4,e4,a4,c#5]@41 [d3,c#4]@31, ~@7 e6@14 ~@15, ~@17 c#6@25 ~@30, ~@20 e5@22 ~@3 [f#4,b4,d5]@3 [e4,a4,c#5]@24]/3", // A Dmaj7 Bm A
P: "[d4,f#4,a4]@6 [b3,f#4,a4,b4]@5 ~ [g3,g4,b4,d5]@6 [e3,b4,d5,e5,g5]@6", // D B7 G Em7
Q: "[[c5,e5,g5]@12 ~@6 g5@5 ~ d5 ~@11 [g4,b4,d5]@10 ~ [a3,a4], a3@47 ~, [a2,g4]@23 ~ a2@23 ~, ~@12 [b4,d5]@12 [g4,c5,e5]@9 ~@3 e5 ~@9 e4@2, ~@29 g5@19]/2", // C G A A7 Bm C
R: "[~@4 a4 [d3,c#4,e4,a4,c#5] [e3,g4,b4] [f#3,c#5], [d3,c#4,e4,c#5]@5 ~@3, a4@24 ~@12 d4@2 ~@4 [e4,a4] ~@5, ~@20 e5@9 ~@19]/2", // A Em F#5 C#m A5
S: "[g2,g3,g4,b4,f#5]", T: "b4@15 ~@5 b4@4, [c#3,e4,g4], ~@5 e5@3", U: "[f#3,e4,a4,c#5]",
V: "f5@2 ~@5 [f#5,a5], [b2,b3,b4], ~@6 f#5@11 [g5,b5]@7, ~ c6, ~@4 a5@3 ~", // F#m B G
W: "~@12 [b4,e5,g5]@10 ~ g4, [e3,e4]@23 ~, [f#5,a5]@6 ~@5 e4, ~@8 b5@15 ~", X: "b4@2 ~ b4, [c#3,e4,g4], ~ e5",
Y: "[~@4 d#5 [b2,b3,f#4,a#4,d#5] [c#3,c#4,g#4,c#5,e5] [d#3,d#4,a#4,d#5,f#5], [b2,b3,f#4]@5 ~@3, d#5@19 ~@29, a#4@8 ~ a#4@6 ~@9, ~@2 f#5@3 ~@3]/2", // Bmaj7 C#m D#m B5
Z: "b4@2 ~ f#4, [g#2,g#3,d#5], f#4@3 ~, ~ [d#4,b4]", AA: "[c#3,b3,d#4,f#4,a#4]@23 g#4",
AB: "~@12 [f5,c#6]@10 ~ f#4, [f#3,f4,g#4,c#5], ~@4 [g#5,f6]@7 c#4", AC: "f#4 ~@2 a#4, [d#3,c#4], a#4 f#4, ~ c#5@3",
AD: "~@3 f#4, [g#2,g#3,d#4,b4], f#4@3 ~, ~ d#5", AE: "~@3 g#4, [a#2,a#3,f4,c#5], g#4@3 ~, ~ f5",
AF: "[b2,b3,f#4,a#4,d#5]@23 ~", // Bmaj7
AG: "[c#3,c#4,f#4,b4,d#5] [c#3,c#4,g#4,c#5,f5] [c#3,c#4] [c#3,c#4,c#5,f5,g#5], ~ [b4,d#5,f#5]", // B C# B
AH: "[~@45 e4@3 ~@24 e5@13 ~ [d3,d4] [b4,e5,g5]@3 [a4,d5,f5]@3 [b4,e5,g5]@3, [d3,c#4,d5,f#5] e5@2 ~, a4@20 a5@48 c#6@17 ~@11, ~@14 a6@24 c#5@4 a4@6 [d3,e4,a4,c#5]@37 ~@11, ~@18 c#6@45 e6@23 ~@10]/4", // D Em Dm Em Dmaj7 A
AI: "[[d3,c#4,e4,a4,c#5]@16 ~@2 [e4,a4,c#5]@3 [f#4,b4,d5]@3 ~@19 e5@5, ~@17 [d3,c#4]@31, ~ [e4,a4,c#5], ~@19 c#6@5, ~@41 a5@7]/2", // A Bm Dmaj7 A
AJ: "[~@24 b4@14 [g2,g3] [b4,e5,g5]@3 [a4,d5,f5]@3 [b4,e5,g5]@3, [a2,a3,g4,d5]@17 g5@22 ~@9, b4@14 d6@7 f#5@17 ~@10, f#5@11 b5@27 ~@10, ~@4 f#6@15 ~@5]/2", // G Em Dm Em Dsus4
AK: "[~@23 a#5@18 ~ [f4,a#4,d5]@3 ~ a#3@2 ~@12 f5@12, [d#3,d4,f4,a#4,d5]@41 [d#3,d4]@31, ~@7 f6@14 ~@15, ~@17 d6@25 ~@30, ~@20 f5@22 ~@3 [g4,c5,d#5]@3 [f4,a#4,d5]@24]/3", // A# D#maj7 Cm A#
AL: "[d#4,g4,a#4] [c4,g4,a#4,c5] [g#3,g#4,c5,d#5] [f3,c5,d#5,f5,g#5]", // D# C7 G# Fm7
AM: "[[c#5,f5,g#5]@12 ~@6 g#5@5 ~ d#5 ~@11 [g#4,c5,d#5]@10 ~ [a#3,a#4], a#3@47 ~, [a#2,g#4]@23 ~ a#2@23 ~, ~@12 [c5,d#5]@12 [g#4,c#5,f5]@9 ~@3 f5 ~@9 f4@2, ~@29 g#5@19]/2", // C# G# A# A#7 Cm C#
AN: "[d#3,d4,f4,a#4,d5]@17 ~@4 [g4,c5,d#5]@3, a#3 ~@16 [d#3,a#3,d4]@7, ~@3 [f4,a#4,d5]", // A# Cm D#maj7 A#
AO: "[a#3,a#4,d5]@14 [d#3,a#3,d4] [c5,f5,g#5]@3 [a#4,d#5,f#5]@2 ~ [c5,f5,g#5]@3, [d#3,d4,f4] ~@23", // A# D#maj7 Fm D#m Fm Dm
AP: "[d#3,d4,f4,a#4,d5]/2", // A#
})).s("gm_epiano2").gain(0.42).pan(0.7)
// drums · kick
const kick = s("bd").struct("<~ [x ~@10 x!2 ~@11]!31 x [x ~@10 x!2 ~@11]!27 x [x ~@10 x!2 ~@11]!32 ~@3>").gain(0.54)
// drums · snare
const snare = s("sd").struct(`<
~ A@3 B A@7 B A@7 B A@3 B A@3 B A@3 ~ A@3 B A@3 B A@7 B A@7 B A@3 ~ A@7 B A@3 B A@3 B A@7 B A@7 B ~@3
>`.pickRestart({
A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.54)
// drums · low tom
const low_tom = s("lt").struct(`<
~@4 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 A ~@7 B ~@7 B ~@3 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 B ~@3
>`.pickRestart({
A: "~@7 x", B: "~@23 x",
})).gain(0.6)
// drums · hihat
const hihat = s("hh").struct(`<
~ A@3 B A@7 B A@7 B A@3 B A@3 B A@3 C A@3 ~ A@3 ~ D@7 ~ D@7 ~ A@3 C A@7 B A@3 B A@3 B A@7 B A@7 ~@4
// … 36 more lines
More by Al Jarreau
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.