Strudelify

Midnight Cowboy

Faith No More

KeyA majorTempo113 bpm
0:00/0:00
// Midnight Cowboy — Faith No More
// 113 bpm, 12/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "guitar 1" named as a guitar, played on electric guitar clean (its bandoneon patch is not one)
// note: Full arrangement: all 57 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar 3.
setcpm(113/6)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean · "guitar 2"
const electric_guitar_clean = note(`<
  ~@4 A B A B A B C D A B C D A B C D A B A B A B A B E F G H E F G H E F G H A B A B A B A B A B A B A B A B I
>`.pickRestart({
  A: "[a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4]!5 ~ [a2,e3,a3,c#4,e4,a4]!5 ~ [a2,e3,a3,c#4,e4,a4]!5 ~ [a2,e3,a3,c#4,e4,a4]!3 ~", // A
  B: "[g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4]!5 ~ [g2,d3,g3,b3,d4,g4]!5 ~ [g2,d3,g3,b3,d4,g4]!5 ~ [g2,d3,g3,b3,d4,g4]!3 ~", // G
  C: "[f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4]!5 ~ [f2,c3,f3,a3,c4,f4]!5 ~ [f2,c3,f3,a3,c4,f4]!5 ~ [f2,c3,f3,a3,c4,f4]!3 ~", // F
  D: "[a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4]!5 ~ [a#2,f3,a#3,d4]!3 ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]!5 ~ [e2,b2,e3,g#3,b3,e4]!3 ~", // A# E
  E: "[a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~ [a2,e3,a3,c#4,e4,a4] ~", // A
  F: "[g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,g4] ~", // G
  G: "[f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~ [f2,c3,f3,a3,c4,f4] ~", // F
  H: "[a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4] ~ [a#2,f3,a#3,d4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~ [e2,b2,e3,g#3,b3,e4] ~", // A# E
  I: "[a2,e3,a3,c#4,e4,a4]@2 ~", // A
})).s("gm_electric_guitar_clean").gain(0.51)

// chords · distortion guitar · "guitar 3"
const distortion_guitar = note("<~@39 [c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~@13] ~@17>").s("gm_distortion_guitar").gain(0.36)

// other · electric guitar clean · "guitar 4"
const electric_guitar_clean_2 = note(`<
  ~@32
  [b5@2 ~ a5@2 ~ g#5@2 ~ e5@2 ~]
  [g5@2 ~ f#5@2 ~ e5@2 ~ d5@2 ~]
  [f5@2 ~ e5@2 ~ d5@2 ~ c5@2 ~]
  [d5@5 ~@3 e5 ~ d5 ~ e5@8 ~@4]
  ~@21
>`).s("gm_electric_guitar_clean").gain(0.51)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@3 A B C B C D E F G D E F G D E F G D E D E D E D E H I J K H I J K H I J K D E D E D E D E D E D E D E D E L
>`.pickRestart({
  A: "~@22 e1 ~", B: "a1@16 ~@6 e1 ~", C: "g1@16 ~@6 e1 ~", D: "a1@16 ~@2 e1 ~ e1 ~ e1 ~",
  E: "g1@16 ~@2 e1 ~ e1 ~ e1 ~", F: "f1@16 ~@6 e1 ~", G: "a#1@8 ~@2 a1 ~ e1@8 ~@4, ~ a#1 ~",
  H: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  I: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  J: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  K: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", L: "a1@2 ~",
})).s("gm_electric_bass_finger").gain(0.51)

// drums · kick
const kick = s("bd").struct("<~@4 [x!2]!52 ~>").gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!52 ~>").gain(0.41)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 [~ x!5 ~ x!5]!24 ~@29>").gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [x!2]!24 ~@29>").gain(0.41)

// drums · ride
const ride = s("rd").struct("<~@28 [x!12]!28 ~>").gain(0.41)

// drums · splash
const splash = s("cr").struct("<~@56 x>").gain(0.41)

stack(
  electric_guitar_clean, distortion_guitar, electric_guitar_clean_2, bass, kick, snare, pedal_hat, open_hat, ride,
  splash
)

More by Faith No More