Strudelify
My Friends cover art

1995 · One Hot Minute

My Friends

Red Hot Chili Peppers

KeyA minorTempo75 bpm
0:00/0:00
// My Friends — Red Hot Chili Peppers
// 75 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · electric bass finger · "Bass Gtr."
const bass = note(`<
  A B C D E B F D G H I J K L M N O P Q R S T@2 U V W@2 L M N O P Q R S T@2 U V W@2 X Y Z AA AB AC AD AE AF AG AH AI AJ
  AK AL AM L M N O P Q R S T@2 U V W@2 AN AO AN AP AQ AR AS AO AT@7
>`.pickRestart({
  A: "~@9 f3 g3@4 f3@2", B: "d3@3 d3 f3@3 f3", C: "g2@3 g2 c3@3 e3", D: "d3@3 e3 f3@3 f3", E: "g2@3 g2 c3@2 c3@2",
  F: "d3@6 d3@2 ~@2 c3@3 a2 c3@2, ~@4 g2 ~@3, ~@9 a2@2 ~@5",
  G: "g2@6 g2@2 ~@4 f3 e3 d3@2, ~@4 f3!2 ~@2, ~@9 g3@2 g3@2 ~@3", H: "d3@6 d3@2 d3@2 f3@4 e3 f3", I: "g3@3 d3 c3@4",
  J: "d3@3 d3 f3 ~@2 a1, ~@5 f2@3", K: "g2@4 ~ a1 c2 c#2", L: "d2@6 d2@2 f2@4 ~@2 f2 d2",
  M: "g2@6 g2@2 c2@2 c2@3 a1 c2 c#2", N: "d2@6 e2@2 f2@6 f2 f#2", O: "g2@6 g2 ~ c3@3 b2@3 a2@2, ~@7 b2@2 ~@7",
  P: "d2@4 ~@2 e2@2 f2@6 d2 f#2", Q: "g2@3 g2 c2@2 ~@2", R: "c2@2 ~ c2 g2@4",
  S: "a1@4 ~@6 a1!2 a2@2 a2@2, ~ a1 ~@2, ~@3 a2@3 ~@2",
  T: "[c2@4 ~@2 c2 ~ d2@4 d2@2 a2@4 a2@2 a2@3 a1 a2@2 a1 a2@4 ~, ~@7 c2@2 ~@23]/2", U: "c2@2 ~ c2 ~@3 e1, ~ g2",
  V: "a1@4 ~@2 a2@4 e3@2 e3!2 e3@2",
  W: "[c2@4 ~@2 c2 ~@3 a2@2 d2@2 a1@6 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2, ~@7 c2@2 ~@23, ~@2 d2 ~@5]/2",
  X: "d2@2 d2@2 d2@2 e2@2 f2@2 f2@2 f2@2 f2 f#2", Y: "g2@2 g2@2 d3@2 g2@2 c3@2 d3@2 ~@3 a1, ~@6 c3 a2, ~@13 b2@2 ~",
  Z: "d2@4 d2@2 e2@2 f2@4 ~@2 f2 d2", AA: "g2@3 g2 d3@2 a1 b1 c2@2 c2@2 ~@2 c2 c#2",
  AB: "d2@2 d2@2 d2@2 e2@2 f2@2 f2@2 f2@2 ~ d2, ~@7 f2", AC: "g2@2 g2@2 g2@2 a1 b1 c#2@2 c#2@2 ~ a1 c2 c#2",
  AD: "d2@2 d2@2 d2@2 e2@2 f2@2 f2@2 ~@2 f2 f#2", AE: "g2!2 g2@2 f2@4", AF: "e2!8", AG: "g2!8", AH: "f#2!6 c#3 f#2",
  AI: "f2!2 c3 f2!2 c3 f2 c3", AJ: "c2@2 c2@2 c2@2 c2@2 c2@2 g2@4 c2 d2", AK: "b1!5 f#2@2 b1", AL: "f1!8",
  AM: "f2@2 f2@2 f2@2 f2@2 f2@2 c3@2 f2@2 ~ d2, ~@7 e2", AN: "d2!4 f2!4",
  AO: "g2@2 g2@2 g2@2 g2@2 ~ c3!5 c3@2, ~@4 b2 ~@3", AP: "g2@2 g2@2 g2@2 g2@2 ~ c3!7, ~@4 b2 ~@3", AQ: "d2!4 c2!4",
  AR: "b1!4 f2!4", AS: "d2@2 d2!2 d2@2 d2@2 ~ f2!3 f2@2 f2!2, ~@4 e2 ~@3",
  AT: "[d2@24 d4@4 d4@2 ~@16 d4@63 ~@3, ~@15 d4@8 ~@33, ~@32 d2@65 ~@15, ~@16 d1@11 ~@29]/7",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · acoustic guitar nylon · "Gtr. I - Acoustic"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U@2 S T V@2 M N O P Q R S T W@2 S T V@2 M N M N M N M X Y Z AA AB AC AD AE
  AF M N O P Q R S T U@2 S T V@2 AG AH AI AJ AG AH AI AK AL@3 ~@4
>`.pickRestart({
  A: "d3 a3 [d4,e4] d3 f3 ~ [d4,e4] f3, ~@5 g3 ~@2, ~@11 a3@2 ~@3", // Dsus2
  B: "b2@2 d3@2 [g3,d4]@2 b2@2 c3@2 ~@2 [g3,a3] g3 [e3,g3] g3, ~@5 d3 ~@2, ~@11 e3@2 ~@3", // G5 Gsus2 Em
  C: "d3@2 a3@2 [a3,d4,e4]@2 ~@2 [f3,a3]@2 a3@2 [a3,d4,e4]@2 ~ e4, ~@3 d3 ~@4, ~@7 d4@2 ~@5 d4@2", // Asus4 F Asus4
  D: "g2@2 b2@2 [d3,g3,d4]@2 ~@2 c3@2 ~@2 [g3,d4]@2 ~ d4, ~@6 [g2,b2,d3,g3]@2 ~@3 e3@2 ~ [g3,d4]@2, ~@7 [g3,d4]@2 ~ d3@2 ~@4", // G5 G G5
  E: "d3 a3 [a3,d4,e4] a3 f3 a3 [a3,d4,e4] f3", // Asus4
  F: "b2 d3 [g3,d4,e4] b2 c3 ~ [g3,d4] [d3,g3,d4], ~@5 d3 ~@2, ~@11 e3@2 ~@3", // Em7 G5
  G: "d3@2 a3@2 [d3,a3,d4,e4]@2 ~@2 f3@2 [a3,d4,e4]@2 a3@2 ~ d4, ~@3 d4 ~@4, ~@7 a3@2 ~@5 f3@2", // Dsus2 Asus4
  H: "g2@2 d3@2 [d3,g3,d4,g4]@2 ~ [g3,d4,g4] [c3,g3,d4,g4]@4 [g3,d4,g4]!4, ~@6 [d3,g3]@2 e3 ~@7", // G5 Csus2 G5
  I: "d3@2 a3@2 ~@4 f3@2 a3@2 [a3,d4,e4]@2 ~ d4, ~@2 g4 e4 ~@4, ~@5 f#4@2 a3@2 ~@5 a3@2", // Asus4
  J: "b2 d3 [g3,d4,e4] ~ c3 ~ g3 e3, ~@3 g3 ~ d3 ~@2, ~@7 d4@2 ~@2 e3@2 ~@3", K: "d3 a3 [d4,e4] d3 f3 a3 [d4,e4] ~",
  L: "[g2,b2,d3,g3,d4,g4]@2 g3@2 [d3,g3,d4,g4]@2 ~@2 c3@2 e3@2 [g3,d4,g4] ~@2 [d4,g4], ~@3 [d3,g3] ~@3 [g3,d4], ~@7 [g3,d4,g4]@2 ~@4 [d4,g4]@2 ~", // G G5
  M: "[a3,d4]@2 d3@2 [a3,d4,f#4]@2 ~@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,e4]@2 [f3,a3,e4]!2, ~@3 [d3,a3,d4] ~@4, ~@7 e4@2 ~@7", // D5 D Dm Fmaj7 D5
  N: "[b2,g3,d4]@2 [b2,d3]@2 [g3,g4]@2 d4 ~@2 e3@2 ~ d4@2 ~ d4, ~@7 d4@2 ~@7, ~@8 d#3@2 ~ e3@2 ~ [g3,d4]@2", // G Bm G G5
  O: "a3@2 d3@2 [d4,f#4]@2 ~ d4 [f3,d4]@2 [f3,d4]@2 [f3,d4]@2 ~ e4, ~@3 a3 ~@3 [f3,d4]", // D Dm
  P: "[d3,g3,d4]@2 [d3,g3,d4]@2 [d3,g3,d4]@2 ~@3 e3@2 ~@3 e3 g3, ~@6 [d3,g3]@2 d#3@2 ~ e3@2 g3@2 ~, ~@7 [d4,g4]@2 ~@3 [g3,a3]@2 ~@2", // G5 Gsus2
  Q: "d3@2 a3@2 [d4,f#4]@2 ~@2 [f3,a3]@2 [f3,a3]@2 [f3,a3]@2 ~ [g3,e4], ~@3 [d3,a3] ~@3 [f3,a3], ~@7 d4@2 ~@7", // D F C D5 F
  R: "[b2,d3,g3,d4]@2 d4@2 d4@2 ~@3 e3@6 ~, ~@3 g3!2 ~@3, ~@7 c#4@2 ~@7", S: "[c3,e3,g3,c4,e4]",
  T: "~ [b3,e4]@12 ~@3, a2, [e3,a3]@3 ~", // E5 A5
  U: "[c3@2 e3@2 g3@2 c3 ~ d3@2 f#3@4 [a2,a3,c#4,e4]@8 [a3,b3,c#4,e4]!3 [b3,d4] [b3,c#4,d4,e4] [b3,c#4,e4]!3 [b3,c#4,e4]@2, ~@7 c3@2 ~@5 b3@2 ~@16]/2", // A Bm C#m7
  V: "[c3@2 e3@2 g3@2 c3 ~ d3@2 f#3@4 [a2,a3]@4 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 ~ b3 b3@2 g3@2 a3@2, ~@7 c3@2 ~@5 [c#4,e4]@8 ~@10, ~@7 b3 ~@4 a3 ~@3]/2", // A C#m
  W: "[c3@2 e3@2 a3@2 c3 ~ d3@2 f#3@4 [a2,a3,c#4,e4]@8 [a3,b3,c#4,e4]!3 [b3,d4] [b3,c#4,d4,e4] [b3,c#4,e4]!3 [b3,c#4,e4]@2, ~@7 c3@2 ~@5 b3@2 ~@16]/2", // A Bm C#m7
  X: "[b2,d3,g3,d4]@2 [b2,d3,g3,d4]!2 [b2,d3,g3,d4]@2 [b2,d3,g3,d4]!2 [c3,f3,a3,d4]@8", // G Dm7
  Y: "[b2,e3,g#3,b3,e4]@4 [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]!2 [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]!2 [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]!2", // E
  Z: "[d3,g3,b3,e4]@2 [d3,g3,b3,e4]!2 [d3,g3,b3,e4]@2 [d3,g3,b3,e4]!10", AA: "[c#3,f#3,b3,e4]@2 [c#3,f#3,b3,e4]!14",
  AB: "[c3,f3,a3,b3,e4]@2 [c3,f3,a3,b3,e4]!2 [c3,f3,a3,b3,e4]@2 [c3,f3,a3,b3,e4]!4 [c3,f3,a3,b3,e4]@2 [c3,f3,a3,b3,e4]!4", // Fmaj7
  AC: "[c3,g3,c4,e4]@2 [c3,g3,c4,e4]!2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4] [b2,f#3,b3]", // C B5
  AD: "[b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]!2 [b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]@2 [b2,f#3,b3,e4]!4", // Bsus4
  AE: "[g2,c3,f3]!8", AF: "[g2,c3,f3]@2 [g2,c3,f3]@2 [g2,c3,f3]@2 [g2,c3,f3]@2 [g2,c3,f3]@2 [g2,c3,f3]@2 [g2,c3,f3]!4",
  AG: "[d4,f#4]@2 ~ f#4 ~@4 d4@3 [f3,d4]!5, ~ d4 f#4 d4 ~@4, ~@5 e4@2 e4@2 ~@7", AH: "d4@2 d4!6 d4@2 d4!5 [e3,g3]",
  AI: "[a3,d4]@2 [a3,d4]!6 [f3,a3,d4]@2 [a3,d4] [d3,e4] [a3,d4] [d3,e4] [a3,d4] [d3,g3]", AJ: "[g3,d4]@2 [g3,d4]!14",
  AK: "[g3,d4]@2 [g3,d4]!13 [e2,a2,d3]", AL: "[[d3,a3]@5 ~]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.46)

// chords · acoustic guitar nylon · "Gtr. II - Acoustic"
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U@2 S T U@2 V W O P Q R S X Y@2 S Z AA@2 M N M N M N M ~@9 M N O P Q R AB AC
  AD@2 AE T U@2 AF AG AH AI AF AG AH AJ AK AL AM AN@4
>`.pickRestart({
  A: "d3 a3 [a3,d4,e4] [d3,a3] f3 ~ [d4,e4] f3, ~@5 g3 ~@2, ~@11 a3@2 ~@3", // Asus4 D5 Dsus2
  B: "b2 d3 [d3,g3,d4] b2 ~ d3 ~ f2, ~@8 b2@2 ~@3 d3@2 ~, ~@9 c3@2 ~ g3@2 ~@2", // G5
  C: "d3@2 a3@2 [a3,d4,e4]@2 d3@2 f3@2 ~@2 [d4,e4]@2 ~ a3, ~@5 g3 ~ f3, ~@11 a3@2 ~@3", // Asus4 Dsus2
  D: "b2 d3 [d3,g3,d4] d2 ~ [d3,g3] [f2,c3] [d3,g3], ~@4 [f2,c3] ~@3, ~@9 [g2,d3]@2 ~@5", // G5 F5 G5 F5 G5
  E: "[d2,d3] a3 [d4,e4] a3 f3 a3 [d4,e4] f3", F: "b2 d3 [g3,d4] b2 ~ d3 g3 d3, ~@4 b2 ~@3, ~@9 c3@2 ~@5",
  G: "d3@2 a3@2 [d3,d4]@4 f3@2 g3@2 [d4,e4]@2 ~ g3, ~@7 f3", // D Dsus2
  H: "b2 d3 [g3,d4] d2 ~ [d3,g3] [f2,c3] [d3,g3], ~@4 [f2,c3] ~@3, ~@9 [g2,d3]@2 ~@5", // G5 F5 G5 F5 G5
  I: "[d2,d3]@2 a3@2 [d4,e4]@2 a3@2 f3@2 a3@2 [d4,e4]@2 ~ g3, ~@7 [f3,a3]", // D Dsus2 F
  J: "b2 d3 [d3,g3] b2 ~ d3 g3 c3, ~@4 b2 ~@3, ~@9 c3@2 ~@5", K: "d3@2 a3@2 [d4,e4]@2 d3@2 f3@2 a3@2 [d4,e4]@2 f3 a3",
  L: "b2 d3 [g3,d4] b2 ~ d3 ~ c3, ~@8 b2@2 ~@3 d3@2 ~, ~@9 c3@2 ~ g3@2 ~@2", // G5
  M: "d3@2 d2@2 [d3,d4]@2 ~@2 f3@2 f3@2 d4@2 [f3,d4]!2, ~@3 [d3,e4] ~@4, ~@7 c#4@2 ~@7", // D Dm Dsus2
  N: "[d3,b3]@2 d3@2 [d3,d4]@2 ~@6 g3@2 ~ e4, ~@3 [d3,g3] b2 d3 ~@2, ~@7 g3@2 c3@2 e3@2 ~ g3@2", // G D G5
  O: "[d3,d4,f#4]@2 [d3,a3]@2 [d3,a3]@2 ~@2 a3@2 a3@2 a3@2 ~ [d3,d4], ~@3 [d3,a3] ~@4, ~@7 [a3,e4]@2 ~@5 a3@2", // D D5 D D5 A5
  P: "[b2,g3]@2 [b2,g3]@2 [b2,g3]@2 ~@6 g3@2 ~ [d3,g3], ~@3 [b2,g3] b2 d3 ~@2, ~@7 d3@2 c3@2 e3@2 ~ e3@2", // Em G5 Em
  Q: "d3@2 a2@2 [d2,d3,a3]@2 ~@2 d4@2 d4@2 d4@2 ~ [g3,e4], ~@3 d3 ~@3 [d3,d4], ~@7 e4@2 ~@7", // D5 C D
  R: "[b2,d3,g3,d4]@2 d3@2 [b2,d3]@2 ~@3 c3@6 ~, ~@3 [b2,d3,g3] [b2,d#3] ~@3, ~@7 g3@2 ~@7", S: "[c3,e3,g3,c4,e4]",
  T: "~ [b3,e4]@9 ~@2 a3@2 a2@2, [a2,e3,a3]@11 b3@2 ~@3, ~@10 e4@3 ~@3", // E5 A5
  U: "[c3@2 e3@2 a3@2 c3 ~ d3@2 f#3@4 [a2,a3,c#4,e4]@18, ~@7 c3@2 ~@5 b3@2 ~@16]/2", // A
  V: "d3@2 d2@2 [d3,d4]@2 ~ c#4@9, ~@3 [d3,e4] ~@4", // D Dsus2
  W: "[d3,f3,b3]@2 [d3,f3]@2 [d3,d4]@2 [d3,f3,g3,d4] [f3,g3,d4] ~@4 g3@2 ~ e4, ~@4 b2 d3 ~@2, ~@9 c3@2 e3@2 ~ g3@2", // Bdim Dm D G7
  X: "~@5 a2@3, e3@3 ~, [a2,a3]@9 a3@3 ~@4, ~ [b3,e4]@6 e4@5 ~@4, ~@3 g4 b3@2 ~@2", // A E5
  Y: "[c3@2 e3@2 a3@2 c3 ~ d3@2 f#3@4 a2@8 ~@8 a2@2, ~@7 c3@2 ~@5 a3@18, ~@7 c#4@6 c#4@3, ~@7 e4@5 e4@4, ~@7 b3 ~@3 a2@4 ~]/2",
  Z: "~ e4@9 e4@6, [a2,e3,a3]@3 ~, ~ b3@12 ~@3", // A5
  AA: "[c3@2 e3@2 g3@2 c3 ~ d3@2 f#3@4 [a2,a3]@4 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 [a2,a3]@2 ~@2 d3@2, ~@7 c3@2 ~@5 [c#4,e4]@18, ~@7 b3 ~@6 [a2,a3]@2]/2", // A C#m A
  AB: "~@4 b2 d3 ~ d3, [c3,e3,c4,e4], g3@3 g3", AC: "~ e4@9 e4@2 b3@2 g3@2, [a2,e3,a3]@3 ~, ~ b3@11 ~@4",
  AD: "[c3@2 e3@2 a3@2 c3 ~ d3@2 f#3@4 a2@8 ~@8 a3@2, ~@7 c3@2 ~@5 [c#4,e4]@18, ~@7 a3@5 a3@2 a3 ~, ~@14 b3@2 ~@6 a2@3 g3@2 g3@2 ~@3, ~@26 a2@3 a2@3]/2", // C#m
  AE: "e3 ~@3 b2 d3 ~ b2, [c4,e4], c3@3 c3@5, g3 g3@2 g3, ~ e3@7", // C
  AF: "[d3,a3]@2 ~@2 [d3,d4]!3 ~ [f3,a3,e4]@3 [a3,e4]!5, ~@2 [d3,a3]@2 ~@3 [d3,d4]@2 ~@7, ~@3 [a3,d4]@2 ~@11", // D5 D Fmaj7 A5 D5 D D5
  AG: "[b2,d3,g3]@2 [b2,d3,g3]!6 [c3,d3,g3]@2 [c3,d3,g3]!4 d3 [d3,e3,g3]", // G Csus2 Em7
  AH: "[d3,f#4]@2 [d3,f#4]!4 e4!2 d4@2 [d3,e4] [a3,d4] [d3,e4] [a3,d4] [d3,e4] [d3,g3]", // D Dsus2 D5 Dsus2 D5 Dsus2 G5
  AI: "[b2,d3]@2 [b2,d3]!6 [c3,d3]!8", AJ: "[b2,d3]@2 [b2,d3]!6 [c3,d3]!7 [e2,a2,d3]",
  AK: "~@2 e4@2 a3@2 d3@2 f3@2 a3@2 [a3,d4]@2 ~ a3, [d2,a2,d3] ~@7, ~ [a3,d4,e4]@2 ~@11 f3@2", // D5 Asus4
  AL: "b2 d3 [d3,g3] b2 ~ d3 g3 d3, ~@4 b2 ~@3, ~@9 c3@2 ~@5", // G5
  AM: "~ [a3,d4,e4]@2 a3@2 d3@3 a2@3 f2@3 b2@2, [d2,a2,d3]@3 ~@13", AN: "[[b2,d3]@3 f2@3 [d2,a2,d3]@52 ~@6]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.46)

// chords · overdriven guitar · "Gtr. IV - Solo Overdrive"
const overdriven_guitar = note("<~@41 A B C D E F G H I@4 J K L M ~@14 N O P Q N O P R S ~@6>".pickRestart({
  A: "~ [f#3,f#4]!4 [e3,e4] [d3,d4] ~ [e3,e4]@2 [d3,d4]@2 [c3,c4]@2 [c3,c4] [d3,d4], [e3,e4]@2 ~@5 [d3,d4]@2 ~@7", // F# E D E D C D E …
  B: "[b2,b3]@5 [b2,b3]!3 [c3,c4]!4 [d3,d4]!4", C: "[d3,d4] [f#3,f#4]!8 [a3,a4]!6 [b3,b4]",
  D: "[g3,g4]@4 [g3,g4]@2 a#3 [d3,g3] c5@4 c5@3 [d3,f#3]", // G G5 D
  E: "~ [f#3,f#4]!4 [e3,e4] [d3,d4] ~ [e3,e4]@2 [d3,d4]@2 [c3,c4]@2 ~ [d3,d4], [e3,e4]@2 ~@5 [d3,d4]@2 ~@5 [c3,c4]@2", // F# E D E D C D E …
  F: "[b2,b3]@6 [b2,b3]@2 [b2,b3] [c3,c4]!4 [d3,d4]!3", // B C D
  G: "~ [f#3,f#4]!7 ~ [a3,a4]!6 [b3,b4], [d3,d4] ~@3 [f#3,f#4] ~@3", H: "[g3,g4]@3 [g3,g4] [c3,c4]@4",
  I: "[[b2,b3]@4 [b2,b3]@2 [b2,b3]!2 [b2,b3]@2 [b2,b3]!2 [e3,e4]@2 [d3,d4]@13 ~ [e3,e4]@2 [c#3,c#4]@9 ~ [d3,d4]@4 [c#3,c#4]@2 [c3,c4]@18, ~@27 [d3,d4]@2 ~@10 [c#3,c#4]@2 ~@23]/4", // B E D E C# D C# C …
  J: "[c3,g3,c4]@2 [c3,g3,c4]!2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]!2 [c3,g3,c4]@2 [c3,g3,c4] [b2,f#3,b3]", // C5 B5
  K: "[b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]!2 [a2,d3,g3] [d3,g3]", // B5 Dsus4 G5
  L: "[f2,c3,f3]@4 [f2,c3,f3]!4", M: "[a3,e4,a4]!8 [a3,e4,a4]@2 [a3,e4,a4]@2 [a3,e4,a4]!2 [a3,e4,a4]@2",
  N: "[f#4,a4]!8 [g4,a4]!3 [d3,d4] [g4,a4]!3 [d3,d4]", O: "[f4,a4]!7 d3 [e4,a4]!7 [d3,g3]",
  P: "[f#4,a4]!8 [g4,a4]!6 [g4,a4]@2", Q: "[c4,e4]!16", R: "[c4,e4]!14 ~@2", S: "[d3,a3], d4@7 ~",
})).s("gm_overdriven_guitar").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A B@5 C D B@2 E D B@2 F B@5 G B@3 H B@3 I D J C K L M C J C N J N J@2 O P B@6 D B@2 E B@3 Q R S@6 T ~@7
>`.pickRestart({
  A: "~@7 x", B: "x ~@2 x!2 ~@3", C: "x!2", D: "~@3 x!2 ~@3", E: "~ x ~@2 x!2 ~@2", F: "~@3 x!3 ~@2", G: "x ~@2 x ~@4",
  H: "~@2 x ~@4 x ~@2 x ~@5", I: "~ x ~@6", J: "x ~ x!2 ~@4 x ~@7", K: "x ~ x ~ x!2 ~@2", L: "~@6 x!3 ~@7",
  M: "x ~ x!2 ~@4 x ~ x!2 ~@4", N: "x ~@6 x!2 ~@7", O: "~ x!7", P: "x ~ x ~ x ~ x ~@3 x ~@2 x ~ x", Q: "~@2 x!3 ~@3",
  R: "~@6 x ~ x ~@5 x!2", S: "~@3 x ~@2 x ~ x ~@2 x ~@2 x ~", T: "~@2 x ~@2 x ~@10",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B@5 C B@3 D E B@2 A B@5 F B@3 G B@3 H I B I J I B@2 C B K B K B@2 L M B@5 C I B@2 N B@3 O B P@2 Q P@3 R ~@7
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@2 x ~@4 x ~ x!2", E: "x!2 ~@2 x ~@7 x ~@3",
  F: "~@2 x ~@2 x!2 ~", G: "~@2 x!2 ~@2 x ~", H: "~@4 x!9 ~@3", I: "~@4 x ~@7 x ~@2 x", J: "~@3 x ~@2 x ~",
  K: "~@4 x ~@5 x ~ x!4", L: "x", M: "~@8 x!2 ~ x!2 ~ x ~", N: "~@4 x ~@2 x ~@4 x ~@3", O: "~@4 x ~ x ~ x ~ x!3 ~@3",
  P: "x ~@3 x ~@7 x!2 ~@2", Q: "x ~@3 x ~@3 x!8", R: "x ~@2 x ~@3 x!2 ~ x ~ x ~ x ~",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A ~@13 B ~@3 C ~@11 D ~@13 B ~@15>".pickRestart({
  A: "~@7 x", B: "~@13 x!3", C: "~@14 x!2", D: "~@13 x ~@2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@13 A B C B C D A C@2 A C@3 E C@2 B C A F C@3 A C@3 ~ A C@2 F A C A G A C@5 ~@2 A B@2 C A D A C@2 A@4 H I@7 A ~@7
>`.pickRestart({
  A: "~ x!7", B: "x!7 ~", C: "x!8", D: "x!5 ~@3", E: "~ x!6 ~", F: "x!6 ~@2", G: "x!4 ~@4", H: "~ x!4 ~@3",
  I: "~ x ~ x ~ x ~ x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 [~@13 x ~@2] ~@37 [~@3 x ~@4] ~@3>").gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@14 A ~ A ~@12 A ~@28 A@2 ~@21 B C ~@3>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "x ~ x!3 ~@11",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@13 A ~@4 B A ~@2 A ~@3 A@2 ~@3 A B A ~@2 A ~@3 A@2 ~@3 A ~ A C A ~ A ~ A@3 ~ A ~@3 A B A ~@2 A@3 D A E@7 F A ~@6
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x", D: "x!2", E: "x!4", F: "x ~@3 x!4",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<~@78 [~@3 x ~@4] ~@7>").gain(0.5)

stack(
  bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, overdriven_guitar, kick, snare, low_tom, hihat, mid_tom,
  open_hat, crash, ride
)

More by Red Hot Chili Peppers