Strudelify
circles cover art

2019 · Hollywood's Bleeding

circles

Post Malone

KeyE minorTempo120 bpm
0:00/0:00
// circles — Post Malone
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Tenor Saxophone" named as a reed, played on tenor sax (its accordion patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5936880; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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: edit a riff to change every repeat.

// chords · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~ A ~ A ~ A B ~@2 C D E F G D H I J ~ K ~ L@2 M N O N O N P Q R@2 S@3 N P Q T U V W X Y V W Z N O N O N P Q R@2 AA@3 N
  P Q T AB
>`.pickRestart({
  A: "~@2 g3@2 a3@2 g3 e3", B: "~@2 e3 d3@3 d3 e3", C: "~ b3!3 b3@2 b3!2", D: "c4", E: "~ a3!4 a3@2 a3", F: "g3",
  G: "~@2 b3@2 b3@2 b3@2 b3@3 b3@3 b3@2", H: "~@2 a3@2 a3@2 a3@2 a3@3 g3@3 g3@2", I: "e3", J: "~ e4!3 e4@2 d4@2",
  K: "~@2 e4!3 g4@2 e4", L: "[~ e4!3 e4@2 e4 d4@2 c4@2 ~@5]/2", M: "~ g3 d4!3 c4 c4@2", N: "~@2 e4 d4 d4@2 c4!2",
  O: "b3 b3@2 c4@3 a3 g3", P: "b3!3 c4@3 a3 g3", Q: "~@2 e4 d4 d4@2 ~ e4", R: "[d4 d4@2 c4 e4 f4 e4 g4@5 e4@3 d4]/2",
  S: "[~@3 c4 e4 f4 e4 g4@5 e4@3 d4@2 c4!3 e4 d4!2 c4]/3", T: "d4 d4@2 ~ e4 d4 d4@2", U: "~@2 e4 d4!4 c4",
  V: "c4!3 e4@2 e4 f4 e4", W: "~ c4 e4 d4 d4@2 ~@2", X: "~ c4!2 e4@2 e4 f4 e4", Y: "~ c4 e4 d4!2 ~ c4!2",
  Z: "~ a3!2 c4@2 d4@2 e4", AA: "[~@3 c4 e4 f4 e4 g4@5 e4@3 d4@2 c4!3 e4!2 f4 e4]/3", AB: "c4 ~",
})).s("gm_tenor_sax").gain(0.3)

// chords · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note(`<
  A B C D A B E F A G H F I G H F J K C L A M N ~ O P Q R O P S T U G V W O P S X Y Z AA AB AC Z AA ~ O P Q R O P S T U
  G V W AD AE AF@2 ~
>`.pickRestart({
  A: "[e3,g3,c4,e4]", B: "[d3,d4,f#4], g3 ~@3", C: "[e3,a3,c4,e4]", D: "[g#3,c4,e4], e3@7 ~", E: "[a3,c4,e4], e3 ~@3",
  F: "[e3,g#3,c4,e4]", G: "[d3,g3,d4,f#4]", H: "[e3,a3,e4]", I: "[e3,c4,e4]", J: "[g3,c4,e4]", K: "[d3,g3,f#4], d4@3 ~",
  L: "[e3,g#3,c4], e4 ~@3", M: "[d3,g3,f#4], d4@7 ~", N: "[e3,a3,e4], c4 ~@7", O: "[e3,g3], c4@3 ~, e4 ~@3",
  P: "[d3,d4,f#4], g3@7 ~", Q: "[e3,a3], c4@3 ~, e4 ~@3", R: "[e3,g#3,e4], c4@3 ~@5", S: "[e3,a3,c4], e4 ~@3",
  T: "[e3,g#3], e4 ~, c4@3 ~@5", U: "[e3,g3,c4], e4 ~", V: "[e3,a3,c4], e4 ~", W: "[e3,g#3], e4 ~, c4 ~@7",
  X: "[e3,g#3,c4], e4 ~", Y: "~ b4@7, c4@7 ~, ~ g4@15, ~ e4@3 ~@12", Z: "~ b4@7, b3, ~ g4@15, ~ e4@5 ~@10",
  AA: "~ c4 a4@14, f3, ~ a3@15", AB: "~ c4 g#4@14, f3, ~ g#3@15", AC: "~ b4@7, c4 ~@7, ~ g4@15, ~ e4@3 ~@12",
  AD: "~ b4@7, c4@3 ~, ~ g4@15, ~ e4@3 ~@12", AE: "~ b4@7, ~ [e4,g4]@15", AF: "[~ [c4,a4]@31, [f3,a3]]/2",
})).s("gm_tenor_sax").gain(0.15)

// other · electric guitar clean · "Lead Guitar"
const electric_guitar_clean = note("<~ A@4 B@4 ~@16 C@6 D@2 A@4 C@2 E ~@9 A@6 D@2 A@4 ~@4>".pickRestart({
  A: "[~@2 g4@2 a4@2 g4 e4@5 ~@4]/2", B: "[~@2 g4@2 a4@2 g4 e4@3 e4 d4@3 d4 e4@3 e4 d4@3 d4 c4@5 ~@4]/4",
  C: "[~@2 g4 e4@3 d4 c4@3 ~@6]/2", D: "[~@2 e4 d4@3 d4 c4@4 ~@5]/2", E: "~@2 e4 d4@3 d4 c4",
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · electric guitar clean · "Rhythm Guitar"
const electric_guitar_clean_2 = note(`<
  A B C D A E C D ~@8 A B C D A B C ~ A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D ~@5
>`.pickRestart({
  A: "~ [b3,e4]@7, c3, ~ [e3,g3]@15", B: "~ b3@7, b2, ~ [d3,g3]@15", C: "~ [c4,f4]@7, e3, ~ [f3,a3]@15",
  D: "~ [c4,f4]@7, e3, ~ [f3,g#3]@15", E: "~ [b3,f#4]@7, b2, ~ [d3,g3]@15",
})).s("gm_electric_guitar_clean").gain(0.2)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C E F G H@2 ~@5
>`.pickRestart({
  A: "c2 ~ c2 ~ d2 c2@2 b1", B: "~ b1 ~ b1 d2 c2@2 ~", C: "f1 ~ f1 ~ f1!4", D: "~ f1 ~ f1 g1 ~ g1 ~",
  E: "f1!2 ~ f1 g1 ~ g1 ~", F: "c2!8", G: "b1!8", H: "f1!8",
})).s("gm_electric_bass_pick").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[x!2]!23 [x!2 ~ x ~@2 x ~] [x!2]!15 [x!2 ~ x!2 ~ x ~] ~@7 [~@5 x!3] [x!2]!8 ~@9>")
  .gain(0.3)

// drums · snare
const snare = s("sd").struct("<A@23 B A@15 B ~@4 A@3 C A@8 ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@5 x!3",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!8]!8 ~@16 [x!8]!15 ~@5 [x!2]!3 ~ [x!8]!8 ~@9>").gain(0.3)

// drums · china
const china = s("cr").struct("<~@24 x ~@23 x ~@16>").gain(0.3)

stack(tenor_sax, tenor_sax_soft, electric_guitar_clean, electric_guitar_clean_2, bass, kick, snare, pedal_hat, china)

More by Post Malone