Strudelify

rather be

Clean Bandit

KeyA minorTempo120 bpm
0:00/0:00
// rather be — Clean Bandit
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5583840; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 97 bars on a 32-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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · cello
const cello = note(`<
  A B C D C E F G C E C E C E H I ~@16 J K J K L M N O P Q R S R T U V C E C E C E H I ~@16 J K J K L M N O P Q R S R T
  W X Y Z C E C E H AA AB
>`.pickRestart({
  A: "a3@3 ~@3 a3 ~@6 a3@2 ~ g3@8 ~@8", B: "f3@3 ~@3 f3 ~@6 f3@2 ~ [c3,g3]@8 [c3,g3]@8",
  C: "a3@6 a3@2 ~@5 a3@3 g3@8 ~@8", D: "f3@6 f3@2 ~@5 f3@3 [c3,g3]@8 [c3,g3]@8", E: "f3@6 f3@2 ~@5 f3@3 e3@8 e3@8",
  F: "f3@6 f3@2 ~@5 f3@3 d3@8 d3@8", G: "d3@8 d3@8 e3@8 e3@5 g3@3", H: "f3@6 f3@2 ~@5 f3@3 d3@8 ~@8",
  I: "d3@8 d3@8 f3@8 g3@5 ~@3", J: "a2!2 e2!2", K: "f2!2 e3 d3", L: "a2!2 g2!2", M: "f2!2 e3!2",
  N: "d2@8 d3@8 d2@8 d3@5 e2@3", O: "f2@2 f2 g#2", P: "a2 ~ e2 ~", Q: "f2@8 ~@8 g#2@6 g#2@7 g#2@3",
  R: "a2@8 ~@8 e2@13 f2@3", S: "~ f2!2 g#2", T: "~ f2!2 g2", U: "[d3,c4]", V: "[f3,a3]@3 ~",
  W: "e3@6 d3@7 c3@3 c3@6 a2@7 c3@3", X: "e3@6 d3@7 c3@3 f3@5 e3@3 d3@4 e3@2 d3@2", Y: "a3@3 ~@3 a3 ~@6 a3@3 g3@8 ~@8",
  Z: "f3@3 ~@3 f3 ~@6 f3@3 e3@8 e3@8", AA: "d4@3 d4 ~@4 e2@4 g2@4", AB: "[a2,e3]",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@16 A B A C A C D E F G H I F G H J ~@24 A B A C A C D E F G H I F G H J ~@25
>`.pickRestart({
  A: "a2 a3 g2 g3", B: "f2 f3 c3!2", C: "f2@8 f3@8 e2@5 c3@3 c3@8", D: "f2!2 d2!2", E: "d2@8 d3@8 d2@5 e2@3 e2@8",
  F: "f2@8 f3@5 f3@3 f2@8 f3@8", G: "e2@8 e3@5 e3@3 e2@8 e3@8", H: "a2@8 a2@5 a2@3 a2@8 a2@8",
  I: "a2@8 a3@5 a3@3 a2@8 a3@8", J: "a2@8 a2@8 a2@5 ~@3 g2@5 ~@3",
})).s("gm_pizzicato_strings").gain(0.3)

stack(cello, pizzicato_strings)