0:00/0:00
// Knock Me Down — Red Hot Chili Peppers
// 93 bpm, 3/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 154 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(93/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: edit a riff to change every repeat.
// bass · electric bass finger · "Bass"
const bass = note(`<
A B@2 C D E F G H@2 I J K@4 L@2 M N@2 O P Q R S T U V W@2 X Y Z AA AB ~ Z AC AD Y ~ AE AF@2 AG AH AI AJ@2 AK AL AM AN
AO AP AQ@2 AR AS@2 AT AU AV V AW@2 AX AY AZ AE BA BB ~ BC BD BE BF BG BH BI BJ BK BL BM BN BO BP AL BQ@2 U BR BS BT BA
Y BU ~@2 V BV@2 AX AY BW AE BA BB ~ BX BY BZ CA ~@2 BZ CB CC CD ~ CE CF@2 CG CH CI CF@2 CJ CK CL CF@2 CM CG R CN CF@2
CG CH CI CF@2 CJ CK CL CF@2 CM CG R CO
>`.pickRestart({
A: "~@4 g1 a1@2 c2@2 d2 e2 a1", B: "[c2 d2@3 ~@4 g1 a1@2 c2@2 d2 e2 a1 c2 d2@3 ~@4]/2",
C: "g1 a1@2 c2@2 d2 e2 a1 c2 d2@3", D: "~@4 f1@5 ~@3", E: "~@4 d2@3 ~ d2@3 a#1", F: "a1@8 ~@4 a#1@7 ~@5",
G: "a#1@3 a#1 a1@2 c2@3 ~ c#2@2", H: "[d2@6 ~@2 d2@6 a1@2 c2@4 c2@7 ~ a#1@7 ~ a#1@7 ~ a#1@4]/2",
I: "c2@4 c2@7 ~ c#2@2 a1@2 d2@6 ~@2", J: "d2@3 g1 a1@2 a1@4 g1@2",
K: "[g1@8 g1@9 ~@3 g1@8 g1@4 a1@4 a1@8 a1@8 a1@8 a1@4 a#1@4 a#1@7 ~ a#1@4 a#1@4 a#1@4 a#1@4 d2@4]/4",
L: "[e2@5 ~@3 e2@5 ~ a1@2 b1@4 b1@7 ~ a1@8 a1@4 a1@6 a1@2]/2", M: "b1@4 d2@6 ~@2 d#2@4 e2@5 ~@3",
N: "[e2@5 ~@3 d2@4 d2@6 ~@2 c2@7 ~ c2@4 d2@4 c2@4 d2@4 c2@4]/2", O: "d#2@4 c2@4 e2@5 ~@3 e2@5 ~ a1@2",
P: "b1@4 b1@7 ~ a1@8 ~@4", Q: "a1@2 a1 a1@2 a1", R: "b1!6", S: "b1!2 c2!4", T: "c2@2 c2@2 a1@2 c2 e2 d2@3 ~",
U: "d2@6 c2@4 c3@2 c2@4 c2@7 ~", V: "d2@3 ~ d2@3 c2@2 c3 c2@2",
W: "[c2@6 ~@2 a1@8 a1@6 e2@4 e3@2 e2@4 e2@5 ~@3 e1@2 e1@6]/2", X: "~@2 f1@2 f1@4 g1@4 b1@4 c2@7 ~",
Y: "d2@3 ~ d2@3 ~@5", Z: "~@4 d2@3 ~ d2@3 ~", AA: "~@2 a1", AB: "a1 ~@3", AC: "~@5 g1", AD: "g1 ~@3",
AE: "~@8 d2@3 ~", AF: "[d2@3 g1 a1@2 a1@4 g1@4 g1@2 g1@3 g1!2 a1 c2@2]/2", AG: "~ c#2 a1!2 d2@3 ~ d2@3 a1",
AH: "c2@4 c2@4 c2@4 a#1@7 ~ a#1@4", AI: "a#1@7 ~@5 a#1@7 ~ a#1@4", AJ: "[d2@3 ~ d2@3 g1 a1@2 a1@4 g1@4 g1@2 g1@4]/2",
AK: "~@2 g1@3 g1 g1@2 a1@2 a1@2", AL: "a1!6", AM: "a#1!6", AN: "a#1@4 d2@4 e2@5 ~@3 e2@5 ~ a1@2",
AO: "a#1@4 a#1@7 ~ a1@8 a1@4", AP: "a1@3 a1!2 a#1 d2 e2@2 d#2@2 d2",
AQ: "[c#2@3 ~ c#2@3 f#1 g#1@2 g#1@4 f#1@4 f#1@2 f#1@3 f#1]/2", AR: "f#1@4 f#1@8 d2@4 e2@5 ~@3",
AS: "[e2@5 ~ a1@2 a#1@4 a#1@7 ~ a1@8 a1@4 a1@8 a1@2 a1@2 a1@4]/2", AT: "~ d2@2 g#1 c#2@3 ~ c#2@3 f#1",
AU: "g#1 g#1@2 f#1@2 f#2", AV: "~ f#1!3 f#1@2", AW: "[c2@7 ~ d2@6 ~@2 d2@6 c2@4 c3@2 c2@4 c2@7 ~ a1@8]/2",
AX: "a1@6 e2@4 e3@2 e2@4 e2@5 ~@3", AY: "e1 e1@4 f1 f1@2 g1@2 b1@2", AZ: "c2@3 ~ d2@3 ~ d2@3 ~", BA: "d2 ~@3",
BB: "a1@4 a1@3 ~@5", BC: "~@8 d2 e2 g2 a2", BD: "c3@3 ~ a#1@7 ~@13", BE: "a#1@7 ~@5 g1@9 ~ g1@2",
BF: "a#1@7 ~ f2@5 ~@3 f2@5 ~ f1@2", BG: "c2@4 c2@7 ~ a#1@7 ~ a#1@4", BH: "a#1@7 ~ a#1@4 a#1@4 a#1@4 c2@4",
BI: "a2@2 a2@2 a2@2 a2@2 a2@2 a2!2", BJ: "a2!2 f2!4", BK: "f2!4 a2!2", BL: "a2@2 a2@2 a2@2 a2!2 a2@2 a2@2",
BM: "f2!6", BN: "f2!2 g1 g1@2 g1", BO: "g1!4 f1!2", BP: "f1 a1!5",
BQ: "[a1@2 a1@2 d2@3 ~ d2@3 c2@2 c3 c2@2 c2@3 ~ d2@3 ~]/2", BR: "a1@4 a1@3 e2@2 e3 e2@2",
BS: "e2@5 ~@3 e1@2 e1@8 f1@2 f1@4", BT: "g1@4 b1@4 c2@7 ~ d2@6 ~@2", BU: "~@4 a1@4 a1@3 ~",
BV: "[c2@7 ~ d2@6 ~@2 d2@6 c2@4 c3@2 c2@4 c2@6 ~@2 a1@8]/2", BW: "c2@7 ~ d2@6 ~@2 d2@6 ~@2", BX: "~@16 f#2@5 ~@3",
BY: "f#2@5 ~@19", BZ: "f#2@5 ~@3 f#2@5 ~@11", CA: "~@4 c#2@3 ~ c#2@3 ~", CB: "~@8 f#2@5 ~@3 f#2@5 ~@3",
CC: "~@8 c#2@3 ~", CD: "c#2 ~@3", CE: "~@2 c#2!4", CF: "c#2!6", CG: "e1!6", CH: "e1!2 b1!4", CI: "b1!3 e1 c#2!2",
CJ: "c#2!2 e1!4", CK: "e1!4 b1!2", CL: "b1!5 e1", CM: "c#2!4 e1!2", CN: "b1 e1 c#2!4", CO: "b1 e1 ~@4",
})).s("gm_electric_bass_finger").gain(0.5)
// chords · distortion guitar · "Guitar I"
const distortion_guitar = note(`<
A B@2 C D E F G H@3 I@2 J ~@2 K ~@2 L M N ~ O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM AN@2 ~@3
AO ~@2 AP AQ AR ~@2 AS ~ T AT@2 AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI@2 BJ BK BL BM BN BO BP@2 BQ BR BS BT BU
BV BW BX BY@2 AT@2 AU AV AW AX AY AZ BA BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT@2 CU CV CW CX
CY CZ CL CM CN CO CP CQ CR CS CT@2 CU CV CW CX CY DA
>`.pickRestart({
A: "~@4 g3 a3@2 c4@2 d4 e4 a3", B: "[c4 d4@3 ~@4 g3 a3@2 c4@2 d4 e4 a3 c4 d4@3 ~@4]/2",
C: "g3 a3@2 c4@2 d4 e4 a3 c4 d4@3", D: "~ f4@2", E: "~@4 d4@4 ~@3 g3", F: "a3 g3", G: "g3@2 g3@2 a3 c4",
H: "[d4@16 c4@12 a#3@25 ~@3 a#3@6 c4@2 d4@8]/3", I: "[d4@3 g3 a3@6 g3@6 g3@8]/2", J: "g3 ~@2", K: "e4!2 ~",
L: "~@3 d4 ~@8", M: "~@6 c4!2 ~@4", N: "~@2 e4 ~ e4@4 e4@4", O: "~@3 a4 ~@2", P: "~@2 b4!4", Q: "b4!2 c4!4",
R: "c4!2 c5@2 ~@2", S: "~@3 c4@2 c4 c4@2 c4@3 ~", T: "~@7 c4@2 c4 c4@2", U: "~@2 c5 e5 ~@2 a4@2 a4@2 e4@2",
V: "e4@3 e4 e4@2 g4 c5 e4@4", W: "e4 ~ g4@2 g4 ~", X: "d4@2 d4 ~ c4 [c4,g4]", Y: "~@2 d4@2 d4 [g4,c5]",
Z: "c4 ~ c4@2 a4@2", AA: "[g4,c5]@3 e4 b4@2 b4@2 b4@2 [g4,b4]@2", AB: "e4 [c5,e5] e4 [g4,b4] g4!2",
AC: "g4@2 [g4,b4,g5] [g4,f5] ~@8, ~@3 d4@5 ~@4", AD: "~@8 c5@11 ~@5, ~@2 e5 ~@3",
AE: "f5@4 [d4,g4] e4 c5 d4 e4 g4 d4 e4, ~@3 c5", AF: "d4 f4 f5@2 e4@2", AG: "e5@3 ~@5", AH: "a4 c5 g4 f4 d4@2",
AI: "[~@3 g3 a3@4 ~@2 g3@6 g3@4 g3@4]/2", AJ: "a3 c4 d4@2 ~@2", AK: "c4@2 f5 a#3@3", AL: "~@8 a#3@3 c4",
AM: "d4@4 d4@3 g3 a3@4", AN: "[~ g3@3 g3@4 g3@2 ~@2]/2", AO: "~@2 b4 ~@3", AP: "[b4,d#5] ~@5", AQ: "f#4 ~@5",
AR: "~@4 b4 ~", AS: "~@2 [b4,d#5] ~@3", AT: "[c4@3 ~@8 c4@2 c4 c4@2 ~@2 c5 e5 ~@2 a4@2]/2",
AU: "a4@2 e4@2 e4@3 e4 e4@2 g4 c5", AV: "e4@2 e4 ~ g4@2", AW: "g4 ~ d4@2 d4 ~", AX: "c4 [c4,g4] ~@2 d4@2",
AY: "d4 [g4,c5] c4 ~ c4@2", AZ: "a4@4 [g4,c5]@3 e4 b4@2 b4@2", BA: "b4 [g4,b4] e4 [c5,e5] e4 [g4,b4]",
BB: "g4@2 g4@2 g4@2 [g4,b4,g5] [d4,g4,f5] d4@4", BC: "e5@2 a#3@3 ~@3 a#3@4",
BD: "~@2 g4@2 a#4 [f4,g4] g3@4 ~@2, a#3 ~@2", BE: "~@2 g4 f4 ~@4 c5@2 ~@2", BF: "c5@3 [g4,c5] [g4,c5]@2 a#3@6",
BG: "a#3@3 ~ a#3@8, ~@2 f4 ~@3", BH: "[a3,e4]@2 e4 g4 c5 d5 a4 [e4,a4] [e4,a4]@2 a4@2",
BI: "[c5 d5 a4@2 f4@2 [f4,a4]@2 g5@2 [g5,a5] [c6,g6]@2 [c6,g6] [d5,g5] [a5,d6] g5@2 [a5,d6]@2 [a3,e4]@2 e4 g4]/2", // F Gsus2 C5 G5 D5 A5
BJ: "c5 d5 a4 [e4,a4] [e4,a4]@2 a4@2 c5 d5 a4@2", BK: "f4@2 [f4,a4]@2 g5@2 [g5,a5] [c6,g6]@2 [c6,g6] [d5,g5] [a5,d6]",
BL: "g5 [a5,d6] g3!2 ~@2", BM: "~@4 g3@2 g4 [b4,d5] ~@4", BN: "c5 ~@5", BO: "~ a4 ~ [e4,a4] ~ [e4,a4]",
BP: "[c#5@2 ~@9 c4@2 c4 c4@2 c4@3 ~@5]/2", BQ: "~@3 c4@2 c4 c4@2 ~@2 c5 e5", BR: "~@2 a4@2 a4@2 e4@2 e4@3 e4",
BS: "e4@2 g4 c5 e4@4 e4@2 ~@2", BT: "g4@2 g4 ~ d4@2", BU: "d4 ~ c4 [c4,g4] ~@2", BV: "d4@2 d4 [g4,c5] c4 ~",
BW: "c4@4 a4@4 [g4,c5]@3 e4", BX: "b4!3 [g4,b4] e4 [c5,e5]",
BY: "[e4@2 [g4,b4]@2 g4@2 g4@2 g4@2 [g4,b4,g5] [d4,g4] ~@7 c4@2 c4 c4@2, ~@11 f5@4 ~@9]/2", // G G5
BZ: "g4@2 g4@2 g4@2 [g4,b4,g5] [d4,g4,f5] ~@2 [f#4,f#5,g#5]@2", CA: "~@8 b4@3 [e4,e5]", CB: "~ [f#4,f#5,g#5] ~@4",
CC: "b4@2 e5 [e5,g#5] e5@2", CD: "~@2 e5 b5@2 ~ e5!2 [e4,e5]@4", CE: "[e4,e5] c#5 ~ d5 f#4 b4",
CF: "~@2 b4 c#5 ~@4 b4@2 b4@2, ~ f#5 ~@4", CG: "b4@3 [b4,e5] ~@2 b4 c#5 ~@2 g#5@2, ~@3 f#5 ~@2",
CH: "~@4 b4@4 ~@2 g#4 [e5,g#5]", CI: "~@2 g#4@2 g#3@2 ~ e5@2 ~@3, e5 ~@2", CJ: "~ g#5 ~ b5 ~@2",
CK: "~@3 g#3 c#5@4 [c#4,g#4]@2 [c#4,g#4]@2", CL: "[c#4,g#4]!4 ~@2",
CM: "[c#4,g#4]@2 [c#4,g#4]@2 [c#4,g#4]@2 [c#4,g#4]@2 [c#4,g#4]@3 [e5,g#5]", CN: "~@6 [b4,e5] [e5,g#5] g#4@2 g#5!2",
CO: "~@2 d#5 [b4,d#5]@2 d#5", CP: "d#5!2 c#5", CQ: "[c#4,g#4]!6", CR: "~@2 [c#4,g#4]!4",
CS: "[c#4,g#4]@3 [e5,g#5] ~@6 [b4,e5] [e5,g#5]", CT: "[g#4@2 g#5!2 ~@4 d#5@2 [b4,d#5]@4 d#5@2 d#5@4 d#5@4]/2",
CU: "c#5@2 [c#4,g#4]!4", CV: "[c#4,g#4]!2 ~@2 [c#4,g#4]!2", CW: "[c#4,g#4]@2 [c#4,g#4]@2 [c#4,g#4]@3 [e5,g#5] ~@4",
CX: "~@2 [b4,e5] [e5,g#5] g#4@2 g#5!2 ~@4", CY: "d#5 [b4,d#5]@2 d#5 d#5@2", CZ: "d#5@2 c#5@2 [c#4,g#4]!2",
DA: "d#5 ~@2",
})).s("gm_distortion_guitar").gain(0.5)
// other · distortion guitar · "Guitar I -Minor 3rd"
const distortion_guitar_2 = note(`<
~@14 A ~@9 B ~@6 C ~@2 D ~ E F ~@7 G ~@6 H I ~@5 B ~@8 I B ~@2 J ~ K ~@11 L M N ~@5 O ~@2 P ~ Q ~@4 I B ~@2 J ~ K ~@4
R ~@2 S ~ T@2 U ~ V W ~@2 X Y Z ~@2 AA AB@2 ~@2 U ~ V W ~@2 X Y Z ~@2 AA AB@2 ~@2
>`.pickRestart({
A: "~@4 a#4 ~", B: "b4 ~@2", C: "~ b4!2", D: "~@4 e4 ~", E: "~@4 b4!2", F: "b4 ~@3 d5@2", G: "~@2 d5", H: "a#4 ~@5",
I: "~@2 b4", J: "e4 ~@5", K: "b4!3 ~@3", L: "~@4 a4 ~", M: "~ a4@2 ~@3", N: "c#5 ~ c#5 ~ c#5 ~", O: "b4!2 ~",
P: "~@2 e4 ~@3", Q: "~@2 b4!3 ~", R: "~@2 b4 ~ b4@2", S: "~@8 c#5@3 ~", T: "[~@4 b4@3 ~@5]/2", U: "~@2 c#5",
V: "g#4 ~", W: "g#4 ~@2", X: "c#5 ~@2", Y: "~@2 g#4@3 ~", Z: "~ g#4 ~", AA: "~ c#5 ~", AB: "[~@4 g#4@3 ~@3 g#4@2]/2",
})).s("gm_distortion_guitar").gain(0.5)
// other · distortion guitar · "Guitar I -Major 3rd"
const distortion_guitar_3 = note(`<
~@29 A B C ~@9 D ~ E ~@3 F ~@7 G ~ H ~@2 I J ~ K ~@2 L M N ~@8 O ~@7 P Q R ~@4 S T ~@8 L M N ~@6 U V ~@5 W X Y ~@4 Z
~@4 AA ~@4 AB ~@5 Z ~@4 AA ~@4 AB ~@2
>`.pickRestart({
A: "~@3 c5 c5@2", B: "g4@3 g4 g4@4 ~@4", C: "~ g4 ~@4", D: "~@2 f5", E: "~@4 c5 ~", F: "f5 ~@2", G: "c5 ~ c5",
H: "~@2 a4", I: "~ c5 ~", J: "c5 ~@2", K: "a4 ~@2", L: "~@5 c5", M: "c5@4 g4@3 g4 g4@4", N: "~@3 g4 ~@2",
O: "~@4 f5@3 ~ c5 ~@3", P: "~@4 b4!2", Q: "b4!2 ~@3 f4", R: "f4 ~@5", S: "~@2 c5@2 c5@4 g4@3 g4", T: "g4@2 ~@3 g4",
U: "~@2 e5 ~@3", V: "~@4 e5 ~", W: "e5 ~@5", X: "~@5 b5 ~@3 b5 ~@2", Y: "~@2 e5 d5 ~@2", Z: "e5 ~@2", AA: "~ e5 ~",
AB: "~@2 e5",
})).s("gm_distortion_guitar").gain(0.5)
// other · distortion guitar · "Guitar I -Perfect 4th"
const distortion_guitar_4 = note(`<
~ A B ~ C@2 ~@9 D ~@8 E ~ F G H ~ I J K L M ~ N O ~ P Q ~@2 R ~@2 S ~@2 T ~@3 U ~@2 V ~ W ~@2 X ~@2 H Y@2 ~ Z AA AB AC
~ AD AE@2 AF AG AH AI ~ AJ ~@2 S AK AL AM ~ AN@2 AO ~ AP AQ AR AS J AT AU H Y@2 ~ Z AA AB AC ~ AD ~@3 AV AW AX AY ~@2
AZ BA ~@3 X BB BC ~@3 BD BE ~@3 V BF BG ~@2 X BB BC ~@3 BD BE ~@3 V BF BG
>`.pickRestart({
A: "~ c5 ~", B: "~@8 c5 d5 c5@2", C: "[c5@3 d4 g3@12 ~@4 c5@3 ~]/2", D: "~@10 g#4 a#4", E: "~ f#4 ~@4", F: "~ e5 ~",
G: "~@3 g4@2 g4 g4@2 g4@4", H: "~@7 g4@2 g4 g4@2", I: "~@2 g4", J: "g4 ~@2", K: "a4@2 ~ g4!2 ~, ~ a4 ~",
L: "g4@2 a4@2 a4 ~", M: "g4 ~ g4@2 ~@2", N: "g4 ~ g5 ~@3", O: "~@8 a5@3 ~", P: "a5 ~@3", Q: "~@8 a5@7 ~@9",
R: "c5 ~@3", S: "~@2 a5 ~@3", T: "c5 ~@5", U: "~@2 g#4 a#4 ~@8", V: "~ b4 ~", W: "~ b4 a4@2 ~@2", X: "~@2 b4",
Y: "[g4@4 ~@7 g4@2 g4 g4@2 ~@8]/2", Z: "g4!2 ~", AA: "~@2 a4@2 ~ g4, ~@2 a4", AB: "g4 ~ g4@2 a4@2",
AC: "a4 ~ g4 ~ g4@2", AD: "~@2 g4 ~ g5 ~", AE: "[~@8 a4@6 f4@4 c5!2 f4@4]/2", AF: "f4 ~@2 d4@2 ~",
AG: "~@3 c5 ~@3 c5 ~@4", AH: "~@3 f4@2 ~", AI: "f4@2 f4!2 ~@8", AJ: "~@4 a5 ~", AK: "~@2 d4!2 ~@2",
AL: "~@4 d4@3 ~ c4@2 ~@2", AM: "~@3 e4 e5 e4", AN: "[~@2 e4@2 ~@7 g4@2 g4 g4@2 g4@4 ~@4]/2",
AO: "~@3 g4@2 g4 g4@2 ~@4", AP: "~ g4!2", AQ: "~@2 a4", AR: "~ g4!2 ~ g4@2, a4 ~@2", AS: "a4@2 a4 ~ g4 ~",
AT: "~@4 g4 ~", AU: "g5 ~@5", AV: "~@2 g#4 ~ g#4@2", AW: "~ f#5 ~@3 f#5 ~@6", AX: "~@3 f#5 ~@2", AY: "~@2 c#5 b4 ~@2",
AZ: "g#4@2 ~@4 f#5 ~@3 f#5@2", BA: "[b3,b4] b4 ~@4", BB: "~@2 f#4 ~@2 f#4", BC: "f#4!2 ~", BD: "b4@2 ~@2 f#4 ~",
BE: "~ f#4 f#4@2 f#4@2", BF: "f#4 ~@2 f#4 f#4@2", BG: "f#4 ~@2",
})).s("gm_distortion_guitar").gain(0.5)
// other · distortion guitar · "Guitar I -Perfect 5th"
const distortion_guitar_5 = note(`<
~@13 A B C ~@8 D E F ~@4 G ~@2 H I ~@5 J ~@8 K L M N ~@15 O ~ P Q R ~@2 S T U ~@6 V W X Y Z ~@4 AA ~ AB ~ AC ~@6 O ~ P
Q R ~ AD AE ~@2 AF AG ~ AH AI AJ@2 AK ~@3 AK ~ AL ~@3 AL AM ~@3 AM AK ~@3 AK ~ AL ~@3 AL AM ~@4
>`.pickRestart({
A: "~ a3!2", B: "a3!2 a#3", C: "a#3@2 a#3!3 ~", D: "b3 ~ b3!4", E: "b3!2 c4!4", F: "c4!2 ~@4", G: "~@5 d4",
H: "~ c4 ~@4", I: "~@2 b3!3 ~", J: "g5 ~@5", K: "~@2 a3", L: "a3!3", M: "a#3@2 a#3@2 a#3!2", N: "a#3 ~@5",
O: "~ d4 ~@4", P: "~@3 c4 ~@2", Q: "~@4 b3!2", R: "b3 ~@5", S: "~@5 g3", T: "a#3@2 ~@2 f4@3 ~@3 c4@2", U: "c4 ~@3",
V: "~@4 g3!2", W: "g3!2 ~@3 f3", X: "f3 a3@2 ~ a3 ~", Y: "a3 e4 a3 ~ a3 ~", Z: "a3 ~@5", AA: "~@3 d4 ~@2",
AB: "~@5 c4", AC: "b3!3 ~@3", AD: "~ e4 ~", AE: "~@2 e4", AF: "~ e4 b3 ~@3", AG: "f#4 ~@5", AH: "e4@2 ~@2 c#4 ~",
AI: "~@4 g#4 ~@7", AJ: "[~@4 e4@2 ~@2 b3@7 ~ c#4@4 ~@4]/2", AK: "~@2 c#4", AL: "c#4 ~@2", AM: "~ c#4 ~",
})).s("gm_distortion_guitar").gain(0.5)
// bass · slap bass 1 · "Slap Bass"
const bass_2 = note(`<
~@32 A B@2 C D E F G H@2 I ~@26 J@2 K L M N ~@20 K A O@2 P ~@5 J@2 K L M N C L Q@2 R L S@2 T U V ~@32
>`.pickRestart({
A: "~@7 c3@2 c4 c3@2", B: "[c3@4 ~@7 c3@2 c4 c3@2 c3@4 ~@4]/2", C: "~@3 e3@2 e4 e3@2 e3@4",
D: "e2 e2@4 f2 f2@2 g2@2 b2@2", E: "c3!2 c#3@2 ~@7 g2", F: "a2 a2@2 g2@2 ~", G: "~@3 g2!2 a2 c3@3 a2 c3@2",
H: "[~@7 a2 c3@2 c3@4 a#2@4 a#2@2 a#2@3 a#2]/2", I: "c3 a#2@2 c3@2 c#3 a#2 d3 ~@4",
J: "[~@11 c3@2 c4 c3@2 c3@4 ~@4]/2", K: "~@3 c3@2 c4 c3@2 c3@4", L: "~@7 e3@2 e4 e3@2", M: "e3@4 e2 e2@4 f2 f2@2",
N: "g2@2 b2@2 c3!2 c#3@2 ~@4", O: "[c3@4 ~@7 e3@2 e4 e3@2 e3@4 e2 e2@3]/2", P: "~ f2 f2@2 g2@2 b2@2 c3!2 c#3@2",
Q: "[e4 e3@3 ~@7 g#3@2 g#4 g#3@2 g#4 g#3@3 e3 e4@3]/2", R: "e3@4 b2 b3@2 b2 b3@4",
S: "[e3@4 ~@7 e3@2 e4 e3@2 e4 e3@3 ~@4]/2", T: "~@3 g#3@2 g#4 g#3@2 g#4 g#3@3", U: "e3 e4@3 e3@4 b2 b3@2 b2",
V: "b3 b2 ~@4",
})).s("gm_slap_bass_1").gain(0.5)
// other · distortion guitar · "Guitar I -Octave"
const distortion_guitar_6 = note(`<
~@16 A@2 B C@2 D E F ~@2 G H I J ~@34 I K L ~@22 M N O P ~@7 I K L ~@7 Q R S T ~@2 U V W ~@35
>`.pickRestart({
A: "[~@8 b3@6 a3@4 a3@2 a3@3 a3]/2", B: "b3 d4 e4 d4 e4@2", C: "[e4@3 ~ d4@4 d4@2 c4@4 c4@2 c4@2 ~@2 c4@2 c4@2]/2",
D: "c4@2 ~ e4 ~@8", E: "b3 b3@2 a3@2 a3", F: "a3@3 ~ a3 b3", G: "~@2 d4", H: "d4@3 ~@8 c4", I: "d4@4 d4@3 ~@5",
J: "c4 ~ [a3,e4] ~@3", K: "~@3 c4 d4@4 d4@3 ~", L: "~@2 c4 ~ [a3,e4] ~", M: "~@4 d4@4 d4@3 ~", N: "~@7 c4 d4@4",
O: "d4@3 ~@5 c4@2 ~@2", P: "[a3,e4] ~@5", Q: "~@4 f#4 ~", R: "f#4@2 e4@2 ~@4 e4@3 ~", S: "f#4 ~ f#4 e4 ~@2",
T: "e4 ~@2", U: "~@4 e4!2", V: "e4@3 ~ f#4@2 ~@2 f#4@2 ~@2", W: "~ e4 ~",
})).s("gm_distortion_guitar").gain(0.5)
// chords · overdriven guitar · "Guitar II"
const overdriven_guitar = note(`<
A B@2 C ~ D E F@4 G@3 H I J@3 K@3 L M N ~@4 O P Q ~@2 R S ~ T U V@2 W X Y Z AA AB AC@2 AD@2 AE AF AG AH AI AJ@3 AK@3
AL AM ~@2 AN AO AP AQ ~ AR AS AT AU AV AW AX AY AZ ~@7 BA ~ BB ~ BC BD ~ BE ~ BF BG BH ~@3 AN AO AP AQ ~ AR AS AT ~ BI
BJ BK BL ~ BM BN BO BP ~ BQ ~@2 BR BS ~@3 BT BU ~@23
>`.pickRestart({
A: "~@4 g3 a3@2 c4@2 d4 e4 a3", B: "[c4 d4!3 ~@4 g3 a3@2 c4@2 d4 e4 a3 c4 d4!3 ~@4]/2",
C: "g3 a3@2 c4@2 d4 e4 a3 c4 d4!3", D: "~@2 a4", E: "g4@10 ~@2 d5@7 ~@5",
F: "[d5@6 [a#4,d5]@4 [a#4,d5]@2 d5@6 [f4,a#4]@2 a#4@2 ~@2 d4@8 [d4,a4]@6 [g4,c5]@2 g4@4 e5@4 a4@4 f4@11 ~ [f4,a#4]@6 [f4,a#4]@4 [f4,a#4]@2 f4@4 [f4,a#4]@2 [f4,a#4]@2 [f4,a#4]@2 f4@2 d4@8, ~@5 f4 ~@18, ~@22 a#4@8 ~@14 c5@7 ~@35 a#4@8 ~@2]/4", // A# A#5 D5 C5 A#5
G: "[a4@6 [a4,c5]@2 g4@4 [c5,e5]@4 c5@2 c5@2 f4@11 ~ f4@4 f4@2 [f4,a#4]@4 f4@2 f4@8 [f4,a#4]@2 [f4,a#4]@2 [a3,e4]@4 [a3,e4]@4 [a3,e4]@4 [a3,e4]@4, ~@4 g4 ~@13]/3", // Am C A#5 A5
H: "[a3,e4]!4 ~ [a#3,f4]", I: "[a#3,f4]@2 [a#3,f4]@2 [a#3,f4]@2 [a#3,f4]@2 [a#3,f4]@2 a#4!2, ~@5 f4",
J: "[~@4 [b4,d5]@3 e4 a4@2 [a4,d5]@4 g4@5 ~ g4@3 [g4,c5]@2 g4 g4@3 c5!2 ~ e4@4, ~@29 g4@2 g4@3 ~@2]/3", // Bm D5 C5
K: "[b4@3 [c#5,c#6] d4@2 d5@2 b4@2 g4@5 ~ g4@3 [c5,e5]@2 [g4,c5] g4@3 a4!2 ~ e4@4 b4@3 [a4,d5], ~@3 a4@2 ~@8 d5 ~@4, ~@6 a4 ~]/3", // C# C C5 D5
L: "a4@2 a4@2 d5!2 g4@5 ~, ~@2 a4 ~@3", M: "[c5,e5]@3 g4@2 [g4,c5] g4@3 [g4,c5] c5 e4, ~@5 g4", N: "~ b3 ~@4",
O: "c4@4 ~@5 g5 ~@2", P: "~@2 g5!2 ~@8", Q: "~@6 g5 ~@3 d5 g5", R: "~ c4 ~@3 [c5,e5]", S: "~@12 g5@2 g5@2 g5@5 ~@3",
T: "~@8 [c5,f5]@7 ~@7 [c5,e5]@2", U: "g4!2 ~ f4@2 f4",
V: "[~@2 a#4 d5@2 d5 [f4,a#4]@3 g4 c5 ~ d4@4 ~@3 c5 [g4,c5]@2 [g4,c5] [c5,e5], ~@3 a#4 ~@7 g4@5 ~@8]/2", // A#5 C5 C
W: "a4 f4@2 [f4,a#4] f4 [f4,a#4]", X: "[f4,a#4]@2 [f4,a#4]@2 [f4,a#4]@3 c5 ~@4", Y: "a4@4 g4@5 ~ d5@2",
Z: "~@4 d5@3 [a#4,d5]@2 [a#4,d5] d5@2", AA: "~ [f4,a#4] a#4 ~ d4@4 [d4,a4]@3 [g4,c5], ~ f4 ~@4, ~@3 a#4@4 ~@5",
AB: "g4@4 [c5,e5]@4 a4@4 f4@11 ~", // C
AC: "[[f4,a#4]@3 [f4,a#4]@2 [f4,a#4] f4@2 [f4,a#4]!3 f4 d4@4 a4@3 [a4,c5] g4@2 [c5,e5]@2, ~@11 a#4@4 ~@9]/2", // A#5 Am C
AD: "[c5@2 c5@2 f4@11 ~ f4@4 f4@2 [f4,a#4]@4 f4@2 f4@8 [f4,a#4]@2 [f4,a#4]@2 a3@4 a3@4, g4 ~@11]/2", AE: "a3!6",
AF: "~ a#3!5", AG: "a#3 [e4,b4] ~", AH: "[a4,d5,f#5]@4 [a4,d5,f#5]@4 ~@4 [c5,e5]@7 ~@5, ~@6 g4@5 ~",
AI: "g4@4 [g4,c5,e5]@2 [g4,c5,e5] g4@2 c5 ~ g4, ~@9 g4@2 ~, ~@5 c5", // C
AJ: "[[c#4,g#4]@4 ~@4 [d#4,f#4,b4]@2 [f#4,b4]@2 ~@2 [c#4,e4]@6 e4@3 e4@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,b4]@4, ~@20 d#4@8 a4@9 ~@35]/3", // C#5 B B5 C#m A5 E5
AK: "[~@8 [a4,d5,f#5]@4 [a4,d5,f#5]@4 ~@4 [c5,e5]@7 ~@5 g4@8 [g4,c5,e5]@4 [g4,c5,e5]@2 g4@4 c5@2 ~@2 g4@2 [c#4,g#4]@8 ~@8, ~@10 g4@5 ~@10 g4@2 ~@9, ~@13 c5 ~@4]/3", // D C C#5
AL: "[d#4,f#4,b4] [f#4,b4] ~ [c#4,e4]@3, ~@4 d#4@8 a4@9 ~@3", AM: "e4@3 e4 f#4@2 f#4@2 f#4@2 f#4@2", AN: "~ c4 ~",
// … 59 more lines
More by Red Hot Chili Peppers
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.