0:00/0:00
// Simply the Best — Tina Turner
// 110 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 1 electric bass finger (copy of ch 14 acoustic bass)
// note: Full arrangement: all 107 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · distortion guitar
const distortion_guitar = note(`<
~@12 A B C D E F@7 G H@2 I J K L M N O P Q R K S T U V P W R F@7 G H@2 I J X Y M Z AA@2 Q R AB AC AD U AE AF AG AH AI
AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE AX AS BF BA BG AU BH BI AX BJ@2
>`.pickRestart({
A: "~@7 [b2,f#3]", B: "[c#3,g#3]@18 ~@2 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2",
C: "[c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3] ~@3", // C#5
D: "[a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3] ~@3 [a2,e3]@2 ~@2 [a2,e3] ~@3 [a2,e3] ~@3 [a2,e3] ~@3", // A5
E: "[a3,b3,e4]@29 ~@3", // Asus2
F: "~@4 [e3,b3] ~ [e3,b3] ~@5 [e3,b3] ~ [e3,b3] ~@5 [e3,b3] ~ [e3,b3] ~@5 [e3,b3] ~ [e3,b3] ~", // E5
G: "~@4 [e3,b3] ~ [e3,b3] ~@5 [e3,b3] ~ [e3,b3] ~@17", H: "[~@20 [g#3,c#4,d#4]@7 ~ [g#3,c#4,e4]@35 ~]/2",
I: "[a3,e4]@31 ~", J: "[b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4]@3 ~@21",
K: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
L: "[b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
M: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3", // E5
N: "[b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2", // E5
O: "[g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3", // C#5
P: "[g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2", // C#5
Q: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ b2@2", R: "c#3 b2 f#3 b2@5",
S: "[b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
T: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
U: "[b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
V: "[g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2", // C#5
W: "[b2,f#3]@2 ~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 ~@2 [b2,f#3] ~@3 [b2,f#3]@2 ~@2 b2@4", // B5
X: "[b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~", // E5
Y: "[b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
Z: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
AA: "[g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2", // C#5
AB: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
AC: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3]@2 ~@2", // E5
AD: "[b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3 [b2,e3] ~@3 [b2,e3]@2 ~@2 [b2,e3] ~@3", // E5
AE: "[g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@4 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 g#2 ~@3 c#3 ~@2, ~@12 c#3 ~ g#2 ~", // C#5
AF: "~ [g#2,c#3] ~@3 [g#2,c#3] ~@3 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3]@2 ~@2 [g#2,c#3] ~@3 [g#2,c#3] ~@3 [g#2,c#3] ~@2", // C#5
AG: "~ [b2,f#3]@2 ~@2 b2@2 ~ [b2,f#3]@2 ~@3 [b2,f#3]@2 ~@2 [b2,f#3]@2 ~ [b2,f#3]@2 ~@3 f#3 ~@3 b2@3, ~@2 f#3 ~@9 b2 ~@3", // B5
AH: "~ c#3@4 b2@4 f#3@4 b2@19",
AI: "~ [a2,e3,a3]@3 ~ [a2,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3, ~@4 e3@3 ~@25", // A5 A A5
AJ: "~ [a2,e3,a3]@3 ~ [a2,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3]@3 ~ [a2,e3,a3]@3, ~@4 e3@3 ~@17 a3@3 ~@5", // A5 A A5
AK: "~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ c#3@3 ~ [c#3,c#4]@3 [c#3,g#3,c#4]@3 ~, ~@20 [g#3,c#4]@3 ~ g#3@3 ~@5", // C#5 C# C#5
AL: "~ [c#3,g#3,c#4]@3 ~ [c#3,g#3]@3 ~ [c#3,g#3,c#4]@3 ~ [g#3,c#4]@3 ~ [c#3,g#3,c#4]@3 ~ [c#3,g#3]@3 ~ [c#3,c#4]@3 ~ [c#3,g#3,c#4]@2 ~, ~@4 c#4@3 ~@5 c#3@3 ~@5 c#4@3 ~ g#3@3 ~@5", // C#5 C# C#5
AM: "~ [a2,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3, e3@3 ~@29", // A A5
AN: "~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ a3@3 ~ e3@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3 ~ [a2,e3,a3]@3, ~@12 [a2,e3]@3 ~ [a2,a3]@3 ~@13", // A5 A
AO: "~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ b3@3 ~ [f#3,b3]@3 ~ b3@3 ~ [b2,f#3,b3]@3 ~ [f#3,b3]@3, ~@12 [b2,f#3]@3 ~ b2@3 ~ [b2,f#3]@3 ~@5 b2@2 ~@2", // B5
AP: "[b2,f#3,b3]@3 ~@2 [f#3,b3]@3 ~@5 [c#3,g#3,c#4]@7 ~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@7, ~@4 b2@3 ~@25", // B5 C#5
AQ: "~ [c#3,f#3]@2 ~ [c#3,f#3]@2 ~@3 [c#3,f#3]@2 ~ [c#3,f#3]@2 ~@3 [c#3,f#3] ~@3 [c#3,f#3] ~@2 [c#3,f#3]@2 ~@3 [c#3,f#3]@2 ~", // F#5
AR: "~ [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@2 [c#3,f#3]@2 ~@3 [c#3,f#3] ~@2", // F#5
AS: "~ [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~", // F#5
AT: "~ [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~", // F#5
AU: "~ [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@2", // D#5
AV: "~ [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~", // D#5
AW: "~ [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 c#3@3", // C#5
AX: "~ d#3@4 c#3@4 g#3@4 c#3@19",
AY: "~ [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~", // F#5
AZ: "~ [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~", // F#5
BA: "~ [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@2", // F#5
BB: "~ [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@2", // F#5
BC: "~ [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@2", // D#5
BD: "~ [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3] ~@3 [a#2,d#3] ~@2", // D#5
BE: "~ [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 c#3@3", // C#5
BF: "~ [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~", // F#5
BG: "~ [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3] ~@3 [c#3,f#3]@2 ~@2 [c#3,f#3]@2 ~", // F#5
BH: "~ [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3]@2 ~@2 [a#2,d#3] ~@3 [a#2,d#3] ~@3 [a#2,d#3] ~@2", // D#5
BI: "~ [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@2 c#3@3", // C#5
BJ: "[~ [f#2,f#3]@34 ~@29, ~ c#3 ~@62]/2", // F#
})).s("gm_distortion_guitar").gain(0.36).pan(0.6)
// chords · electric guitar clean
const electric_guitar_clean = note(`<
~@13 A@2 ~@9 B C D E F G H@2 I@2 J K L M H@2 I@2 J K L ~@7 B C D N F O H@2 I@2 J K L G H@2 I@2 J P L Q R S@2 Q@2 T U V
W@2 X@2 Y Z AA V W@2 AB@2 AC Z AA V AD@2 AE@2 AF AG AH AI@2
>`.pickRestart({
A: "[e4@4 d#4@4 c#4@4 e4@8 d#4@8 g#4@33 ~@3]/2", B: "~@7 [b2,f#3]",
C: "[c#3,g#3]@18 ~@2 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2", // C#5
D: "[c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3]@2 ~@2 [c#3,g#3] ~@3", // C#5
E: "[a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3] ~@3 [a2,e3] ~@3 [a2,e3] ~@3", // A5
F: "[b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~ [b2,f#3,b3]@3 ~@21", G: "~@8 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@5 f#4@3",
H: "[[b3,a4]@12 [b3,g#4]@28 [b3,e4]@12 b3@7 ~ b3@4, ~@52 f#4@11 ~]/2", // B7 E E5
I: "[[b3,a4]@12 [b3,g#4]@27 ~ [b3,e4]@12 b3@7 ~ b3@4, ~@52 f#4@11 ~]/2", J: "[b3,a4]@3 [b3,g#4]@4 ~",
K: "[b2,f#3,b3]@3 ~ [b2,f#3,b3]@2 ~@6 [b2,f#3,b3]@4 ~@4 [b2,f#3,b3]@8 b2@4", L: "c#3@4 b2@4 f#3@4 b2@19 ~",
M: "~@8 [b3,e4]@12 b3@7 ~ b3@4, ~@5 f#4@3", // E5
N: "[a2,e3]@2 ~@2 [a2,e3] ~@3 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3]@2 ~@2 [a2,e3] ~@3 [a2,e3] ~@3 [a2,e3] ~@3", // A5
O: "~@8 [b3,e4]@12 b3@8 b3@3 ~, ~@5 f#4@3", // E5
P: "[b2,f#3,b3]@3 ~ [b2,f#3,b3]@2 ~@6 [b2,f#3,b3]@4 ~@4 [b2,f#3,b3]@7 ~ b2@4", // B5
Q: "[a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@6 ~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@3", // A
R: "[a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~@3", // A
S: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4] ~@3 [g#3,c#4,e4] ~@3 [g#3,c#4,e4]@6 ~@2 [g#3,c#4,e4] ~@3 [g#3,c#4,e4]@3 ~ [g#3,c#4,e4] ~@3", // C#m
T: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@6 ~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~@3", // B
U: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~@3 [c#4,f4,g#4]@7 ~ [c#4,f4,g#4] ~@3 [c#4,f4,g#4]@7 ~", // B C#
V: "~@8 [c#4,f#4]@12 c#4@7 ~ c#4@3 ~, ~@5 g#4@3", // F#5
W: "[[c#4,b4]@12 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@4, ~@52 g#4@11 ~]/2", // C#7 F# F#5
X: "[[c#4,b4]@11 ~ [c#4,a#4]@27 ~ [c#4,f#4]@12 c#4@7 ~ c#4@4, ~@52 g#4@11 ~]/2", Y: "[c#4,b4]@12 [c#4,a#4]@17 ~@3",
Z: "[c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@2 ~@6 [c#3,g#3,c#4]@4 ~@4 [c#3,g#3,c#4]@8 c#3@4", // C#5
AA: "d#3@4 c#3@4 g#3@4 c#3@19 ~", AB: "[[c#4,b4]@12 [c#4,a#4]@27 ~ [c#4,f#4]@12 c#4@7 ~ c#4@4, ~@52 g#4@11 ~]/2",
AC: "[c#4,b4]@3 [c#4,a#4]@4 ~", AD: "[~ [c#4,b4]@12 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@3, ~@53 g#4@11]/2",
AE: "[~ [c#4,b4]@12 [c#4,a#4]@27 ~ [c#4,f#4]@12 c#4@7 ~ c#4@3, ~@53 g#4@11]/2", AF: "~ [c#4,b4]@12 [c#4,a#4]@16 ~@3",
AG: "~ [c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@2 ~@6 [c#3,g#3,c#4]@4 ~@4 [c#3,g#3,c#4]@7 c#3@4", // C#5
AH: "~ d#3@4 c#3@3 g#3@5 c#3@19", AI: "[~ f#2@35 ~@28]/2",
})).s("gm_electric_guitar_clean").gain(0.64).pan(0.4)
// chords · pad poly
const pad_poly = note(`<
~@7 A B ~@2 A B ~@6 A B ~@2 A B ~@4 C D@2 E@2 F G@2 C H@4 F I@2 ~@2 A B ~@2 A B ~@4 C D@2 H@2 F I@2 C J@2 E@2 K L@2
~@8 M N@2 O@3 P@2 Q R@2 S@3 P@2 T R@2 U@2 V P@2 W ~
>`.pickRestart({
A: "[e3,b3]@3 [e3,c#4]@5", B: "[e3,d#4]@3 [e3,e4]@5", C: "~@8 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@5 f#4@3",
D: "[[b3,a4]@3 ~ [b3,a4]@3 ~ a4@4 [b3,g#4]@28 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@8 b3@3 ~@41 f#4@12]/2", // B7 E E5
E: "[[b3,a4]@4 [b3,a4]@3 ~ [b3,a4]@4 [b3,g#4]@28 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@13 f#4@3]/2", // B7 E E5
F: "[b3,a4]@3 ~ [b3,a4]@3 ~ [b3,a4]@4 [b3,g#4]@20", G: "[~@7 b2 c#3 b2 f#3 b2@5, [b3,f#4]]/2",
H: "[[b3,a4]@3 ~ [b3,a4]@3 ~ [b3,a4]@4 [b3,g#4]@28 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@13 f#4@3]/2", // B7 E E5
I: "[~@7 b2 c#3 b2 f#3 b2@5, [b3,f#4]@63 ~]/2", // B5
J: "[[b3,a4]@4 [b3,a4]@3 ~ a4@4 [b3,g#4]@28 [b3,e4]@12 b3@7 ~ b3@3 ~, ~@8 b3@3 ~@41 f#4@12]/2", // B7 E E5
K: "~ [b3,a4]@3 [b3,a4]@3 ~@2 [b3,a4]@3 ~ b3@19, ~@3 g#4@5", L: "[~@29 b2@4 c#3@3 b2@4 ~ f#3@4 b2@19, [b3,f#4]]/2",
M: "~@8 [c#4,f#4]@12 c#4@7 ~ c#4@3 ~, ~@5 g#4@3", // F#5
N: "[~ c#4@3 ~ c#4@3 ~ c#4@3 [c#4,a#4]@28 [c#4,f#4]@13 c#4@7 ~ c#4@3, b4@3 ~ b4@3 ~@2 b4@5 ~@39 g#4@11]/2", // F# F#5
O: "[~ [c#4,b4]@4 [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@3 ~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@19, ~@53 g#4@14 ~@29]/3", // C#7 F# F#5 C#7 F#
P: "[~@29 c#3@4 d#3@4 c#3@4 g#3@4 c#3@19, ~ [c#4,g#4]@63]/2", Q: "~@9 f#4@12 c#4@7 ~ c#4@3, ~@9 c#4@10 ~@2 g#4@11",
R: "[~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ b4@4 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@3, ~@9 c#4@3 ~@41 g#4@11]/2", // C#7 F# F#5
S: "[~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@3 ~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@19, ~@53 g#4@14 ~@29]/3", // C#7 F# F#5 C#7 F#
T: "~@9 [c#4,f#4]@12 c#4@7 ~ c#4@3, ~@21 g#4@11", // F#5
U: "[~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@28 [c#4,f#4]@12 c#4@7 ~ c#4@3, ~@53 g#4@11]/2", // C#7 F# F#5
V: "~ [c#4,b4]@3 ~ [c#4,b4]@3 ~ [c#4,b4]@4 [c#4,a#4]@19", W: "~ [f#3,c#4]@31",
})).s("gm_pad_poly").gain(0.7)
// other · string ensemble 2
const string_ensemble_2 = note(`<
~@4 A@3 ~ B@3 ~ C@2 D@2 E@3 ~ F@3 ~ G@2 H@2 I@2 J@4 K@2 L@2 M@2 N@2 O@2 P Q R ~ P S R ~ T U V W X@2 Y Z Y Z AA@2 AB AC
AD AE AF AG AF AH ~ AI AJ AK@2 AL AJ AM AN ~@7 AO@2 AP AQ AP AQ AR@2 AS@2 AT@4 AU@2 AV@3
>`.pickRestart({
A: "[~@29 g#3@2 b3@4 b3@8 b3@2 b3@2 c#4@4 c#4@8 c#4@2 c#4@2 d#4@8 d#4@4 e4@12 b3@8 ~]/3",
B: "[~@29 g#3@2 b3@8 b3@4 b3@4 c#4@8 c#4@4 c#4@4 d#4@8 d#4@4 e4@12 b3@8 ~]/3", C: "[~@19 e4@4 e4@4 e4@4 e4@8 ~@25]/2",
D: "[~@7 g#4@4 f#4@4 f#4@4 e4@4 e4@4 g#3@4 a3@28 ~@5]/2",
E: "[~@27 b3@2 b3@6 b3@8 b3@4 c#4@4 c#4@8 c#4@2 c#4@2 d#4@8 d#4@4 e4@12 b3@8 ~]/3",
F: "[~@23 b3@2 b3@2 b3@8 b3@4 b3@4 c#4@4 c#4@4 c#4@4 c#4@8 d#4@4 d#4@4 f#4@4 e4@12 b3@8 ~]/3",
G: "[~@11 e4@8 e4@4 e4@4 e4@4 e4@8 ~@25]/2", H: "[~@3 g#4@4 f#4@4 f#4@4 e4@4 e4@4 e4@4 e4@4 e4@4 a3@16 ~@13]/2",
I: "[~@11 b3@4 a4@4 a4@4 a4@4 g#4@8 ~@29]/2", J: "[~@15 g#4@4 g#4@4 g#4@8 g#4@4 e4@4 e4@4 e4@8 ~@13]/2",
K: "[~@15 e4@4 e4@4 e4@4 e4@8 b3@4 b3@4 b3@8 ~@13]/2", L: "[~@11 a4@4 a4@4 a4@8 g#4@4 g#4@8 ~@25]/2",
M: "[~@11 e4@4 g#4@4 g#4@4 g#4@4 g#4@4 g#4@8 e4@4 e4@8 ~@13]/2", N: "[~@15 e4@4 e4@4 e4@4 e4@4 c#4@8 ~@25]/2",
O: "[~@15 e4@4 e4@4 e4@4 e4@4 c#4@4 b3@8 c#4@4 b3@4 b3@12 ~]/2", P: "~@15 g#3", Q: "b3@2 b3@4 b3!2 c#4@2 c#4@4 c#4!2",
R: "d#4@2 d#4 e4@3 b3@2", S: "b3@2 b3!2 c#4@2 c#4!2", T: "~@5 e4!3", U: "e4 ~@3", V: "~@2 g#4 f#4!2 e4!2 g#3",
W: "a3@7 ~", X: "[~@3 b3 a4!3 g#4@2 ~@7]/2", Y: "~@4 g#4!2 g#4@2", Z: "g#4 e4!2 e4@2 ~@3",
AA: "[~@4 e4!3 e4@2 b3!2 b3@2 ~@3]/2", AB: "~@3 a4!2 a4@2 g#4", AC: "g#4 ~@3", AD: "~@3 e4 g#4!4",
AE: "g#4@2 e4 e4@2 ~@3", AF: "~@4 e4!4", AG: "c#4 ~@3", AH: "c#4 b3@2 c#4 b3 b3@3", AI: "~ a4!7",
AJ: "a4 g#4 f#4 a4@3 ~@2", AK: "[g#4!3 g#4@2 f#4 e4 g#4@2 f#4 e4 g#4@2 ~@3]/2", AL: "~@2 a4!6",
AM: "~ b4@2 b4@2 g#4 ~@2", AN: "~ b4!2 c#5@5", AO: "[~ c#5@4 b4!2 a#4@2 ~@7]/2", AP: "~@4 a#4!2 a#4@2",
AQ: "a#4 f#4!2 f#4@2 ~@3", AR: "[~@4 f#4!3 f#4@2 c#4!2 c#4@2 ~@3]/2", AS: "[~@8 c#5@12 b4@4 b4@4 a#4@3 a#4@8 ~@25]/2",
AT: "[~@19 a#4@4 a#4@4 a#4@8 a#4@4 f#4@4 f#4@4 f#4@8 ~@9]/2",
AU: "[~@19 f#4@4 f#4@4 f#4@4 f#4@8 c#4@4 c#4@4 c#4@8 ~@9]/2", AV: "[~@11 c#5@12 b4@4 b4@4 a#4@38 ~@27]/3",
})).s("gm_string_ensemble_2").gain(0)
// chords · synth brass 1
const synth_brass_1 = note(`<
~ A@4 B@2 C D B@2 C D ~@4 B@2 C D B@2 C D ~@4 E F E F G H I@2 E F E F G H I@2 B@2 C D B@2 C D ~@4 E F E F G H I@2 E F
E F G H I@2 ~@16 J K J K L M N@2 J O P O Q R S@2 T ~
>`.pickRestart({
A: "[[e2,b2,e3]@97 ~@31]/4", B: "[e2,b2,e3]/2", C: "~@3 [e2,c#3]@5", D: "[e2,d#3]@3 [e2,e3]@5",
E: "[e3,b3]@19 ~ [e3,b3]@11 ~", F: "[e3,b3]@11 ~ [e3,b3]@19 ~", G: "[g#3,b3]@19 ~ [g#3,b3]@11 ~",
H: "[g#3,b3]@11 ~ [g#3,b3]@19 ~", I: "[[f#3,b3]@63 ~]/2", J: "[f#3,c#4]@19 ~ [f#3,c#4]@11 ~",
K: "[f#3,c#4]@11 ~ [f#3,c#4]@19 ~", L: "[a#3,c#4]@19 ~ [a#3,c#4]@12", M: "[a#3,c#4]@11 ~ [a#3,c#4]@19 ~",
N: "[[g#3,c#4]@63 ~]/2", O: "~ [f#3,c#4]@11 ~ [f#3,c#4]@19", P: "~ [f#3,c#4]@19 ~ [f#3,c#4]@11",
Q: "~ [a#3,c#4]@19 ~ [a#3,c#4]@11", R: "~ [a#3,c#4]@11 ~ [a#3,c#4]@19", S: "[~ [g#3,c#4]@63]/2", T: "~ [c#4,f#4]@31",
})).s("gm_synth_brass_1").gain(0.56).pan(0.6)
// chords · pad new age
const pad_new_age = note("<~@13 A@2 B@2 ~@8 A@2 C ~@25 A@2 C ~@51>".pickRestart({
A: "[c#4,e4,g#4]/2", // C#m
B: "[e4@3 ~@29 b3@29 ~@3, a3, [c#4,a4]@8 c#4@9 ~@3 c#4@9 ~@35, ~@4 e4@11 ~ e4@10 ~@2 e4@33 ~@3, ~@12 a4@8 ~@4 a4@37 ~@3]/2", // F#m
C: "[a3,c#4,e4]", // A
})).s("gm_pad_new_age").gain(0.4).pan(0.4)
// chords · pad choir
const pad_choir = note(`<
~@29 A@4 B@2 C@2 A@4 B@2 C@2 ~@12 D@4 E@2 F@2 D@4 E@2 F@2 G@2 H@2 I@2 J@2 K@4 L@2 M@2 K@4 L@2 M@2 K@2 N@2 O@2 P@2 Q ~
>`.pickRestart({
A: "[[b3,e4,b4]@63 ~]/2", B: "[[c#4,e4,b4]@63 ~]/2", C: "[[b3,f#4,b4]@63 ~]/2", D: "[b3,e4,b4]/2", E: "[c#4,e4,b4]/2",
F: "[b3,f#4,b4]/2", G: "[[a2,e3,a3]@63 ~]/2", H: "[c#3,g#3,c#4]/2", I: "[a2,e3,a3]/2",
J: "[[b2,f#3,b3]@44 [c#3,g#3,c#4]@19 ~]/2", K: "[[c#4,f#4,c#5]@63 ~]/2", L: "[[d#4,f#4,c#5]@63 ~]/2",
M: "[[c#4,g#4,c#5]@63 ~]/2", N: "[~ [c#4,f#4,c#5]@62 ~]/2", O: "[~ [d#4,f#4,c#5]@63]/2", P: "[~ [c#4,g#4,c#5]@63]/2",
Q: "~ [f#3,c#4]@31", // F#5
})).s("gm_pad_choir").gain(0.56).pan(0.6)
// other · alto sax
const alto_sax = note("<~@80 A@6 B@4 ~@17>".pickRestart({
A: "[~@21 d#4@3 ~ f#4@3 ~ c#5@19 g#4@2 ~ f#4@20 ~@14 a#4@3 a#4@4 a#4@11 ~ g#4@4 f#4 ~@3 d#4@4 c#4 ~@4 d#4@3 ~ f#4@11 ~@13 a#4@4 a#4 ~@3 a#4@12 g#4@4 f#4@2 ~@2 d#4@4 f#4@2 ~@6 a#4@3, ~@25 a4 ~@70, ~@51 g#4@2 ~@139]/6",
B: "[~@5 c#5@4 d#5@8 g#4 ~ g#4@2 f#4@6 ~@2 c#5@8 c#4@4 c#5@4 c#5@8 c#4@4 c#5@4 c#5@9 ~ c#4@3 ~@3 c#5@2 ~@2 c#5@4 d#5@3 ~ f#5@2 d#5@2 f#5@30 ~@5, ~@9 a#4 ~@54]/4",
})).s("gm_alto_sax").gain(0.64).pan(0.4)
// other · piano
const piano = note("<~ A@4 B A@7 C D E F A@4 B A B A D@2 E G ~@16 A@5 B A@2 D@2 E G ~@50>".pickRestart({
A: "e1@2 ~@10 e1 ~@19", B: "e1 ~@5 e1 ~@9", C: "c#2 ~@11 c#2 ~@19", D: "c#2@2 ~@10 c#2 ~@19", E: "a1@2 ~@10 a1 ~@19",
F: "a1@27 ~@5", G: "[b1,b2,f#3,b3]@3 ~ [b1,b2,f#3,b3]@3 ~ [b1,b2,f#3,b3]@4 ~@20",
// … 142 more lines
More by Tina Turner
Private Dancer1985 · G major · 116 bpmThe Best1989 · F major · 108 bpmWhat's Love Got To Do With It1984 · A♭ major · 98 bpmWe Don't Need Another Hero (Thunderdome)1985 · B major · 115 bpmWhat You Get Is What You See1987 · F major · 156 bpmDisco InfernoE♭ minor · 132 bpmGolden EyeB minor · 100 bpmI Don't Wanna Lose YouG minor · 116 bpm
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.