Strudelify

centuries

Nathan S.

KeyA majorTempo85 bpm
0:00/0:00
// centuries — Nathan S.
// 85 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6064060; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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.

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C@3 D C@3 D C@3 D E F G H I J K L A M C@3 D C@3 D C@3 D I J K N O@2 ~ P A Q C@3 D C@3 D C@3 D R S T U R S T V A B
  ~@2 C@3 W C@3 W C@3 X
>`.pickRestart({
  A: "g4@2 b4@2 e4@2 f#4 g4@3 b4@2 e4@2 b4@2", B: "a4@2 g4@2 a4@2 g4 a4@3 g4@2 ~@4", C: "g5 f#5 e5 b4 g5 f#5 e5 b4",
  D: "g5 f#5 e5 b4 g5 f#5 d5 e5", E: "e5", F: "g5", G: "c6", H: "a5@2 ~ [b4,b5]", I: "e5!8", J: "g5!8", K: "c5!8",
  L: "a5!4 g5 a5 b5@2", M: "a4@2 g4@2 a4@2 g4 a4@3 g4@4 ~@2", N: "a5!4 ~ a4 e4!2",
  O: "[e5 d5 b4 e5 d5 b4 g4 b4@7 ~@2]/2", P: "~@6 e4 f#4", Q: "a4@2 g4@2 a4@2 g4 a4@3 g4@2 d4@2 e4@2", R: "e4", S: "g4",
  T: "c4", U: "a3 d4", V: "a3@4 d4@2 e4 f#4", W: "g5 f#5 e5 b4 ~@4", X: "e5@2 b5 b5@3 d5@2 e5@2 b5 e5@5",
})).s("gm_clarinet").gain(0.25)

// other · bassoon
const bassoon = note(`<
  ~@2 A B C D A B C D A B C D A B C E F G H I@3 A B C D A B C D A B C D F G H J ~ K ~ L@3 A B C D A B C D A B C D A B C
  M A B C M ~@3 N O P Q R S T Q U V W X Y
>`.pickRestart({
  A: "e3", B: "g3", C: "c3", D: "a2 d3", E: "a2@2 ~ e3", F: "e3!8", G: "g3!8", H: "c3!8", I: "[a3!4 g3 a3 b3@16 ~@2]/3",
  J: "a3!4 d4!4", K: "e4 d4 b3 e4 d4 b3 g3 b3", L: "[b3@2 b3@2 b3!6 ~ b3 e4@32 ~@4]/3", M: "a3 d4", N: "~@7 e3",
  O: "g3 f#3 e3 e3@2 e3!3", P: "g3 f#3 e3 e3@2 e3!2 d3", Q: "e3@2 b3 b3@8 ~@3 d3@2",
  R: "e3@2 b3 b3@3 d3@2 e3@2 b3 b3@3 e3@2", S: "g3 f#3 e3 e3@3 ~ e3", T: "g3@2 f#3@2 e3@2 e3@3 e3 e3@2 e3@2 d3@2",
  U: "e3@2 b3 b3@3 d3@2 e3@2 b3 b3@5", V: "b3 a3 g3 a3@2 e3 ~ e3", W: "b3 a3 g3 a3@3 ~@2", X: "b3 a3 g3 a3@2 e3 ~ d3",
  Y: "e3@2 b3 b3@3 d3@2 e3@2 b3 e4@5",
})).s("gm_bassoon").gain(0.3)

// drums · clap
const clap = s("cp").struct(`<
  ~@6 A@4 B@3 C B@3 D B@3 C E F B@2 C B@3 C B@4 C B@3 C B@3 C A G B@11 C ~@4 A@6 ~@2 B@3 C B@3 C B@3 H
>`.pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@2 x ~@2 x ~ x ~@3", C: "x ~@2 x!2 ~@2 x ~@2 x ~ x ~ x ~", D: "x ~@2 x!2 ~@2 x ~@4 x ~@3",
  E: "x ~ x ~ x!4", F: "x!16", G: "x ~ x ~ x ~ x!2", H: "~@5 x!3",
})).gain(0.2)

stack(clarinet, bassoon, clap)

More by Nathan S.