Strudelify

Doki Doki Literature Club

Dan Salvato

KeyC majorTempo120 bpm
0:00/0:00
// Doki Doki Literature Club — Dan Salvato
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4858142; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 20 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.

// chords · piano
const piano = note("<A B C D E F G H I J K L M N O P Q R@2 S>".pickRestart({
  A: "~@4 [c4,c5] [c4,c5]@5 [e4,e5] [e4,e5]@5", B: "[f4,f5] [f4,f5]@3 [g4,g5]@12",
  C: "a5 b5 [e5,g5]@2 g6 ~ c5@2 a4@2 [c5,e5]@2 ~@2 g6 f6, c5 ~@6 a4, ~ c6@3 ~@2 g6 ~ g6@4 ~@4", // Em C
  D: "[f4,e6]@2 ~ f6 g6@2 [f4,e6]@2 g4@2 [b4,d5]@2 c6@2 [g4,d6]@2, ~ [a4,c5] ~@2 d6@2 ~@2", // Fmaj7 Bm G5 Am
  E: "e6@2 c6@2 g4 a4 g4@2 g4 a4 g4@2 c5@3 c5, c5@2 g5 ~@5", F: "a4 b4 ~ g4 a4 ~ f4 g4 ~ e4 f4 ~ [e4,e5] ~ [d4,d5] ~",
  G: "[c4,c5]@2 [e5,g5]@2 g6 ~ c5@2 a4@2 [c5,e5]@2 ~@2 e6 f6, ~@6 a6 ~ g6@4 ~@2 a4@2", // C Em C
  H: "[f4,g6]@2 f6 e6 d6@2 [f4,a5]@2 g4@2 [b4,d5]@2 f5@2 [g4,a5]@2, ~@2 [a4,c5]@2 ~@4 g5 ~@7", // Fsus2 F Bm Gsus2 Am
  I: "g5@2 e6@2 g4 a4 g4@2 g4 a4 g4@2 [e5,c6,e6]!2 ~ [e5,c6,e6], c5@2 c6 ~@3 c5 ~", // C
  J: "~@6 c4 ~ e4 ~ f4 ~ c5@2 d5@2, ~@12 g4 ~ c4 ~",
  K: "c5@2 c6!2 c6@2 [c5,c6]@2 a4@2 [c5,e5]@2 b5@2 [a4,a5]@2, ~ [e5,g5] ~@2 c6@2 ~@2", // C A Em
  L: "f4@2 [a4,c5]@2 c6 ~ f4@2 g4@2 [b4,d5]@2 ~@2 g4@2, g5@2 ~ e6@2 g6@3, ~@6 d6 ~@9", // Am Bm
  M: "~@2 [a4,f5,a5]@2 [g4,e5,g5] a4 ~@2 g4 a4 g4@2 c5@2 [g3,g4] [a3,a4], c5@4 ~ [e4,c5,e5]@2 [d4,b4,d5]@2 ~@7, ~@3 g4 ~@4", // Dm C G A C G
  N: "[c4,c5]@2 a5@2 c6@2 d6@2 d#6@2 d6@2 [c4,c5] [a3,a4]@2 [c4,c5]", // C A C
  O: "c5 [g4,c5]@2 [g4,c5] [a4,c5] [c5,e5] [f4,b4] [e4,a4], ~ [e5,g5] ~@2 g4@2 ~@2", // C5 Am C Fdim A5 Em
  P: "f4@2 [a4,c5]@2 [e4,c5]@2 [f4,d5] e5 g4@2 [g4,g5]@4 g4@2, [c4,g4]@4 ~@3 [f4,f5]@3 [b4,d5]@2 ~@4", // Am C Dm G C5 F Bm
  Q: "~@2 [a4,f5,a5]@2 [g4,e5,g5] a4 ~@2 g4 a4 g4@2 c5@2 [g3,g4] [a3,a4], c5@4 ~ [e4,c5,e5]@2 [d4,b4,d5]@6 ~@3, ~@3 g4 ~@4", // Dm C G A C G
  R: "c4 ~ c4 ~ e4 ~ e4 ~ f4 ~ f4 ~ g4 ~ g4 ~",
  S: "[c4,c5] ~ [c4,c5] ~ [e4,e5] ~ [e4,e5] ~ [f4,f5] ~ [f4,f5] ~ [g4,g5]!2 ~ [c5,c6]", // C E F G C
})).s("gm_piano").gain(0.3)

stack(piano)

More by Dan Salvato