Strudelify

louie zong - ghost duet

Louie Zong

KeyC majorTempo156 bpm
0:00/0:00
// louie zong - ghost duet — Louie Zong
// 156 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 3/4 at bar 1) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5879673; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/3)

// 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 · piano
const piano = note(`<
  A B@2 C D E@2 F G H I J K L M N O B@2 C D P@2 F G H I J K L Q R S T I U V W X Y S Z AA AB AC AD@2 AE@2
>`.pickRestart({
  A: "~@5 g4@5 ~ a4@5", B: "[d4@3 e4@2 [g3,c4]@10 ~@9 [c4,e4]@8, e5@5 ~@3]/2", C: "[a#3,d4]@5 ~@3",
  D: "[a#3,d4,e4]@2 ~@3 d#5 e5@4 ~ d5@5, d5@5 ~@11", // Em7b5
  E: "[c5 ~@4 a3@5 ~ c#4@5 [a3,c#4,e4]@2 ~@9 a3@5, c#4@5 ~@27, ~ c#5@19 ~@12]/2", F: "f4@5 e4@5 ~ c#4@5",
  G: "~@5 d#5 e5@4 ~ d#5 e5@4, a3@15 ~", H: "c5@3 ~@2 a3@5 ~ c4@5, c4@5 ~@11, ~@3 a4@13", I: "[a3,c4,e4] ~@3",
  J: "b3@5 g3@5 ~ b3@5", K: "~@5 d#5 e5@4 ~ d#5 e5@4, [f3,a3,c4,d#4]@15 ~", L: "c4@5 g3@5 ~ a3@5, c5@15 ~",
  M: "[g3,c4,e4]@3 ~@2 e4@10 ~", N: "d#4@5 g3@5 ~ c4@5", O: "g4@5 [f4,g4]@5 ~ [e4,a4]@5",
  P: "[c5 ~@10 c#4@5 [a3,c#4,e4]@2 ~@9 a3@5, c#4@5 a3@5 ~@22, ~ c#5@7 a4@18 ~@6]/2", // A
  Q: "[g3,c4,e4]@3 ~@2 d#5 e5@4 ~ d#5 e5@4", R: "c4@5 g3@5 ~ a3@5, f5@15 ~",
  S: "~@5 d#5 e5@4 ~ d#5 e5@4, [a3,c#4,e4,f4]@15 ~", T: "c5@3 ~@2 g3@5 ~ c4@5, c4@5 ~@11, ~@3 a4@13",
  U: "b3@5 g3@5 ~ a3@5", V: "~@5 d#5 e5@4 ~ d#5 e5@4, b3@10 ~ d#4@5", W: "c4@5 g3@5 ~ c4@5, c5@15 ~",
  X: "f#5 g5@4 [d#4,a5]@4 ~@2 d#5 e5@4, e4@4 ~@7 d4@4 ~", Y: "d#5 ~@4 a3@5 ~ c#4@5, [a3,c#4,e4]@5 ~@11, ~ e5@14 ~",
  Z: "c5@3 ~@2 g3@5 ~ a3@5, c4@5 ~@11, ~@3 a4@13", AA: "[a3,c4,e4]@3 ~@2 d#5 e5@4 ~ d#5 e5@4",
  AB: "b3@5 g3@5 ~ b3@5, g4@15 ~", AC: "~@5 d#5 e5@4 ~ d#5 e5@4, [g3,b3,d4,f4]@15 ~",
  AD: "[[c3,e3,g3,c4]@5 e3@5 ~ g3@5 [g3,c4,e4]@3 ~@13, c5@15 ~]/2", AE: "[~ [d4,e4]@30 ~, [g3,c4]@31 ~]/2",
})).s("gm_piano").gain(0.2)

// chords · piano
const piano_2 = note(`<
  ~ A@2 B C D@2 E F G@2 H@2 I ~ J K A@2 B C L@2 E F M@2 N@2 O P Q R S@2 T@2 O U E R V@2 W@2 X@2 Y@2
>`.pickRestart({
  A: "[~@21 g2@5 ~ [c2,a2]@5, c2@25 ~@7]/2", B: "[a#1,e3]@15 ~", C: "e3@5 f#3 g3@4 ~ f3@5",
  D: "[d#3 e3@19 ~@12, a1@15 ~]/2", E: "a1@15 ~", F: "~@5 e3@5 ~ d#3@3 ~@2",
  G: "[~@21 d#3 e3@4 ~ d#3 e3@4, d3@25 ~@2 d3@3 ~@2]/2", H: "g2@15 ~", I: "c3@15 ~", J: "d#2@15 ~", K: "d2@15 ~",
  L: "[d#3 e3@24 ~@7, a1@15 ~]/2", M: "[~@21 d#3 e3@4 ~ d#3 e3@4, d3@25 ~@2 g1@3 ~@2]/2",
  N: "[g2@15 ~@6 f#3 g3@4 ~ f#3 g3@4, g1@25 ~@2 g1@3 ~@2]/2", O: "[c2,e3]@15 ~",
  P: "c2@3 ~@2 f#3 g3@4 ~ f#3 g3@4, ~@5 b1@3 ~@3 a#1@3 ~@2", Q: "[a1,a3]@15 ~", R: "~@5 f#3 g3@4 ~ f#3 g3@4, a1@15 ~",
  S: "[e3@3 d3@13 ~@5 d3 d#3@2 ~ d3@2 ~ c#3 d3@3, d2@25 ~@2 g2@3 ~@2]/2",
  T: "[~@2 g2@13 ~@6 f#3 g3@4 ~ f#3 g3@4, g1@15 ~]/2", U: "c2@3 ~@2 b1@3 ~@3 a#1@3 ~@2",
  V: "[e3@3 c3@13 ~@5 f#3 g3@4 ~ f#3 g3@4, d2@25 ~@2 g1@3 ~@2]/2", W: "[g2@15 ~@6 f#3 g3@4 ~ f#3 g3@4, g1@15 ~]/2",
  X: "[c2@25 ~@2 g1@3 ~@2, e3@15 ~]/2", Y: "[c2@15 ~]/2",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~
>`.pickRestart({
  A: "x",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~@4 x ~@5 x ~@4]!46 ~@2>").gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 x ~>").gain(0.2)

// drums · china
const china = s("cr").struct("<~@47 x ~>").gain(0.2)

stack(piano, piano_2, kick, rim, hihat, mid_tom, china)

More by Louie Zong