0:00/0:00
// With You I'm Born Again — Billy Preston
// 84 bpm, 3/4, key D major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 91 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/3)
// 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, A@4 for four bars: edit a riff to change every repeat.
// chords · piano
const piano = note(`<
~@39 A ~@2 B C D E F G H I J K@2 L@2 M N@2 O@2 P Q@5 R S@2 T U@5 V W X Y Z AA AB AC AD@8
>`.pickRestart({
A: "~ f6@10 a#5@10 ~@11", B: "~@4 g#3@11 ~, ~@3 d#3@27 ~@2", C: "~@8 g3@21 ~@3, ~@3 d#3@27 ~@2",
D: "~@4 f3@11 ~, ~@3 d#3@27 ~@2", E: "~@9 g3@21 ~@2, ~@3 d#3@27 ~@2", F: "~@9 g#3@23, ~@3 d#3@29",
G: "~@9 g3@23, ~@4 d#3@27 ~", H: "~@5 f3@11, ~@4 d#3@27 ~", I: "~@10 g3@21 ~, ~@5 d#3@27",
J: "~@15 [a#4,c#5]@5 ~ d#5@11", K: "[~@20 d#5@3 f5@2 ~ f#5@2 g#5@3 a#5@33]/2",
L: "[~@7 c#5 ~ c#6@5 a#5@2 ~ g#5@3 d#5@2 f5@3 c#5@2 a#4@3 g#4@27 ~@7]/2", M: "~@3 a#4@2 c#5@2 ~ d#5@15 ~@9",
N: "[~@4 g#5 ~ f5 ~ d#5@4 ~ a#5@5 f5@6 a#4@3 g#4@2 a#4@26 ~@9, ~@3 a#5@2 g5@2 ~@57]/2",
O: "[~@14 d#4@2 f4@3 f#4@2 g#4@3 a#4@3 b4@3 c#5@25 ~ a#4@2 ~ b4@2 c#5@2 ~]/2", P: "d#5@2 ~ c#5@21 g#4@3 a#4@2 b4@2 ~",
Q: "[c#5@2 ~ c#5@22 ~ b4 ~ c#5 d#5@18 ~@3 d#5@2 ~ c#5@3 b4@2 a#4@3 d#5@16 a#4@2 d#5@2 ~ d#5@5 a#4@3 d#5@2 g#5@3 d#5@2 ~ a#4@5 d#5@16 a#4@2 ~ d#5@2 g5@3 d#5@3 a#4@5 g4@5 f4@5 ~ d#4@5 a#3@5 ~@4]/5",
R: "~@2 g#3@2 b3@3 d#4@6 f#4@5 g#4@5 a#4@5 ~@4",
S: "[~@2 a#3@3 c#4@3 f4@2 g#4@2 ~ a#4@3 g#4@2 f4@5 ~ c#4@5 b3@6 d#4@5 f#4@5 a#4@6 g#4@5 f#4@5 ~ a#3@2]/2",
T: "c#4@3 f4@3 g#4@2 a#4@11 g#4@3 ~@3 a#4@5 b3@2, ~@25 g#4 ~@6",
U: "[~ d#4@2 f#4@3 g#4@3 b4@5 c#5@5 ~ d#5@5 c#5@5 ~@8 g#4@3 a#4@11 g#4@5 a#4@5 ~@8 e4@13 ~ g#4@6 ~@10 g#4@5 ~ b4@5 c#5@5 ~ d#5@5 e5@5 c#3@3 e3@3 g#3@3 c#4@3 d#4@2 e4@3 f#4@3 g#4@3 c#2 [g#2,b2] [c#3,e3] [g#3,b3] c#4 [e4,g#4] b4 c#5 [e5,g#5] ~, ~@30 a#3@6 f4@5 ~@24 b3@24 ~@6 [c#4,e4]@17 ~@48, ~@33 c#4@5 ~@24 g#3@26 ~@65 f#3@2 ~@5, ~@17 d#4@4 ~@19]/5", // G#m C#m G#m E C#m
V: "~@21 g4@5 b4@5 ~, e3@13 ~@3, ~@5 g3@21 ~@6, ~@11 b3@16 ~@5, ~ e4",
W: "~@16 f#4@5 a4@5 ~ b4@5, f#3, ~@5 b3@27, ~@5 d4@11",
X: "~@16 g4@5 b4@5 ~ g4@5, g3@29 ~@3, ~@5 c4@24 ~@3, ~@11 e4@19 ~@2",
Y: "~@16 f#4@5 a4@5 ~ b4@5, f#3@29 ~@3, ~@5 b3@27, ~@11 d4@21", Z: "~@16 g4@5 a4@5 ~ b4@5, a3, ~@5 c4@27, ~@11 e4@21",
AA: "~@16 f#4@5 ~ a4@5 f#4@5, f#3@27 ~@5, ~@5 b3@27, ~@11 d4@11 d#4@10",
AB: "~@17 e4@5 g4@6 a4@4, e3@15 ~, ~@6 g3@25 ~, ~@11 b3@21", AC: "~@19 e4@6 g4@6 a4, ~ e3@15, ~@7 g3@25, ~@13 b3@19",
AD: "[~@6 e4@33 ~@4 f#4@31 ~@72 b5@4 ~@2 [b3,e4]@59 ~@9 [b4,e5]@23 ~@13, ~@3 g3@34 ~@4 [a3,b3]@37 ~@7 a2@24 b3@24 e5@6 a5@10 ~@107, ~@4 b3@34 ~@53 b2@24 e4@34 ~ e3@62 ~@44, ~@5 c4@34 ~@3 e4@37 ~@18 e3@24 a4@28 ~@2 g#3@60 ~@45, ~@103 a3@24 b4@22 ~@69 g#4@24 ~@14]/8", // E5 Asus2
})).s("gm_piano").gain(0.25).pan(0.3)
// bass · fretless bass
const bass = note("<~@41 A@6 B@2 C@8 D@8 E@7 F@3 G H I H J K L@3 ~ M@5 ~>".pickRestart({
A: "[~@29 d#2@27 d#2@5 ~ d#2@10 d#2@16 d#2@2 ~@4 d#2@24 ~@3 d#2@2 ~@3 d#2@21 a#2@5 ~ a#1@5 d#2@27 d#2@2 ~@3 d#2@2]/6",
B: "[~@9 d#2@16 a#2@5 ~ d#2@27 d#2@2 ~@3 d#2]/2",
C: "[~@21 a#2@10 d#2@26 ~ d#2@5 a#1@23 ~@3 a#1@5 ~ b1@23 d#2@2 ~ f#2@2 ~ b1@2 a#1@21 ~@6 a#1@5 g#1@26 g#1@5 ~ a#1@21 a#2@5 a#1@5 d#2@24 ~@3 d#2@2 ~@3 d#2@3]/8",
D: "[~@13 d#3@2 ~ f3@2 ~ g3@10 ~ d#2@16 a#2@5 d#2@5 a#1@5 ~ a#1@26 a#1@5 b1@24 f#2@2 ~ d#2@2 ~ b1@2 a#1@26 ~ a#1@5 g#1@26 ~ g#1@2 a1@2 ~ a#1@21 a#2@5 a#1@5 d#2@26 ~ d#2@5 d#2@4]/8",
E: "[~@7 a#1@10 ~ g1@10 g#1@21 ~ g#1@5 a1@5 ~ a#1@8 a#1@2 ~ a#1@16 a#2@5 b1@10 ~ b2@10 ~ b1@5 b1@5 ~ a#1@8 a#1@2 a#1@10 ~ a#2@10 ~ g#1@8 g#1@2 ~ g#1@8 ~@3 g#1@5 g#1@2 ~ a1@2 a#1@5 ~@3 a#1@2 ~ a#1@10 ~ a#2@5 a#1@5 e2@2]/7",
F: "[~@4 b2@5 f#3@10 ~ d#2@10 ~ c#2@5 g#2@5 ~ e3@16 g#2@5 c#2@8 ~ c#2@3 c#2@8 ~@2 c#2@5 ~ d#2@5]/3",
G: "e2@26 e2@5 ~", H: "b1@21 f#2@5 ~ b1@5", I: "c2@21 c2@2 ~ g2@2 ~ e2@2 c2@2 ~", J: "a1@21 a1@5 ~ a#1@5",
K: "b1@8 b1@2 ~ b1@13 ~@3 b1@5", L: "[e2@27 ~ e2@3 d#2@3 d2@35 ~@27]/3", M: "[~@15 b1@72 ~ e2@70 ~@2]/5",
})).s("gm_fretless_bass").gain(0.4)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@50 A B C D E F G@6 H@3 I@7 J@3 K L M N O P Q R@2 ~ S@4 ~@2>".pickRestart({
A: "~@10 [a#3,d#4]@8 ~@3 [d#4,f#4]@11", B: "~@10 [a#3,c#4]@8 ~@2 [c#4,f4]@11 ~",
C: "~@9 [b3,d#4]@8 ~@3 [d#4,f#4]@11 ~", D: "~@9 c#4@8 ~@2 [f4,g#4]@11 ~@2, ~@9 a#3@5 ~@18", E: "~@9 [b3,d#4]@21 ~@2",
F: "~@13 [b4,d#5]@5 ~ [a#4,c#5]@11 ~@2", // B A#m
G: "[~@19 a#4@8 ~@2 [d#4,g4,a#4]@27 ~@22 f#4@5 a#4@5 f#4@5 ~@11 f4@5 g#4@5 ~ f4@5 c#4@5 ~@16 f#4@5 ~ a#4@5 f#4@5 ~@11 f4@5 g#4@5 ~@6 c#4@5 g#3@3, ~@8 d#4@19 ~@35 f#3@29 ~@34 f#3@32 a#3@26 ~@9, ~@13 g#4@13 ~@41 a#3@24 ~@3 a#3@26 ~@11 b3@27 ~@4 c#4@16 ~@14, ~@72 d#4@21 ~@6 c#4@16 ~@21 d#4@21 ~@21 f4@11 ~@3]/6", // D#
H: "[~@8 d#4@5 ~@11 b3@5 ~@16 g#4@5 c5@5 g#4@5 ~@16 g#4@5 ~ a#4@5 g#4@5 g4@4, ~@2 b3@16 d#4@11 a#3@29 ~@2 a#3@29 ~@7, ~@13 f#4@16 ~@5 d#4@26 ~@6 d#4@24 ~@6, ~@39 f4@21 ~@11 f4@19 ~@6]/3",
I: "[~@12 f4@3 ~@3 g4@5 a#4@5 ~@17 f#4@5 g#4@5 f#4@5 ~@17 g#4@5 a#4@5 ~ g#4@5 ~@16 f#4@5 ~ a#4@5 f#4@5 ~@11 f4@5 ~ [f4,a#4]@5 g#4@3 f#4@3 d#4@2 c#4@3 ~@16 f#4@5 ~ g#4@5 f#4@5 ~@16 g#4@5 ~ a#4@5 g#4@5 g#3@2, ~@2 g3@24 ~@2 g#3@27 ~@17 f4@22 ~@10 d#4@22 ~@5 c#4@24 ~@14 d#4@22 ~@5 c#4@27 ~, ~@7 a#3@19 ~@8 b3@27 a#3@32 f#3@32 ~@33 g#3@32 ~@11 f4@21 ~@2, ~@12 d#4@16 ~@11 d#4@22 ~@5 c#4@27 ~@6 b3@27 a#3@32 ~@5 b3@27 a#3@32 ~@2]/7", // A#5
J: "[~@14 g#4@5 ~ [d#4,f#4]@11 ~@38 g#4@6 b4@10 g#4@5 ~ b4@5, ~@4 b3@16 ~@11 g#3@63 ~@2, ~@9 d#4@11 ~@16 b3@57 ~@3, ~@21 d#4@26 ~]/3", // D#m
K: "~@16 g4@5 b4@5 g4@5 ~, g3@29 ~@3, ~@5 b3@26 ~, ~@11 e4@21", L: "~@16 a4@5 b4@5 ~ a4@5, b3, ~@5 d4@27, ~@5 f#4@11",
M: "~@5 e4@5 ~ g4@5 b4@5 g4@5 ~ e4@5, c4", N: "~@16 b4@5 ~@6 d4@5, b3@27 ~@5, ~@5 d4@16 ~@11, ~@11 f#4@8 ~@2 f#4@11",
O: "~@11 e4@5 ~@11 c4@5, a3@27 ~@5, ~@5 c4@11 g4@16, ~@21 e4@11",
P: "~@5 d4@5 ~ f#4@5 d#4@5 ~ b3@5 d#4@5, b3@11 ~@21", Q: "~@11 e4@6 g4@5 e4@6 b3@4, g3@11 ~@21, ~@6 b3@11 ~@15",
R: "[~@2 g3@5 b3@6 e4@6 g4@6 e4@6 b3@6 ~@27]/2",
S: "[~@27 e3@6 ~@12 e4@42 ~ g#3@39 ~, ~@15 e2@73 ~@40, ~@21 b2@18 b3@48 ~@41, ~@33 a3@54 ~@41]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.7)
// chords · orchestral harp
const orchestral_harp = note("<A@4 B@2 C@7 D E@7 F@7 G H@8 I@7 J@6 ~@7 K ~@16 L ~@12 M@2 N@2>".pickRestart({
A: "[~@26 d#4@27 ~@5 c#4@27 ~@5 b3@31 ~@7]/4", B: "[~@2 a#3@14 ~@3 a#5@45, ~@9 a#4@23]/2",
C: "[~@26 a#4@29 ~@3 g#4@28 ~@3 f#4@30 ~@3 [c#4,g#4]@29 ~@4 f#4@30 ~@23 b3@11 d#2@5, ~@23 a#3@31 ~ a#3@29 ~@3 [f#3,b3]@32 ~@34 [g#3,d#4]@31 ~ g#3@25 ~@14, ~@24 [d#3,d#4]@31 ~@2 a#2@29 ~@2 [b2,d#4]@30 ~@3 a#2@31 ~@2 [g#2,b3]@30 ~@2 [a#2,d#4]@33 ~@5, ~@25 f#4@29 ~@2 c#4@27 ~@37 [a#3,f4]@31 ~@35 b3@20 ~@18, ~@57 f4@26 ~@104 f4@33 ~@4]/7", // C#5 B5 G#5 D# B G#m D#5 A#5
D: "~@11 a#3@5 f4@5 ~ g#4@4 ~ [d#4,g4]@5, a#2@7 ~, ~@5 f3@20 ~@7", // D#
E: "[~@17 d#4@9 a#3 d#4 ~ a#4@29 ~@2 [f4,g#4]@28 ~@5 a#4@27 ~@4 [c#4,g#4]@28 ~@5 a#4@28 ~@24 b3@11 d#2@4, ~ g3@26 d#3@31 a#3@29 ~@3 b3@30 ~@2 a#3@30 ~@34 g#3@25 ~@13, ~@6 a#3@20 ~@2 f#4@29 ~@2 [a#2,c#4]@29 ~@3 [b2,d#4]@30 ~@2 [a#2,f4]@31 ~ [g#2,g#3,d#4,f#4]@30 ~@3 [a#2,d#4,f4]@33 ~@3, ~@92 f#4@29 ~@66 b3@20 ~@17]/7", // Fm C#5 A#m B A#5 G#7 A#sus4
F: "[~@12 a#3@6 f4@5 g#4@4 ~@2 [d#4,g4]@32 ~@28 f#4@5 ~@11 g#4@21 ~@25 f#4@5 ~@12 g#4@18 ~@28 f#4@5 a#2@5, ~@2 a#2@28 ~@32 g#2@32 a#2@32 b2@31 a#2@31 g#2@21 d#4@10 ~@5, ~@7 f3@20 ~@40 d#3@16 d#4@10 ~@10 c#4@22 ~@11 f#3@21 ~@9 a#3@20 ~@12 f#3@21 ~@5, ~@72 f#3@22 ~@10 f4@21 ~@16 b3@5 d#4@10 ~@11 [c#4,f4]@19 ~@18 b3@15 ~@5, ~@78 b3@16 ~@8 a#3@23 ~@6 d#3@25 ~@37 d#3@26 ~@5]/7", // D# C#
G: "~@6 g#4@16 ~@5 [e3,d#4,g#4]@5, ~@2 a#3@9 ~@2 [g#3,b3]@3, ~@5 [c#4,f4]@17 ~@10", // Emaj7 G#m C#
H: "[~@17 f#4@7 ~@3 d#4@59 ~ [a#3,d#4,f#4]@30 ~@3 g#4@29 ~@2 [b2,d#4,a#4]@30 ~@2 a#2@28 ~@3 [g#2,f#4]@29 ~@3 [a#2,f#4]@10, ~@15 [d#3,a#3]@10 g#3@61 ~@31 a#3@30 ~@3 [b3,f#4]@30 ~ a#3@29 ~@2 g#3@30 ~ g#3@13, ~@16 [c#4,d#4]@7 ~@3 [c#3,b3,c#4]@60 ~ [d#3,f#3]@32 [a#2,f4]@32 ~@105, ~@119 c#4@29 ~@34 [c#4,f4,g#4]@29 ~@2 [b3,d#4]@30 ~@2 [b3,d#4]@11]/8", // D#m Bmaj7 G#7 D#m D#5 B5 C#sus2 C#7 …
I: "[~@11 [d4,f4,g#4,b4]@8 ~@19 a#4@5 d#4@5 ~ f#4@5 ~@16 a#4@5 ~@6 f#4@3 ~@3 a#4@31 ~@3 g#4@24 [a#2,a#3,d4,f4,g#4]@12 ~@11 g#4@5 a#4@5 ~ g#4@5 d#4@5 ~@17 g4@5 a#4@5 g4@5 ~ a#3@2, ~@21 [d#3,a#3]@32 ~ [c#3,a#3]@29 ~@3 b2@34 [a#2,c4,d#4,f4]@24 ~@13 d#3@32 ~@11 d#4@21 ~@3, ~@26 d#4@11 ~@22 d#4@10 ~@6 d#4@9 ~ b3@32 ~@2 a#3@25 ~@13 a#3@27 ~@6 g3@29 ~@5, ~@32 f#4@11 ~@22 f#4@11 ~@10 [d#4,f#4]@31 ~@46 d#4@16 ~@16 a#3@24 ~@5]/7", // Ddim A#7 D#5 F# A#sus4 D#m
J: "[~@8 f4@5 ~ a#4@5 f4@5 ~ d4@5 ~@16 g4@5 a#4@5 ~ g4@5 ~@16 f4@5 ~ g#4@5 f4@5 ~@11 g4@5 ~ a#4@5 g4@5 d#4@5 ~@12 f4@5 a#4@5 ~@6 d4@5 ~@16 g4@5 ~ a#4@5 ~@6, ~@3 d4@11 ~@16 g3@29 ~@3 g#3@30 ~@2 a#3@27 ~@6 a#3@27 ~@5 g3@30 ~@3, ~@35 a#3@27 ~@5 c4@27 ~@71 a#3@24 ~@3, ~@41 d#4@21 ~@11 d#4@22 ~@5 d#4@16 ~@16 d4@11 ~@5 f4@11 ~@11 d#4@21 ~]/6",
K: "~@17 d5 [d#5,f5] [d#4,f4,g5] [g4,g#4] [a#4,c5,d5] d#5 [f5,g5] g#5 a#5 c6 d6 d#6 f6 ~@2, ~@8 c5 ~@7", // D#sus2 D# G#maj7 A# Fsus2
L: "~ a#5 b5 c#6 ~ e6 f#6 g#6 b6@2 ~@22, ~@4 d#6@2 ~ a#6@2 ~@23",
M: "[~@18 e6@4 b5@2 ~ e6@13 ~@26, ~@24 g#5@13 ~@27]/2", N: "[~@7 e6@7 ~@2, ~@25 g#5@28 ~@11]/2",
})).s("gm_orchestral_harp").gain(0.3)
// chords · orchestral harp · soft notes
const orchestral_harp_soft = note("<~@49 A ~@7 B ~@15 C D ~@11 E@2 ~@3>".pickRestart({
A: "~@26 g4@5 ~", B: "~@8 d#3 [f3,g3] [g#3,a#3] c4 [d4,d#4] f4 g4 [g#4,a#4] ~@16",
C: "~@10 b3 c#4 f#3 g#3 ~@6 g#4 [d#4,e4] ~@5 [e5,f#5]@2 ~@2 [d#5,e5], ~@14 a#3@2 c#4@2 e4@2 ~@2 g#4@2 b4@2 d#5@2 ~ g#5@2 ~, ~@15 b3@2 d#4@2 f#4@2 f#4@2 a#4@2 c#5@2 ~@3 c#5@2", // Emaj7 Esus2 Emaj7
D: "[f#5,g#5] ~@31", E: "[~@43 b5@11 ~@10, ~@19 e3@24 ~@21, ~@25 a3@21 ~@18, ~@31 b3@18 ~@15, ~@37 e5@15 ~@12]/2",
})).s("gm_orchestral_harp").gain(0.15)
// other · violin
const violin = note("<~@31 A@5 B@8 ~@47>".pickRestart({
A: "[~@23 a#3@21 d#4@11 g#4@32 f#4@21 a#4@11 g#4@21 c#5@10 a#4@10]/5",
B: "[d#5@21 ~ f5@21 a#4@11 a#5@16 d#5@5 a#5@5 ~ d#6@5 f6@32 d#4@59 d4@12 d#4@54 ~@13]/8",
})).s("gm_violin").gain(0.25)
// other · string ensemble 1
const string_ensemble_1 = note(`<
A@3 B C@3 ~@7 D@8 E ~@3 F@7 ~@12 G@8 H@8 I@2 J K@8 L@2 M N O P Q R S T U V@8
>`.pickRestart({
A: "[~@37 f#4@21 f5@11 c#5@21 d#5@6, ~@13 a#4@16 ~@19]/3", B: "c#5@6 a#4@6 g#4@7 d#4@7 c#4@6", C: "[~ d#4@37 ~@10]/3",
D: "[~@27 f5@32 d#5@21 ~ a#4@10 d#5@32 f5@22 c#5@11 f#5@32 f5@32 g#5@33 g5@3]/8", E: "~@8 d#5@11 a#4@11 ~@2",
F: "[~@28 d#5@31 f5@32 d#5@20 c#5@10 ~ b4@72 ~@30]/7", G: "[~@30 g#5@32 g5@32 ~ a#5@32 g5@32 a#5@97]/8",
H: "[~@19 c#6@11 a#5@63 g#5@32 g5@27 d#5@5 ~ d#6@5 c#6@5 a#5@21 ~ c#6@5 g#5@5 c#5@5 g#5@5 ~ f#5@5 f5@5 f#5@5 ~ d#5@5 d#5@16 a#5@5 g#5@3]/8",
I: "[~@2 c#5@5 ~ c#6@21 a#5@21 d#6@11 f6@3]/2", J: "~@9 a#5@5 g#6@2",
K: "[~@23 f6@5 a#6@32 f#5@32 ~ g#5@32 a#5@32 ~ g#5@32 f#5@32 g#5@32 f#5@2]/8", L: "[~@20 a#5@11 b5@20 ~@13]/2",
M: "~@12 c#6 d#6 ~ e6 f#6 e6 ~ f#6 g#6 a#5 ~ b5 c#6 d#6 ~ e6 f#6 g#6 ~ a#6", N: "[b5,b6]", O: "[a5,a6]", P: "[g5,g6]",
Q: "[f#5,f#6]@21 [d5,d6]@5 ~ [f#5,f#6]@5", R: "[e5,e6]", S: "[f#5,f#6]",
T: "[g5,g6]@16 ~ [b4,b5]@5 [e5,e6]@6 [g5,g6]@4", U: "~@2 [a5,a6]@5 [b5,b6]@6 [g5,g6]@6 [f#5,f#6]@6 [e5,e6]@6 [d5,d6]",
V: "[~@5 [b4,b5]@74 [a4,a5]@73 [g#4,g#5]@88 ~@16]/8", // B A G#
})).s("gm_string_ensemble_1").gain(0.25).pan(0.3)
// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
~@73
[~@21 c#5 b4 c#5 ~ d#5 e5 d#5 ~ e5 f#5 g#5]
[~ f#5 g#5 ~ a#5 b5 a#5 ~ b5 c#6 ~ d#6 ~@20]
~@16
>`).s("gm_string_ensemble_1").gain(0.1).pan(0.3)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
A@4 B@3 ~@5 C@6 D@8 E@3 F@8 G@4 H@5 I@3 J@8 K@6 L@3 M@6 N@3 O@2 P Q R S T@2 U@8
>`.pickRestart({
A: "[~@26 [a#3,f4,f#4]@32 [c#4,d#4,g#4]@31 ~ [b3,d#4,f#4]@24 ~ [f#3,a#3]@13]/4", B: "[~ [f3,g#3,c4]@37 ~@10]/3",
C: "[~@27 [g#3,g#4]@32 [g3,g4]@32 [d#4,f#4]@32 [f4,g#4]@32 [b3,d#4,f#4,a#4]@32 [a#3,c#4,f4,g#4]@5, ~@27 [a#3,d#4]@64 [a#3,c#4]@64 ~@37]/6", // G# G D#m Fm Bmaj7 A#m7 D#5 A#m
D: "[~@28 [g#3,b3,f#4]@32 [a#3,f4,g#4]@32 [g#3,g#4]@33 [g3,g4]@33 [b3,d#4,f#4]@32 [c#4,f4,g#4]@31 ~ [b3,d#4,f#4,a#4]@31 [c#4,f4,g#4]@3, ~@14 d#4@32 [a#3,d#4]@33 ~@49]/8", // G#m7 A#7 G# G B C# Bmaj7 C# …
E: "[~@28 [b3,d#4,f#4]@31 ~ [c#4,g#4]@31 [b3,e4,g#4]@5, ~@15 f4@7 ~@2]/3", // B C#5 E
F: "[~@15 [c#4,d#4,f#4]@10 ~ [g#3,b3,e4]@61 [d#4,f#4]@32 [c#4,f4,g#4]@32 [b3,d#4,f#4,a#4]@31 ~ [a#3,c#4,f4,g#4]@31 [b3,d#4,f#4]@31 ~ [f4,g#4,b4]@10, ~@87 a#3@64 ~@105]/8", // D#m7 E D#m C# Bmaj7 A#m7 B Fdim
G: "[~@11 [d4,f4]@10 ~@65 b3@34 [a#3,f4]@8, ~@11 a#3@75 ~@42, ~@11 d#4@53, ~@22 f#4@99 ~@7]/4", // Dm A#5
H: "[~@17 d4@12 g#4@32 ~ g4@32 [d4,f4]@32 [d#4,g4]@32 [c4,f4,g#4]@2, ~@29 a#3@129 ~@2, ~@29 d#4@64 ~@67]/5", // Dm D# Fm
I: "[~@30 [d#4,g4]@32 ~ [d4,f4]@32 [d#4,g4], ~@5 a#3@11]/3", // D# Dm D#
J: "[~@31 [d#4,f#4]@31 ~ [c#4,f4,g#4]@31 ~ [d#4,f#4]@31 [c#4,f4,g#4]@31 ~ [b3,d#4,f#4]@63 g#4@32 g4@3, ~@31 a#4@190 [d#4,a#4]@35]/8", // D#m C# D#m C# B D#5
K: "[~@30 [d#4,f#4]@32 [c#4,f4,g#4]@31 [b3,d#4,f#4,a#4]@32 [c#4,f4,g#4]@31 ~ [b3,f#4]@32 [a#3,f4]@3, ~@30 a#3@63 ~@64 d#4@35]/6", // D#m C# Bmaj7 C# B5 A#5
L: "[~@29 g#4@32 g4@31 [b3,d#4,f#4]@4, ~@29 [d#4,a#4]@64 ~@3]/3", // B D#5
M: "[~@29 [c#4,f4,g#4]@31 ~ [b3,d#4,f#4,a#4]@32 ~ [c#4,f4,g#4]@31 ~ [g#3,b3,d#4,f#4]@32 [a#3,c#4,f4,g#4]@32 [b3,d#4,g#4]@2]/6", // C# Bmaj7 C# G#m7 A#m7 G#m
N: "[~@20 [a#3,c#4,f#4]@11 [g#3,b3,c#4,e4]@65]/3", O: "[[e4,g4]@31 ~ [d4,f#4,a4]@32, b3]/2", P: "[c4,e4,g4,b4]",
Q: "[b3,f#4,a4], d4@13 ~@3", R: "[a3,c#4,e4,g4]", S: "d4@21 ~ d#4@10, [b3,e4,f#4,a4]",
T: "[e4@33 ~ d4@30, [b3,g4,b4]]/2", // Em
U: "[~@5 [c4,e4,g4,b4]@37 [a3,b3,e4,f#4]@37 [a3,b3,e4,a4]@72 ~ [g#3,b3,e4,g#4]@88 ~@16]/8", // Cmaj7 Asus2 E
})).s("gm_string_ensemble_2").gain(0.25)
// other · string ensemble 1
const string_ensemble_1_2 = note(`<
A@7 ~@5 B@3 C@3 D@8 E@8 F@2 G H@2 I J K@8 L@6 M@8 N@4 O@8 P Q R Q S Q T U V@8
>`.pickRestart({
A: "[~@13 d#3@16 c#3@16 b2@20 a#2@37 ~@10]/7", B: "[~@27 d#2@64 d#3@5]/3", C: "[~@27 a#2@32 b2@32 a#2@5]/3",
D: "[~@28 g#2@32 a#2@32 d#2@66 g#2@32 a#2@31 ~ b2@31 a#2@3]/8",
E: "[~@28 g#2@31 a#2@32 [e2,e3]@20 [d#2,d#3]@10 ~ [c#2,c#3]@61 d#3@32 a#2@32 b2@9]/8", F: "[~@23 a#2@31 g#2@10]/2",
G: "~@11 a#2@5", H: "[~@11 [d#2,d#3]@16 [c#2,c#3]@5]/2", I: "~@11 [b1,b2]@5", J: "~@3 [a#1,a#2]",
K: "[~@29 [d#2,d#3]@129 [d#2,d#3]@98]/8", L: "[~@31 d#3@31 ~ a#2@31 ~ b2@31 a#2@31 ~ g#2@32 a#2@2]/6",
M: "[~@61 d#2@32 ~ d#3@32 a#2@31 b2@32 a#2@31 ~ g#2@32 a#2@3, ~@29 d#3@61 ~@166]/8",
N: "[~@61 d#2@31 g#2@32 ~ a#2@3, ~@7 d#3@16 ~@9]/4",
O: "[~@29 b2@32 ~ a#2@31 ~ g#2@32 a#2@31 ~ [e2,e3]@21 ~ [d#2,d#3]@11 [c#2,c#3]@65]/8", P: "[e2,e3]@31 ~", Q: "b2",
R: "c3", S: "a2", T: "e3", U: "~ [d2,d3]@15", V: "[~@5 [c2,c3]@37 [b1,b2]@37 [b1,b2]@72 ~ [e2,e3]@88 ~@16]/8",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.7)
// other · vibraphone
const vibraphone = note("<~@42 A@2 B C A D E F ~@41>".pickRestart({
A: "~@19 d#6@10 ~@3", B: "~@19 a#6@11 ~@2", C: "~@19 a#6@6 ~@7", D: "~@10 d#6@5 ~", E: "~@20 a#6@11 ~",
F: "~@21 a#6@6 ~@5",
})).s("gm_vibraphone").gain(0.2)
// other · flute
const flute = note("<~@22 A@6 B@4 ~@14 C D E F ~@6 G@5 H@5 ~@3 I@6 J K L M N O P Q R@8>".pickRestart({
A: "[~@8 d#5@11 a#4@11 f#5@32 c#5@5 ~ d#5@5 f5@10 g#4@10 ~ f#5@31 g#5@5 d#5@5 ~ f5@10 c#5@8 ~@2 a#5@31 ~ c#6@4]/6",
B: "[~ c6@5 g#5@5 d#5@5 c#5@5 ~ g#4@5 f#4@20 a#4@10 ~ b4@61 ~@9]/4", C: "~@9 a#5@2 ~ f6@2 a#6@2 ~ a#6@2 ~ a#6@5 ~@7",
D: "~@9 a#5@2 ~ d#6@2 ~ a#6@2 a#6@2 ~ a#6@5 ~@7", E: "~@10 a#5@2 d6@2 ~ a#6@2 ~ a#6@2 a#6@4 ~@8",
F: "~@10 a#5@2 ~ d#6@2 a#6@2 ~ a#6@2 ~ a#6@4 ~@7",
G: "[~@29 g5@27 d#5@5 ~ d#6@5 c#6@5 a#5@21 ~ c#6@5 g#5@5 c#5@5 g#5@5 ~ f#5@5 f5@5 f#5@5 ~ d#5@5 d#5@16 a#5@5 g#5@3]/5",
H: "[~@2 c#5@5 ~ c#6@21 a#5@21 d#6@10 ~ f6@21 a#5@10 g#6@26 ~ f6@5 g6@10 ~ a#5@21 ~@4]/5",
I: "[~@30 d#6@5 c#6@5 ~ a#5@11 f#5@10 g#5@32 f#5@21 ~ a#5@11 b5@65]/6", J: "b6@31 ~", K: "a6@29 ~@3", L: "g6",
M: "f#6@21 d6@5 ~ f#6@5", N: "e6", O: "f#6", P: "g6@16 ~ b5@5 e6@5 ~ g6@4", Q: "~@2 a6@5 b6@6 g6@6 f#6@6 e6@6 d6",
R: "[~@5 b5@65 ~@9 a5@72 ~ g#5@88 ~@16]/8",
})).s("gm_flute").gain(0.25)
// other · vibraphone
const vibraphone_2 = note("<~@5 A@2 ~@9 B ~ C ~@2 D E ~@7 F@2 ~@9 G ~@45 H@2 I J>".pickRestart({
A: "[~ c#9@2 [a#8,c9] ~ g#8 ~ g#8@2 a#8@2 c#9 f#8 c#9@2 [a#8,c9] g#8 f#8 ~ [g#8,a#8] ~@2 c#9 c9 ~ a#8 ~ f#8 ~ g#8 f#8 f#8@2 c9 ~ c#9 c9 f#8 a#8@2 [f#8,g#8] ~ [a#8,c9] c#9 f#8 c#9 f#8 c#9 c9 a#8 g#8 f#8 g#8 [f#8,a#8] f#8!2 ~@8, ~@6 f#8@2 ~@3 c9@2 ~@8 f#8@2 ~@3 g#8@2 ~@3 a#8 ~@2 f#8@2 ~@28]/2", // A#sus2 G#sus2 F#sus2 A#sus2 F#
B: "~@2 c9@2 [f#8,a#8] g#8 ~ [f#8,c9] [g#8,a#8] ~ c#9 [f#8,a#8] ~ c#9 ~ a#8 f#8 [g#8,c#9] c9 a#8 f#8 [g#8,c9,c#9] a#8 f#8 [g#8,c#9] c9 a#8 ~@5, ~@2 c#9 ~@3 c#9@2 ~@2 c9@2 g#8@2 c9@2 ~@16", // F# F#dim G#sus2 F# C#5 C#maj7 C#5
C: "~@9 [c9,c#9] a#8 f#8 g#8 c#9 a#8 f#8 [g#8,c#9] c9 [f#8,a#8] g#8 [c9,c#9] a#8 [f#8,g#8] c#9 c9 f#8 g#8 [c9,c#9] a#8 ~@3, ~@13 c9@2 ~@17", // C#maj7 C#5 F# C#maj7 F#sus2 C#maj7
D: "~@31 c#9",
E: "c9@2 f#8 [g#8,c#9] ~ [f#8,a#8] g#8 [c9,c#9] a#8 [f#8,g#8] c#9 c9 [f#8,a#8] [g#8,c#9] c9 a#8 [f#8,g#8] [c9,c#9] a#8 f#8 [g#8,c#9] c9 a#8 [f#8,g#8] [c9,c#9] a#8 ~ c#9 c9 f#8 ~@2, ~@2 c9 ~@13", // C#5 F# C#maj7 F#sus2 F# C#5 F#sus2 C#maj7 …
F: "[~@5 f#8@2 ~@2 c9@2 ~ f#8@2 c#9@2 ~ a#8@2 f#8 ~ g#8 c9@2 ~ f#8@2 g#8 c#9 ~ a#8 f#8@2 g#8 ~ c9@2 a#8 f#8 g#8 ~ c9@2 f#8 a#8 ~ c#9@2 ~@2 a#8 g#8 c#9 [f#8,c9] ~@10, ~@2 c#9@2 a#8@2 ~@5 a#8@2 ~@32 g#8@2 ~@2 f#8@2 ~@13, ~@3 c9@2 ~@3 c#9@2 ~@6 c9@2 ~@4 c#9 ~@6 c9@2 ~@3 c#9@2 ~@4 c#9@2 ~@6 c9@2 ~@14]/2", // F#dim
G: "~ [c9,c#9] ~ a#8 g#8 c#9 ~ f#8@2 g#8 [c9,c#9] ~ [f#8,a#8] ~ [g#8,c#9] c9 [f#8,a#8] g#8 c#9 c9 a#8 f#8 g#8 [c9,c#9] ~ f#8 g#8 c#9 c9 a#8 ~@2, ~ f#8 ~ c9 ~@12, ~@7 a#8 ~@24", // C#maj7 F# C#5 F# C#maj7
H: "[~@31 c#9@2 c9@2 f#8@2 ~@2 a#8 f#8@2 [g#8,c#9] ~ f#8@2 g#8 [c9,c#9] a#8 f#8 ~ [g#8,c#9] ~ a#8 f#8 g#8 [c9,c#9] ~ f#8 g#8 ~ c#9 a#8 f#8, ~@38 [c9,c#9]@2 ~@3 c9@2 ~@7 c9@2 ~@7 c9@2 ~, ~@44 a#8 ~@12 a#8@2 ~@5]/2", // C#5 C#maj7 C#5 C#maj7
I: "g#8 c#9 a#8 f#8 g#8 c#9 [a#8,c9] f#8 g#8 c#9 c9 [f#8,a#8] g#8 c#9 c9 [f#8,a#8] g#8 c#9 [a#8,c9] f#8 ~ [g#8,c#9] c9 [f#8,a#8] ~ g#8 ~ a#8 [f#8,g#8] ~ c#9 c9, ~ c9@2 ~@22 c#9@2 ~@5, ~@13 c9 ~@2", // A#sus2 F# A#sus2 C#5 F# F#sus2
J: "a#8 ~ c#9 c9 a#8 ~ f#8 g#8 ~@3 g#8 ~@20, ~ f#8@2 ~@7 f#8@2 ~@20",
})).s("gm_vibraphone").gain(0.19)
// other · harmonica
const harmonica = note(`<
~@14 A B C D E F@4 ~@3 G H@7 I@2 ~@3 J K@6 ~@3 L@2 M@8 N@2 O@5 P@4 Q@5 R S T U V W X@2 Y@2 Z@4 ~@2
>`.pickRestart({
A: "~@22 d#4@5 a#4@5", B: "~ f#4@21 g#4@5 f4@5", C: "~ c#4@24 ~@2 d#4@5", D: "~ f4@5 f#4@5 a#4@5 ~ g#4@5 f#4@5 f4@5",
E: "~ c#4@24 ~@3 d#4@4", F: "[~ f4@5 f#4@5 ~ a#4@5 g#4@5 f#4@5 ~ g#4@16 f#4@5 f4@8 a#3@2 ~ a#4@63 ~@5]/4",
G: "~@7 b4",
H: "[~@2 a#4@5 f#4@5 d#4@5 d#4@10 ~ f4@23 ~@3 c#4@5 d#4@20 f#4@10 ~ g#4@47 ~@5 d#4@8 ~ a#4@5 f#4@18 ~@4 g#4@5 f4@5 c#4@24 ~@3 d#4@5 f4@4]/7",
I: "[~@2 f#4@5 a#4@5 g#4@5 f#4@5 ~ f4@5 c#4@26 ~@10]/2", J: "~@22 d#4@5 ~ f4@4",
K: "[~ f#4@6 a#4@6 g#4@6 f#4@2 g#4@24 ~@4 f4@12 a#4@126 ~@5]/6", L: "[~@31 d#5@33]/2",
M: "[~@10 c#5@15 g#4@5 ~ a#4@31 c#5@21 g#4@10 ~ f#4@31 ~ g#4@29 ~@2 d#5@16 f5@5 ~ d#5@5 f5@5 a#4@27 d#4@11 a#4@5 f#4@16 g#4@5 ~ f4@2]/8",
N: "[d#4@2 ~ c#4@24 ~@2 d#4@6 f4@5 f#4@5 a#4@10 ~ c#5@3 a#4@2 f4@3]/2",
// … 67 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.