Strudelify
The Cisco Kid cover art

The World is a Ghetto

The Cisco Kid

War

KeyD minorTempo142 bpm
0:00/0:00
// The Cisco Kid — War
// 142 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "HARMONICA(1N)" harmonica (copy of ch 7 "SAX(2N)" tenor sax)
// note: Full arrangement: all 157 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142/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, A@4 for four bars: edit a riff to change every repeat.

// chords · lead 8 bass lead · "Harmonies(2N)"
const lead_8_bass_lead = note("<~@116 A B@2 ~ A C@2 ~ A C@2 ~ A D@2 ~ E F G H ~@4 E F G H ~@13>".pickRestart({
  A: "a4 ~ a4 ~ a4 ~@3", B: "[a4@2 ~@2 a4@2 ~@2 g4@3 ~ f4 ~ f4@4 e4 ~@13]/2",
  C: "[a4@2 ~@2 a4@2 ~@2 g4@3 ~ f4 ~ f4@4 e4@2 ~@12]/2", D: "[a4@2 ~@2 a4@2 ~@2 g4@2 ~@2 f4 ~ f4@4 e4@2 ~@12]/2",
  E: "[a4,d5] ~@3 [g4,c5] ~@3", F: "[f4,a4] ~@3 [g4,c5] ~@3", G: "d5 c5 [f4,a4] [g4,c5], a4 ~ g4 ~@5",
  H: "[f4,a4]@8 d4@7 ~, ~@8 f4@5 ~@3", // F
})).s("gm_lead_8_bass_lead").gain(0.46)

// chords · clavinet · "CLAVINET(4N)"
const clavinet = note(`<
  ~ A B C D E B ~@2 A B C D E F G H I J I K L K L K L K L K L K L K L K L K L K L K L K L M N K L M N K L K L M N M N K
  L M N M N M N M O P Q R S P Q T@2 K L K L K L K L M N K L M N K L K L M N M N K L M N M N M N M O P Q U V W Q X@2 K L
  M N M N K L Y Z AA AB Y Z Y AC AD AE AD AF AD AG AH AI AD AE Z AJ AD AK Y AA P Q U V W Q X@2 AL
>`.pickRestart({
  A: "~@7 c4", B: "d4 c4 d4 ~@5", C: "~@7 b3", D: "c4 b3 c4 ~@4 f3", E: "g3 f3 g3 ~@4 c4",
  F: "d4@2 c4 ~ d4@2 ~@8 [f4,d5]@2, ~@14 a4 ~", G: "~ [g4,c5,e5] ~ a4 [d5,f5] ~ [g4,c5,e5] ~",
  H: "~ [g4,c5,e5] ~@2 [f4,a4,d5] ~ [g4,c5,e5] ~", I: "d4 [g4,c5,e5] ~@2 [a3,f4,a4,d5] ~ [c4,g4,c5,e5] ~",
  J: "d4 [f4,d5] ~@2 [a3,g4,c5,e5] ~ c4 [d5,f5], ~@2 a4 ~@11 a4 ~", // Dm Am7 Dm
  K: "~@2 [f4,a4,d5] ~@5 [f4,a4,d5] ~@3 [g4,c5,e5] ~ [a4,d5,f5] ~", // Dm C Dm
  L: "~@2 [c5,e5] ~@5 [f4,a4,d5] ~@3 [g4,c5,e5] ~ [f4,a4,d5] ~, ~ g4 ~@6", // C Dm C Dm
  M: "~@2 [f4,a4,d5] ~@5 [f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5] ~", // Dm C Dm
  N: "~@2 [g4,c5,e5] ~@5 [f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~ [f4,a4,d5] ~", // C Dm C Dm
  O: "~@2 [g4,c5,e5,a6,b6,c7] [b5,c6,d6,e6,f6,g6] [f4,c5,d5,e5,f5,g5,a5,c6] ~@2 c7 [e6,f6,g6,a6,b6] [g5,a5,b5,c6,d6] [b4,c5,d5,e5,f5] [e4,f4,g4,a4] [a3,b3,c4,d4] [f3,g3] [a2,b2,c3,d3,e3] g2", // Cmaj7 Fmaj7 Em G Bdim Fmaj7 D7 Fsus2 …
  P: "[e4,g4,c5]@7 ~", Q: "[f4,ab4,db5]@7 ~", R: "[f4,a4,d5]@13 ~@3",
  S: "[f6,g6,a6,b6] [f5,g5,a5,b5,c6,d6,e6] [c5,d5,e5] ~@3 [f6,g6,a6,b6,c7] [b5,c6,d6,e6] [e5,f5,g5,a5] [a4,b4,c5,d5] [e4,f4,g4] [c4,d4] ~@4", // G7 Fmaj7 C F Cmaj7 Fmaj7 D7 Em …
  T: "[[f4,a4,d5]@7 ~]/2", U: "[f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5] ~@3 [g4,c5,e5] ~@5",
  V: "[g4,c5,e5] g4 [c5,e5] ~ [a4,d5,f5] ~@3 [f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~@3", W: "[e4,g4,c5]@15 ~",
  X: "[[f4,a4,d5]@13 ~@3]/2", Y: "~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5] ~ [g4,c5,e5]",
  Z: "~ [f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~@2", AA: "~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5] ~@2",
  AB: "[a4,d5,f5] ~ [a4,d5,f5] ~ [c5,e5] ~@3 [f4,a4,d5]@2 ~@2 [g4,e5] ~@3, ~@2 g4 ~@3 c5 ~", // Dm C Dm C
  AC: "~@2 [a4,d5,f5]@2 ~@4 [g4,c5,e5] ~ [g4,c5,e5] ~ [f4,a4,d5]@2 ~@2", // Dm C Dm
  AD: "~ [f4,a4,d5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5]", AE: "~ [g4,c5,e5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~@2",
  AF: "~@2 [g4,c5,e5]@2 ~@2 [f4,a4,d5]@2 ~@2 [g4,c5,e5] ~ [g4,c5,e5]@2 ~@2", // C Dm C
  AG: "~ [g4,c5,e5] ~ [f4,a4,d5] ~ [g4,c5,e5] ~ [a4,d5,f5]", // C Dm C Dm
  AH: "~@2 [f4,a4,d5] ~@3 [f4,a4,d5]@2 ~@2 [g4,c5,e5]@2 ~@2 [a4,d5,f5]@2", // Dm C Dm
  AI: "~@2 [g4,c5,e5]@2 ~@4 [a4,d5,f5] ~ [a4,d5,f5] ~ [g4,c5,e5]@3 ~", // C Dm C
  AJ: "[a4,d5,f5] ~ [a4,d5,f5] ~ [g4,c5,e5]@2 ~@2 [g4,c5,e5]@2 ~@2 [a4,d5,f5]@2 ~@2", // Dm C Dm
  AK: "~@2 [g4,c5,e5]@2 ~@4 [g4,c5,e5] ~ [g4,c5,e5] ~ [f4,a4,d5]@2 ~@2", AL: "[d5,f5,a5,d6] ~@7",
})).s("gm_clavinet").gain(0.31)

// chords · distortion guitar · "WahGuitar(4N)"
const distortion_guitar = note(`<
  ~@10 A@2 B C D E F G F G F G F H F I F G J G F K F G F L F G F H F I F G J G F K F G F L F G F H F I F G J G F K F G F
  L M N O P Q N O P F G F H F I F G J G F K F G F L F G F H F I F G J G F K F G F L M N O P Q N O P F G F H F I F G J G
  F K F G F L F G F H F I F G J G F K F G F L M N O P Q N O P R
>`.pickRestart({
  A: "[[a3,c4,d4]@12 ~@3 b2]/2", B: "c3 b2 c3 ~@4 f2", C: "g2 f2 g2 ~@4 c3",
  D: "d3@2 c3@2 d3 ~@3 [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm
  E: "d4 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~@3", // Dm C
  F: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm
  G: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~", // Dm C Dm
  H: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~", // Dm C
  I: "[f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // Dm C Dm C
  J: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm F Dm
  K: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~", // Dm C Dm
  L: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm C Dm
  M: "[e3,g3,c4]@13 ~@3", N: "[f3,ab3,db4]@13 ~@3",
  O: "~@2 [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~", // Dm
  P: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~ [g3,c4,e4] ~ [f3,a3,d4] ~", // Dm C Dm C Dm
  Q: "[e3,c4]@15 ~, g3@13 ~@3", R: "[d4,f4,a4,d5] ~@7",
})).s("gm_distortion_guitar").gain(0.26)

// bass · slap bass 2 · "BASS(2N)"
const bass = note(`<
  ~ A B C D E F G H E B C D E F I B J K@5 L K@3 M K@2 N O K@2 N O K@3 L K@3 M K@2 N O K@2 N O K@3 L K@3 M K@2 N O K@2 N
  O P Q R O P Q S T K@3 L K@3 M K@6 N O K@3 L K@3 M K@3 L K@3 U P Q R O P Q S V K@3 W K@3 M K@2 X Y K@3 W K@7 M K@7 U P
  Q R O P Q S T Z
>`.pickRestart({
  A: "~@7 c2", B: "d2 c2 d2 ~@5", C: "~@7 b1", D: "c2 b1 c2 ~@4 f1", E: "g1 f1 g1 ~@4 c2", F: "d2 c2 d2 ~@4 gb1",
  G: "g1 ~ ab1 ~ a1@2 f1@10", H: "d2 c2 d2 ~@4 f1", I: "g1 ~ ab1 ~ a1@2 f1@7 ~ c2@2", J: "~@4 a1 ~ c2 ~",
  K: "d2 ~@3 a1 ~ c2 ~", L: "g2@2 ab2 ~ a2 ~ g1@2 a1@3 ~ c2@2 ~@2", M: "gb1 ~ g1 ~ a1@2 g1@2 a1@3 ~ c2@2 ~@2",
  N: "d2@2 ~@6 a1@2 ~@2 c2 ~ gb1 ~", O: "g1 ~ ab1 ~ a1 ~ f1@9 ~", P: "c2", Q: "db2", R: "d2@14 gb1 ~", S: "d2@7 f1",
  T: "g1 f1 g1 f1 g1 a1 c2@2", U: "d2 ~@3 a1 ~ d2 ~", V: "g1@2 f1@2 g1@2 ~@2 a1@3 ~ c2@3 ~",
  W: "g2@2 ab2 ~ a2 ~ f2@2 a1@3 ~ c2@2 ~@2", X: "d2@2 ~@6 a1@3 ~ c2@2 f1@2", Y: "g1@2 f1 ~ g1@2 f1@8 ~@2", Z: "d2 ~@7",
})).s("gm_slap_bass_2").gain(0.36)

// other · overdriven guitar · "ElecGtr(2N)"
const overdriven_guitar = note("<~@54 A@2 ~@2 B@2 ~@2 B@2 ~@2 B@2 ~@89>".pickRestart({
  A: "[~@8 a3@2 c4 ~ f4@2 d4@4 ~@14]/2", B: "[~@8 a3@2 c4 ~ f4@2 d4@10 ~@8]/2",
})).s("gm_overdriven_guitar").gain(0.36)

// other · tenor sax · "SAX(2N)"
const tenor_sax = note(`<
  ~@16 A ~ A ~ A ~ B C A ~ B C A ~ B C D ~ B C A ~@17 E@2 ~@2 E@2 ~@8 F G H@2 I J H@2 ~@2 K L M@2 K L M@2 K L M@2 K L
  M@2 K L M@2 K L M@2 K L N@2 K O F G H@2 I J H@2 A ~ P C A ~ P C A ~ P C A ~ P C A ~@7 A ~@5 A ~ F G H@2 I J H@2 A
>`.pickRestart({
  A: "[d5,f5] ~@7", B: "~@8 ab5@2 ~ g5@2 f5@2 ~", C: "d5 ~@7", D: "~@4 [d5,f5] ~@3",
  E: "[~@8 a4@2 c5 ~ f5@2 d5@4 ~@14]/2", F: "c5", G: "db5", H: "[d5@7 ~]/2", I: "a5", J: "f5", K: "~@2 a4 c5 d5 ~@3",
  L: "a4 c5 d5 ~@3 a4 c5", M: "f5/2", N: "[d5,f5]/2", O: "a4 c5 d5 ~@5", P: "[d5,f5]@2 ~@6 ab5@2 ~ g5@2 f5@2 ~",
})).s("gm_tenor_sax").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~@2 A B C@3 D C@61 A@2 ~ A C A ~ C@32 A@8 C@32 A@9>".pickRestart({
  A: "x", B: "~@7 x", C: "x ~@4 x ~ x", D: "x ~@2 x ~ x ~ x",
})).gain(0.41)

// drums · rim
const rim = s("rim").struct("<~@2 A@2 B@65 ~@3 C D ~@2 B@32 E F G H I J G ~ B@32 E F G H I J G ~@2>".pickRestart({
  A: "x!8", B: "x ~ x!3 ~ x!2", C: "~@2 x!3 ~ x!2", D: "x ~ x!3 ~ x ~", E: "x ~@5 x!2", F: "x ~ x!6", G: "x",
  H: "~@4 x!3 ~", I: "x ~@4 x!3", J: "x ~@2 x",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct("<~@41 A ~@9 B ~@19 A ~@27 C ~@11 A ~ A ~@9 C ~@15 C ~@11 A ~ A ~@3>".pickRestart({
  A: "~@3 x", B: "~@3 x!2 ~@3", C: "~@6 x!2",
})).gain(0.41)

// drums · clap
const clap = s("cp").struct(`<
  ~@76 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B C
>`.pickRestart({
  A: "~ x", B: "~@2 x!2", C: "x",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<A B C B C@12 D@52 C@2 B@2 ~@2 B@2 D@32 E@8 D@32 E@8 F>".pickRestart({
  A: "x!2", B: "x!4", C: "~ x!3", D: "x ~ x!3 ~ x!2", E: "~ x ~ x", F: "x",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7 A ~@19 A ~@7 A ~@5 B ~@17 C ~@23 A ~@3 A ~@3 A ~ A ~ A ~@3 D ~@3 A ~@3 A ~@3 E F ~@4 A ~ A ~ A ~ D ~ A ~ G ~ A ~ A
  ~ A ~ A ~@3 D ~@11 E F ~@4
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x!5 ~@2", C: "~ x!3 ~@4", D: "~ x!4 ~@3", E: "x!4 ~@4", F: "~@3 x", G: "~@14 x!2",
})).gain(0.36)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@99 A ~@13 B ~@9 C ~@15 C ~@13 B ~@3>".pickRestart({
  A: "~ x ~@6", B: "~ x ~@2", C: "~ x ~@3 x ~@2",
})).gain(0.26)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@15 A ~@3 B ~@19 C ~@7 D ~@15 D ~@3 A ~@5 D ~ D ~@3 B ~@23 B ~@5 E ~@3 D ~@9 D ~ B ~ F ~@3 G ~@7 D ~@6 H I ~ E ~@3 D
  ~ J ~
>`.pickRestart({
  A: "~@6 x!2", B: "~ x ~ x", C: "~@5 x!2 ~", D: "~@3 x", E: "~@2 x!4 ~@2", F: "~@10 x!2 ~@4", G: "~@5 x!3",
  H: "~@3 x ~@3 x ~@3 x ~@3 x", I: "~@3 x ~@2 x ~@7 x ~", J: "x!2 ~ x!2 ~@2 x ~ x ~ x!2 ~@3",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@39 A ~@2 B ~@9 B ~@7 B ~@7 B@3 ~ B ~ B ~ B ~@7 B ~@3 B ~@3 B ~ B ~ B ~@3 B ~@3 B ~@3 B@3 ~ B@3 ~ B ~ B ~ B ~ B ~ B ~
  B ~ B ~ B ~ B ~ B ~ B ~@3 B ~@7 B@3 ~ B@3 ~ B
>`.pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.46)

// drums · ride bell
const ride_bell = s("rd").struct("<~@108 A ~@3 A ~@35 A ~@3 A ~@4>".pickRestart({
  A: "~@4 x!3 ~",
})).gain(0.46)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~ x", B: "~@2 x!2",
})).gain(1.15)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~ x ~@2", C: "x ~@5 x!2",
})).gain(1.15)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@8 A@60 ~@7 B C@32 D@8 C@32 D@8 ~>".pickRestart({
  A: "x!2", B: "~@7 x", C: "x ~@2 x!2 ~@2 x", D: "x",
})).gain(2.34)

stack(
// … 3 more lines

More by War