0:00/0:00
// Proud Mary — Ike & Tina Turner
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
~ A@2 B C D@2 E@2 D@2 F@3 G H I J K F D@2 L@2 D@2 L M N@2 G O I J P F Q@2 L A@2 R S T@2 U@2 V@2 W X Y G H I J K Z@3 Y
A@2 R C AA@2 AB@2 AC@2 AD@2 Y G H I J K AE@2 AF X W@2 Y@2 AG W Y AH AI T@2 W A@2 B AJ@2
>`.pickRestart({
A: "c3@5 ~ a2 ~ a2@7 ~", B: "c3@6 a2@4 g2@3 ~ f2@2", C: "~@2 f2 ~ f2 ~ f2 ~ f2@3 ~ f2@3 ~",
D: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~]/2",
E: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~, ~@10 b2 ~@21]/2",
F: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~", G: "d3@5 ~ d3 ~ d3@2 f#2@2 g2@2 g#2@2", H: "a2@5 ~ a2@2 e2@5 ~ e2@2",
I: "a2@5 ~ a2@4 e2@2 f#2@2 a2@2", J: "b2@5 ~ b2@2 f#2@5 ~ f#2@2", K: "b2@5 ~ b2@4 f#2@2 a2@2 b2@2",
L: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 a2@2", M: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@2",
N: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 a2@2]/2", O: "a2@5 ~ a2@2 e2@4 ~@2 e2@2",
P: "b2@5 ~ b2@4 a2@2 b2@2 a2@2", Q: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3@2]/2",
R: "c3@6 a2@3 ~ g2@3 ~ f2@2", S: "~@2 f2 ~ f2 ~ f2 ~ f2@2 ~@2 f2@3 ~",
T: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/2",
U: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3@2]/2",
V: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@3 ~]/2", W: "d3@5 ~ d3@4 a2@2 b2@2 d3 ~", X: "d3@5 ~ d3@4 a2@2 b2@4",
Y: "d3@5 ~ d3@4 a2@2 b2@2 a2@2", Z: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/3",
AA: "[d3@4 ~@2 d3@4 a2@2 b2@2 d3@7 ~ d3@2 a2@2 b2@2 d3@2 b2@2]/2",
AB: "[d3@4 ~@2 d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/2",
AC: "[d3@4 ~@2 d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@4]/2",
AD: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@6 ~@2 d3 ~]/2", AE: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 d3 ~]/2",
AF: "d3@5 ~ d3@3 ~ d3@2 a2@2 b2@2", AG: "d3@5 ~ d3@4 a2@2 b2@2 d3@2", AH: "d3@5 ~ d3@4 b2@2 a2@2 b2@2",
AI: "d3@5 ~ d3@4 a2@2 b2@2 a2 ~", AJ: "[~@2 f2 ~ f2 ~ f2 ~ f2@2 ~@2 d2@13 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.48)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
~@18 A@2 ~ B C ~@11 D@2 ~ B E ~@6 F G H I J K L M N O P Q ~@2 B E ~@17 R S ~ B C ~@2 B T@2 ~ B E ~@2 B U V W X Y@2
>`.pickRestart({
A: "[~@2 b4@2 d5@2 e5 ~ [e5,f#5]@2 e5@2 d5@2 e5@4 f#5@11 ~@3]/2", B: "~@7 [f#5,a5]",
C: "~ [f#5,a5] [e5,g5] [d5,f#5] [e5,g5]@2 [d5,f#5]@2", // F#m Em D Em D
D: "[~@2 b4@2 d5@2 e5 ~ [e5,f#5]@2 e5@2 d5@2 e5@4 f#5@10 ~@4]/2", // Esus2
E: "~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@3 ~", // F#m Em D Em D
F: "~@2 f#4 d5@2 f#4 d5 ~ [g4,e5] ~ [f#4,d5]@3 ~ [g4,e5] ~", G: "[g#4,f5] ~ [a4,f#5]@13 ~",
H: "~@2 f#4 d5@2 f#4 d5 f#4 [g4,e5]@2 [f#4,d5]@4 [g4,e5]@2", I: "[f#4,d5]@3 ~",
J: "~@2 f#4 d5@2 ~ d5 ~ [g4,e5]@2 [f#4,d5]@4 [g4,e5] ~, ~@5 f#4@2 ~@9", K: "[g#4,f5]@3 [a4,f#5]@10 ~@3",
L: "~@2 f#4 d5@2 f#4 d5 ~ [g4,e5]@2 ~ [f#4,d5]@2 ~ [g4,e5] ~", M: "~ f#4@12 ~@3, d5@13 ~@3",
N: "a4 ~@2 a4!2 ~ b4 ~ c#5!2 ~ c#5!2 ~ d5 ~", O: "c#5!2 ~ c#5!2 ~ b4 ~ a4@8",
P: "b4!2 ~ b4!2 ~ c#5 ~ d5!2 ~ d5!2 ~ e5 ~", Q: "d5!2 ~ d5 d5@2 c#5@2 b4@6 ~@2", R: "~ b4 d5 e5 f5 e5 d5 b4",
S: "e5@2 f#5@11 ~@3", T: "[~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@7 ~@13]/2",
U: "~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5] ~@3", V: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@8 ~@2",
W: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@7 ~@3", X: "[e4,g4,c5]@5 ~ [c#4,e4,a4] ~@3 [b3,d4,g4]@2 ~@2 [a3,c4,f4]@2",
Y: "[~@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [d3,a3,d4]@20]/2", // F D5
})).s("gm_overdriven_guitar").gain(0.44)
// chords · brass section · "BRASS 1"
const brass_section = note(`<
~ A B C@2 D ~@15 E F ~@14 E G H I J@2 K@2 ~@14 E L M I N@2 O@2 ~@14 E F ~@2 E F ~@2 E F ~@2 E P Q R S@3
>`.pickRestart({
A: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@9 ~", B: "[e5,g5,c6]@2 ~@2 [e5,g5,c6] ~ [c#5,e5,a5]@9 ~",
C: "[[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [d5,g5,b5]@3 ~ [f5,a5,c6]@9 ~ [f5,a5,c6]@2 ~@2 [f5,a5,c6]@2 ~@2, ~@28 b5 ~@3]/2", // C A G F
D: "[f#5,a5,d6]", E: "~@7 [a4,f#5]", F: "~ f#5 [g4,e5] [f#4,d5] [g4,e5]@2 [f#4,d5]@2, ~@2 a4 ~@13",
G: "~@2 f#5@2 [g4,e5]@2 [f#4,d5]@2 [g4,e5]@4 [f#4,d5]@3 ~, ~@2 a4 ~@13", // C D C D
H: "[e5,g5,c6] ~ [e5,g5,c6] [e5,a5]@4 ~, ~@3 c#5@3 ~@2", // C A5
I: "[e5,g5,c6]@2 ~@2 [e5,g5,c6]@2 [e5,a5]@9 ~, ~@6 c#5@7 ~@3", // C A5
J: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@2 ~@2 [d5,g5,b5]@2 ~@2 [f5,a5,c6]@12 ~@2 [f5,a5,c6]@2 ~@2]/2", // C A G F
K: "[[f#5,a5,d6]@3 ~]/2", L: "~@2 [a4,f#5]@2 [g4,e5]@2 [f#4,d5]@2 [g4,e5]@4 [f#4,d5]@3 ~",
M: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@8 ~@2", // C A
N: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [d5,g5,b5]@3 ~ [f5,a5,c6]@13 ~ [f5,a5,c6]@3 ~]/2", // C A G F
O: "[[f#5,a5,d6]@21 ~@11]/2", P: "~ [a4,f#5] [g4,e5] [f#4,d5] [g4,e5]@2 f#4 ~, ~@12 d5 ~@3",
Q: "[e5,g5,c6]@3 ~ [e5,c6] ~ [e5,a5]@9 ~, ~@4 g5@2 c#5@7 ~@3", R: "[e5,g5,c6]@2 ~@2 [e5,g5,c6]@2 [c#5,e5,a5]@9 ~",
S: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@2 ~@2 [b4,d5,g5]@2 ~@2 [f5,a5,c6]@9 ~ [f5,a5,c6]@2 ~@2 [d5,f#5,d6]@7 ~@13]/3", // C A G F D
})).s("gm_brass_section").gain(0.45)
// chords · piano · "A.PIANO 2"
const piano = note(`<
~ A B C D E@2 F@7 G H@2 I@5 J@2 F@6 K L@8 M N O@2 P@2 Q F@3 R F R S T@4 U@3 V W M X@2 Y@2 Z F@6 AA AB AC AD@2 AE@3
AF@4 AG@4 AH@4 AI AJ AK AL@3
>`.pickRestart({
A: "[c3,e4]@5 ~ [a2,c#4,e4,a4]@7 ~@3, [g4,c5]@3 ~@13", B: "[c3,e4]@5 ~ [a2,c#4,e4,a4]@6 ~@4, [g4,c5]@3 ~@13",
C: "[c3,e4]@5 ~ [a2,e4]@2 ~@2 [g2,d4,g4,b4]@3 ~ [f2,f4,a4,c5]@2, [g4,c5]@3 ~@3 [c#4,a4] ~@9", // C A5 G F C5 F#m
D: "~@2 [f2,f4,a4,c5] ~ [f2,f4,a4,c5] ~ [f2,f4,a4,c5] ~ [f2,c5]@2 ~@2 [f2,f4,a4,c5] ~@3, ~@8 [f4,a4] ~@7", // F F5 F
E: "[[f#4,a4,d5]@4 ~@17 e4 ~@2 d5@6 ~@2, d2@6 d4@4 a3@5 ~, ~@4 d3@10 f#4@6 ~@2 f#4@9 ~, ~@10 a3@8 d3@13 ~]/2", // D
F: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D
G: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~ [d4,f#4] ~ [a3,d4,f#4] ~@3 a3 ~", // D
H: "[~@4 a3@2 ~ a2@3 ~ b3 ~ a4@3, [c#4,e4]@15 ~@9 c#4@8, a3@4 e3@10 ~@7 e3@9 ~@2, ~ a2@5 ~@4 a2@4 ~@2]/2", // C#m
I: "[~@10 f4 ~@3 d4@15 ~@13 d4@3 ~@13 d4@2 ~@2 [f#4,a4]@3 ~ [f#4,a4]@2 [e4,g4]@2 [d4,f#4]@2 [e4,g4]@4 d4@2 [f#4,a4]@2, ~ f#3@13 ~@2 [d3,f#4]@7 ~ d3@6 ~@10, ~@4 b3@22 ~@4 d4@10 ~@6 d4@11 ~@5 a3@14 ~@4, ~@11 f#4@19 ~@4 [f#3,a4]@12 ~@6 a3@8 f#3@16 ~@4, ~@12 b4@18 ~@8 a3@9 ~@3 a4@11 ~@15 f#4 ~@3]/5", // F#m Em D Em F#m D F#m
J: "[~@2 [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [a3,d4,f#4]@6 d4 ~@9 [a3,d4,f#4] ~ [a3,d4,f#4] ~, d3@17 ~@15, ~@4 f#3@5 ~@7]/2", // F#m Em D Em D
K: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@9", // D
L: "[~@4 [a3,c#4,e4]@6 ~@4 a3@3 ~@5 a4@8 ~@4 [f3,f#3] ~@5 [f4,b4]@2 [f#4,b4]@4 [f4,b4]@2 ~@10 d3@3 ~@21 d4@4 f#4@6 d4 ~ [d4,f#4]@2 ~@2 [d4,f#4]@2 e4@2 d4@2 e4@4 d4 ~ [f#4,a4]@2 ~@2 [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [d4,f#4] ~@3, ~@10 a2@17 ~@27 b3@7 ~@3 f#3@6 d4@8 f#3@15 d3@13 ~@4 d3@11 ~@7, ~@12 e3@5 ~ e3@10 ~@8 f#3@25 ~ d3@8 f#4@10 a3@13 ~ f#3@12 ~@6 f#3@9 ~@7, ~@19 b3@2 ~@9 b3@4 ~@4 b3@9 ~@5 d4@14 a3@10 d3@10 d4@5 ~@5 a3@10 ~@10 a3@5 ~@7, ~@20 c#4@10 ~@2 [d4,f#4]@5 ~@9 f#4 ~ [f#4,b4]@12 ~@10 a4@39 ~@19]/8", // A F#maj7 Fdim B5 Fdim D F#m Em …
M: "[c4,e4,g4,c5]@2 ~ [a3,c#4,e4,a4]@3 ~@2", N: "[c4,e4,g4,c5]@3 ~@3 [a3,c#4,e4,a4]@7 ~@3",
O: "[[c4,e4,g4,c5]@4 ~@2 [a3,c#4]@2 ~@2 [g3,b3,d4,g4]@2 ~@2 [f3,c4,f4,a4]@4 [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4] ~@3, ~@6 [e4,a4] ~@25]/2", // C A G F A5
P: "[a3@4 ~@6 d4@2 ~@4 e4 ~ d5@4 ~@3 e4 ~@2 d4@4, [f#4,a4]@13 ~@4 f#4@8 ~ f#4@6, d3@11 ~ d3@9 ~ d3@10, d4@3 a3@3 ~ a3@4 ~ a3@4, ~ f#3@2 ~@5]/2", // F#m
Q: "~@2 [d4,f#4] ~ [a3,b3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D Bm7 D
R: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@3", S: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@4 a3 ~",
T: "[~@2 a2 ~@5 a3@3 ~@9 a4@10 ~@6 b3 ~ d4@2 [f4,b4]@2 ~@18 [d4,f#4]@2 ~@2, [c#4,e4]@14 ~@3 b3@2 ~@11 b3@6 ~@10 d4@10 ~@2 b3@4 ~@2, a3@6 e3@8 ~@2 e3@13 ~@6 f#3@16 ~@5 f#3@7 ~, ~@4 a2@8 ~@2 a2@14 ~@3 b2@3 ~@20 d3@8 ~@2, ~@18 c#4@12 ~@2 d4@5 ~@5 [f#4,b4]@13 ~@9]/4", // Fdim D C#m B5
U: "[d4@10 ~@2 d4 ~ d4@5 ~@3 d3@2 ~@6 [f#4,a4]@3 ~ [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [d4,f#4] ~ [a3,f#4,a4]@2, [a3,f#4]@13 ~ f#4@14 ~@20, ~@10 f#3@12 ~@2 f#3@13 ~@11, ~@14 a3@9 ~@5 a3@9 ~@11, ~@20 d4@5 ~ d4@4 ~@18]/3", // F#m Em D Em D
V: "~@2 [f#4,a4]@2 [g3,g4] ~ [f#3,d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~@3, ~@2 a3 ~ e4@2 ~@10", // F#m G D C D
W: "[c4,e4]@5 ~ [a3,e4,a4]@7 ~@3, [g4,c5]@3 ~@3 c#4@5 ~@5", // C A5 C5
X: "[[c4,e4,g4,c5]@3 ~@3 [a3,c#4,e4,a4]@2 ~@2 [g3,b3]@2 ~@2 [f3,a3,c4,f4]@5 ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2 ~@2 [f3,c4]@2 ~@2, ~@10 [d4,g4] ~@17 [a3,f4] ~@3]/2", // C A G F F5 G5 Dm
Y: "[[a3,d4,f#4]@2 ~@2 a3@6 ~@8 e4 ~@7 e4 ~ d4@4, d3@9 ~ d3@10 d5@9 ~@3, ~@2 f#3@8 ~@2 f#3@11 ~@9, ~@14 a3@9 ~@9, ~@19 f#4@7 ~ f#4@3 ~@2]/2", // D
Z: "~@2 f#4 ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D
AA: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4]@3 ~", AB: "~@4 [a3,c#4,e4] ~ [a3,c#4,e4]@10",
AC: "~@4 b3 ~ a4@10, a2@3 ~, ~@2 e3@11 ~@3, ~@5 c#4@11",
AD: "[~@8 [f4,b4]@2 a#4 ~@11 b3@8 ~@2, b2@10 [f#4,b4]@13 ~@9, ~@2 d3@9 ~@3 d4@8 ~@10, ~@6 f#3@12 d3@9 ~@5, ~@20 f#3@11 ~]/2", // Fdim B5
AE: "[~@4 f#3@6 ~@2 e4@2 ~@8 d4@3 ~ d4@2 ~@2 [d4,f#4]@3 ~ [d4,f#4]@2 e4@2 d4@2 e4@4 d4@2 [a3,f#4,a4]@2, ~@4 [a3,d4,f#4]@8 a4@33 ~@3, ~@10 d3@27 ~@11, ~@14 f#4@15 ~ a3@7 ~@11, ~@14 d4@4 f#3@2 a3@7 ~ f#3@9 ~@11]/3", // D
AF: "[~@2 [a3,f#4] ~ [g3,e4,g4]@2 [f#3,d4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ [f#3,a3]@6 ~@6 d4@2 ~@2 d4@7 ~@9 [d4,f#4]@3 ~ [d4,f#4]@2 e4@2 d4@2 e4@4 d4@2 [a3,f#4,a4]@2, ~@2 a4@2 ~@2 f#4@2 ~@6 f#4@14 ~@2 f#4@15 ~@19, ~@14 d4@10 a3@5 ~ a3@12 f#3@20 ~@2, ~@14 d3@5 ~ d3@9 ~@35, ~@11 f#3@3 f#3@4 ~ d4@3 a3@8 ~@2]/4", // D C D C D F#m D
AG: "[~@2 [a3,f#4] ~ [e4,g4]@2 [d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ d4@7 ~ d4@3 ~ d4@3 ~ d4@6 ~@6 d4@3 ~ [d4,f#4]@3 ~ [d4,f#4]@2 [g3,e4]@2 [f#3,d4]@2 [g3,e4]@4 f#3@2 [a3,f#4,a4]@2, ~@2 a4@2 g3 ~ f#3@2 ~@6 [f#3,a3,f#4]@15 ~ [f#3,a3]@15 ~ [f#3,a3]@6 ~@12, ~@30 f#4@8 f#4@7 ~@19, ~@36 d4@5 ~@19 d4 ~@3]/4", // D Em D C D C D C …
AH: "[~@2 [a3,a4]@2 [g3,e4,g4]@2 [d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ [f#3,a3,d4,f#4]@15 ~ [f#3,d4,f#4]@15 ~ [d4,f#4]@3 ~ d4@2 e4@2 d4@2 e4@4 d4 ~ [a3,f#4,a4]@2, ~@2 f#4 ~@3 f#3@2 ~@22 a3@12 ~@4 [f#3,a3]@14 ~@2 f#3 ~, ~@50 f#4@11 ~@3]/4", // A C D C D F#m
AI: "~@2 [a3,f#4,a4] ~ [g3,e4,g4] ~ [f#3,d4,f#4] ~ [g3,e4,g4]@3 ~ [f#3,d4,f#4] ~@3", // D C D C D
AJ: "[c4,e4,g4,c5]@4 ~@2 [a3,c#4,e4,a4]@7 ~@3", AK: "[c4,e4,g4,c5]@5 ~ [a3,c#4,e4,a4]@7 ~@3",
AL: "[[c4,e4,g4,c5]@4 ~@2 [a3,c#4,e4,a4]@2 ~@2 [g3,b3,d4,g4]@2 ~@2 [f3,c4,f4,a4]@7 ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ a3 ~ [d3,a3,f#4,a4,d5]@20]/3", // C A G F D
})).s("gm_piano").gain(0.4)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~ A@2 B@2 C@8 ~@2 D@2 E@2 C@8 ~@4 D@2 E@2 F@4 A G B@2 C@8 ~@2 H@2 E@2 F@4 I J K@2 C@8 ~@2 H@2 E@2 C@8 ~@8 G@2 L@3
>`.pickRestart({
A: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@9 ~", B: "[[e4,g4,c5]@5 ~ [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@16 ~@2]/2",
C: "[a3,d4,f#4]/8", D: "[a3,c#4,e4]/2", E: "[[b3,d4,f#4]@31 ~]/2", F: "[[a3,d4,f#4]@61 ~@3]/4",
G: "[e4,g4,c5]@3 [c#4,e4,a4]@5", H: "[[a3,c#4,e4]@31 ~]/2", I: "[e4,g4,c5]@6 [c#4,e4,a4]@9 ~",
J: "[e4,g4,c5]@6 [c#4,e4,a4]@9 ~, c#4 ~@15", // C A
K: "[[e4,g4,c5]@6 [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@12 ~@2 [a3,c4,f4]@3 ~]/2", // C A G F
L: "[[e4,g4,c5]@6 [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@12 ~@2 [d3,a3,d4,f#4]@19 ~]/3", // C A G F D
})).s("gm_string_ensemble_1").gain(0.4)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~ A B C D E F G H I H J@2 K J L M N@2 O P@4 J K P J O Q R M@2 S T O@2 P U V W C X J K O@3 Y P O@2 Z L AA S AB J P J AC
B A AD AE J@2 O@3 K P K J AF L@2 S T K P O@2 J P K J P J P J@2 AG R AC B A AD AH ~
>`.pickRestart({
A: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@9 ~", B: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@9 ~",
C: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@2 ~@2 [b4,d5,g5]@2 ~@2 [a4,c5,f5]@2", // C A G F
D: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5]@2 ~@2 [a4,c5,f5] ~@3", // F
E: "[a4,d5,f#5]@2 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
F: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
G: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5]@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
H: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
I: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
J: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
K: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
L: "[a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~", // A
M: "[a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~", // A
N: "[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~", // Bm
O: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
P: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
Q: "~@2 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
R: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
S: "[b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~", // Bm
T: "[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~", // Bm
U: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~@3", // D
V: "[e5,g5,c6] ~ [e5,g5,c6]@3 ~ [c#5,e5,a5]@9 ~", W: "[e5,g5,c6]@3 ~ [e5,g5,c6]@2 [c#5,e5,a5]@9 ~",
X: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5]@2 ~@2 [a4,c5,f5]@2 ~@2", // F
Y: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
Z: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
AA: "[a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~", // A
AB: "[b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~", // Bm
AC: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@4 ~@2", // D
AD: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [b4,d5,g5]@2 ~@2 [a4,c5,f5]@2", // C A G F
AE: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~@3 [a4,c5,f5] ~@3", // F
AF: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~@3 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
AG: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
AH: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~@3 [a4,d5,f#5]@4", // F D
})).s("gm_electric_guitar_muted").gain(0.32)
// drums · kick
const kick = s("bd").struct("<~ A@3 B C@34 A@3 B C@18 A@4 C@30 A@3 B ~>".pickRestart({
A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~ x ~", C: "x ~@3 x!2 ~ x",
})).gain(0.48)
// drums · snare
const snare = s("sd").struct(`<
A B C D E C F D C D C@4 G D H D C D C D I C D C@3 D@2 J D K D@5 L C@3 M D H C@3 D C@2 D N D O D@3 C@2 P Q C@2 F D R
D@2 C@2 D@3 R D H D@2 C D C S C D C T D@3 I D@3 I Q B C U ~
>`.pickRestart({
A: "~@8 x ~@2 x!2 ~@3", B: "~@4 x ~@7 x ~@2 x", C: "~ x ~ x", D: "~@4 x ~@2 x ~@4 x ~@3", E: "~@4 x ~@6 x!5",
F: "~@4 x ~@2 x!5 ~@4", G: "~ x ~@2", H: "~@4 x ~@2 x!4 ~@5", I: "~@4 x ~@2 x!4 ~ x!2 ~@2",
J: "~@4 x ~@2 x ~ x!2 ~@5", K: "~@4 x ~@2 x ~@8", L: "~@4 x ~@2 x!2 ~ x ~ x!2 ~@2", M: "~@4 x ~ x!7 ~@3",
N: "~@4 x ~@2 x ~@2 x ~ x!2 ~@2", O: "~@4 x ~@5 x ~ x!2 ~@2", P: "~@4 x ~@2 x ~@4 x!3 ~", Q: "~@4 x ~@7 x!3 ~",
R: "~@4 x ~@2 x ~@2 x!2 ~@4", S: "~@4 x ~@5 x!3 ~ x!2", T: "~@4 x ~@2 x ~@2 x ~ x!2 ~ x", U: "~@4 x ~ x!3 ~@3 x ~@3",
})).gain(0.48)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@4 A B ~@2 B ~ B@5 ~@3 B ~ B ~@2 B ~ B@3 ~@2 C ~@14 B@3 ~ B@2 ~@3 B ~@3 B@2 ~@4 D ~@4 B@2 ~@8 B ~ B@3 ~ B ~@14
>`.pickRestart({
A: "~@5 x ~@2", B: "~@7 x ~@8", C: "~ x", D: "~@3 x ~@4",
})).gain(0.32)
// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@7 B ~ A ~@13 A ~ C ~@11 A ~@21 A ~@7 A ~ B ~@23>".pickRestart({
A: "~@15 x", B: "~@7 x", C: "~@14 x!2",
})).gain(0.48)
// drums · hihat
const hihat = s("hh").struct(`<
~ A@3 B A C A@7 D A D A@5 D A@7 C A@7 D A@3 B A C A@7 D A D A@9 B A E A@7 D A E A F A@7 G A@3 D A@3 D A@3 B ~
>`.pickRestart({
A: "x!8", B: "x!5 ~ x ~", C: "x!6 ~@2", D: "x!4 ~@4", E: "x!5 ~@3", F: "x!6 ~ x", G: "x!4 ~ x ~@2",
})).gain(0.4)
// … 24 more lines
More by Ike & Tina Turner
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.