Strudelify

same drugs

Chance The Rapper

KeyE♭ majorTempo90 bpm
0:00/0:00
// same drugs — Chance The Rapper
// 90 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4705261; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/4)

// 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.

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@4 A B C D E F G ~@2 H I ~@4 J K L M N O P ~ N Q R ~ S ~ T ~ U ~ L V ~@2 W ~@2 X ~ Y Z AA AB AC Z AD AE AF AG
>`.pickRestart({
  A: "~@6 gb4@2 bb4@4 gb4 eb4@3", B: "~@4 gb4!2 b4@2 bb4@4 ~@2 gb4!2", C: "bb4@2 ab4 gb4 ab4 gb4 ab4@2 gb4@4 ~@4",
  D: "ab4@4 bb4@4 ~@4 bb4!2 bb4@2", E: "bb4@2 ab4@2 gb4@4 ~@4 db4 eb4 gb4 eb4",
  F: "db4 eb4 gb4 eb4 gb4@4 eb4 db4@4 ~@3", G: "~ gb4", H: "~@12 bb4!2 bb4@2", I: "bb4@2 ab4@2 gb4 ab4@4 ~@7",
  J: "db4 eb4 ~ gb4@3 ~@2", K: "db4@2 db4@2 ab4@3 gb4@6 ~@3", L: "~ bb4!4 gb4!2 eb4 gb4 eb4 ~@4 gb4 bb4",
  M: "ab4 gb4 ab4 gb4 ab4@2 gb4 eb4@4 ~@3 eb4@2", N: "ab4@4 bb4@4 ~@4 bb4!2 ~ bb4",
  O: "eb5@2 db5@2 bb4@2 db5@4 ~@2 gb4 eb4 gb4 eb4", P: "gb4 eb4 gb4 eb4 gb4@4 eb4@2 db4@4 ~@2",
  Q: "eb5@2 db5@2 bb4@2 db5@4 ~@2 gb5 eb5 gb5 eb5", R: "gb5 eb5 gb5 eb5 bb5@4 ab5@2 gb5@2 ~@4",
  S: "db4!2 eb4 gb4@3 ~@2", T: "~ bb4!2 gb4 ab4 gb4 eb4 db4", U: "~@10 bb4 ab4 ab4@2 bb4@2",
  V: "ab4 gb4 ab4 gb4 ab4@2 gb4 eb4@4 ~@5", W: "~@2 bb4!2 bb4@2 gb4 ab4@2 gb4@2 ~@5", X: "~@6 eb5@4 db5 bb4@3 ~@2",
  Y: "bb4@2 b4 bb4@2 gb4 ab4@4 gb4@4 ~@2", Z: "~@2 ab4 bb4", AA: "~@4 bb4!2 bb4@2 bb4@2 ab4@2 gb4 ab4 bb4 ab4",
  AB: "gb4 ab4 bb4 ab4 db5@4 b4 bb4@3 gb4@4", AC: "eb4 db4@3 bb4!2 bb4@2 bb4@2 ab4@2 gb4@4",
  AD: "~@4 bb4!2 bb4@2 bb4@2 ab4@2 gb4@4", AE: "db5 eb5 gb5 eb5 db5 eb5 gb5 eb5 gb5@4 eb5 db5@3",
  AF: "~@12 db5 eb5 gb5 eb5", AG: "db5 eb5 gb5 eb5 gb5@4 eb5 db5@3 ~@4",
})).s("gm_alto_sax").gain(0.3)

// chords · piano
const piano = note(`<
  A B ~ C D C E C D C F C@3 G H@3 G H@3 G I@3 G I@2 J G I@3 G I@3 G I@3 G I@3 G I@3 G I@3 G ~
>`.pickRestart({
  A: "~@5 [bb2,bb3,db4,gb4]@3", B: "[gb2,b3,eb4,gb4]@15 ~", C: "[bb2,bb3,db4,gb4]@3 [b2,b3,eb4,gb4]@4 ~",
  D: "[db3,bb3,db4,gb4]@3 [b2,b3,eb4,gb4]@4 ~", // Gb B
  E: "[eb3,bb3,eb4,gb4] [db3,bb3,db4,gb4] [bb2,bb3,db4,gb4] [gb2,b3,eb4,gb4]", // Ebm Gb B
  F: "[eb3,bb3,eb4,gb4]@2 [db3,bb3,db4,gb4]@2 [bb2,bb3,db4,gb4] [gb2,b3,eb4,gb4]@3", // Ebm Gb B
  G: "[eb3,bb3,eb4,gb4]@2 [db3,bb3,db4,gb4]@2 [bb2,bb3,db4,gb4] [b2,b3,eb4,gb4]@3", // Ebm Gb B
  H: "[bb2,bb3,db4,gb4]@3 [b3,eb4,gb4]@2 [b3,eb4,gb4]!3, ~@3 b2@4 ~", // Gb B
  I: "[bb3,db4,gb4]!3 [b3,eb4,gb4]@2 [b3,eb4,gb4]!3, bb2@3 b2@4 ~", // Gb B
  J: "[bb3,eb4,gb4]!3 [b3,eb4,gb4]@2 [b3,eb4,gb4]!3, bb2@3 b2@4 ~", // Ebm B
})).s("gm_piano").gain(0.3)

stack(alto_sax, piano)