Strudelify

Ghost Choir

Louie Zong

KeyE majorTempo120 bpm
0:00/0:00
// Ghost Choir — Louie Zong
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5980997; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 26 bars on a 24-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.

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@7 A B C B D E F G H I J@3 K L M N O P>".pickRestart({
  A: "~@7 d4", B: "f#4 a4@3 b4 a4 g4 f#4", C: "e4 ~@7", D: "e4@3 ~@17 a4@2 a#4@2", E: "b4 d5@2 ~@7 a4 a#4",
  F: "b4 e5@2 ~@9", G: "e5 b4 d5@4 ~@6", H: "e5 a#4 d5@4 ~@6",
  I: "d5@6 ~@12 [a4,a#4] b4 [c5,c#5,d5] [d#5,e5] f5 [f#5,g5,g#5]", J: "[a5@12 g5@3 f#5@2 a5@5 d6@2]/3", K: "g5@3 d6",
  L: "f#5@3 d6", M: "e5 d5 e5@4 f#5@4 e5 d5", N: "a4@9 a5@3 f#6@6 e6@2 d6@2 a#5@2", O: "a5 g5 f#5 e5", P: "d5 ~@3",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note("<~@9 A ~ B C D E F ~@10>".pickRestart({
  A: "~@3 e4 f#4 d4 e4@3 ~@3", B: "~@3 e4 f#4 d4 a4@3 ~@3", C: "~@4 a3 a#3 b3 d4@2 ~@3", D: "~@4 a3 a#3 b3 f#4@2 ~@3",
  E: "~@6 e4 b3 d4@4", F: "~@6 e4 a#3 d4@4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_3 = note("<A B C D A B C E F G H I J K L@2 M N O P Q P Q P Q R>".pickRestart({
  A: "f#4@2 a4 g#4", B: "g4@2 b4!2", C: "a4@2 c#5 c5", D: "b4@3 d5 b4 g4 f#4@3 e4@3", E: "b4@3 d5 b4 g4 f#5@3 e5@3",
  F: "f#4@2 f#4@2 f#4@2 f#4@3 ~@3 b4@2 b4@2 b4@2 b4@6", G: "b4@2 b4@2 b4@2 b4@3 ~@3 a4@2 a4@2 a4@2 a4@3 ~@3",
  H: "a4@2 a4@2 a4@2 a4@3 ~@3 b4@2 b4@2 b4@2 b4@6", I: "b4@2 b4@2 b4@2 b4@3 ~@15", J: "g4@2 g4@2 g4@2 g4@3 ~@3 g4@12",
  K: "g4 f#4", L: "g4", M: "f#4 ~@3", N: "a4", O: "b4 a#4", P: "a4@3 a4", Q: "a#4@3 a#4", R: "a4 ~@3",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_4 = note("<~@2 A B C D E B F G H I J K L M N O P@7 Q>".pickRestart({
  A: "~@2 f#4 f4", B: "e4@2 a3 e3", C: "a3@2 c#4 c4", D: "b3@2 e4 c#4", E: "d4@2 f#4 f4",
  F: "a3@2 d4@2 d4@2 d4@3 ~@3 d4@2 d4@2 d4@2 d#4@6", G: "e4@2 e4@2 e4@2 e4@3 ~@3 c#4@2 c#4@2 c#4@2 d4@6",
  H: "d4@2 d4@2 d4@2 d4@3 ~@3 d4@2 d4@2 d4@2 d#4@6", I: "e4@2 e4@2 e4@2 e4@3 ~@3 f#4@2 f#4@2 e4@2 d4@2 d4@2 c#4@2",
  J: "b3@2 b3@2 b3@2 b3@3 ~@3 a#3@12", K: "c#4 c4", L: "b3", M: "a#3", N: "a3 ~@3", O: "d4", P: "d4@3 d4", Q: "d4 ~@3",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_5 = note("<~@8 A B C D E F G@2 H I J K L K L I M N>".pickRestart({
  A: "a3 ~ b3 ~", B: "b3@6 ~@2 g3@2 g#3@2 a3@6 ~@3 a3@3", C: "a3@2 ~ a#3 b3@2 ~@2", D: "~@4 c4 b3 c4 b3",
  E: "b3!2 a#3!2", F: "a#3!2 a3@2", G: "g3", H: "f#3@2 ~@2 a3@3 a3", I: "a3", J: "b3@4 g3@3 a#3", K: "a3@3 a3",
  L: "a#3@3 a#3", M: "a#3", N: "a3 ~@3",
})).s("gm_clarinet").gain(0.3)

// other · piano
const piano = note("<~@17 A B C D@2 E F@3>".pickRestart({
  A: "~@9 [d5,d6] ~ [d5,d6] [d5,d6]@3 [a4,a5] ~ [a4,a5] [a4,a5]@3 [g4,g5] ~ [g4,g5]", // D A G
  B: "[g4,g5]@3 ~@4 f#5 e5 d5 a#4 g4", // G
  C: "a4@6 ~@3 [d5,d6] ~ [d5,d6] [d5,d6]@3 [a4,a5] ~ [a4,a5] [a4,a5]@3 [g4,g5] ~ [g4,g5]", // D A G
  D: "[[g4,g5]@6 ~@8 d5@2 e5@2 f#5@2 a5@2 f#5@8 ~@3 [d5,d6] ~ [d5,d6] [d5,d6]@3 [a4,a5] ~ [a4,a5] [a4,a5]@3 [g4,g5] ~ [g4,g5]]/2", // G D A G
  E: "[g4,g5]@6 d4@6 d4@11 ~", F: "d4@23 ~",
})).s("gm_piano").gain(0.3)

// drums · shaker
const shaker = s("sh").struct("<[~ x ~ x]!8 [x!12]!8 x [x!12]!8 x>").gain(0.3)

stack(clarinet, clarinet_2, clarinet_3, clarinet_4, clarinet_5, piano, shaker)

More by Louie Zong