0:00/0:00
// You Are So Beautiful — Billy Preston
// 150 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 pick · "bass"
const bass = note(`<
A@2 B C D@2 E@2 F@2 G@2 H@2 I J I K L M N O@2 P@2 Q@2 R@2 S T U V@2 W X Y@2 Z@2 AA@2 AB@2 AC AD AE K AF AG AH AI@2
AJ@2 AA@2 AK@2 AL AM@2 AN@2 AO@2 AP@2 AQ@2 AR@2 AS@2 AL AT@2 AU@2 AV@2 AW@2 AX@2 AY@3 ~
>`.pickRestart({
A: "[f#1@6 f#1@6 ~@8 f#1@7 f#1@7 f#1@7 ~@7]/2", B: "f#1@7 f#1@7 f#1@7 ~@3", C: "~@4 f#1@7 f#1@7 f#1@6",
D: "[~@7 [f#1,c#2]@7 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~]/2", // F#5
E: "[~ f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~ f#1@6]/2",
F: "[~@2 f#1@4 ~@16 c#2@5 ~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~]/2",
G: "[~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 b1@4 ~@2 b1@4 ~]/2",
H: "[~@2 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 f#1@4 ~@3 f#1@4]/2", I: "~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3",
J: "f#1@4 ~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4", K: "f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@3",
L: "~@4 f#1@4 ~@3 b1@4 ~@3 b1@4 ~@2", M: "~ b1@4 ~@2 b1@4 ~@3 b1@4 ~@3 b1@3",
N: "~@4 b1@4 ~@3 f#1@4 ~@3 f#1@4 ~@2, ~@18 b1 ~@5",
O: "[~ f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@2 f#1@4 ~@2]/2",
P: "[~@2 f#1@4 ~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~]/2",
Q: "[~@2 f#1@4 ~@3 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~ b1@5]/2",
R: "[~@2 b1@5 ~@2 b1@5 ~@2 a#1@5 ~@2 a#1@5 ~@2 a#1@5 ~@2 a#1@5 ~@2 a#1@4]/2", S: "~@3 a#1@5 ~@2 a#1@5 ~@2 f1@5 d#2 ~",
T: "d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~ d#2@4", U: "~@3 d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~@2",
V: "[d#2@3 g#1@3 ~ g#1@5 ~@2 g#1@5 ~@2 g#1@5 ~@2 g#1@5 ~@2 b1@5 ~@2 b1@5 ~]/2",
W: "~ b1@5 ~@2 b1@5 ~@2 f#1@4 ~@2 f#1@3", X: "~@4 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@2",
Y: "[~ f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~]/2",
Z: "[~@2 b1@4 ~@2 b1@4 ~@3 b1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~]/2",
AA: "[~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4]/2",
AB: "[~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 b1@4]/2", AC: "~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3",
AD: "b1@4 ~@3 b1@4 ~@3 b1@4 ~@2 b1@4", AE: "~@3 b1 f#1@4 ~@2 f#1@4 ~@3 f#1@4 ~@3",
AF: "~@4 c#2@4 ~@3 f#1@4 ~@3 f#1@4 ~@2", AG: "~ f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@2 f#1@3",
AH: "~@4 f#1@4 ~@3 f#1@4 ~@3 b1@4 ~@2", AI: "[~ b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 b1@4 ~@3 f#1@4 ~]/2",
AJ: "[~@2 f#1@4 ~@3 f#1@4 ~@2 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~@3 f#1@4 ~]/2",
AK: "[~@3 f#1@4 ~@2 f#1@4 ~@3 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@4]/2", AL: "~@3 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2",
AM: "[b1 a#1@4 ~@2 a#1@5 ~@2 a#1@5 ~@2 a#1@5 ~@2 a#1@5 ~ a#1@5 ~@2 a#1@5 ~@2]/2",
AN: "[f1@5 ~@2 d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~@2 d#2@5 ~]/2",
AO: "[~ d#2@5 ~@2 d#2@4 g#1 ~@2 g#1@5 ~@2 g#1@5 ~ g#1@5 ~@2 g#1@5 ~@2 b1@5 ~]/2",
AP: "[~ b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5]/2",
AQ: "[~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~ b1@5 ~@2 b1@5 ~@2 b1@5]/2",
AR: "[~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@4]/2",
AS: "[~@3 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~ f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 b1@4]/2",
AT: "[b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 f#1@5 ~@2 f#1@5 ~ f#1@5 ~@2]/2",
AU: "[f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 b1@5 ~@2 b1@5 ~]/2",
AV: "[~ b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 b1@5 ~@2 f#1@5 ~ f#1@5 ~]/2",
AW: "[~ f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5]/2",
AX: "[~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~ f#1@5 ~@2 f#1@5]/2",
AY: "[~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@5 ~@2 f#1@23 ~@12]/3",
})).s("gm_electric_bass_pick").gain(0.5)
// chords · epiano1 · "rhodes piano"
const epiano1 = note("<A@8 B C@7 D@7 E@7 F@8 G@7 H@8 I@7 J@4 K@5 L@7 M@7 N@5 ~>".pickRestart({
A: "[f#4@27 f#4@27 ~ g#3@27 ~ [a#3,f#4]@27 ~ f#4@27 [b3,d4,f#4]@27 ~ [g#3,b3,d4]@26, ~@110 [a#3,c#4]@27 ~@55]/8", // D#m Bm G#dim A#m
B: "~@2 [a#3,c#4,f#4]@5 ~@17", // F#
C: "[~@5 c#4 ~ a#3@26 [a#3,c#4,f4]@12 ~@2 [a#3,c#4,e4]@13 ~ [f#3,b3,d#4]@28 [f#3,b3,d4]@26 ~ [a#3,c#4,f#4]@40 ~ [a#3,c#4,f#4]@11, ~@5 f#4@28 ~@135]/7", // A#m A#dim B Bm F#
D: "[~@4 [a#3,c#4,f#4]@27 [a#3,c#4,f4]@12 ~@2 [a#3,c#4,e4]@13 ~ [f#3,b3,d#4]@28 [f#3,b3,d4]@26 ~ [f#3,b3,d4] [a#3,c#4,f#4]@39 ~@2 [a#3,c#4,f#4]@12]/7", // F# A#m A#dim B Bm F#
E: "[~@2 [a#3,c#4,f4]@28 [a#3,c#4,e4]@26 ~ [f#3,b3,d#4]@55 [a#3,d4,f4]@54 d#4 ~]/7", // A#m A#dim B A#
F: "[[f#3,a#3,d#4]@41 [f#3,a#3,d#4]@10 g#3@2 c4@2 [g#3,c4,d#4]@28 [f#3,b3,d4]@26 ~ [a#3,c#4,f#4] [a#3,c#4,f#4]@28 [a#3,c#4,f4]@12 ~ [a#3,c#4,e4]@13 ~ [f#3,b3,d#4]@26]/8", // D#m G# Bm F# A#m A#dim B
G: "[~@2 [f#3,b3,d4]@26 [a#3,c#4,f#4] [a#3,c#4,f#4]@40 ~@2 [a#3,c#4,f#4]@13 ~ [a#3,c#4,f#4]@28 [a#3,c#4,f4]@14 [a#3,c#4,e4]@12 ~ [f#3,b3,d#4]@28]/7", // Bm F# A#m A#dim B
H: "[[f#3,b3,d4]@12 ~@2 [f#3,b3,d4]@13 [f#3,b3,d4] ~ [a#3,c#4,f#4]@53 ~ [a#3,c#4,f#4]@28 [a#3,c#4,f4]@12 ~ f4 e4@12 ~ [f#3,b3,d#4]@28 [f#3,b3,d4]@26, ~@124 [a#3,c#4]@13 ~@55]/8", // Bm F# A#m B Bm A#m
I: "[~@2 [a#3,c#4,f#4]@40 ~ [a#3,c#4,f#4]@13 ~ [a#3,c#4,f#4]@7 ~ [c#4,f4]@20 [a#3,c#4,e4]@26 ~@2 [f#3,b3,d#4]@55, ~@64 a#3@21 ~@83]/7", // F# C# A#dim B
J: "[[f#3,d#4] [a#3,d4,f4]@53 d#4 [f#3,a#3,d#4]@41, b3 ~@47]/4", // D#m A# D#m
K: "[~ [f#3,a#3,d#4]@12 g#3@2 [g#3,c4,d#4]@28 [f#3,b3,d4]@27 f#4@28 f4@14 e4@8, ~@7 [a#3,c#4]@5]/5", // D#m G# Bm A#m
L: "[~@6 d#4@28 d4@26 [c#4,f#4] f#4@28 f4@13 f4 e4@12 ~ d#4@26 ~ d4@25, ~@6 [f#3,b3]@54 ~ [a#3,c#4]@41 [a#3,c#4]@13 ~ [f#3,b3]@52]/7", // F#5 B5 A#m B5
M: "[~@4 f#4@28 f4@14 f#4 e4@12 d#4@28 d4@27 [a#3,c#4,f#4]@41 ~ [a#3,c#4,f#4]@12, ~@4 [a#3,c#4]@55 [f#3,b3]@55 ~@54]/7", // F# A#m B5
N: "[~@2 [a#3,c#4,f#4]@13 ~ [a#3,c#4,f#4]@13 ~ [b3,d4,f#4]@27 [g#3,b3,f4]@13 ~ [g#3,b3,f4]@13 ~ [a#3,c#4,f#4]@23 ~@12]/5", // F# Bm Fdim F#
})).s("gm_epiano1").gain(0.54)
// chords · electric guitar clean · "guitar"
const electric_guitar_clean = note(`<
A B C D@2 E F G H ~@16 I J@3 K L M N O@2 ~@22 P@2 Q R S T U@2 V W X Y@4 Z AA AB AC AD AE@2 AF AG AH AI AJ AK@2 AL@2 ~
>`.pickRestart({
A: "~@6 f#3@3 ~ f#3 ~@6 f#3@2 ~@5", B: "~@3 f#3@2 ~@9 f#3@10", C: "f#3@2 ~@12 d4@3 d4@2 ~@5",
D: "[d4@2 ~@9 c#4 ~@9 f#3@10 f#3@2 ~@13 a#3@2, ~@15 f#3]/2", E: "~ [f#3,a#3]@2 ~@5 [f#3,a#3] ~@9 [f#3,b3]@2 ~@4",
F: "~@5 f#3@10 [f#3,b3]@2 ~@7, ~@2 b3@5 ~@5", G: "~@5 [g#3,d4]@3 [g#3,d4]@2 ~@5 [g#3,d4]@2 ~@7",
H: "~@2 [a#3,c#4]@5 ~@17", I: "~@16 [f#3,b3]@3 ~ b3 ~@3, ~@19 f#3@2 ~@3",
J: "[~@2 [b3,d#4]@2 ~@9 [b3,d#4]@3 ~@7 [b3,d#4]@10 [f#3,b3]@3 ~ [b3,d#4]@2 ~@8 [a#3,f4]@2 ~@9 [a#3,d4]@2 ~@8 [d4,f4]@2 ~@2]/3", // B B5 B A#5 A# Dm
K: "~@7 a#3@10 [a#3,f4]@3 ~@4, ~@3 d4@5 ~@4", L: "~@7 [f#3,d#4]@2 ~@8 [f#3,a#3]@2 ~@5",
M: "~@2 d#4 ~@4 [a#3,d#4]@5, ~@3 a#3@2 ~@19", N: "[f#3,d#4]@3 [g#3,d#4] [g#3,c4]!2 ~@8 [c4,d#4]@2 ~@8",
O: "[~ g#3 ~@9 [f#3,d4]@2 ~@8 [b3,d4]@10 ~ [f#3,b3]@2 ~@14, d#4 ~@23]/2", // D Bm B5
P: "[~@23 [f#3,b3]@3 ~ [f#3,b3]@2 ~@5 [b3,d#4]@2 ~@8 [b3,d#4]@3 ~]/2", // B5 B
Q: "~@7 d#4@10 [f#3,b3]@3 ~ d#4@2 ~, ~@3 b3@5 ~@2 b3 ~", R: "~@7 [a#3,f4]@2 ~@8 [a#3,d4]@2 ~@5",
S: "~@2 [d4,f4] ~@4 [a#3,d4]@5", T: "~ f4@2 ~@11 [f#3,d#4]@2 ~@8, a#3 ~@7",
U: "[~ f#3@2 ~@8 [a#3,d#4]@2 ~@9 a#3@10 [f#3,d#4]@3 [f#3,d#4]@2 [g#3,d#4] ~@8 [c4,d#4]@2, a#3@2 ~@19 d#4@10 ~@17]/2", // D#5 D#m G#5 Cm
V: "~@8 [g#3,d#4]@2 ~@9 d4@2 ~@3, ~@9 f#3 ~@2", W: "~@5 [b3,d4]@10 [f#3,b3]@2 ~@7",
X: "~@5 [c#4,f#4]@3 ~ f#4 ~@5 f#4 a#3@2 ~@6, ~@4 c#4 ~@7", // F#5
Y: "[~@2 [a#3,f#4]@3 ~@7 [a#3,f4]@4 [a#3,e4]@6 ~ [c#4,e4]@3 [a#3,f#4]@2 ~@9 f#3@2 ~@8 [b3,d#4]@2 ~@9 d4 ~@9 [b3,d4]@10 [f#3,b3]@3 ~@11 [a#3,f#4]@2 ~@2, ~@36 b3@2 ~@19 [f#3,d#4]@2 ~@37]/4", // D#m A#5 A#dim C#m D#m B Bm B5 …
Z: "~@6 [a#3,c#4]@2 ~@9 [c#4,f4]@2 ~@5", AA: "~@3 [c#4,f#4]@5 [c#4,f#4]@5 [a#3,e4]@3 ~ [a#3,f#4]@2 ~@5",
AB: "~@3 [f#3,d#4]@2 ~@9 [f#3,b3]@2 ~@8", AC: "[f#3,d4]@2 ~@9 d4@10 [f#3,b3]@2 ~, ~@5 b3@5 ~@2",
AD: "~@11 [c#4,f#4]@3 [c#4,f#4]@2 ~@5 [a#3,f#4]@2 ~", // F#5 D#m
AE: "[~@8 f#4@2 ~@8 [a#3,f4]@4 f#4 e4@5 [c#4,e4]@3 ~ a#3@2 ~@8 [f#3,b3]@2 ~@4, ~@7 a#3@3 ~@12 a#3@6 ~@3 f#4@2 ~@15]/2", // A#5 C#m B5
AF: "~@5 d#4@2 ~@8 [f#3,d4]@2 ~@7, ~@2 b3 ~@9", AG: "~ [b3,d4]@10 ~ [f#3,b3]@3 ~@9",
AH: "~@2 a#3 ~@9 [a#3,c#4]@2 ~@8 [c#4,f#4]@2, ~ f#4@2 ~@21", AI: "~@9 c#4@10 [a#3,f#4]@3 [a#3,f#4]@2, ~@4 f#4@5 ~@3",
AJ: "~@9 [f#3,a#3]@3 [f#3,a#3]@2 ~@5 [f#3,a#3] ~@4", // F#
AK: "[~@6 [f#3,b3]@2 ~@8 [f#3,b3]@10 [f#3,b3]@2 ~@13 g#3@3 [g#3,d4]@2 ~@2, ~@40 d4@3 ~@5]/2", // B5 G#dim
AL: "[~@3 [g#3,d4]@2 ~@5 g#3@3 f#3@23 ~@12, ~@3 d4 ~@12]/2", // G#dim
})).s("gm_electric_guitar_clean").gain(0.35)
// chords · piano · "guitar"
const piano = note("<~@9 A@3 ~ B@6 ~ C D@3 ~@10 E@3 ~@2 F@3 ~ G@4 ~ H@3 ~@2 I@3 ~@33>".pickRestart({
A: "[~@13 c#3@17 ~@6, ~@6 c#3@13 a#3@41 ~@12, ~@6 f#3@7 ~@23]/3",
B: "[~@20 f#3@7 ~@14 c#3@34 ~@21 c#3@34 f#3 ~@13, ~@27 f#3@14 ~@35 c#3@13 a#3@41 ~@14, ~@34 a#3@41 ~@7 f#3@14 ~@48]/6",
C: "~@18 b3 f#3@5", D: "[~@15 c#3@34 ~@23, ~ f#3@14 ~@57, ~@8 a#3@41 ~@23]/3",
E: "[~@35 c#3@34 ~@3, ~@15 c#3@13 a#3@41 ~@3, ~@21 f#3@14 ~@37]/3",
F: "[~@5 f#3@7 ~@14 c#3@34 ~@12, ~@6 f#3@7 ~@23, ~@19 a#3@41 ~@12]/3",
G: "[~@16 d3@9 ~@7, ~@20 f#3@13 ~ d#3@14 ~@48, ~@27 b3@14 f#3@34 ~@21]/4",
H: "[~@16 c#3@17 ~@3, ~@11 c#3@13 ~ a#3@41 ~@6, ~@9 f#3@7 ~@20]/3",
I: "[~@2 f#3@7 ~@13 c#3@34 ~@16, ~@9 f#3@14 ~@49, ~@15 a#3@41 ~@16]/3",
})).s("gm_piano").gain(0.3)
// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note("<A@8 B C@7 D@2 E@7 F@7 G@7 H@7 I@7 J@7 K@2 L@7 M@7 N@7 O@5 ~>".pickRestart({
A: "[[a#3,c#4,f#4]@27 [b3,d4,f#4]@27 [b3,d4,f4]@27 ~ [a#3,c#4,f#4]@27 ~ [a#3,c#4,f#4,c#6]@27 ~ f#4@27 [b3,d4,f4,f6]@27, ~@137 [b3,d4,d6]@28 ~@27]/8", // F# Bm Bdim F# Bdim Bm
B: "~ [a#3,c#4,f#5,f#6]@2 [f5,f6] [e5,e6] [d#5,d#6] ~ [d5,d6] [c#5,c#6] ~@15, ~ f#4@7 ~@16", // F# F E D# D C#
C: "[~@5 c#4 ~@27 f4@14 e4@14 d#4@27 d4@28 [f#3,a#3,c#4]@52, ~@5 f#3@27 ~@29 [f#3,b3]@55 ~@52, ~ a#3@9 ~@18]/7", // F# B5
D: "[~@3 f#3@28 f4@14 e4@3, ~ [a#3,c#4]@15]/2", // A#m
E: "[~@11 d#4@27 d4@28 ~ f#3@55 f4@27 e4@19, ~@10 b3@57 [a#3,c#4]@101, ~@5 f#3 ~@78]/7", // A#m
F: "[~@9 [f#3,b3,d#4]@56 [a#3,d4,f4]@53 ~@2 f#3@48, ~@59 d#4@25]/7", // B A#
G: "[~@5 c4@30 [f#3,b3,d4]@26 [a#3,c#4] f#4 f#3@28 f4@13 e4@14 d#4@28 d4@22, ~@3 g#3@32 ~@28 [a#3,c#4]@55 [f#3,b3]@50]/7", // Bm A#m B5
H: "[~@4 f#3@85 f4@13 e4@13 ~ d#4@28 d4@24, ~ [a#3,c#4]@28 [f#3,b3]@13]/7", // A#m B5
I: "[~@4 [f#3,a#3,c#4]@55 f#3@28 f4@14 e4@13 ~@28 d4@26, ~@59 [a#3,c#4]@55 d#4@28 ~@26, ~@115 [f#3,b3]@53]/7", // F# A#m B5
J: "[~@2 f#3@62 f4@21 e4@27 ~ [f#3,b3,d#4]@55, ~ [a#3,c#4]@55 ~@28]/7", K: "[~ [a#3,d4,f4]@47]/2",
L: "[~@8 f#3@53 ~ c4@28 ~ [f#3,b3,d4]@27 f#4@28 f4@14 e4@8, ~@6 d#4@55 g#3@30 ~@27 [a#3,c#4]@50]/7", // Bm A#m
M: "[~@6 d#4@28 d4@26 ~@29 f4@14 e4@13 ~ d#4@26 d4@25, ~@6 [f#3,b3]@54 f#4@29 ~@79, ~@30 c#4 ~@53, ~@61 a#3@55 ~ [f#3,b3]@51]/7", // B5
N: "[~@4 f#4@28 f4@13 f#4 ~ e4@12 d#4@28 d4@28 [a#3,c#4,f#4]@53, ~@4 [a#3,c#4]@55 [f#3,b3]@55 ~@54]/7", // F# A#m B5
O: "[~@2 [a#3,c#4,f#4]@27 ~ [b3,d4,f#4]@27 [b3,d4,f4]@27 ~ [f#3,a#3,c#4,f#4]@11 [a#3,c#4,f#4]@12 ~@12, ~@85 f#5@23 ~@12]/5", // F# Bm Bdim F#
})).s("gm_string_ensemble_1").gain(0.3)
// other · harpsichord
const harpsichord = note(`<
A B C D E F G H I J K@6 L M N O P Q R S T U@5 V W X Y Z AA AB AC AD AE AF@5 AG AH AI AJ AK AL AM AN AO AP AQ@4 AR AS
AT AU AV AW AX AY AZ BA BB@5 BC BD BE BF BG BH BI BJ BK BL@4 ~@2
>`.pickRestart({
A: "a#3@3 c#4@3 f#4@3 ~ c#4@3 f#4@3 ~ a#4@3 f#4@3 ~", B: "a#4@3 b4@3 ~ d4@3 f#4@3 ~ b4@3 f#4@3 d4@3 ~",
C: "f#4@3 b3@3 ~ g#3@3 b3@3 ~ d4@3 f4@3 ~ g#4@3", D: "b4@3 ~ f4@3 g#4@3 ~ c#5@3 f#5@3 a#4@3 ~ c#5@3",
E: "f#4@3 ~ a#4@3 c#4@3 ~ f#4@3 a#3@3 ~ c#4@3 f#4@3", F: "~ c#4@3 f#4@3 ~ a#4@3 f#4@3 a#4@3 ~ b4@3 d4@3",
G: "~ f#4@3 b4@3 ~ f#4@3 d4@3 ~ f#4@3 b3@3 ~ g#3@2", H: "~ b3@3 ~ d4@3 f4@3 ~ g#4@3 b4@3 f4@3 ~ c#5@2",
I: "~ f#5@3 ~@20", J: "~@5 f#4@3 c#4@3 ~ a#4@3 c#4@3 ~ f#3@3 ~@2",
K: "[~@5 a#4@3 ~ f4@3 c#4@3 ~ a#4@3 c#4@3 ~ f#3@3 a#3@3 ~ c#4@3 a#3@3 b3@3 ~ f#4@3 d#4@3 ~ f#4@3 [f#3,d#4]@3 ~ b3@3 f#4@3 ~ d#4@3 b3@3 ~ f#4@3 d4@3 f#4@3 ~ b3@3 ~@7 d4@3 ~ f#3@3 a#3@3 ~ c#4@3 a#3@3 ~ f#3@3 ~@7 a#4@3 f#4@3 ~ c#4@3 a#4@3 ~ c#4@3 f#4@3 ~@8]/6", // D#m
L: "a#3@3 f#4@3 ~ c#4@3 a#4@3 ~ c#4@3 f#3@3 ~@4", M: "~@3 a#4@3 ~ f4@3 c#4@3 ~ a#4@3 c#4@3 ~ f#3@3",
N: "a#3@3 ~ c#4@3 a#3@3 f#3 b3@3 f#4@3 ~ d#4@3 f#4@3", O: "[f#3,d#4]@3 ~ b3@3 f#4@3 ~ d#4@3 b3@3 ~ f#4@3 d4@3",
P: "~ f#4@3 b3@3 ~@8 d4@3 b3@2 ~ a#3@3, ~@10 f#3 ~", Q: "~ c#4@3 a#3@3 ~ f#3@3 ~@7 a#4@3 ~ f#4@2",
R: "~ c#4@3 ~ a#4@3 c#4@3 ~ f#4@3 ~@7 a#3@2", S: "~ f#3@3 ~ a#3@3 c#4@3 ~ a#3@3 f4@3 ~ c#4@3 a#4@2",
T: "~@2 c#4@3 e4@3 ~ a#4@3 [c#4,e4]@3 a#4@3 ~ f#3@3 a#3@2", // C#m
U: "[~@2 e4@3 a#4@3 ~ d#4@2 ~ f#4@2 ~@2 b4@2 ~ f#4@2 ~@2 b4@2 ~ d#5@2 ~@2 b4@2 ~ d#5@2 ~ f#5@2 ~@2 d#5@2 ~ b4@2 ~@2 d#5@2 ~ b4@2 ~@2 f#4@2 ~ b4@2 ~@2 f#4@2 ~ d4@2 ~@2 f4@2 ~ a#4@2 ~@2 f4@2 ~ a#4@2 ~@2 d5@2 ~ a#4@2 ~ d5@2 ~@2 f5@2 ~ a#5@2 ~@2 d5@2 ~ f5@2 ~@2 a#4@2 ~ d5@2 ~@2 f4@2 ~ a#4@3 d#4]/5",
V: "f#3@2 ~ a#3@2 ~@2 d#4@2 ~ a#3@2 ~ d#4@2 ~@2 f#4@2 ~ d#4@2 ~@2",
W: "f#4@2 ~ a#4@2 ~@2 f#4@2 ~ d#4@2 ~@2 a#4@2 ~ f#4@2 ~@2 d#4@2 ~",
X: "a#3@2 ~@2 g#4@2 ~ c4@2 ~ d#4@2 ~@2 g#4@2 ~ d#4@2 ~@2 g#4@2 ~",
Y: "c5@2 ~@2 g#4@2 ~ c5@2 ~@2 f#5@2 ~ b5@2 ~@2 d5@2 ~ f#5@2 ~",
Z: "~ b4@2 ~ d5@2 ~ f#4@2 ~@2 b4@2 ~@2 f#4@3 c#4@3 a#4@3", AA: "~ c#4@3 f#3@3 ~@8 a#4@3 f#4 f4@2 c#4@3",
AB: "~ a#4@3 c#4@3 ~ f#3@3 a#3@3 ~ c#4@3 a#3@3 ~ b3@2", AC: "~ f#4@3 ~ d#4@3 f#4@3 ~ [f#3,d#4]@3 b3@3 ~ f#4@3 d#4@2",
AD: "~@2 b3@3 f#4@3 d4@3 ~ f#4@3 b3@3 ~@6", AE: "~@2 d4@2 a#3 f#3@3 ~ a#3@3 c#4@3 ~ a#3@3 f#3@3 ~@2",
AF: "[~@5 a#4@3 ~ f#4@3 c#4@3 ~ a#4@3 c#4@3 ~ f#4@3 ~@7 a#3@3 ~ f#3@3 a#3@3 ~ c#4@3 a#3@3 f#4@3 ~ c#4@3 a#4@3 ~ c#4@3 f#4 f4@2 ~ a#4@3 [c#4,f4]@3 ~ a#4@3 f#3@3 ~ a#3@3 e4@3 a#4@3 ~ b3@3 f#4@3 ~ d#4@3 f#4@3 ~ b3@3 ~@7 d#4@3 ~]/5", // C#
AG: "b3@3 f#4@3 ~ d4@3 f#4@3 ~ b3@3 d4@3 f#3@3 ~", AH: "d4@3 b3@2 f#4@2 c#4@3 a#4@3 ~ c#4@3 [c#4,a#4]@3 ~ f#4@3",
AI: "c#4@3 ~ a#4@3 f#4@3 ~ c#4@3 a#4@3 c#4@3 ~ f#4@3", AJ: "~@7 a#3@3 ~ f#4@3 c#4@3 ~ a#4@3 c#4@3",
AK: "~ f#3@3 ~@7 a#4@3 f#4 f4@2 ~ c#4@3 a#4@3", AL: "~ c#4@3 f#3@3 ~ a#3@3 c#4@3 ~ a#3@3 b3@3 ~ f#4@2",
AM: "~ d#4@3 ~ f#4@3 [f#3,d#4]@3 b3@3 ~ f#4@3 d#4@3 ~ b3@2", AN: "~ f#4@3 ~ d4@3 f#4@3 ~ b3@3 ~@7 d4@2",
AO: "~@2 f#3@3 a#3@3 ~ c#4@3 a#3@3 f#3@3 ~@6", AP: "~@2 a#4@3 f#4@3 ~ c#4@3 a#4@3 ~ c#4@3 f#4@3 ~@2",
AQ: "[~@5 a#3@3 ~ f#3@3 a#3@3 ~ c#4@3 a#3@3 ~ f4@3 c#4@3 ~ a#4@3 c#4@3 ~ e4@3 a#4@3 ~ [c#4,e4]@3 a#4@3 ~ f#3@3 a#3@3 e4@3 ~ a#4@3 ~ d#4@2 ~ f#4@2 ~ b4@2 ~@2 f#4@2 ~ b4@2 ~@2 d#5@2 ~ b4@2 ~@2 d#5@2 ~ f#5@2 ~@2]/4", // C#m
AR: "d#5@2 ~ b4@2 ~ d#5@2 ~@2 b4@2 ~ f#4@2 ~@2 b4@2 ~ f#4@2 ~@2",
AS: "d#4@2 d4 f4@2 ~@2 a#4@2 ~ f4@2 ~@2 a#4@2 ~ d5@2 ~@2 a#4@2 ~",
AT: "d5@2 ~ f5@2 ~@2 a#5@2 ~ d5@2 ~@2 f5@2 ~ a#4@2 ~@2 d5@2 ~",
AU: "f4@2 ~@2 a#4@3 f#3@2 ~@2 a#3@2 ~ d#4@2 ~@2 a#3@2 ~ d#4@2 ~",
AV: "f#4@2 ~@2 d#4@2 ~ f#4@2 ~@2 a#4@2 ~ f#4@2 ~@2 d#4@2 ~ a#4@2 ~",
AW: "~ f#4@2 ~ d#4@2 ~@2 a#3@2 ~ d#4@2 g#4 ~ c4@2 ~ d#4@2 ~ g#4@2 ~",
AX: "~ d#4@2 ~ g#4@2 ~@2 c5@2 ~ g#4@2 ~@2 c5@2 ~ f#5@2 ~@2 b5@2",
AY: "~ d5@2 ~@2 f#5@2 ~ b4@2 ~@2 d5@2 ~ f#4@2 ~ b4@2 ~@2 a#3@2",
AZ: "~ c#4@2 ~@2 f#4@2 ~ c#4@2 ~@2 f#4@2 ~ a#4@2 ~@2 f#4@2 ~ a#4@2",
BA: "~@2 c#5@2 ~ a#4@2 ~@2 f#4@2 ~ a#4@2 ~@2 f#4@2 ~ c#4@2 ~ f#4@2",
BB: "[~@2 c#4@2 ~ d#4@2 ~@2 f#4@2 ~ b4@2 ~@2 f#4@2 ~ b4@2 ~@2 d#5@2 ~ b4@2 ~@2 d#5@2 ~ f#5@2 ~ b5@2 ~@2 d5@2 ~ f#5@2 ~@2 b4@2 ~ d5@2 ~@2 f#4@2 ~ b4@3 ~ a#3@2 ~ c#4@2 ~@2 f#4@2 ~ c#4@2 ~@2 f#4@2 ~ a#4@2 ~@2 f#4@2 ~ a#4@2 ~ c#5@2 ~@2 a#4@2 ~ f#4@2 ~@2 c#5@2 ~ a#4@2 ~@2 f#4@2 ~ c#4@2 ~@2 f#4@2 ~ d#4@2 ~@2]/5",
BC: "f#4@2 ~ b4@2 ~ f#4@2 ~@2 b4@2 ~ d#5@2 ~@2 b4@2 ~ d#5@2 ~@2",
BD: "f#5@2 ~ b5@2 ~@2 d5@2 ~ f#5@2 ~@2 b4@2 ~ d5@2 ~@2 f#4@2 ~",
BE: "b4@2 ~@2 a#3@2 ~ c#4@2 ~ f#4@2 ~@2 c#4@2 ~ f#4@2 ~@2 a#4@2 ~",
BF: "f#4@2 ~@2 a#4@2 ~ c#5@2 ~@2 a#4@2 ~ f#4@2 ~@2 a#4@2 ~ f#4@2 ~",
BG: "~ c#4@2 ~ f#4@2 ~ c#4@2 ~@2 d#4@2 ~ f#4@2 ~@2 b4@2 ~ f#4@2 ~",
BH: "~ b4@2 ~ d#5@2 ~@2 b4@2 ~ d#5@2 ~@2 f#5@2 ~ b5@2 ~@2 d5@2",
BI: "~ f#5@2 ~@2 b4@2 ~ d5@2 ~ f#4@2 ~@2 b4@2 ~ a#3@2 ~@2 c#4@2",
BJ: "~ f#4@2 ~@2 c#4@2 ~ f#4@2 ~@2 a#4@2 ~ f#4@2 ~@2 a#4@2 ~ c#5@2",
BK: "~@2 a#4@2 ~ f#4@2 ~ c#5@2 ~@2 a#4@2 ~ f#4@2 ~@2 c#4@2 ~ f#4@2",
BL: "[~@2 a#3@3 c#4@3 ~ f#4@3 c#4@3 ~ f#4@3 a#4@3 ~ f#4@3 a#4@3 ~ b4@3 d4@3 f#4@3 ~ b4@3 f#4@3 ~ d4@3 f#4@3 ~ b3@3 [g#3,d4]@3 ~ [b3,f4]@3 [d4,g#4]@3 ~ [f4,b4]@3 [g#4,f5]@3 ~ d5@3 [f4,b4]@3 g#4@3 ~ [c#4,a#4,f#5]@11]/4", // G#dim Bdim Ddim Fdim C# Fdim F#
})).s("gm_harpsichord").gain(0.25)
// other · clavinet · "clavi"
const clavinet = note(`<
A B C D E F G H I J ~@2 K L M N O ~@2 P Q R S T U V@5 W X Y Z AA AB ~ AC AD U AE@2 AF AG AH ~ AI AJ@2 AK ~ AL AM T AN
AE@2 AO@2 AP AQ AR AS AT AU AV AW AX AY AZ@5 BA BB BC BD BE BF BG BH BI BJ@4 ~@2
>`.pickRestart({
A: "f#3@3 a#3@3 c#3@3 ~ a#3@3 c#3@3 ~ f#4@2 ~ c#4@2 ~@2", B: "f#4@2 ~ d4@2 ~@2 f#4@2 ~ b3@2 ~@2 f#4@2 ~ d3@3 f#3@3 ~",
C: "b3@3 d3@3 ~ f3@3 g#3@3 ~ b3@3 d3@3 ~ f#3@3", D: "d4@2 ~@2 g#3@2 ~ b3@2 ~@2 a#3@2 ~ c#4@2 ~ f#4@2 ~@2 a#3@2 ~",
E: "c#3@3 ~ f#3@3 a#3@3 ~ c#3@3 f#3@3 ~ a#3@3 c#3@3", F: "~ a#3@3 c#3@3 ~ f#4@2 ~ c#4@2 ~ f#4@2 ~@2 d4@2 ~ f#4@2 ~",
G: "~ b3@2 ~ f#4@2 ~@2 d3@3 f#3@3 ~ b3@3 d3@3 ~ f3@2", H: "~ g#3@3 ~ b3@3 d3@3 ~ f#3@3 d4@2 ~ g#3@2 ~@2 b3@2",
I: "~ a#3@2 ~@21", J: "~@19 [a#3,c#4]@3 ~@2, ~@19 f#2@5", K: "~@2 b3@3 ~@19", L: "~@7 b2@5 ~@12, ~@2 [f#3,d4] ~@5",
M: "~@10 [a#3,c#4]@3 ~@11, ~@10 f#2@5 ~@9", N: "~@14 f#2@5 ~@5, ~@13 c#4@3 ~@8, ~@14 a#3@3 ~@7",
O: "~@18 f#2@5 ~, ~@17 [a#3,c#4]@3 ~@4", P: "b3 ~@7", Q: "~@5 b2@5 ~@14, ~@4 f#3@3 ~@17, ~@5 d4@3 ~@16",
R: "~@8 [a#3,c#4]@3 ~@13, ~@8 f#2@5 ~@11", S: "~@4 [a#3,c#4] ~@3, ~@12 f#2@5 ~@7",
T: "~@16 f#2@5 ~@3, ~@5 c#4 ~@2, ~@16 a#3@3 ~@5", U: "~@5 f#2, ~@19 [a#3,c#4]@3 ~@2",
// … 290 more lines
More by Billy Preston
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.