Strudelify

ddu-du ddu-du ëëëë

BLACKPINK

KeyG majorTempo120 bpm
0:00/0:00
// ddu-du ddu-du ëëëë — BLACKPINK
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5240944; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 119 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 · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piano
const piano = note("<[e5@2 e5!2 g5@3 f#5] [b5 a#5 b5 g5 e5 ~@3] [e5@2 e5!2 g5@3 f#5] [b5 a#5 b5 g5 e5 ~@3] ~@115>")
  .s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note(`<
  A B A C D E F G D E H I J K L M N O P Q R S T U V W X Y Z AA AB AC Z AA AD AE AF AG AH AI AF AJ AK AL D AM AN AO D AP
  AQ B AR AS AT AU AV AW AX AY AZ BA Z AA AB AC Z AA AD BB AF AG AH BC BD BE BF AL D AM AN AO D AP AQ I BG BH BI BJ BG
  BH BK BL BM BN BO BP BM BN BO BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF CG CH
>`.pickRestart({
  A: "e5@2 e5!2 g5@3 f#5", B: "b5 a#5 b5 g5 e5 ~@3", C: "b5 a#5 b5 g5 e5 [g3,d4,d5,g5] [f#3,f#4,d5,f#5]@2",
  D: "e3@2 g3@2 [b3,e5]@2 [e3,e5]@2 g3@2 b3@2 e3@2 g5 a5, e5@2 ~@2 g5@3 g3", // E5 E
  E: "[c3,b5] [e3,a#5] [g3,b5] [c3,g5] [e3,e5] g3 c3 e3", F: "g3 b3 [d4,e5] [g3,e5] b3 d4 g3 [b3,f#5], e5@2 ~@2 g5@3 ~",
  G: "[d3,b5] [f#3,a#5] [a3,b5] [d3,g5] [f#3,d4,d5,g5] a3 d3 f#3, ~@3 [f#4,d5,f#5]", // G F# Asus2 G5 Gmaj7 D
  H: "g3 b3 [d4,e5] [g3,e5] b3 d4 g3 [b3,a5], e5@2 ~@2 g5@3 ~", // Dsus2 C B7
  I: "[d3,b5] [f#3,a#5] [a3,b5] [d3,g5] [f#3,e5] a3 d3 f#3", J: "~@2 e5!2 b4!4, [e3,g3,b3]@3 [e3,g3,b3]@3 [e3,g3,b3]@2",
  K: "e4!2 b4!2 c5 b4 ~ b4, [c3,e3,g3]@3 [c3,e3,g3]@3 [c3,e3,g3]@2", // C
  L: "e5!2 b4!2 g4!2 b4!2, [g3,b3,d4]@3 [g3,b3,d4]@3 [g3,b3,d4]@2", // G
  M: "e4!2 b4!2 c5 b4 [d3,f#3,a3]@2, [d3,f#3,a3]@3 [d3,f#3,a3]@3 ~@2", // D
  N: "e5!2 b4!2 g4!2 [e3,b4] [g3,b4], [e3,g3,b3]@3 [e3,g3,b3]@3 ~@2", // E5 G Em
  O: "e4!2 b4!2 c5 b4 c3 e3, [c3,e3,g3]@3 [c3,e3,g3]@3 ~@2", // C
  P: "e5@2 b4!2 g4@2 [g3,b4] [b3,b4], [g3,b3,d4]@3 [g3,b3,d4]@3 ~@2", // G B G
  Q: "e4!2 b4!2 c5 b4 d3 f#3, [d3,f#3,a3]@3 [d3,f#3,a3]@3 ~@2", // D
  R: "e3@2 g3@2 g4!2 ~ g4!2 f#4 ~ e4 [e3,g4]@2 g3@2, ~@2 b3 e3 g3 b3 ~@2", // Em
  S: "c3@2 e3@2 g4!2 ~ g4!2 f#4 ~ e4 [c3,g4]@2 e3@2, ~@2 g3 c3 e3 g3 ~@2", // C5
  T: "g3@2 b3@2 g4!2 ~ g4!2 f#4 ~ e4 [g3,g4]@2 [b3,f#4]@2, ~@2 d4 g3 b3 d4 ~@2", // G B5
  U: "d3@2 f#3@2 g4!2 ~ g4!2 f#4 ~ e4 [d3,g4]@2 [f#3,e4]@2, ~@2 a3 d3 f#3 a3 ~@2", // G5 F#7
  V: "e3 [g3,e4] [b3,g4] [e3,e4] g3 [b3,e4] [e3,g4] [g3,e4]", // C Em E E5 Em C
  W: "c3 [e3,e4] [g3,g4] [c3,e4] e3 [g3,e4] [c3,g4] [e3,e4]", // E G C C5 E
  X: "g3 [b3,e4] [d4,g4] [g3,e4] b3 [d4,e4] [g3,g4] [b3,e4]", // E5 G5 C Dsus2 G E5
  Y: "d3 [f#3,e4] [a3,g4] [d3,e4] f#3 [a3,e4] [d3,g4] [f#3,e4]", Z: "~@4 b4 a4 g4 e4, [e3,g3,b3]@15 ~",
  AA: "a4@11 ~ g4@2 a4@2, [c3,e3,g3]@15 ~", AB: "b4@3 b4@3 b4@2 b4@3 a4@3 b4@2, [g3,b3,d4]@15 ~",
  AC: "c5@3 c5@3 c5@2 c5@3 b4@3 a4@2, [d3,f#3,a3]@15 ~", AD: "b4@3 b4@3 b4@4 a4@2 a4@2 b4@2, [g3,b3,d4]@15 ~",
  AE: "c5@3 c5@3 c5@2 b4@4 a4@4, [d3,f#3,a3]@15 ~", // D
  AF: "[e3,g3,b3]@6 ~@2 g4@3 ~@3 g4@2, ~@6 [e3,g3,b3]@5 a4@3 ~@2, ~@3 [e3,g3,b3]", // Em
  AG: "a4@3 a4@3 g4@2 a4@3 ~@3 e4@2, [c3,e3,g3]@6 [c3,e3,g3]@5 e4@3 ~@2, ~@3 [c3,e3,g3]", // C
  AH: "g4@3 a4@3 g4@2 a4@3 ~@3 g4@2, [g3,b3,d4]@6 [g3,b3,d4]@5 e4@3 ~@2, ~@3 [g3,b3,d4]", // G
  AI: "b4 a4!2 g4 a4@2 [d3,f#3,a3,g4]@2, [d3,f#3,a3]@3 [d3,f#3,a3]@3 ~@2", // D
  AJ: "a4@3 a4@3 g4@2 a4@4 [c3,e3,g3,b4]@4, [c3,e3,g3]@3 [c3,e3,g3]@3 ~@2", AK: "e5@2 d5@2 b4!2 a4!2, [g3,b3,d4]@15 ~",
  AL: "g4@2 g4@2 g4@2 g4@2 g4!2 ~@2 f#4!2 ~@2, [d3,f#3,a3]@15 ~", // D
  AM: "[c3,b5] [e3,a#5] [g3,b5] [c3,g5] [e3,e5] [g3,g5] [c3,g5] [e3,g5]", // Cmaj7 Edim G C5 E G C5 Em
  AN: "g3 b3 [d4,e5] [g3,e5] b3 d4 g3 [b3,f#5], [e5,g5]@2 ~@2 g5@3 ~", // Dsus2 C B5 Em
  AO: "[d3,g5]@2 [f#3,g5]@2 [a3,g5]@2 [d3,g5]@2 g5!2 a3@2 f#5!2 f#3@2, ~@4 f#3 ~ d3 ~", // G5 Gmaj7 A7 G5
  AP: "[c3,b5] [e3,a#5] [g3,b5] [c3,g5] [e3,e5] [g3,g5] [c3,g5] [e3,a5]", // Cmaj7 Edim G C5 E G C5 A5
  AQ: "a5 g5 [b3,e5]@2 [d4,e5]@2 [g3,e5]@2 b3@2 d4@2 g3@2 g5 a5, g3 ~@3 g5@3 b3", AR: "~ [b3,e4,g4]!7",
  AS: "[e3,b3,e4,g4]!4 ~ [g3,e4,g4] [f#3,e4,g4] ~", // Em C
  AT: "e3@2 g3@2 g4 f#4 e4 f#4 g4 f#4 e4 f#4 g4 e4 g3@2, ~@2 b3 e3 g3 b3 e3 ~",
  AU: "c3@2 [e3,g4]@2 [g3,g4]@2 [c3,g4]@2 [e3,g4]@2 [g3,g4]@2 g4 e4 e3@2, ~@6 c3 ~", // Em G C5 Em G
  AV: "g3@2 b3@2 e4!2 [g3,g4]@2 e4 d4 e4!5 g4, ~@2 d4 ~ b3 d4 g3 b3", // G
  AW: "[d3,e4] [f#3,e4] [a3,g4] [d3,d4] f#3 a3 [d3,e4] [f#3,g4], ~@2 e4 ~", // Dsus2 F#7 A7 D Dsus2 Gmaj7
  AX: "[e3,b4]@2 [g3,g4]@2 [b3,f#4]@2 [e3,g4]@2 g4 f#4 e4 f#4 g4 f#4 e4 f#4, ~@4 g3 b3 e3 g3", // E5 G B5 Em
  AY: "g4 f#4 e4 f#4 g4 f#4 e4 f#4 e3@2 g3@2 c3@2 e3@2, c3 e3 g3 c3 g4@2 e4@2",
  AZ: "[g3,b4]@2 [b3,g4]@2 [d4,f#4]@2 [g3,g4]@2 g4 f#4 e4 f#4 g4 f#4 e4 f#4, ~@4 b3 d4 g3 b3", // G Em D G
  BA: "g4 f#4 e4 f#4 g4 f#4 e4 f#4 f#3@2 a3@2 d3@2 f#3@2, d3 f#3 a3 d3 g4@2 e4@2",
  BB: "c5@3 c5@3 c5@2 b4@4 [d3,f#3,a3,a4]@4, [d3,f#3,a3]@11 ~@5", // D
  BC: "b4 a4!2 g4 g4@2 [d3,f#3,a3,b4]@2, [d3,f#3,a3]@3 [d3,f#3,a3]@3 ~@2", // Bm7 D
  BD: "[e3,g3,b3]@4 [e3,g3,b3]@4 [e3,g3,b3,g4]@3 ~@3 g4@2, ~@11 a4@3 ~@2, ~@3 [e3,g3,b3]", // Em
  BE: "[c3,e3,g3,a4]@3 ~@3 g4@2 [c3,e3,g3,a4]@4 [c3,e3,g3,b4]@4, ~@3 a4@3 ~@10, ~ [c3,e3,g3] ~@2", // Am7 Cmaj7 C
  BF: "[g3,b3,d4]!4 [g3,b3,d4,b4]!2 [g3,b3,d4,a4]!2, e5 d5 ~@2", BG: "e5@2 e5@2 e5@2 e5@2 e5@3 b4@3 b4@2, [e3,g3,b3]!2",
  BH: "c5@3 c5@3 d5@2 c5@3 b4@3 b4@2, [c3,e3,g3]!2", BI: "[g3,b3,d4]@4 ~@3 c5, b4@11 ~@5, ~ [g3,b3,d4]",
  BJ: "[d3,f#3,a3]!2, b4@11 ~@5", BK: "[g3,b3,d4]@4 ~@3 a4, b4@11 ~@5, ~ [g3,b3,d4]",
  BL: "b4@2 g5!2 g5@2 g5!2 g5@2 g5!2 f#5@2 ~@2, [d3,f#3,a3]!2", // D
  BM: "e3@2 g3@2 b3@2 e3@2 g3@2 b3@2 e3@2 g5 a5, e4@3 e5@4 g3",
  BN: "[c3,b5]@2 [e3,a5]@2 [g3,b5]@2 [c3,g5]@2 e3@2 g3@2 c3@2 g5 a5, ~@4 e5@2 ~ e3", // Cmaj7 A5 G C5
  BO: "[g3,b5] [b3,a5] [d4,b5] [g3,g5] b3 d4 g3 b3, ~@2 e5 ~", // G B7 G
  BP: "d3@2 g5!2 [a3,g5]@2 g5!2 [f#3,g5]@2 g5!2 [d3,f#5]@2 f#3@2, ~ f#3 ~ d3 ~ a3 ~@2", // A7 Gmaj7 D
  BQ: "d3 f#3 a3 d3 f#3 [a3,d5,g5] d3 f#3, ~@3 [f#4,d5,f#5]", // Dsus4 D
  BR: "e5@2 e5!2 f5 e5!2 f5, [e3,g3,b3]@3 [e3,g3,b3]@3 [e3,g3,b3]@2", // Em
  BS: "e5!3 b4 f5 e5!2 b5, [c3,e3,g3]@3 [c3,e3,g3]@3 [c3,e3,g3]@2", // C
  BT: "e5@2 e5!2 f5 e5!2 f5, [g3,b3,d4]@3 [g3,b3,d4]@3 [g3,b3,d4]@2", // G
  BU: "e5!3 b4 f5 e5!2 b5, [d3,f#3,a3]@3 [d3,f#3,a3]@3 [d3,f#3,a3]@2", // D
  BV: "[e3,g3,b3,b5]@2 b5 g5 e5@2 [e3,g3,b3,b5]@2 b5 g5 e5@2 e5@2 f#5@2, ~@3 [e3,g3,b3]", // Em
  BW: "[c3,e3,g3,b5]@2 b5 g5 e5@2 [c3,e3,g3,b5]@2 b5 g5 e5@2 e5@2 f#5@2, ~@3 [c3,e3,g3]", // Cmaj7 C
  BX: "[g3,b3,d4,b5]@2 b5 g5 e5@2 [g3,b3,d4,b5]@2 b5 g5 e5@2 e5@2 f#5@2, ~@3 [g3,b3,d4]", // G
  BY: "[d3,f#3,a3]@2 g5!2 g5@2 g5!2 g5@2 g5!2 f#5@2 f#5@2, ~@3 [d3,f#3,a3] ~@2 [d3,f#3,a3]@2", // D
  BZ: "[e3,b3] ~@3 f5 e5!2 f5, e5!2 ~@2, ~@3 e4@3 e4@2", CA: "[c3,g3,e5] e5!2 b4 f5 e5!2 b5, ~@3 e4@3 e4@2",
  CB: "[g3,b3] ~@3 f5 e5!2 f5, e5!2 ~@2, ~@3 e4@3 e4@2", // G
  CC: "e5@2 g3!2 [g3,e5]@2 g3!2 [g3,f5]@2 g3!2 e5@2 b5@2, ~ e5 ~ b4 ~ e5 f#3@2", // C G7
  CD: "g5@2 g5 f#5 e5@2 g5@2 g5 f#5 e5@2 e5@2 f#5@2, e3@3 e4@3 e4@2",
  CE: "g5@2 g5 f#5 e5@2 g5@2 g5 f#5 e5@2 e5@2 f#5@2, [c3,g3]@3 e4@3 e4@2", // C5
  CF: "b5@2 b5 g5 e5@2 b5@2 b5 g5 e5@2 e5@2 f#5@2, [g3,b3]@3 e4@3 e4@2", // G
  CG: "[e3,g3,g5]@2 [e3,g3,g5]@2 [e3,g3,g5]@2 [e3,g3,g5]@2 [g3,g5]!2 ~@2 [f#3,f#5]!2 ~@2", // Em G F#
  CH: "[b2,e3,g3,e4,g4,b4,e5]@15 ~", // Em
})).s("gm_piano").gain(0.3)

stack(piano, piano_2)