Strudelify

Backatown

Troy Andrew

KeyD♭ majorTempo98 bpm
0:00/0:00
// Backatown — Troy Andrew
// 98 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2153981; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · trombone · "Tenor Trombone"
const trombone = note(`<
  ~@8 A B C D A B C D ~@8 E@8 F G F G F G F G F G F G F G F G ~@3 H I J I K ~ E@8 ~@8
>`.pickRestart({
  A: "eb3 ~ f3 ~ gb3 ~ bb3 ~ eb4 ~ bb3 ~ gb3 ~ eb3 ~", B: "ab3 ~ eb3 ~ c3 ~ eb3 ~ b2 ~ eb3 ~ ab3@2 gb3@2",
  C: "eb3 ~ f3 ~ gb3 ~ bb3 ~ eb4 ~ bb3 ~ gb3 ~ f3 eb3", D: "c3@2 eb3 ~ ab3 ~ c3@2 b2@2 eb3 ~ ab3@2 ~@2",
  E: "[~@7 a4 ab4 gb4 eb4@2 db4@2 eb4 c4@5 ~ c4 ~ b3@5 ~ b3 ~ bb3@3 eb4 ~@4 a4 ab4 gb4 eb4@2 db4@2 eb4 c4@5 ~ c4 ~ b3@3 db4@2 ~@4]/4",
  F: "db4@2 ~ db4@5", G: "c4@2 ~ b3@5", H: "~@14 gb4 ab4", I: "a4 ab4 gb4@2 ~@2 a4 ab4 a4 ab4 gb4 a4 ab4 a4 ab4 gb4",
  J: "a4 ab4 a4 ab4 gb4 eb4 a4 ab4 a4 ab4 gb4 bb4 ~ eb4 gb4 ab4", K: "a4 ab4 a4 ab4 gb4 eb4 a4 ab4 a4 ab4 gb4 bb4 ~@4",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone" · soft notes
const trombone_soft = note("<~@65 A@8>".pickRestart({
  A: "[~@7 a4 ab4 gb4 eb4@2 db4@2 eb4 c4@5 ~ c4 ~ b3@5 ~ b3 ~ bb3@3 eb4 ~@4 a4 ab4 gb4 eb4@2 db4@2 eb4 c4@5 ~ c4 ~ b3@3 db4@2 ~@4]/4",
})).s("gm_trombone").gain(0.2)

// other · trombone · "Tenor Trombone"
const trombone_2 = note(`<
  ~@4 A B A B C D C D C D C D A B A B A B A B C D C D C D C D C D C D C D C D C D C D C D C D E F E F E G E H ~ C D C D
  C D C D ~@8
>`.pickRestart({
  A: "~@6 eb3@2 f3@2 gb3@2 f3@3 eb3", B: "~@3 eb3 f3 gb3 f3@2", C: "db4@2 ~ db4@5", D: "c4@2 ~ b3@5",
  E: "~@4 db4 ~ db4 ~@3 db4 ~@2 db4!2 ~", F: "~ db4!3 c4@2 eb4 ~@5 b3!3 db4", G: "~ db4!3 c4 db4 eb4 ~@5 b3!3 db4",
  H: "~ db4!3 c4 db4 eb4 ~@9",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone" · soft notes
const trombone_soft_2 = note("<~@65 A B A B A B A B>".pickRestart({
  A: "db4@2 ~ db4@5", B: "c4@2 ~ b3@5",
})).s("gm_trombone").gain(0.2)

// other · trombone · "Tenor Trombone"
const trombone_3 = note("<A B A B A B A B C@8 A B A B A B A B C@24 D E D E D F D G ~ C@8 ~@8>".pickRestart({
  A: "gb3@2 ~ gb3@2 ~@3", B: "c4@2 ~ b3@2 ~@3", C: "gb3@2 ~ gb3@5", D: "~@4 gb3 ~ gb3 ~@3 gb3 ~@2 gb3!2 ~",
  E: "~ gb3!3 f3@2 ab3 ~@5 gb3!3 ab3", F: "~ gb3!3 f3 gb3 ab3 ~@5 gb3!3 ab3", G: "~ gb3!3 f3 gb3 ab3 ~@9",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone" · soft notes
const trombone_soft_3 = note("<~@65 [gb3@2 ~ gb3@5]!8>").s("gm_trombone").gain(0.2)

// bass · trombone · "Tenor Trombone"
const bass = note(`<
  A B A B A B A B C D C D C D C D A B A B A B A B C D C D C D C D C D C D C D C D C D C D C D C D E F G F G F G H ~ C D
  C D C D C D ~@8
>`.pickRestart({
  A: "eb2@2 ~ eb2@2 ~@3", B: "ab2@2 ~ ab2@2 ~@3", C: "eb2@2 ~ eb2 ~ eb2 ~ eb2", D: "ab2@2 ~ ab2 ~ ab2 ~ ab2",
  E: "eb2 ~ eb2!6 ~@2 eb2!6", F: "ab2 ~ ab2!4 g2 gb2 ~@4 db3!3 eb3", G: "~@2 eb2!6 ~@2 eb2!6",
  H: "ab2 ~ ab2!4 g2 gb2 ~@8",
})).s("gm_trombone").gain(0.4)

// bass · trombone · "Tenor Trombone" · soft notes
const bass_soft = note("<~@65 A B A B A B A B>".pickRestart({
  A: "eb2@2 ~ eb2 ~ eb2 ~ eb2", B: "ab2@2 ~ ab2 ~ ab2 ~ ab2",
})).s("gm_trombone").gain(0.2)

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