Strudelify

ddu-du ddu-du ëëëë

Teddy Park

KeyG majorTempo120 bpm
0:00/0:00
// ddu-du ddu-du ëëëë — Teddy Park
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5958778; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · violin
const violin = note(`<
  ~@6 A B A B A B C D E F E D E F A B A B A B A B G H I J G H I J ~@14 I K L M ~@4 N@3 O N@2 P N Q@2 R N ~ N P N Q@3 S T
>`.pickRestart({
  A: "e4@2 ~@2 e4 ~ e4 ~ g4@2 ~@4 g4 ~", B: "b4 ~ a#4 ~ b4 ~ g4 ~ e4@2 ~@6", C: "~@2 b4!2 g4!4", D: "g4!5 b4 ~ b4",
  E: "b4!4 g4!4", F: "g4!6 ~@2", G: "g4 f#4", H: "e4 d4", I: "e4 g4", J: "a4 ~", K: "b4 e5", L: "b4 g4", M: "e4 ~",
  N: "e4", O: "e4@3 ~", P: "f#4!2", Q: "g4", R: "f#4", S: "a4", T: "g4 ~@3",
})).s("gm_violin").gain(0.3)

// other · violin · "Violin 3"
const violin_2 = note(`<
  ~@4 A B A B A B A B C D C D A B A B ~@8 E F G H I F G J ~@4 B ~ B ~ B ~ B ~ B ~@4 K L M L M L M L M N O P O Q@2 R O ~
  O P O Q@3 O S
>`.pickRestart({
  A: "g4@2 ~@2 g4 ~ g4 ~ g4@2 ~@4 g4 ~", B: "g4@2 ~@2 g4 ~ g4 ~ g4@2 ~@6", C: "g4@2 ~@2 g4 ~ g4 ~ d4@2 ~@4 d4 ~",
  D: "d4@2 d4!2 d4@2 ~@2", E: "~@4 b4 a4 g4 e4", F: "g4 a4@3 ~@2 g4 a4", G: "b4@2 b4@2 a4!3 b4", H: "c5!3 b4",
  I: "b4 a4 ~@2 b4 a4 g4 e4", J: "c5!3 a4", K: "b3 a#3 b3 g3 e4 ~@3", L: "g3@2 ~@2 g3 ~ g3 ~ g3@2 ~@4 g3 ~",
  M: "g3@2 ~@2 g3 ~ g3 ~ g3@2 ~@6", N: "b3", O: "c4", P: "d4!2", Q: "e4", R: "d4", S: "e4 ~@3",
})).s("gm_violin").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A B A B A B A B A B A B A B A B A B A B C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ A B A B A
  B A B D E F D G E G D ~ E F D G@3 E H
>`.pickRestart({
  A: "e3@2 ~@2 e3 ~ e3 ~ g3@2 ~@4 g3 ~", B: "b3 ~ a#3 ~ b3 ~ g3 ~ e3@2 ~@6", C: "~@2 e3@2 ~@2 e3 ~ e3 ~@7", D: "g3",
  E: "a3", F: "a3 b3", G: "b3", H: "g3 ~@3",
})).s("gm_cello").gain(0.48)

stack(violin, violin_2, cello)