0:00/0:00
// Ring Of Fire — Cash Johnny
// 100 bpm, 8/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 36 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/8)
// 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 · epiano2 · "Ges.TEMC"
const epiano2 = note("<~@2 A B C@2 D@2 E F@2 G ~@3 H@2 I@3 J@2 K L M N O@2 P Q@2 R ~@4>".pickRestart({
A: "~@3 [b4,d5]", B: "~@2 [b4,d5]!2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@18 ~@6",
C: "[~@4 [g4,b4]@9 ~ b4!2 [a4,c5]@2 a4@2 b4@28 d5@9 ~ [b4,d5]!2 [c5,e5]@2 [a4,c5]@2, ~@14 g4@2 ~@2 f#4 ~ g4@30 ~@14, ~@24 b4 ~@7]/2", // G Am Bm C Am
D: "[d5@18 ~@10 [g4,b4]@9 ~ b4!2 [a4,c5]@2 a4@2 [d4,g4,b4]@9 ~@7 d4@3 ~, b4@12 ~@26 g4@2 ~@2 f#4 ~@21]/2", // G Am G
E: "[d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4] ~ g4@2 g4@2 [e4,g4] [c4,e4]@2 ~ [b3,d4]@5 ~ d4@4, ~@14 e4 ~ e4 ~@15", // D F#m Em C Bm
F: "[[d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4]@2 g4@2 [e4,g4] ~ [e4,g4] [c4,e4]@2 ~ [b3,d4]@3 b3 a3@2 ~@8 d4@8 ~@2 [g3,b3]@2 c4@2 [f#3,a3]@2 [g3,b3]@2 [b3,d4]@8 g3@2, ~@14 e4 ~@13 g3@17 ~@3 a3 ~@15, ~@32 b3@13 ~@19]/2", // D F#m Em C Bm G F#m G …
G: "a3 f#3 g3@4 ~@10",
H: "[~@4 d4@3 ~ [d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4] ~ g4@2 g4@2 [e4,g4] [c4,e4]@2 ~ [b3,d4]@5 ~ d4@4 [d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4]@2 g4@2 [e4,g4] ~ [e4,g4] [c4,e4]@2 ~ [b3,d4]@2, ~@22 e4 ~ e4 ~@29 e4 ~@9]/2", // D F#m Em C Bm D F#m Em …
I: "[~ b3 a3@2 ~@8 d4@8 ~@2 [g3,b3]@2 c4@2 [f#3,a3]@2 [g3,b3]@2 [b3,d4]@8 g3@2 a3@2 f#3@2 g3@8 ~@8 [b4,d5]@9 ~ [b4,d5]!2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@18 ~@2, ~@4 g3@17 ~@3 a3 ~@71, ~@8 b3@13 ~@75]/3", // G F#m G Bm C Am Bm
J: "[~@8 [g4,b4]@9 ~ [g4,b4] b4 [a4,c5]@2 a4@2 [g4,b4]@28 [b4,d5]@9 ~ [b4,d5]!2, ~@22 f#4 ~@41]/2", // G Am G Bm
K: "[c5,e5] [a4,c5] [b4,d5]@9 ~@5", L: "[g4,b4]@9 ~ b4!2 [a4,c5]@2 a4@2 [d4,g4,b4]@9 ~@7, ~@10 g4@2 ~@2 f#4 ~@17",
M: "d4@3 ~ [d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4] ~ g4@2 g4@2 [e4,g4] [c4,e4]@2 ~ [b3,d4]@5 ~, ~@18 e4 ~ e4 ~@11", // D F#m Em C Bm
N: "d4@4 [d4,f#4]@4 [f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4]@2 g4@2 [e4,g4] ~ [e4,g4] [c4,e4]@2 ~ [b3,d4]@3 b3 a3@2, ~@18 e4 ~@13", // D F#m Em C Bm
O: "[~@8 d4@8 ~@2 [g3,b3]@2 c4@2 [f#3,a3]@2 [g3,b3]@2 [b3,d4]@8 g3@2 a3@2 f#3@2 g3@8 ~@8 d4@3 ~ [d4,f#4]@4, g3@17 ~@3 a3 ~@43, ~@4 b3@13 ~@47]/2", // G F#m G Bm D
P: "[f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4] ~ g4@2 g4@2 [e4,g4] [c4,e4]@2 ~ [b3,d4]@5 ~ d4@4 [d4,f#4]@4, ~@10 e4 ~ e4 ~@19", // F#m Em C Bm D
Q: "[[f#4,a4]@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g4]@2 g4@2 [e4,g4] ~ [e4,g4] [c4,e4]@2 ~ [b3,d4]@3 b3 a3@2 ~@8 d4@8 ~@2 [g3,b3]@2 c4@2 [f#3,a3]@2 [g3,b3]@2 [b3,d4]@8 g3@2 a3@2 f#3@2, ~@10 e4 ~@13 g3@17 ~@3 a3 ~@19, ~@28 b3@13 ~@23]/2", // F#m Em C Bm G F#m G Bm
R: "g3 ~@3",
})).s("gm_epiano2").gain(0.72)
// chords · acoustic guitar steel · "Gitarre"
const acoustic_guitar_steel = note(`<
~ A B C@2 D C E F G H I J K@2 L M N O C@2 P C Q R S T U V W X Y Z AA AB AC
>`.pickRestart({
A: "~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~ [g3,b3,d4] [g3,c4,e4]@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G C G
B: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~", // G
C: "~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~", // G
D: "~@2 [b2,d3,g3] ~@3 [b2,d3,g3]@2 ~@2 [b2,d3,g3] ~@3 [b2,d3,g3]@2 ~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~", // G
E: "~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b1,b2]@2 [c2,c3]@2 [c#2,c#3]@2 ~@2 [f#3,a3,d4] ~", // G B C C# D
F: "~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [e3,g3,c4] ~@3 [e3,g3,c4] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,f#3,a3] ~", // D C G D
G: "~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // D C G
H: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // G
I: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 b2@2 [c2,c3]@2 [c#2,c#3]@2 ~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@14 b1 ~@17", // G C C# G
J: "~@2 [g3,b3,d4] ~ [g3,b3,d4] [g3,c4,e4]@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G C G
K: "[~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~ [g3,b3,d4] [g3,c4,e4]@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~]/2", // G C G
L: "~@2 [g3,b3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [e3,g3,c4] ~@3 [e3,g3,c4] ~@3 [d3,g3,b3] ~", // G D C G
M: "~@2 [d3,g3,b3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3 [d3,g3,b3] ~", // G D C G
N: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~", // G
O: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@19 [b2,d3,g3] ~", // G
P: "~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3]@2 ~@2 [b2,d3,g3] ~@3 [b2,d3,g3]@2 ~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~", // G
Q: "~@2 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b2,d3,g3] ~@3 [b1,b2]@2 [c2,c3]@2 [c#2,c#3]@2", // G B C C#
R: "~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [e3,g3,c4] ~@3 [e3,g3,c4] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // D C G
S: "~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // D C G
T: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // G
U: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 b2@2 [c2,c3]@2 [c#2,c#3]@2 ~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~, ~@18 b1 ~@13", // G C C# D
V: "~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [e3,g3,c4] ~@3 [e3,g3,c4] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~", // D C G D
W: "~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // D C G
X: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~", // G
Y: "~@2 [d3,g3,b3] ~@3 [d3,g3,b3]@2 ~@2 b2@2 [c2,c3]@2 [c#2,c#3]@2 ~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~@10 b1 ~@21", // G C C# G
Z: "[g3,b3,d4] [g3,c4,e4]@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G C G
AA: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~ [g3,b3,d4] [g3,c4,e4]@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~", // G C G
AB: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G
AC: "[d3,g3]@11 ~@2 [g3,b3]@11 ~@8, ~@12 d3@11 ~@9", // G5 G
})).s("gm_acoustic_guitar_steel").gain(0.36)
// bass · acoustic bass · "Bass"
const bass = note("<~ A B C D E F G H I J K L M N O P J@2 Q R S T U V W X Y Z AA X AB AC AD AE AF>".pickRestart({
A: "g2@2 d2 e2 g2@2 g2@2 d2 e2 g2@2 d2 e2 g2@2",
B: "d2@2 e2@2 g2@3 ~ g2@4 d2@2 e2@2 g2@2 d2@2 e2@2 f#2@2 g2 ~ g2@2 d2@2 e2@2",
C: "g2 ~ g2@2 d2@2 e2@2 g2@4 d2@4 g2@3 ~ g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2",
D: "d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2@4 d2@4 g2@3 ~",
E: "g2 ~ g2@2 d2@2 e2@2 g2@2 d2@2 e2@2 f#2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2",
F: "g2@4 d2@4 g2@3 ~ g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2",
G: "d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 f#2@2 e2@2 d2 ~ d2@2",
H: "a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2 ~ d2 ~ d2@2",
I: "a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2",
J: "d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2",
K: "d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 f#2@2 e2@2 g2@4 d2@2 e2@2 g2@4",
L: "g2@4 d2@2 e2@2 g2@4 d2@2 e2@2 g2@4 d2@2 e2@2 g2@3 ~ g2@4", M: "d2 e2 g2 d2 e2 f#2 g2@2 d2 e2 g2@2 g2@2 d2 e2",
N: "g2@4 d2@2 e2@2 g2@4 d2@2 e2@2 g2@3 ~ g2@4 d2@2 e2@2 g2@2 g2@2",
O: "f#2@2 e2@2 d2 ~ d2@2 a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2",
P: "d2@2 e2 ~ d2 ~ d2@2 a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2",
Q: "d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2@4 d2@4 g2@3 ~ g2 ~ g2@2 d2@2 e2@2",
R: "g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2@4 d2@4",
S: "g2@3 ~ g2 ~ g2@2 d2@2 e2@2 g2@2 d2@2 e2@2 f#2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2",
T: "d2@2 e2@2 g2@4 d2@4 g2@3 ~ g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2",
U: "g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 f#2@2 e2@2",
V: "d2 ~ d2@2 a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2 ~",
W: "d2 ~ d2@2 a1@2 b1@2 d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2@2",
X: "g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2",
Y: "g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 f#2@2 e2@2 d2 ~ d2@2 a1@2 b1@2",
Z: "d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2 ~ d2 ~ d2@2 a1@2 b1@2",
AA: "d2 ~ d2@2 a1@2 b1@2 c2 ~ c2@2 g1@2 a1@2 g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 d2@2 e2@2",
AB: "g2 ~ g2@2 d2@2 e2@2 g2 ~ g2@2 f#2@2 e2@2 g2@4 d2@2 e2@2 g2@4 g2@4",
AC: "d2@2 e2@2 g2@4 d2@2 e2@2 g2@4 d2@2 e2@2 g2@3 ~ g2@4 d2@2 e2@2",
AD: "g2 d2 e2 f#2 g2@2 d2 e2 g2@2 g2@2 d2 e2 g2@2", AE: "d2@2 e2@2 g2@4 d2@2 e2@2 g2@3 ~ g2@4 d2@4 g2@4 d2@3 ~",
AF: "g2@13 ~@3",
})).s("gm_acoustic_bass").gain(0.56).pan(0.4)
// chords · trumpet · "Trompete"
const trumpet = note("<A B@2 C@2 D E ~@4 F G@4 ~@3 H@2 I J ~@4 K@3 L M@4 N>".pickRestart({
A: "~@13 [g4,b4] [a4,c5] [a#4,c#5]", // G Am A#m
B: "[[b4,d5] ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~ [g4,b4] ~ [g4,b4] b4@2 [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2 [g4,b4]@15 ~@9, ~@31 g4 ~@32]/2", // Bm C Am Bm G Am F#m G
C: "[~@8 [b4,d5] ~ [b4,d5]!2 ~ [b4,d5] d5@2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~@17 [g4,b4] ~ [g4,b4]!2 ~ [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2, ~@14 b4 ~@49]/2", // Bm C Am Bm G Am F#m
D: "[g4,b4] ~", E: "~@2 [b4,d5]!2 ~ [b4,d5] d5@2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~@5, ~@6 b4 ~@25",
F: "~@20 [b4,d5] ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [c5,e5]@2 [a4,c5]@2", // Bm C Am
G: "[[b4,d5]@15 ~ [g4,b4] ~ [g4,b4] b4@2 [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2 [g4,b4]@15 ~ [b4,d5] ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~ [g4,b4] ~ [g4,b4] b4@2 [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2 [g4,b4]@15 ~@29, ~@19 g4 ~@55 g4 ~@52]/4", // Bm G Am F#m G Bm C Am …
H: "[~@12 [b4,d5] ~ [b4,d5]!2 ~ [b4,d5] d5@2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~@17 [g4,b4] ~ [g4,b4]!2 ~ [g4,b4] [g4,b4]@2, ~@18 b4 ~@45]/2", // Bm C Am Bm G
I: "[a4,c5] [f#4,a4] [g4,b4]@8 ~@6", J: "~@6 [b4,d5]!2 ~ [b4,d5] d5@2 [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~, ~@10 b4 ~@21",
K: "[~@18 d4@2 d4@2 [e4,g4]@2 [f#4,a4]@16 [g4,c5]@8 [g4,b4]@8 [f#4,a4]@16 [g4,c5]@8 [g4,b4]@7 ~ [g4,b4]@4 [b4,d5]@4, ~@20 f#4 ~@75]/3", // Em F#m C5 G F#m C5 G Bm
L: "[b4,g5]@3 ~@5", // Em
M: "[~@16 [b4,d5] ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~ [g4,b4] ~ [g4,b4] b4@2 [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2 [g4,b4]@15 ~ [b4,d5] ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [c5,e5]@2 [a4,c5]@2 [b4,d5]@15 ~ [g4,b4] ~ [g4,b4] b4@2 [g4,b4] [g4,b4]@2 [a4,c5]@2 [f#4,a4]@2 [g4,b4]@15 ~, ~@47 g4 ~@55 g4 ~@24]/4", // Bm C Am Bm G Am F#m G …
N: "[b4,d5] ~ [b4,d5] [b4,d5]@2 [b4,d5] d5@2 [c5,e5]@2 [d5,f#5]@2 ~ [b4,g5]@14 ~@5, ~@6 b4 ~@25", // Bm C D Em
})).s("gm_trumpet").gain(0.5)
// chords · synth strings 2 · "Fl„che"
const synth_strings_2 = note("<~ A@8 B@8 C@7 D@2 E@3 F@6 G>".pickRestart({
A: "[[g3,b3]@28 [f#3,a3] [g3,b3]@21 [f#3,a3] [g3,b3]@4 [a3,d4,f#4]@4 [g3,c4,e4]@2 [g3,b3,d4]@2 [a3,d4,f#4], d3@55 ~@9]/8", // G F#m G F#m G D C G …
B: "[~@3 [g3,c4,e4]@2 [g3,b3,d4]@2 [b3,d4,g4]@6 [b3,d4,g4]@4 [b3,d4,g4]@11 [b3,d4,g4]@7 [b3,d4,g4]@7 [b3,d4,g4]@7 [a3,d4,f#4]@4 [g3,c4,e4]@2 [g3,b3,d4]@2 [a3,d4,f#4]@4 [g3,c4,e4]@2 [g3,b3,d4]]/8", // C G D C G D C G
C: "[~ [b3,d4,g4]@18 [b3,d4,g4]@36 [b3,d4,g4]]/7", D: "[a3,d4,f#4]@2 [g3,c4,e4] [g3,b3,d4]",
E: "[[b3,d4,g4]@7 [a3,d4,f#4]@2 [g3,c4,e4] [g3,b3,d4] [a3,d4,f#4]]/3", // G D C G D
F: "[~@8 [g3,c4,e4]@8 [g3,b3,d4]@69 ~@9 g4@98, ~@85 b3@106 ~, ~@90 d4@101 ~]/6", G: "[g3,b3,d4]@7 ~",
})).s("gm_synth_strings_2").gain(0.3).pan(0.9)
// drums · kick
const kick = s("bd").struct("<~ [x!8]!34 ~>").gain(0.36)
// drums · snare
const snare = s("sd").struct("<~ A B C@2 D C E C E C F G H I C J K E C@2 L C M C M C N C N C O H I P ~>".pickRestart({
A: "~@2 x ~@3 x ~@2 x!3 ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~", B: "~@2 x ~@2 x!3 ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~",
C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", D: "~@2 x ~@3 x ~@3 x!6 ~@2 x ~@3 x ~@3 x ~@3 x ~",
E: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x!6 ~@2 x ~", F: "~@2 x ~@3 x ~@3 x ~@3 x!6 ~@2 x ~@3 x ~@2 x!3",
G: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x!3 ~@2 x ~", H: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x!3 ~@2 x ~@3 x ~",
I: "~@2 x ~@3 x ~@3 x ~@3 x ~@2 x!3 ~@2 x ~@3 x ~@3 x ~", J: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x!2",
K: "x!4 ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~", L: "~@2 x ~@3 x ~@3 x ~@3 x!6 ~@2 x ~@3 x ~@3 x ~",
M: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x!6", N: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x!6 ~@2 x ~@3 x ~",
O: "~@2 x ~@3 x ~@3 x!6 ~@2 x ~@3 x ~@2 x!3 ~@2 x ~", P: "~@2 x ~@3 x ~@3 x ~@2 x!3 ~@2 x ~@3 x ~@3 x ~@3 x ~",
})).gain(0.36)
// drums · hihat
const hihat = s("hh").struct("<~ A@6 B C@3 D A@3 E C@2 F A@5 C@7 G A@3 ~>".pickRestart({
A: "x!32", B: "x!29 ~ x ~", C: "x!16", D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!12",
E: "x!5 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~",
F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!4", G: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!16",
})).gain(0.36)
// drums · crash
const crash = s("cr").struct("<~@35 x>").gain(0.41)
// drums · tambourine
const tambourine = s("tb").struct("<~@7 A B@3 C ~@3 D B@2 E ~@5 B@7 F ~@4>".pickRestart({
A: "~@28 x!4", B: "x!32", C: "x!20 ~@12", D: "~@4 x!28", E: "x!28 ~@4", F: "x!16 ~@16",
})).gain(0.36)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@7 A B@3 C ~@3 D B@2 E ~@5 B@11 ~>".pickRestart({
A: "~@14 x!2", B: "x!16", C: "x!11 ~@5", D: "~@3 x!3 ~ x!9", E: "x!15 ~",
})).gain(1.56)
stack(epiano2, acoustic_guitar_steel, bass, trumpet, synth_strings_2, kick, snare, hihat, crash, tambourine, cabasa)
More by Johnny Cash
I Got Stripes1959 · D♭ major · 207 bpmThe Ways Of A Woman In Love1958 · B♭ major · 182 bpmI Walk The LineF major · 105 bpmA Boy Named SueB♭ major · 200 bpmBallad Of A Teenage QueenB major · 95 bpmFolsom Prison BluesF♯ major · 100 bpmGuess Things Happen That WayB♭ major · 148 bpmSilent NightE major · 93 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.