Strudelify

stay calm

EmpyricPrince

KeyE♭ majorTempo120 bpm
0:00/0:00
// stay calm — EmpyricPrince
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/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/2373141; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · piano · "Grand Piano"
const piano = note(`<
  A B A B C D A B A B A B C D A E A B C D A B C D A B A B F G H I ~@12 J B A B C D A B A B K B C D A B A B K B C D A B A
  B K B F G H I ~@10
>`.pickRestart({
  A: "c3 [c4,eb4,g4] c3 [c4,eb4,g4] eb3 [bb3,eb4,g4] eb3 [bb3,eb4,g4]", // Cm Eb
  B: "ab2 [c4,eb4,ab4] ab2 [c4,eb4,ab4] g2 [c4,eb4,g4] g2 [c4,eb4,g4]", // Ab Cm
  C: "f2 [ab3,c4,f4] f2 [ab3,c4,f4] eb2 [ab3,c4,eb4] eb2 [ab3,c4,eb4]", // Fm Ab
  D: "d2 [gb3,c4,d4] d2 [gb3,c4,d4] g2 [g3,b3,d4] g2 [g3,b3,d4]", E: "ab2 [c4,eb4,ab4] ab2 [c4,eb4,ab4] g2 ~@3",
  F: "[f2,f3,f4] [eb2,eb3,eb4]", G: "[d2,d3,d4] [g2,g3,g4]", H: "[c3,c4,c5] [eb3,eb4,eb5]",
  I: "[ab2,ab3,ab4] [g2,g3,g4]", J: "d3 [d4,f4,ab4] d3 [c4,eb4,g4] eb3 [bb3,eb4,g4] eb3 [bb3,eb4,g4]",
  K: "c3 [c4,eb4,g4] c3 [c4,eb4,g4] eb3 [ab3,eb4,g4] eb3 [bb3,eb4,g4]", // Cm Abmaj7 Eb
})).s("gm_piano").gain(0.3)

// chords · piano · "Grand Piano"
const piano_2 = note(`<
  A B A B C D A B A B A B C D A E F G@2 H@2 I@2 J A B A B K L M N ~@12 A B A B C D A B A B A B C D A B O P O P Q R O S A
  B T B K L M N ~@10
>`.pickRestart({
  A: "c3 [c4,eb4,g4] c3 [c4,eb4,g4] eb3 [bb3,eb4,g4] eb3 [bb3,eb4,g4]", // Cm Eb
  B: "ab2 [c4,eb4,ab4] ab2 [c4,eb4,ab4] g2 [c4,eb4,g4] g2 [c4,eb4,g4]", // Ab Cm
  C: "f2 [ab3,c4,f4] f2 [ab3,c4,f4] eb2 [ab3,c4,eb4] eb2 [ab3,c4,eb4]", // Fm Ab
  D: "d2 [gb3,c4,d4] d2 [gb3,c4,d4] g2 [g3,b3,d4] g2 [g3,b3,d4]", E: "ab2 [c4,eb4,ab4] ab2 [c4,eb4,ab4] g2 ~@3",
  F: "~@4 [c4,c5,c6] [eb4,eb5,eb6] [f4,f5,f6]@2 [eb4,eb5,eb6]@4 [c4,c5,c6]@2 [eb4,eb5,eb6]@2", // C Eb F Eb C Eb
  G: "[[f4,f5,f6]@2 [eb4,eb5,eb6]@2 [f4,f5,f6]@2 [eb4,eb5,eb6]@2 [g4,g5,g6]@4 [f4,f5,f6]@2 [eb4,eb5,eb6]@4 [c4,c5,c6] [eb4,eb5,eb6] [f4,f5,f6]@2 [g4,g5,g6]@2 [f4,f5,f6]@2 [c4,c5,c6]@2 [eb4,eb5,eb6]@4]/2", // F Eb F Eb G F Eb C …
  H: "[[g4,g5,g6]@2 [gb4,g5,gb6]@2 [f4,f5,f6]@2 [gb4,g5,gb6]@2 [g4,g5,g6]!4 [f4,f5,f6]@2 [eb4,eb5,eb6]@4 [c5,c6,c7] [bb4,bb5,bb6] [g4,g5,g6]@2 [f4,f5,f6] [eb4,eb5,eb6] [c4,c5,c6]@4 [eb4,eb5,eb6]@4]/2", // G Gmaj7 F Gmaj7 G F Eb C …
  I: "[[f4,f5,f6]@2 [eb4,eb5,eb6]@2 [f4,f5,f6]@2 [eb4,eb5,eb6]@2 [g4,g5,g6]@4 [f4,f5,f6]@2 [eb4,eb5,eb6]@4 [c4,c5,c6] [eb4,eb5,eb6] [f4,f5,f6]@2 [g4,g5,g6]@2 [f4,f5,f6]@8]/2", // F Eb F Eb G F Eb C …
  J: "[g4,g5,g6]!2 [bb4,bb5,bb6] [c5,c6,c7]", K: "[f2,f3,f4] [eb2,eb3,eb4]", L: "[d2,d3,d4] [g2,g3,g4]",
  M: "[c3,c4,c5] [eb3,eb4,eb5]", N: "[ab2,ab3,ab4] [g2,g3,g4]",
  O: "[g3,g4] [gb3,gb4] [f3,f4] [gb3,gb4] [g3,g4] [gb3,gb4] [f3,f4] [gb3,gb4]", // G Gb F Gb G Gb F Gb
  P: "[eb3,eb4]@2 [c3,c4] [eb3,eb4] [g3,g4] [gb3,gb4] [f3,f4] [gb3,gb4]", // Eb C Eb G Gb F Gb
  Q: "[c3,c4] [b2,b3] [bb2,bb3] [b2,b3] [c3,c4] [b2,b3] [bb2,bb3] [b2,b3]", // C B Bb B C B Bb B
  R: "[c3,c4] [b2,b3] [bb2,bb3] [b2,b3] [c3,c4] [d3,d4] [eb3,eb4] [f3,f4]", S: "[eb3,eb4] [c3,c4] [b2,b3]@2",
  T: "c3 [c4,eb4,g4] c3 [c4,eb4,g4] eb3 [ab3,eb4,g4] eb3 [bb3,eb4,g4]", // Cm Abmaj7 Eb
})).s("gm_piano").gain(0.3)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@16 A B C B D E C B C B C B F G H I J K J K J K J K J K J K ~@32 J K J L J K J L ~@2
>`.pickRestart({
  A: "[c2,c3]@2 [c2,c3] ~ [eb2,eb3] ~ [eb2,eb3] ~", B: "[ab1,ab2] ~ [ab1,ab2] ~ [g1,g2] ~ [g1,g2] ~",
  C: "[c2,c3] ~ [c2,c3] ~ [eb2,eb3] ~ [eb2,eb3] ~", D: "[f1,f2] ~ [f1,f2] ~ eb2 ~ eb2 ~",
  E: "d2 ~ d2 ~ [g1,g2] ~ [g1,g2] ~", F: "c2 ~ c2 ~ eb2 ~ eb2 ~", G: "ab1 ~ ab1 ~ g1 ~ g1 ~",
  H: "f1 ~ f1 ~ eb2 ~ eb2 ~", I: "d2 ~ d2 ~ g1 ~ g1 ~", J: "c2@2 eb2 c2 b1@2 d2@2", K: "eb2@2 g2 eb2 f2 ab2 c3 ab2",
  L: "[ab1,ab2] [g1,g2]", // Ab G
})).s("gm_electric_bass_pick").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@32 A B A B A B A B A B A B ~@8 C@5 D@4 ~@15 A B A ~ A B A ~@3>".pickRestart({
  A: "c3@2 eb3 c3 b2@2 d3@2", B: "eb3@2 g3 eb3 f3 ab3 c4 ab3",
  C: "[~@4 [c3,c4]@2 [eb3,eb4]@2 [f3,f4]@2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4] [eb3,eb4]@5 [f3,f4]@2 [eb3,eb4]@6 [g3,g4]@2 [eb3,eb4]@6 [c3,c4]@2 [eb3,eb4]@2 [f3,f4]@2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4] [eb3,eb4]@5 [f3,f4]@2 [eb3,eb4]@6 [g3,g4]@2 [eb3,eb4]@6 [c3,c4]@2 [eb3,eb4]@2 [f3,f4]@2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4] [eb3,eb4]]/5", // C Eb F Eb F G Eb F …
  D: "[~@2 [eb3,eb4]@2 [c3,c4]@2 [eb3,eb4]@2 [c3,c4]@2 [eb3,eb4]@2 [eb3,c4] [g3,eb4] [eb3,c4]@6 [c3,c4]@2 [eb3,eb4]@2 [f3,f4]@2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4] [eb3,eb4]@5 [f3,f4]@2 [eb3,eb4]@6 [g3,g4]@2 [eb3,eb4]@8 ~@10]/4", // Eb C Eb C Eb Cm C Eb …
})).s("gm_tenor_sax").gain(0.4)

stack(piano, piano_2, bass, tenor_sax)