0:00/0:00
// On the Wings of Love — Jeffrey Osborne
// 68 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 53 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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 · electric bass finger · "FINGERDBAS"
const bass = note("<~@3 A B C D@4 E@2 F G H I J@4 K L@7 M@7 N O@4 P@4 Q@2 R@2 S T U@2 ~>".pickRestart({
A: "~@42 c3@3 b2@2 ~", B: "a2@12 a3@5 a2@6 ~ e2@11 e3@6 ~ e2@6", C: "a2@12 a3@6 a2@6 ~@11 g3@7 g2@6, ~@8 g2@5 ~@3",
D: "[f2@11 f3@6 f2@5 ~@2 e2@11 e3@6 e2@5 ~ d2@12 d3@5 ~@2 g2@8 ~ g2@5 ~ g2 ~@2 g2@2 ~ a2@2 ~ b2@5 a2@13 a3@6 a2@5 e2@11 e3@6 ~ e2@5 ~ a2@12 a3@7 a2@5 ~ g2@12 g3@5 g2@6 ~]/4",
E: "[f2@12 f3@9 f2@2 e2@12 e3@6 e2@5 ~ d2@13 d3@5 d2@6 ~ g2@7 ~@2 g2 ~@2 g2@3 a2@3 b2@5 ~]/2",
F: "c2@12 c3@4 ~@2 [c2,c3]@2 ~ [d2,d3] ~@2 e2@12 e3@6 e2@5 ~, ~@8 e3@3 ~@5", G: "f2@2 f3 f2 g2@2 g3 g2",
H: "a2@12 a3@6 a2@5 g2@12 g3@6 g2@6 ~",
I: "f#2@12 f#3@6 f#2@6 [g2,g3]@8 g2@3 [b2,b3]@3 ~ a3@2 [g2,g3]@5 ~@2, ~@19 a2 ~@4", // G B G
J: "[d2@7 ~@2 c2@2 ~ b2 ~@5 c2@2 ~ [d2,d3] ~@2 e2@12 e3@5 e2@6 f2@12 ~ f3@6 f2@5 g2@12 g3@6 g2@6 a2@13 ~@5 a2@5 ~ g2@12 ~@6 g2@2 ~@4 f#2@23 ~ g2@24 ~, ~@11 c3@7 ~@6 e3@9 ~@75 a3@8 ~@15 g3@11 ~@50]/4", // D
K: "[c2,c3]@36 a3@3 g3@2 e3@3 c3@3 ~", // C
L: "[a2@12 a3@8 a2@3 ~ e2@11 e3@6 e2@5 ~ a2@13 a3@5 a2@6 g2@8 ~@2 g2@3 g3@5 g2@5 ~ f2@6 ~@3 f2@4 f3@5 f2@4 ~@2 e2@7 ~@3 e2@3 e3@5 e2@5 ~ d2@12 d3@6 ~ g2@6 ~@3 g2@5 g3@2 ~ g2@3 a2@3 b2@4 ~@2 a2@13 a3@5 a2@6 ~ e2@11 ~ e3@5 ~ e2@5 a2@12 a3@6 a2@5 ~ g2@11 g3@7 g2@5 f2@12 ~ f3@3 c3@2 ~ f2@4 ~@2 e2@13 e3@5 e2@4 ~@3, g2 ~@335]/7",
M: "[d2@11 ~ d3@5 d2@5 ~@2 [g2,g3]@9 g2@2 ~ [g2,g3]@3 [a2,a3]@2 ~ g2@4 ~ c2@12 ~ c3@4 ~@2 [c2,c3] ~ d2@2 ~ e2@13 e3@5 e2@5 ~ f2@13 f3@6 f2@5 ~ g2@12 g3@5 g2@5 ~ a2@13 ~@6 a2@5 g2@12 g3@6 g2@5 f#2@13 f#3@5 f#2@6 ~ [g2,g3]@9 g2@2 ~ [g2,g3]@3 [a2,a3]@2 ~ [b2,b3]@5 ~@13 c2@4 ~@3 [c2,c3]@2 ~ [d2,d3] ~@2 [e2,e3]@11 e3@6 e2@5 ~ f2@12 f3@6 ~ f2@5 ~ g2@11 g3@6 g2@6 ~, ~@41 g3@5 ~@22 d3 ~@2 e3@9 ~@76 a3@10 ~@73 [c3,c4]@17 ~@80]/7", // G A C G A B C D …
N: "a2@12 a3@6 a2@6 g2@11 ~@6 g2@5 ~@2, ~@35 g3@11 ~@2",
O: "[[f#2,f#3]@8 ~@3 f#2@3 ~@3 f#2@6 [g2,g3]@10 ~ g2@2 ~@4 g2@6 ~ c3@10 ~@11 c2@2 ~ c2@12 c3@5 ~ c2@2 ~@16 c3@4 ~@3 c3 ~@2 [d2,d3] ~@2 e2@11 e3@6 e2@5 ~ f2@13 ~@5 f2 ~@2 f2@2 ~ g2@12 ~@7 g2@5 ~, ~@8 f#3@14 ~@11 g3@13 ~ c2@16 ~@32 c2@16 ~@2 c2@2 ~@77, ~@59 c3@19 ~@14 c3@11 ~@17 e3@8 ~@28 f3@9 ~@14 g3@11 ~@2]/4", // F# G D
P: "[e2@12 e3@6 e2@5 ~ a2@12 ~@6 a2@5 d2@7 ~@3 d2@3 d3@2 d2@3 d3@3 d2@2 ~@2 g2@6 ~@3 g2@2 ~ g2@2 g3@3 [a2,a3]@2 ~ b3@2 ~ [c3,c4]@9 ~@3 c3@4 ~@2 [c2,c3] ~@2 [d2,d3] ~@2 e2@13 e3@5 e2@4 ~@2 f2@13 f3@6 f2@5 g2@7 ~@2 g2@4 g3@5 g2@6 ~, ~@36 a3@11 ~@31 g3@7 ~@7 b2 ~@11 c2@7 ~@8 e3@8 ~@65]/4", // A C D
Q: "[a2@11 a3@9 a2@2 ~ g2@4 ~@2 g2@6 ~@5 g2 ~@5 f#2@7 ~@3 f#2@3 f#3@6 f#2@5 ~@2 g2@15 ~ g2@7 ~, ~@35 g3@11 ~@26 g3@23 ~]/2",
R: "[c2@41 c3@5 ~ f3@25 e3@24, c3 ~@2]/2", S: "d3@16 ~@3 c3@28 ~", T: "f2@23 ~ e2@17 ~@7",
U: "[d2@15 ~@11 c2@30 ~@40]/2",
})).s("gm_electric_bass_finger").gain(0.4)
// chords · orchestral harp · "HARP"
const orchestral_harp = note("<~@11 A B C@4 D@3 E ~@7 F G H@5 I@2 J ~@10 K L M@2 ~>".pickRestart({
A: "~@36 g2 a2 [c3,d3] [e3,f3] g3 [g2,a3,b3] c4 [b2,c3] [d3,e3,f3] [g3,a3,b3] [c4,d4,e4] [f4,g4,a4,b4]", // Csus2 Fmaj7 G Cmaj7 Dm G C G7
B: "[c5,d5,e5] g5@11 ~@36, ~ f5 ~@46", // C
C: "[~@9 f4@14 ~@10 g4@10 ~@13 a4@13 ~@3 g4@12 ~@24 e6@9 ~@16 d6@9 ~ d4 ~ g4@20 ~@2 [e4,g4,c5]@11 ~@2 e4@7 ~@5, ~ f3@22 ~ g3@23 a3@25 ~@22 [f#3,c4]@8 e5@4 a5 c6@10 ~@9 b4@16 c4@43 ~@7, ~@3 a3@20 ~@7 d4@14 ~@9 e4@19 ~@24 e4@21 ~@2 [g3,b3]@8 d5@17 ~@48, ~@6 c4@18 ~@3 b3@16 ~@7 c4@23 ~@27 a4@17 ~@3 d4@23 ~ e4@20 ~@28, ~@101 c5@16 ~@8 g4@19 ~@48]/4", // C F#dim G
D: "[~@11 f4@10 ~@11 g4@11 ~@16 e4@7 c4@5 a4@5 ~ g4@13 ~@17 e6@6 ~@20 g6@9 ~@2, ~@3 f3@19 ~ g3@20 ~@4 a3@25 ~@22 a3@7 c5 e5@4 [a5,c6]@7 ~@9 g4@10 d6@11 ~, ~@6 a3@16 ~@7 d4@14 ~@53 e4@17 ~@7 b3@6 d5@17 ~, ~@8 c4@13 ~@5 b3@17 ~@11 c4@9 ~@32 [f#3,c4]@18 ~@6 g3@8 g5@16 ~, ~@100 a4@13 ~@8 d4@22 ~]/3", // Am F#dim
E: "c4@32 ~ c4@11 ~@4",
F: "~@36 a2 [b2,c3] [d3,e3] f3 [g2,g3,a3] b3 [b2,c3,d3] [e3,f3,g3] [a3,b3,c4,d4] [e4,f4,g4] [a4,b4,c5] [d5,e5,f5], ~@35 g2@2 ~@11", // Cmaj7 Dsus2 Gsus2 Bm Em D7 Em Am …
G: "g5@5 ~@11",
H: "[~@9 f4@11 ~@13 g4@12 ~@14 e4@12 ~@12 e4@7 ~@17 [c6,e6]@10 ~@15 g6@8 ~@16 g6@10 ~@14 g6@10 ~@13 [c6,f6]@11 ~@8 [d5,g5]@5 ~ g6@12, f3@19 ~@5 g3@22 ~ a3@24 ~ g3@20 ~@2 a3@2 ~@4 a4@2 e5@15 ~@7 b4 [d5,g5]@6 d6@9 c4@9 e5 g5@4 c6 [d6,e6]@12 ~@6 e5 g5@4 c6 e6@11 ~@8 f5@16 ~@7 b4@6 [b5,d6]@13, ~@3 a3@17 ~@10 d4@15 ~@51 e4@21 ~@2 d4@22 d4@2 ~@5 [c5,d5]@19 ~ g4@22 ~@2 [c4,f4]@22 ~@2 b3@11 ~@13, ~@6 c4@13 ~@8 b3@14 ~@12 c4@19 ~@6 c4@13 ~@4 [f#3,c4]@23 [g3,b3]@23 ~ [c3,e4]@25 [e3,e4]@23 ~ [f3,a3]@24 ~ g3@24, ~@101 c5@16 ~@3 g4@21 ~@2 g4@24 c4@2 ~@3 c5@18 ~@7 [a4,c5]@17 ~@3 [d4,g4]@10 ~@13]/5", // C F5 G5 Dsus2 Bm Csus2 F5 F#dim …
I: "[~@6 c4@12 d4@4 ~@8 c4@11 ~ e4@3 ~@14 c4@10 ~@14 d4@12 ~, a3@23 ~ g3@17 ~@6 f#3@23 ~ g3@24 ~, ~@47 [a3,c4]@6 a3@13 ~@11 b3@13 ~@6, ~@16 e4@7 ~@9]/2", // Am
J: "e4@17 ~@31", K: "~@36 e5@2 d5@4 c5@3 b4 ~@2, ~@34 g4@11 ~@3, ~@35 c5@2 ~@11",
L: "f4@2 ~@5 c4@14 ~@3 g4@4 ~@3 c4@16 ~, a4@5 ~@7, ~@4 f4@17 ~@7 e4@6 ~@14",
M: "[a4@3 ~@7 a4@4 ~@7 a4@3 c5@2 ~@28 e6@3 ~@2 c7@15 ~@22, ~@3 c4@10 ~@4 f4@8 ~@3 c4@9 e5@3 g5@3 c6@3 e6@4 g6@7 e6 g6@16 ~@22, ~@7 f4@7 c5@5 ~@10 e4@45 ~@22, ~@31 g4@43 ~@22, ~@17 c5@20 ~@11]/2",
})).s("gm_orchestral_harp").gain(0.48)
// chords · orchestral harp · "HARP" · soft notes
const orchestral_harp_soft = note("<~@11 A ~@2 B@2 ~@3 C D ~@7 E ~@3 F ~ G ~@2 H ~@15>".pickRestart({
A: "~@37 b2 ~@4 a2 ~@5", B: "[~@45 a3@24 ~@15 b5@11 ~, ~@83 g5@12 ~]/2", C: "~@35 b5@11 ~@2, ~@30 b4@17 ~",
D: "~@9 d4@4 ~@3, ~@3 g4@2 ~", E: "~@41 a2 ~@6", F: "~@5 a5@5 ~@7 b5@5 ~@2", G: "~@5 a5@6 ~@13", H: "c3 ~@2",
})).s("gm_orchestral_harp").gain(0.24)
// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@37 A@3 B C@5 D ~@6>".pickRestart({
A: "[~@38 [g3,c4]@36 g3@3 e4@5 ~@2 e4@8 d4 c4 d4@4 c4@12 d4@2 ~ d#4 e4@3 d4 d4@16 ~ g4@5 ~ e4@3, ~@118 c4 ~@16 f4 ~@8]/3", // C5
B: "a4@9 g4@18 ~@2 d5@3 c5@16, ~@27 b4@2 ~@19, ~@14 c5 ~@9",
C: "[~@3 g4@3 f4@3 g4@5 ~ f4@8 e4@3 ~ d4@3 c4@2 ~ d4@8 e4@3 f4@2 ~@18 c5@19 ~@3 d#5 e5@2 d5@2 ~ c5@3 d5@3 ~ c5@12 d5@2 ~ [d5,d#5] ~@3 c5 ~@16 g4@5 e4@2 ~ a4@10 c5@11 b4@2 ~ c5@2 ~ e5@2 d5@3 ~ c5@2 ~ d5@3 c5@2 ~ a4@2 g4@3 e4@19 d4@2 c4@3 ~ d4@9 ~ g4@2 ~@3 c5@8 ~@2, ~@47 [c4,g4]@33 ~@6 g5@32 ~@52 g5@12 ~@58, ~@114 e5@3 d5@2 ~ d5@20 ~@30 d#5 ~@56 [f4,a4]@11 ~@2]/5", // D#maj7 C5 F
D: "[g4,c5]@43 ~@5", // C5
})).s("gm_distortion_guitar").gain(0.5)
// chords · piano · "A.PIANO 1"
const piano = note(`<
A B@2 C D@2 E F G@2 H@2 I J@3 K L@3 M N@3 O P@3 Q R S@2 T U V@2 W@3 X Y Z AA AB AC@2 AD AE@2 AF AG@2 ~
>`.pickRestart({
A: "~@19 c6@6 ~@18 c6@5, f4@10 b5@15 [e4,g5]@23, ~ a5@25 ~@8 b5@14, ~@2 c5@11 ~ g4@10, ~@7 f5@19 ~@5 c5@17", // Em
B: "[~@10 [f5,c6]@8 [g4,c5,e5]@14 ~@12 b4@3 ~@18 c5@6 ~@19 c5@6, ~ d4@17 c4@23 c5@5 ~@4 c4@21 e3@10 b4@15, ~ f5@6 d5@12 ~@14 c5@5 d5@8 ~@7 f4@19 g4@24, ~@4 a4@15 ~@13 g4@15 [f3,a4]@25 ~@2 g3@22, ~@35 e5@12 ~@9 b4@16 ~@5 c4@19]/2", // F5 C F
C: "~@9 [f4,c5]@9 [c3,g3,c4,e4]@24 [c3,g3,c4]@3 [b2,b3]@2 ~, d3@19 ~@29, f4@6 d4@13 ~@23 e4@6, ~@3 a3@16 ~@29", // F5 C C5 B
D: "[a3@14 ~@4 e4@3 ~@8 b3@3 b3@9 [b3,e4]@3 ~@15 a2@6 ~ b3@2 ~@3 g2@10 ~@3 g3@10 ~@2, [a2,c4,e4]@20 ~@3 e2@22 ~@2 a2@12 ~@6 a2@4 ~@12 g2@13 ~@2, ~@15 a3@6 d4@23 [b3,d4]@11 ~@13 c4@26 ~@2, ~@27 g#3@5 f4@13 ~@8 e4@15 g3@16 ~@12, ~@29 e4@12 ~@3 a3@5 ~@2 a3@4 ~ [a3,c4]@13 e4@13 ~@14]/2", // E5 Am Bm Am
E: "~@17 c4@6 ~@18 c4@6 ~, f2@23 ~ e2@24, a3@9 b3@14 ~@7 e3@18, ~@3 c3@20 ~@4 c3@6 b3@15, ~@6 f3@17 g3@24 ~",
F: "f3@5 ~@4 c4@9 [g2,g3,b3,d4]@15 g2@2 ~@7 [g2,g3,b3,d4]@5 ~, d2@18 ~@17 g2@7 ~@6, ~@5 f3@12 ~@19 [g3,b3]@6 ~@6, ~@8 a3@9 ~@22 [a3,c4]@8 ~", // G Am
G: "[[a3,e4]@15 ~@2 e4@4 ~@9 b3@2 b3@6 ~@3 b3@2 ~@10 c4@2 ~@10 b3@3 ~@17 d4@2 ~@3 c4@6, [a2,c4]@21 d4@11 f4@12 [g#3,d4]@6 a3@5 ~ [a3,c4]@13 ~@16 g4@11, ~@15 a3@7 ~@2 e2@23 a2@12 a2@10 ~@18 e4@9, ~@27 g#3@6 ~@5 g#3@5 b3@7 ~@18 g3@28, ~@29 e4@4 ~@8 e4@9 ~@3 e4@15 [c4,e4]@22 ~@6]/2", // A5 Am G#dim Am C
H: "[~@15 c4@9 ~@20 e2@3 [f3,a3,c4,e4]@6 ~ a3@2 [f3,a3]@7 ~@5 d2@3 [g2,g3,b3]@10 g2@3 ~@6 [g2,g3,b3,d4]@6, [f2,a3]@24 e2@20 ~@3 d2@21 ~@16 [g2,g3,b3]@6 ~@6, ~@3 c3@21 ~@3 c3@5 b3@15 ~@18 d3@6 ~@25, ~@6 f3@12 ~@6 g3@9 ~@6 c4@8 ~@6 d4@3 d4@15 d4@19 ~@6, ~@9 b3@15 ~@5 e3@6 ~ e3@5 e3@6 ~@16 [f3,a3,c4]@9 ~@15 [a3,c4]@9]/2", // Fmaj7 F G F G F Am
I: "[c3,c4,e4,g4]@2 [d4,f4] ~@4 [d2,d3] [e3,c4]@3 ~@3 [e3,c4,e4,g4]@2, c2@17 ~ [c2,c3]@6 [e2,c5]@24, ~@9 [c4,e4]@6 [c4,e4,g4]@9 g4@15 [d4,f4]@8 ~, ~@12 c3@5 ~@16 g3@15, ~@6 [c4,e4] ~", // C Dm D C Dm C
J: "[~@6 a4@3 ~@9 [f3,e4]@3 ~@9 d4@2 ~@10 [d4,g4]@3 ~@23 a2@4 ~@29 [a3,d4]@3 ~@3 f#3@4 ~@5 f#2@3 ~ g2@9 d3@3 g3@2 ~@4 [d3,g3,b3,d4]@6, f2@22 ~@2 g2@21 [d4,g4]@6 ~@8 a3@13 ~@6 c4@9 e5@6 a3@8 ~@3 d4@15 ~@25, [a3,c4,g4]@9 f4@13 ~@8 g3@6 g3@6 g3@6 [a2,e3]@20 ~@4 [g2,d4,g4]@17 c5 g3@4 b3 f#3@9 a3@6 ~ [a3,c4]@9 ~@12 b3@6 ~@6, ~@9 [a3,c4]@6 [a3,c4]@5 ~ [a3,c4]@9 b3 ~@2 [b3,d4]@6 b3@12 [c4,e4]@22 ~@2 e4@17 g2@3 c4@16 ~@2 f#3@6 [g3,b3,d4]@13 ~@3 [a3,c4]@9, ~@12 f3@6 ~@9 d3@24 ~@33 [d5,g5]@11 [f#2,e4]@24 ~@13 g2@12]/3", // Fmaj7 G5 D5 G G5 Am7 A5 G5 …
K: "[c3,c4,e4,g4]@6 [d4,f4]@3 ~@12 [d2,d3]@3 [e3,c4]@9 ~@9 [c4,e4,g4]@3 e3 ~@2, c2@18 [c2,c3]@5 ~ [e2,c5]@22 ~@2, ~@9 [c4,e4]@6 [c4,e4,g4]@8 ~ g4@12 [c4,e4]@3 [d4,f4]@7 ~@2, ~@12 c3@6 ~@15 g3@13 ~@2, ~@12 e3@3 ~", // C Dm D C Dm
L: "[~@6 a4@3 ~@3 f3@5 ~@12 [b3,d4]@2 ~@11 [d4,g4]@3 ~@23 a3@3 ~ g3@6 ~@2 g3@3 g3@6 [g3,c5]@4 b3@2 ~ e4@6 [a3,d4]@2 ~ a3@6 ~@2 f#3@7 g3@6 g3@3 g3@3 ~@3 c4@9, f2@20 [a3,c4]@9 g3@6 g3@10 [d4,g4]@5 ~@6 a3@10 [d4,b4]@5 ~ c5@17 ~@4 a3@9 ~@9 [a3,c4]@9 ~@12 g2@6 ~@6, [a3,c4,g4]@9 [a3,c4,f4]@13 ~ g2@25 a2@24 [g2,e4,g4]@24 f#2@24 [g2,b3,d4]@13 ~@11, ~@17 e4@5 ~@4 d3@13 b3@10 ~@2 [c4,e4]@8 [c4,e4,a4]@12 ~@7 c4@17 c4@8 ~@2 d4@15 ~@24, ~@32 [b3,d4]@9 d3@8 ~@4 e3@18 ~@12 [d5,g5]@12 ~ f#3@12 ~@24 [f3,a3]@12]/3", // Bm G5 C5 D5 Am G5 G Am …
M: "c4@11 ~@13 g5@24, [c2,c3,e3,g3]@23 e5@25, ~@11 c4@37, ~ [d4,e4]@3, ~@13 g4@35", // C Dsus2
N: "[a2@12 ~@18 b4@3 ~@8 e5@3 ~@9 [c5,e5]@3 [e4,a4,c5]@10 b4@3 ~@20 c4@6 ~@19 [f4,a4,c5]@6 ~@8 [c4,g4]@9 ~ [c4,g4,c5]@6, [c4,e4]@21 d5@23 [b4,d5]@13 ~@12 c5@26 ~@6 f3@6 c4@12 ~ [c4,g4]@8 [g3,b4]@16, ~@15 a4@8 ~ e2@21 ~@3 a2@21 ~@2 g2@24 f2@24 ~ e2@24, ~@18 e5@5 ~@4 g#4@6 [b4,f5]@13 ~@35 c4@6 e4@8 [f4,a4]@9 [g3,a3,g4,b4]@16 ~@5 e3@19, ~@30 e5@9 g#4@7 ~@5 a4@5 ~@13 [e4,g4]@15 [d4,g4]@11 ~@3 c3@21 ~@3 c3@22]/3", // C Am F C5 C Bm C5 G …
O: "f4@9 ~@3 d3@6 g2@17 ~@7 [b3,d4]@5 ~, [d2,c4]@18 [g4,b4,d5]@29 ~, a3@3 ~@7 [f4,a4,c5]@9 ~@17 [g2,g3,b3]@5 [g2,g3]@6 ~, ~@39 [a3,c4]@8 ~", // Bm D7 G F G Am
P: "[a3@12 ~@17 b4@3 ~ b4@6 [g#4,b4,e5]@6 a4@2 ~@6 c5@3 ~@9 a3@6 g4@10 ~@9 [g3,c4]@5 ~@19 a4@5 ~@9 [g3,c4,g4]@7 ~@2 g3@7, [a2,e3,c4,e4]@21 d5@24 [b4,d5]@13 ~@5 [b4,d5]@9 ~@12 [d4,g4]@11 f4@6 f3@3 f4@4 c4@5 [f4,c5]@6 [c4,g4]@9 b4@7 [c4,g4,c5]@9, ~@15 a4@8 ~ e2@22 ~ a2@24 [g2,c5,e5]@23 ~ f2@24 e2@25, ~@18 e5@5 ~@3 g#4@7 f5@13 ~@7 a5@5 ~@29 e4@8 a4@9 [a3,g4,b4]@16 ~@5 e3@19, ~@29 e5@9 ~@18 [a4,c5,e5]@15 ~@10 g3@9 ~@8 c3@21 ~@3 c3@22]/3", // E C5 Am Bm G5 F5 C5 C …
Q: "[d3,f4,a4]@6 [f4,a4,d5]@3 ~@12 a3@3 d3@9 d3@3 [g3,b3]@2 ~@4 [d3,g3,b3,d4]@6, [d2,e5]@25 ~@11 g2@12, c5@12 a3@6 d4@7 ~@14 [a3,c4]@9, ~@9 [d3,d5]@15 [g2,g3,g4,b4,d5]@13 ~@11, ~@3 [f4,a4]@2 [f4,a4,c5]@3 ~@8", // Dm G Dsus2 Am D G F
R: "[c3,c4,e4,g4]@6 [d4,f4]@2 ~@12 [d2,d3]@3 ~ [e3,c4]@9 ~@11 e3@4, c2@17 [c2,c3]@7 e2@15 d4@3 [c4,e4,g4]@6, ~@8 e4@4 c3@5 ~@6 c5@25, ~@9 c4@6 [c4,e4,g4]@9 g4@12 [e3,c4,e4]@2 f4@10, ~@11 [f3,g3]@5", // C Dm D C Fsus2
S: "[~@5 a4@3 ~@10 [c3,e4]@3 ~@9 [b3,d4] ~@11 [d4,g4]@3 ~@6 [c4,e4]@6 a3@2 ~ [c4,e4]@5 ~@4 e3@3 g3@6 ~@3 g3@3 ~@10 c5 ~, f2@22 ~@2 g2@24 a2@23 ~ g2@12 g3@3 e5@3 [g2,g3]@5 ~, c3@15 a3@6 [a3,c4]@10 ~@2 [b3,d4]@6 b3@9 e3@9 ~@3 [a3,a4]@12 ~@12 [d5,g5]@8 a4@3 ~, [a3,c4,g4]@8 f4@14 ~@8 g3@6 g3@6 ~@3 [d4,g4]@5 ~@15 c4@7 ~@6 c4@15 b4@2 ~, ~@8 [a3,c4]@3 f3@11 ~@5 d3@14 ~ [d3,g3]@7 ~@17 [e4,b4]@6 [e4,g4,c5]@23 ~]/2", // C Bm G5 C G Am Bm A …
T: "[f#3,a4]@6 [a4,d5]@2 ~ f#3@3 ~@5 f#3@6 [g2,g3,g4,b4]@9 ~@9 [d3,g4,b4,d5]@7, [f#2,e5]@24 ~@11 [g2,g3]@13, c5@12 f#3@5 ~@15 d3@6 [a4,c5]@10, d5 ~@7 d5@15 d5@18 ~@7, ~@8 a4@6 ~ [a4,c5]@9 ~@11 [g4,b4]@6 ~@7", // F#m D5 G F#7 G Am G
U: "[c3,e4,g4]@6 [d4,f4]@3 ~@12 [d2,d3]@3 [e3,c4]@9 ~@12 e3@2 ~, c2@18 [c2,c3]@6 [e2,c5]@23 ~, c4@4 ~@5 [c4,e4]@6 [c4,e4,g4]@9 g4@15 [d4,f4]@8 ~, ~@12 c3@6 ~@15 g3@14 ~, ~@36 [e3,c4,e4]@6 [c4,e4,g4]@5 ~", // C Dm D C Dm C
V: "[[a3,g4]@6 [g4,a4]@2 ~@6 a3@4 ~@12 [b3,d4]@2 ~@10 [d4,g4]@3 ~@6 [c4,e4]@6 ~@12 e3@3 g3@6 ~@3 g3@3 ~@10 c5@2, f2@23 ~ g2@21 [d4,g4]@5 ~@10 [c4,e4,a4]@12 ~@6 c4@9 e4@6 [a4,b4]@3, c4@5 ~@3 c4@12 ~ [a3,c4]@11 ~ [b3,d4]@6 b3@9 [a2,e3]@24 [g2,c5]@24, ~@9 f4@14 ~@6 g3@7 g3@14 ~@7 a3@15 a2 ~@11 [d4,g4]@12, ~@9 a3@3 f3@6 [f3,e4]@5 ~@4 d3@15 d3@8 ~@16 [d4,b4]@6 [e4,g4]@12 g3@6 [g3,c4]@6]/2", // A7 Gsus2 Bm G5 C G5 Am Asus2 …
W: "[~ c5@3 ~@2 [a4,d5]@3 ~@9 f#3@5 ~ g4@6 g4@2 ~@4 [f4,a4]@3 ~@5 d3@3 ~ [e4,g4]@11 ~@33 c3@3 [g3,c4,e4]@12 ~@10 d2@3 [c4,e4]@12 ~@8 e2@4, [a4,e5]@4 ~@5 d5@14 g3@12 g3@4 [f4,a4,c5]@2 g3@6 c2@23 [c5,d5]@25 c2@18 ~ [c2,c3]@7 ~@11 [g3,c4,e4]@12, ~ f#2@23 ~@9 g4@14 [c3,c5]@18 c4@6 [e5,g5]@24 b3 ~@12 [g3,c4,e4]@12 e2@20 ~@4, ~ f#3@8 a4@6 [a4,c5]@9 b4@24 ~@11 [d4,g4]@24 g6@14 ~@47, ~@12 f#3@5 ~@6 [g2,d5]@25 ~@14 e4@9 c3@11 e6@14 ~@41 e3@7]/3", // D5 F Em C A5 F Csus2 C …
X: "[a3,c4,f4]@12 ~@8 f2@4 [b3,d4,g4]@11 ~@10 g2@3, f2@17 f3@7 ~@18 g3@6, ~@12 [c4,f4]@13 ~@10 [b3,d4,g4]@13", // F G F5 G
Y: "[b3,d4,g4]@12 ~@9 e2@3 d4@2 ~@7 a3@3 ~@9 e3@3, e2@6 e3@2 a3@2 c4@3 e5 c5@2, ~ [b3,d4,g4] [a2,g4]@2, ~@9 e4@7, ~@3 [a3,d5,g5]", // G A7 Dsus4
Z: "[a3,c4,f4,g4]@12 a3@3 a3@6 d3@3 b3@2 ~@4 d4@2 ~ g3@2 ~ d4@3 ~@6 d4@3, d2@8 g2@5 [d4,a4]@3, ~@12 [c4,f4,g4]@12 [d4,g4]@8 ~@3 g4@9 f4@3 ~, ~@24 f4 ~@2 b3@5 [d3,b3,d4,g4]@3 [d3,g3,b3]@6 ~ [g2,d3,f3,g3,b3,e4]@6", // F D5 Csus4 G5 G G7
AA: "[c4,e4]@6 ~@6 [c2,c3]@5 ~ d3@2 [d2,d3]@2 ~ [e3,e4,g4]@12 ~@10 e2@3, g2@23 ~@13 [e4,g4]@5 e3@7, [c2,c3,g4]@9 [d4,f4]@14 c4@13 c5@12, ~@6 [c4,e4]@5 [c4,e4,g4]@6 d2@3 ~@3 e2@19 [e4,g4]@6, ~@17 [c2,c3]@5 ~@17 c4@9", // C D Em C5 Dm C Em C
AB: "[a3,c4]@4 a3 ~@2 f2 [b3,d4,g4]@4 ~@3 g2, [f2,g4]@8 g2@7 ~, ~@12 [c4,f4]@13 ~@11 [b3,d4,g4]@12, ~@18 f3@7 ~@17 g3@6", // Am G Fsus2 F5 G
AC: "[[c4,e4,g4]@12 ~@13 [c4,e4,g4]@10 [c4,e4,g4]@9 c4@3 ~ e3 ~@10 a3@6 ~@3 f3@3 [b3,g4]@12 [a3,c4,f4,g4]@3 ~@7 g2@3, a2@19 a3@28 f2@24 g2@18 d3@7, ~@13 [c4,e4,a4]@12 a4@22 [a3,c4,e4,g4]@12 [c4,e4,g4]@12 d4@25, ~@21 a2@27 f3@18 a3@5 f2 ~@11 g3@12 ~, ~@43 [a3,c4,f4,g4]@5]/2", // C Em F Am Am7 C F
AD: "e4@11 ~@9 c3@3 ~@19 c6@6, [c2,g3]@23 [c3,d5,g5]@7 c5@6 [c3,d6,g6]@12, [c3,c4]@3 c4@5, b2 ~@10 [d4,g4]@37, ~@7 e4@17", // C5 Csus2 C G5
AE: "[~@16 c6@6 ~@19 c6@6 f5@7 ~@3 [f5,c6]@8 ~ [g4,c5,e5]@30, [f3,a5]@22 ~@7 c5@18 ~@7 d5@13 ~@29, ~@2 c4@20 [e4,g5]@25 ~@18 c4@31, ~@8 [a4,b5]@14 ~@3 g4@22 ~@49, ~@32 b5@15 ~@49]/2", // F5 C F Em Asus2
AF: "~@17 c5@9 ~@15 c5@7, ~ [f3,a4]@25 [e3,g4]@22, ~@3 c4@25 ~ g3@19, ~@3 f4@11 ~@2 c4@8, ~@10 b4@19 ~@6 b4@13", // F Em
AG: "[~@2 f4@11 [d4,f4,c5]@14 ~@42 e4@27, ~@2 d3@25 c3@40 c2@29, ~@7 g4@17, ~@7 [g3,c4,e4]@10 [c3,g3,c4]@7, ~@29 c5@67]/2", // Dm7 C C5
})).s("gm_piano").gain(0.45)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
~@4 A B ~ C D E F G H ~ I ~@2 J K L M N O ~ P Q R ~@3 S T ~@2 U ~@2 V@2 W ~@2 X Y ~ Z AA AB@2 ~ AC AD ~
>`.pickRestart({
A: "~@24 e3@11 ~@3 g#3@7 ~@3, ~@35 e3@10 ~@3", B: "~@34 e4@13 ~", C: "~@3 d3@8 d3@6 ~@31", D: "~@35 e3@13",
E: "~@23 g2@10 ~@10 g2@5, ~@34 g2@9 ~@5, ~@13 d4@3", F: "~@18 f3@7 ~@23", G: "~@11 d3@6 ~@31", H: "~@6 e3 ~",
I: "~@9 e3@3 g3@4 g3@2 g3@3 ~@3", J: "~@17 f3@5 ~@26", K: "~@19 e5@5", L: "~@12 f#3@5 ~@25 g2@6",
M: "~@3 g6, ~@11 c5@13, ~@23 d5@25, ~@17 c6@7, ~@35 [d6,e6]@13", N: "~@12 a2@11 ~@13 e3@5 e3@4 ~@3, a3@23 ~@25",
O: "~@12 a3@6 a3@3 ~@3 g3@12 g3@8 g3@3 ~", P: "~@11 g3 ~@4", Q: "~@12 a3@11 ~@13 e3@6 e3@4 ~@2",
R: "~@3 a4@5 ~@3 e3@9 e3@3 ~ g3@9 ~@15", S: "~@6 c4@2 ~@7 c4@6 ~@27", T: "~@9 e3@11 ~@28", U: "~@5 c4@3 ~@40",
V: "[~@34 d6@13 c3@18 ~@4 d3@3 e3@17 ~@7, ~@33 c6@16 ~@23 g3@11 ~@13]/2", W: "~@4 a3@4 g2@7 ~",
X: "~@9 c3@2 ~@24 e3@6 ~@7", Y: "~@15 a3@10 ~@23", Z: "~@2 b3", AA: "~@13 e6@3, ~@13 e5@11",
AB: "[~@11 c5@11 ~@29 a4@16 ~@29, ~@5 f4@17 ~@25 d4@20 ~@29]/2", AC: "~@6 a3@23 ~@19", AD: "~@5 g2@7",
})).s("gm_piano").gain(0.25)
// drums · kick
const kick = s("bd").struct("<~@4 A@3 B C A@3 B@7 A D A@2 B E A@2 B A F A@5 B A G B@5 A@2 H I ~ J ~@4>".pickRestart({
A: "x ~@6 x!2 ~@7", B: "x ~@6 x!2 ~@6 x", C: "x ~@6 x!2 ~@3 x ~@3", D: "x", E: "x ~@7 x ~@6 x",
F: "x ~@3 x ~@2 x!2 ~@6 x", G: "x!3 ~", H: "x ~@5 x ~ x ~@6 x", I: "x ~@6 x!2 ~ x ~@5", J: "x ~@2 x ~@2 x ~@9",
})).gain(0.4)
// drums · rim
const rim = s("rim").struct("<~@4 [~ x ~ x]!8 ~@41>").gain(0.45)
// drums · snare
const snare = s("sd").struct("<~@12 A@8 ~@9 A@3 B A@4 ~ A@9 ~@6>".pickRestart({
A: "~ x ~ x", B: "~@3 x ~@8 x ~@3",
})).gain(0.4)
// drums · clap
const clap = s("cp").struct("<~@29 [~@3 x] [~ x ~ x]!2 [~@3 x ~@8 x ~@3] [~ x ~ x]!4 ~@16>").gain(0.45)
// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@6 B ~@3 B ~@4 B ~@7 C ~@3 B ~@13 B ~@6>".pickRestart({
A: "x", B: "~@7 x", C: "~@13 x ~@2",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<~@12 A B@5 C D E B@8 F G H I J K I L M H N H L H@3 L M ~@6>".pickRestart({
A: "x!6 ~ x", B: "x!8", C: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x ~", D: "x!7 ~", E: "x ~ x!2",
F: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", G: "x!5 ~ x ~", H: "x!4", I: "x ~@3 x ~@2 x!2 ~@3 x ~@3", J: "~ x!3",
K: "~@4 x ~@2 x!2 ~@3 x ~@3", L: "x!2 ~ x", M: "x", N: "x ~@3 x ~@3 x ~@2 x!2 ~@3",
})).gain(0.3)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@12 A ~@5 B C ~@9 A D@2 ~ E F ~ G ~ H ~@6 G ~@7>".pickRestart({
A: "~@3 x", B: "~@5 x ~@2", C: "~@7 x", D: "~@7 x ~@8", E: "x ~@6 x ~@8", F: "x", G: "~ x", H: "~@11 x ~@4",
})).gain(0.15)
// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@7 B ~@3 B ~@4 B ~@7 C ~@3 B ~@13 D ~@6>".pickRestart({
A: "~@15 x", B: "~@13 x ~@2", C: "~@3 x", D: "~@7 x",
})).gain(0.35)
// drums · open hat
const open_hat = s("oh").struct("<~@16 A@2 B A ~ C A@5 B D ~@9 A E A@6 ~@7>".pickRestart({
A: "~ x ~ x", B: "~@3 x ~@8 x ~@3", C: "~@4 x ~@6 x ~@4", D: "~ x ~@2", E: "~@2 x ~@3 x!2",
})).gain(0.35)
// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@7 B ~@3 C ~@4 D ~@7 E ~@3 C ~@13 F ~@6>".pickRestart({
A: "~@7 x", B: "~@9 x ~ x!2 ~@3", C: "~@11 x!2 ~@3", D: "~@3 x", E: "~@10 x!3 ~@3", F: "~@13 x ~@2",
})).gain(0.45)
// drums · crash
const crash = s("cr").struct("<~@4 A ~@7 A ~@3 A ~@2 B A@2 ~@6 C ~@4 A ~@2 B A@2 ~@2 C A ~@2 B A ~@6>".pickRestart({
A: "x", B: "x!2", C: "~@15 x",
})).gain(0.45)
// drums · ride
const ride = s("rd").struct("<A B ~ C ~@25 D@8 E D@8 E ~ F ~@2 G ~>".pickRestart({
A: "x", B: "~@3 x ~@2 x ~@9", C: "x ~@2 x ~@2 x ~@9", D: "x!8", E: "x!4", F: "~@10 x!3 ~@3", G: "~ x ~@14",
})).gain(0.45)
// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@50 [x ~@3 x ~@4 x ~@4 x!2] [x ~ x!4 ~@10] ~>").gain(0.25)
// drums · tambourine
const tambourine = s("tb").struct("<~@12 A@6 B A ~@9 A@3 C A@4 ~ A C A@6 ~@7>".pickRestart({
A: "~ x ~ x", B: "~@3 x ~@8 x ~@3", C: "~@4 x ~@6 x ~@4",
})).gain(0.35)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 A@4 B A@3 C@2 D C@2 E F C G A ~@7 H I@6 J K J@2 L@6 K ~@6>".pickRestart({
A: "~ x ~ x", B: "~@2 x!2", C: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x", D: "x ~@2 x ~@3 x!2 ~ x ~@4 x",
E: "~@3 x ~@3 x!2 ~@2 x ~@3 x", F: "x ~ x ~@4 x!2 ~@2 x ~@3 x", G: "x!2 ~ x", H: "~@7 x!2 ~@7", I: "x ~@6 x!2 ~@7",
J: "x ~@7 x ~@2 x ~@4", K: "x", L: "x!2",
})).gain(1.26)
stack(
bass, orchestral_harp, orchestral_harp_soft, distortion_guitar, piano, piano_soft, kick, rim, snare, clap, low_tom,
hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, ride, ride_soft, tambourine, cabasa
)
More by Jeffrey Osborne
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.