Strudelify

La liste de Schindler

Quatuor

KeyD minorTempo120 bpm
0:00/0:00
// La liste de Schindler — Quatuor
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5516514; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 40 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · violin
const violin = note("<A B C D E F G H I J K L M N O P Q R S T ~@4 U V W X@2 Y E F G H I J K L M Z>".pickRestart({
  A: "e4 d4 f4@2 e4@2 c4 b3", B: "d4@3 c4 b3 d4 c4@2", C: "b3 a3", D: "a3", E: "d4@2 d4!2", F: "f4@2 c4@2 f4 g4 a4@2",
  G: "a4 d4 a4 d4 c5 bb4 a4 g4", H: "c4 bb3 e4 g4 bb4 a4 g4 f4", I: "g4 bb3 g4 bb3 a4 g4 f4 g4", J: "a4@3 ~",
  K: "e4 bb4 f4 db5", L: "a4@2 g4@2 e4@2 a4 e4", M: "g4 a4", N: "~@2 d5 ~ d4@4", O: "d5@2 d5!2", P: "a4@4 f4 g4 a4@2",
  Q: "d5 g4", R: "c5@2 f4 g4", S: "e4 a4", T: "d5@3 e5 f5@8 ~@4", U: "~@14 e5 d5", V: "f5@2 e5@2 b4@3 c5 d5@8",
  W: "c5 d5 b4@2 a4 ab4 b4@2 a4@8", X: "[e5 d5 g5@2 f5@2 b4@4 c5@2 d5@8 d4 e4 f4@2 f4 g4 a4@2 a4 b4 e5@2]/2",
  Y: "f5 a4@2 ~", Z: "~@2 d5 ~ f4@4",
})).s("gm_violin").gain(0.15)

// other · tremolo strings
const tremolo_strings = note("<~@20 d5 f5 d5 bb4 ~@16>").s("gm_tremolo_strings").gain(0.08)

// other · recorder · "Flûte à bec"
const recorder = note("<~ A ~ B C D E F G H I J K L M N O P Q R S T U@2 V@2 ~@3 W C D E F G H I J K X>".pickRestart({
  A: "c6 b5 d6@6", B: "a5", C: "a5@2 bb5 a5", D: "d6@4 f5 c6 f5@2", E: "a5!2", F: "bb5 c6", G: "d6@2 e6 db6",
  H: "f6@3 ~", I: "e6 d6!2 a5", J: "a5@2 g5@2 a5@2 f5 e5", K: "d6@2 d6 db6", L: "~@2 d6 ~@3 a5 ~",
  M: "a6 d6 a6 d6 bb6 a6 f6 a5", N: "f6 g5 f6 g6 a6@4", O: "a5 d6", P: "c6@2 f5 e5", Q: "e5 a5", R: "a5@3 ~",
  S: "~@2 a5 g5 bb5@2 a5@2 e5@3 f5 g5@4", T: "~@2 e6 g6 e6@2 d6 db6 e6@2 d6@2 a5@4",
  U: "[~@2 a5 g5 c6@2 bb5@2 e5@3 f5 g5@6 g5 a5 bb5@2 bb5 c6 d6@2 d6 e6 e6@4]/2", V: "[~@7 b5@2 g5 d6@6]/2",
  W: "~ c6@2 ~", X: "~@2 d6 ~ d6@4",
})).s("gm_recorder").gain(0.13)

// other · acoustic guitar nylon · "Guitare classique"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M ~ N O P Q R S ~@4 T@2 ~@3 U E F G H I J K L M V
>`.pickRestart({
  A: "a3 e4 a4 d5 ~@4", B: "~@4 a3 e4 a4 d5", C: "a3 e4 a4 ~@5", D: "a3 e4 a4 ~ e4@4", E: "d3@2 a3 d4 bb3@2 d3@2",
  F: "a3@2 c4 bb3 f3 c4 f3@2", G: "d3@2 a3 d4 g3@2 a3 d4", H: "bb3 c4!2 f3", I: "d3@2 g3@2 a3 e4 db4 a3",
  J: "d3@2 d4 f4 db4 a3 d4@2", K: "e4@2 bb3 d4 a3@2 db4 a3", L: "bb3!2 a3!2", M: "g3@2 bb3 g3 a3@2 db4 d4", N: "a3!4",
  O: "d3@2 bb3@2 c4 g3 db4@2", P: "f4!2 bb3!2", Q: "a3 c4 d4 bb3", R: "d4!3 db4", S: "d4 e4", T: "[~@7 b3@2 g3 b3@6]/2",
  U: "~ e3@2 ~", V: "a3",
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// other · pizzicato strings
const pizzicato_strings = note("<~@26 A B@2 C ~@10>".pickRestart({
  A: "d3 c3 a2 e3!2 a2 c3 a2", B: "[g2@2 a2 b2 b2@2 b2@4 d3 a2 c3 b2 d3 g2]/2", C: "f2 a2@2 a2",
})).s("gm_pizzicato_strings").gain(0.39)

stack(violin, tremolo_strings, recorder, acoustic_guitar_nylon, pizzicato_strings)