Strudelify
Road Trippin cover art

1999 · Californication

Road Trippin

Red Hot Chili Peppers

KeyE minorTempo198 bpm
0:00/0:00
// Road Trippin — Red Hot Chili Peppers
// 198 bpm, 4/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: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 173 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(198/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
const bass = note(`<
  A B C D E B F G H B C D E B F G H B C D E B F G H B C D I B C D E B F G H B C D E B F J K L M N K L M O I B C D E B F
  G H B C P E B F Q H B C D E B F J K L M N K L M O R S T U V W X Y R S T U V W X Z@2 ~@2 A B C D E B F G H B C AA E B F
  AB I B C D I B C D E B F AC H B C D AD B F J K L M N K L M AE K L M N K L M AE AF AG@2 AH@2 AI@2 AJ AK AL AJ AM@7
>`.pickRestart({
  A: "~@4 e2@8 e2@3 ~", B: "g2@5 ~ f#2@5 ~ e2@3 ~", C: "c2@5 ~ c2@2", D: "b1@5 ~ g2@5 ~ f#2@3 ~",
  E: "e2@3 ~ e2@7 ~ e2@3 ~", F: "c2@11 ~ c2@3 ~", G: "b1@6 g1@5 ~ f#1@4", H: "e1@4 e2@8 e2@3 ~", I: "e2@4 e2@8 e2@3 ~",
  J: "b1@6 g2@5 ~ b1@4", K: "a2@4 ~@2 a2@3 ~ a2 ~ a2@3 ~", L: "b2@4 ~@2 b2@2 ~@2 b2 ~ b2@2 ~@2",
  M: "c3@4 ~@2 c3@2 ~@2 c3 ~ c3@2 ~@2", N: "d3@4 ~@2 d3@2 ~@2 d3 ~ d3@3 ~", O: "~ d3@4 ~ d3@2 ~@2 d3 ~ d3@4",
  P: "b1@3 ~ a2@3 ~ g2@3 ~ f#2@3 ~", Q: "b1@3 ~ b1@3 ~ g1@3 ~ f#1@4", R: "e2@7 ~ e2@6 ~@2", S: "a1@7 ~ a1@7 ~",
  T: "c2@7 ~ c2@7 ~", U: "d2@7 ~ d2@6 ~@2", V: "e2@7 ~ e2@7 ~", W: "a1@7 ~ a1@6 ~@2", X: "c2@6 ~@2 c2@7 ~",
  Y: "f#2@7 ~ f#2@6 ~@2", Z: "[f#2@3 ~ f#2@12]/2", AA: "b1@3 ~ g2@4 g2@3 ~ f#2@3 ~", AB: "b1@6 g2@5 ~ f#2@4",
  AC: "b1@3 g1@3 f#1@2", AD: "~@4 e2@7 ~ e2@3 ~", AE: "d3@4 ~@2 d3@2 ~@2 d3 ~ d3@4", AF: "e2@4 ~@2 e2@3 ~@4 e2@3",
  AG: "[~@3 e2@4 ~@2 e2@4 ~@2 e2@3 ~@4 e2@4 ~@2 e2@4]/2", AH: "[~@2 e2@4 ~@2 e2@3 ~@4 e2@4 ~@2 e2@4 ~@2 e2@4 ~]/2",
  AI: "[~@2 e2@4 ~@2 e2@4 ~@3 e2@4 ~@2 e2@4 ~@3 e2@4]/2", AJ: "~@2 e2@4 ~@3 e2@4 ~@3", AK: "e2@4 ~@2 e2@4 ~@3 e2@3",
  AL: "~@4 e2@4 ~@3 e2@4 ~", AM: "[e2@4 ~@3 e2@5 ~@2 e2@4 ~@4 e2@5 ~@4 e2@8 ~@7 e2@63 ~@3]/7",
})).s("gm_acoustic_bass").gain(0.48)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@44 A@2 B C D E F G H@2 ~@3 I J K L@2 M K N@3 K O@3 P Q@3 ~ R@2 S T D E F U V W X Y Z AA@2 AB AC AD AE AF AG AH AI
  AJ@3 AK ~@8 AL AM AN AO AP@2 J K ~@4 AQ@2 AR AS AT@2 AU AV@3 AW AX AY@2 AZ BA A@2 B C D E F G A@2 B C D E F G BB@8
  ~@10
>`.pickRestart({
  A: "[e4@17 d4@15, g3]/2", B: "[c4,a4]", C: "b3 [d4,d5], b4", D: "[a3,a4,c5]", E: "~@3 g4, [g3,b4,d5]",
  F: "[e3,c4,e4,a4]", G: "[d3,d4,g4,b4]", H: "[b3,e4,g4]/2", I: "~ g4", J: "a4 g4", K: "f#4 d#4", L: "e4/2", M: "g4",
  N: "[e4@5 g4]/3", O: "[e4,g4]/3", P: "[d#4,f#4]", Q: "[[e4,g4]@3 ~]/3", R: "[c6 b5, e6]/2", S: "[a5,c6]",
  T: "[g5,b5,d6]", U: "[d3,d4,g4,b4]@15 b4", V: "b3", W: "[c#4,c#5]", X: "c5@3 g5, c4", Y: "[d4,a4]",
  Z: "[e4,g4] b4, ~@8 g4 ~@7", AA: "[c#5@8 e5@7 e5@9 [e4,c5]@8, g4@3 ~]/2", AB: "~ c4@7 [d#4,f#5]@8, d#5 ~",
  AC: "[e4,g5]", AD: "[a4,g5]", AE: "[c5,e5] [b4,e5]", AF: "[a4,f#5] [a4,a5]", AG: "a5 ~@7 g5@8, ~ b4@15",
  AH: "g5 f#5, e5", AI: "[d5,f#5]@8 d5@7 ~", AJ: "[a4@2 f#4@2 ~@2 [a4,c5,d#5]@3 [f#4,a4,c5]@3, [c5,d#5,f#5] ~]/3",
  AK: "[d#4,f#4,a4]", AL: "e3", AM: "g3 b3", AN: "e4", AO: "d#4 b3", AP: "[e4@3 g4]/2", AQ: "[e4,g4]/2", AR: "[g4,c5]",
  AS: "[f#4,b4]", AT: "[g4, b4 ~@31]/2", AU: "a5@8 g5@7 ~, e5", AV: "[f#5@8 f#5@7 [e5,g5]@32 ~, [b4,d#5]@15 b4 ~@32]/3",
  AW: "[g4,c5,e5]", AX: "[f#4,b4,d#5]", AY: "[~ [b3,e4,g4]@7]/2", AZ: "[c4,e4,g4]", BA: "[b3,d#4,f#4]",
  BB: "[b4,e5,g5]/8", // Em
})).s("gm_string_ensemble_1").gain(0.28).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D@7 C E@3 C F@7 C F@7 C D@7 C G@7 H@7 B C I@3 C F@7 C J@8 K@7 L@2 M N O@5 P@8 Q@2 R S T@7 U A V@5 C F@7 C D@7 C
  G@7 W@8 X@8 Y@2 Z@2 AA@6 AB@6
>`.pickRestart({
  A: "~@3 g3, ~ g4@3, ~@5 b3@3", B: "~@3 b3, g4@5 g4@3, ~@3 b3@3 ~@2", C: "~@5 g3@3, ~ e4@3",
  D: "[~@27 b3, d#4@3 [f#2,d#4]@8 ~@2 e4@8 g4@2 g3@5, ~@3 [g2,f#3]@13 g4@5 g4@11 d#4@3 [g2,f#3]@13 g4@5 g4@3, ~@10 g4@4 g3@15 g3@16 b3@6 b3@3 ~@2, ~@13 b3@6 b3@3 b3@16 [f#2,d#4]@16 ~@2]/7", // D#m Gmaj7 D#m
  E: "[~@11 b3, d#4@7 d#4@16 ~, ~@3 [g2,f#3]@11 g3@10, ~@2 f#2@5 g4, ~@10 g4@3 b3@3 g4@3 b3@3 ~@2]/3", // Gmaj7
  F: "[~@27 b3, d#4@6 [f#2,d#4]@15 g4@11 d#4@3 [g2,f#3]@13 g4@5 g4@3, ~@3 [g2,f#3]@15 b3@4 b3@16 [f#2,d#4]@16 ~@2, ~@5 g4@2 g3@6 e4@8 g4@2 g3@5, ~@13 b3@3 g4@3 a4@10 g3@16 b3@6 b3@3 ~@2]/7", // D#m Gmaj7 D#m
  G: "[~@53 d4@3, d#4@6 [f#2,d#4]@16 ~@4 e4@14 e4@2 e3@9 g3@5, ~@3 [g2,f#3]@13 g4@5 g4@11 d#4@3 [g2,f#3]@10 e4@11, ~@10 g4@4 g3@15 g3@14 a3@13, ~@13 b3@6 b3@3 b3@16 [f#2,d#4]@10 d4@2 d3@6]/7", // D#m Gmaj7 D#m
  H: "[~@13 d4 ~@31 d4 ~@8 g3@2, e4@5 e4@7 g4@12 d4@2 d3@11 e4@16 b3@3, ~@2 e3@12 d4@5 a3@13 e4@3 g3@15 g4@6, ~@3 g3@13 e4@2 e3@11 d4@11 b4 g4 d4 b4@13, ~@8 b4 g4 d4 b4@10 e4@6 g3@7 e3@10 g4@2 d4@10]/7",
  I: "[~@11 b3, d#4@7 d#4@16 ~, ~@3 g2@7 g4@3 b3 g3@10, ~ f#3 [f#2,f#3]@5 g4, ~@5 b2@11 g4@3 b3@3 ~@2]/3", // F#
  J: "[~@61 g3@3, d#4@6 [f#2,d#4]@16 ~@4 e4@16 g4@4 g3@15 ~@3, ~@3 [g2,f#3]@13 g4@5 g4@11 d#4@3 [g2,f#3]@13 g4@5 g4@11, ~@10 g4@4 g3@15 g3@16 b3@6 b3@3 b3@10, ~@13 b3@6 b3@3 b3@16 [f#2,d#4]@16 ~@4 e4@6]/8", // D#m Gmaj7 D#m
  K: "[~@37 d4 ~@15 d4@3, d#4@6 [f#2,d#4]@10 d4@2 d3@11 e4@7 g4@12 d4@2 d3 g3@5, ~@3 [g2,f#3]@10 e4@6 g3@5 e4@3 g3@13 e4@2 e3@14, ~@8 e4@3 a3@15 e3@12 d4@5 a3@13, ~@10 e3@11 d4@11 b4 g4 d4 b4@10 e4@11]/7", // D#m Gmaj7
  L: "[~@13 d4 d4@2, e4@5 e4@7 g4@4, ~ e3@7, ~@3 g3@13, ~@8 b4 g4 d4 b4@5]/2",
  M: "~@5 g4@3, g4@5 ~@3, ~ e3@3, ~@3 b3@5, ~ d4", N: "~@5 c#4@3, c#4@5 ~@3, ~ a2@3, ~@3 e3@5, ~ g3",
  O: "[~@29 e4@3 ~@5 e4@3, e4@5 e4@11 g4@2 e3 b3@8 a3@8 g3 c4@4, ~ c3@3 f#4 d3@5 d4@4 c#4@6, ~@3 g3@8 a3@10 g4@11 e4@2 c3@6, ~@4 c4@8 d4 f#4@11 e4@2 e3@14]/5",
  P: "[~@53 e4@3 ~@5 e4@3, a4@5 a4@11 c#4@2 a2@9 g3@8 a3@10 g4@11 e4@2 c3 g3 c4@4, ~@2 c4@6 g4@2 e3 b3@8 e3@9 c4@8 d4 f#4@11 e4@2 e3@14, ~@3 d#4@9 d4@8 g3 c#4@8 e4@11 g4@2 e3 b3@8 a3@13, ~@4 f#3@9 g4@11 e4@2 c3@6 f#4@2 d3@10 d4@8 c#4@12]/8",
  Q: "[~@7 f#3, [c4,d#4,a4]@3 [c4,d#4,a4]@3 [c4,d#4,a4]@3 [c4,d#4,a4]@3 [c4,d#4,a4]@4, ~ f#3 f#3@2 f#3 f#3@2 ~]/2", // Adim
  R: "[d#4,a4,c5]@3 [a4,c5,d#5]@2 ~ [d#4,a4,c5]@2, ~@5 a3@2 ~", // Adim
  S: "~ [c4,d#4,a4]@2 ~ [c4,d#4,a4]@2 d#3@2, f#3@2 ~ d#3@2 ~@3", // Adim
  T: "[~@53 g3@3, ~@2 g4@6 g4@5 g4@11 d#4@6 f#2@15 g4@11, ~@5 b3@6 b3@3 b3@13 [g2,f#3]@11 g3@15 ~@3, ~@6 g3@15 g3@13 g4@3 b3@3 g4@3 b3@3 b3@10, ~@18 e4@13 d#4@16 ~@3 e4@6]/7", // Gmaj7
  U: "d#4@5 b2 f#3 b3 [d#4,f#4]@3 ~ [f#4,b4]@3 ~", // D#m B5
  V: "[~@19 b3, g4@5 g4@11 d#4@3 [g2,f#3]@13 g4@5 g4@3, ~ b3@2 b3@8 [f#2,d#4]@8 ~, ~@3 a4@10 g3@16 b3@6 b3@3 ~@2, ~@5 e4@8 g4@2 g3@5]/5", // Gmaj7 D#m
  W: "[~@13 d4 ~@31 d4 ~@15 d4@3, e4@5 e4@7 g4@12 d4@2 d3@11 e4@7 g4@12 d4@2 d3 g3@5, ~@2 e3@12 d4@5 a3@13 e4@3 g3@13 e4@2 e3@14, ~@3 g3@13 e4@2 e3@11 d4@11 b4 g4 d4 b4@10 e4@11, ~@8 b4 g4 d4 b4@10 e4@6 g3@7 e3@12 d4@5 a3@13]/8",
  X: "[~@26 d4@2 ~@62 d4@2 ~@6 b3@6 b3@6 ~ b3@6 b3@6 [b3,g4]@5, e4@5 e4@7 g4@12 d4@2 d3@11 e4@16 ~@11, ~@4 e3@24 d4@10 a3@26 e4@6 g3@28 g4@13 g4@12 ~@5, ~@3 g3@13 e4@2 e3@11 d4@11 b4 g4 d4 b4@16 ~@5, ~@16 b4@2 g4@2 d4@2 b4@20 e4@12 g3@14 e3@20 g4@4 d4@12 d4@13 d4@11]/8", // Em
  Y: "[~ b3@6 ~ b3@6 b3@6 b3@6 [b3,d4]@6, ~ d4@13 d4@12 ~@6, ~@2 g4@3 g4@3]/2", // Bm
  Z: "[~ b3@6 b3@6 ~ b3@6 b3@6 [b3,g4]@6, ~ g4@13 g4@12 ~@6, ~@7 d4@13 d4@12]/2", // Em
  AA: "[~ b3@6 b3@7 b3@7 b3@6 b3@7 b3@7 b3@6 b3@7 b3@7 b3@7 b3@7 b3@7 b3@7 [b3,g4]@7, ~ d4@13 d4@13 d4@13 ~ d4@13 d4@14 d4@14 d4@14, ~@7 g4@13 ~ g4@13 g4@13 g4@14 g4@14 g4@14 ~@7]/6", // Em
  AB: "[~ b3@8 b3@11 b3@18 [b3,g4]@55 ~@3, ~ d4@19 d4@32 ~@44, ~@9 g4@29 ~@58]/6", // Em
})).s("gm_acoustic_guitar_steel").gain(0.34)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C D C B E D C B E A@2 B C A@2 B
  C A@2 B C A@2 B C A@2 B C A@2 B C D C B E D C B E A D F G A D F H A D F G A D F I J@3 A@2 B C A@2 B C A@2 B C A@2 B C
  A@2 B C A@2 B C A@2 B C A@2 B C K A B C D C B E D C B E D C B E D C B E L M@2 N@2 O@2 P Q R P S@7
>`.pickRestart({
  A: "e3!4", B: "c3!4", C: "b2!4", D: "a2!4", E: "d3!4", F: "c3!2 c3@2", G: "d3!2 d3@2", H: "f#3!2 f#3@2",
  I: "~ f#3 f#3@2", J: "[f#3 f#3@2 f#3@9]/3", K: "~ e3!3", L: "e3@4 ~@2 e3@3 ~@4 e3@3",
  M: "[~@3 e3@4 ~@2 e3@4 ~@2 e3@3 ~@4 e3@4 ~@2 e3@4]/2", N: "[~@2 e3@4 ~@2 e3@3 ~@4 e3@4 ~@2 e3@4 ~@2 e3@4 ~]/2",
  O: "[~@2 e3@4 ~@2 e3@4 ~@3 e3@4 ~@2 e3@4 ~@3 e3@4]/2", P: "~@2 e3@4 ~@3 e3@4 ~@3", Q: "e3@4 ~@2 e3@4 ~@3 e3@3",
  R: "~@4 e3@4 ~@3 e3@4 ~", S: "[e3@4 ~@3 e3@5 ~@2 e3@4 ~@4 e3@5 ~@4 e3@9 ~@6 e3@63 ~@3]/7",
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// other · viola
const viola = note(`<
  ~@29 A B C B A D E F@3 C G@2 D E ~@8 H@2 I J K@2 L M N@2 D O P@2 L M F@3 Q R@3 S ~@8 T U V W X@3 Y ~@5 Z L AA@3 AB
  AC@3 E B AD L AE ~@8 AF@2 AG AH ~ A B C B A D E F@3 C AI@2 D E ~@16 AJ@3 AK@8 ~@7
>`.pickRestart({
  A: "g2 b2", B: "e3", C: "d#3", D: "g3", E: "f#3", F: "e3/3", G: "[g2@5 ~ e3@2]/2", H: "[b2,e3]/2", I: "c3",
  J: "b2@7 ~", K: "[g2@3 b2]/2", L: "a3 g3", M: "f#3 d#3", N: "e3/2", O: "f#3 b3", P: "[~ e3@31]/2", Q: "d#3@2 g3 a3",
  R: "[b3@5 g3]/3", S: "f#3@3 g3@2 d#3@3", T: "~ d4@15", U: "c#4", V: "e4@15 ~", W: "d4@7 ~", X: "[e4@8 g4@31 e4@9]/3",
  Y: "c4 d#4", Z: "~@3 g3", AA: "[f#3@2 c4 f#3]/3", AB: "c4", AC: "[e3@2 g3]/3", AD: "g3@15 ~", AE: "f#3@8 d#3@7 ~",
  AF: "b3/2", AG: "[c4,e4]", AH: "[b3,f#4]", AI: "[e3@5 ~ e3@2]/2", AJ: "[b2@45 ~ b2@2]/3",
  AK: "[a#2@2 a2@2 g#2 ~ g2@122]/8",
})).s("gm_viola").gain(0.34)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@28 A@2 B@4 C D E ~@5 F G E H I G ~@4 J@2 K L J@2 K L J@2 K L J@2 K M N ~@5 O G E H I G ~@43 A@2 P@2 A@2 C D E ~@2 Q
  G ~ F G E H I G ~@30
>`.pickRestart({
  A: "[~ e5@7]/2", B: "[g5@7 f#5@11 e5@14]/4", C: "g5", D: "f#5", E: "e5", F: "~ c5@3", G: "b4", H: "d5", I: "c5",
  J: "[~ e4@7]/2", K: "g4", L: "f#4", M: "f#4 d#4", N: "e4 ~", O: "~ g4@3", P: "[g5@7 f#5@7 ~@2]/2", Q: "d#5",
})).s("gm_lead_8_bass_lead").gain(0.05)

stack(bass, string_ensemble_1, acoustic_guitar_steel, acoustic_guitar_nylon, viola, lead_8_bass_lead)

More by Red Hot Chili Peppers