Strudelify

old town road

Lil Nas X

KeyB♭ majorTempo70 bpm
0:00/0:00
// old town road — Lil Nas X
// 70 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5533523; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trombone
const trombone = note("<A B A B ~@4 C@4 A D A D C@4 A D A D E B ~@6>".pickRestart({
  A: "b3!2 c4!2", B: "c4!4", C: "d4 ~ c4 ~ d4 ~ g4 ~ d4 ~ c4 ~ d4 ~ g3 ~", D: "~ g3 g3@2 g3@2 g3@2 c4@2 bb3@6",
  E: "d4!2 c4!2",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note("<~@4 A@4 ~@18 B C D C D C>".pickRestart({
  A: "d4 ~ c4 ~ d4 ~ g4 ~ d4 ~ c4 ~ d4 ~ g3 ~", B: "d4!2 c4!2", C: "c4!4", D: "b3!2 c4!2",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_2 = note("<A B A B ~@4 C D C D A B A B C D C D A B A B A B ~@6>".pickRestart({
  A: "d3!2 f3!2", B: "a3!4", C: "g2@4 ~@2 g2@4 bb2@3 bb2 bb2@2", D: "f2@4 ~@2 f2@4 eb2@3 eb2 eb2@2",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft_2 = note("<~@4 A B A B ~@18 C D C D C D>".pickRestart({
  A: "d3!2 c4!2", B: "c4!3 a3", C: "d3!2 f3!2", D: "a3!4",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note("<A B A B ~@8 C D C D E D F D C D C D C D C D A B A B>".pickRestart({
  A: "g2!2 bb2!2", B: "f2!2 eb2!2", C: "g2@4 ~@2 g2@4 bb2@3 bb2 bb2@2", D: "f2@4 ~@2 f2@4 eb2@3 eb2 eb2@2",
  E: "g1@6 g1@4 bb1@3 bb1 bb1@2", F: "g2@6 g2@4 bb2@3 bb2 bb2@2",
})).s("gm_tuba").gain(0.4)

// bass · tuba · soft notes
const bass_soft = note("<~@4 A B A B C D E D ~@20>".pickRestart({
  A: "g2!2 bb2!2", B: "f2!2 eb2!2", C: "g1@6 g1@4 bb1@3 bb1 bb1@2", D: "f2@4 ~@2 f2@4 eb2@3 eb2 eb2@2",
  E: "g2@6 g2@4 bb2@3 bb2 bb2@2",
})).s("gm_tuba").gain(0.2)

stack(trombone, trombone_soft, trombone_2, trombone_soft_2, bass, bass_soft)