Strudelify

Turandot SC 91

Giacomo Puccini

KeyG majorTempo60 bpm
0:00/0:00
// Turandot SC 91 — Giacomo. Puccini
// 60 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 11, 4/4 at bar 11, 2/4 at bar 22, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5974946; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 36 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · contrabass · "Violoncelle"
const contrabass = note("<A B C D E F G H I J K L M N O P@2 Q R@3 ~@3 S T U V@6 W X Y>".pickRestart({
  A: "~@12 d4@3 d4", B: "d4@4 d4@8 d3@3 d3", C: "d3 d3@2 ~", D: "~@11 d4 d4@3 c4",
  E: "b3@12 b3@12 b3@4 b3@4 b3@4 a#3@9 f#3@3", F: "g3@4 g3@4 g4@4 f#4@3 e4", G: "d4@4 d4@2 d4@2 d4@2 d4@2 d4@3 c4",
  H: "b3@4 b3@6 b3@2 a#3@3 f#3", I: "g3!2 ~@2", J: "~@2 d4@2 e4@2 f#4@2 e4@2 d4@2 e4@3 c#4", K: "b3@5 e4 f#4 g4",
  L: "f#4@2 e4@2 f#4@3 d4 c#4@4 d4@4", M: "e4!2 f#4 g4 a4@4", N: "a4@4 a4@3 f#4 f#4@8", O: "f#4@4 f#4@3 d4 a3@8",
  P: "[a3@4 e4@9 c#4 d4@8 ~@10]/2", Q: "~@8 d4@2 d4@3 c4 b3@2",
  R: "[b3@2 b3@2 d4@2 f#4@6 e4@2 d4@4 d4@6 b3@2 a#3@3 f#3 g3@4 g3@4 ~@10]/3", S: "e4 f#4 g4 a4@2 a4@2 a4",
  T: "a4@2 a4@3 f#4 f#4@4 f#4@4 f#4@2", U: "f#4@2 f#4@3 d4 a3@6 a3@2 a3@2",
  V: "[a3@2 e4@9 c#4 d4@12 b3@3 d4 g4@12 d4@4 b4@8 b4@8 a4@8 a4@8 a4@8 ~@12]/6", W: "~@7 e4",
  X: "f#4@6 g4@6 a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!3",
  Y: "~ a4!2 ~ a4!2 ~ a4!2 ~ a4 ~@37",
})).s("gm_contrabass").gain(0.3)

// other · string ensemble 1 · "Violons"
const string_ensemble_1 = note("<~@10 A B C D E F@2 ~@5 G H I J K L@3 M N O P Q R>".pickRestart({
  A: "~@6 f#5 g5", B: "f#5@2 e5@2 f#5@3 d5 c#5@4 d5@4", C: "e5!2 f#5 g5 ~ d5 e5 f#5",
  D: "e5@2 d5@2 e5@3 c#5 ~@2 b4@2 c#5@2 d5@2", E: "c#5@2 b4@2 d5@3 d5 a4@2 d5@2 f#5@2 e5@2",
  F: "[d5 c#5 d5@3 ~@2 d5@3 ~@6]/2", G: "~@28 e5 ~ f#5!2 ~ f#5!2 ~ g5!2 ~ g5!2 ~ f#5!2 ~ f#5!2 ~",
  H: "e5!2 ~ e5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ d5!3 c#5!2 ~ c#5!2 ~ c#5!2 ~ c#5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ e5!2 ~ e5!2 ~",
  I: "e5!2 ~ e5!2 ~ f#5!2 ~ f#5!2 ~ g5!2 ~ g5!2 ~@7 d5@6 e5@6 f#5@6 e5@6", J: "d5@2 e5@3 c#5 ~@2 b4@2 c#5@2 d5@2 c#5@2",
  K: "b4@2 d5@3 d5 a4@2 d5@2 f#5@2 e5@2 d5@2",
  L: "[c#5@6 d5@18 ~@12 d5@36 b4@9 d5@3 g5@36 d5@12 b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~]/3",
  M: "b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!3 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5 ~@7 d6!2 ~ d6!2 ~",
  N: "e6!2 ~ e6!2 ~ f#6!2 ~ f#6!2 ~ e6!2 ~ e6!2 ~ d6!2 ~ d6!2 ~ e6!2 ~ e6!2 ~ e6!2 ~ c#6!3 b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~",
  O: "b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ e6!2 ~ e6!2 ~ f#6!2 ~ f#6!2 ~ g6!2 ~ g6!2 ~ f#6!2 ~ f#6!2 ~ e6!2 ~ e6!2 ~",
  P: "f#6!2 ~ f#6!2 ~ f#6!2 ~ d6!3 c#6!2 ~ c#6!2 ~ c#6!2 ~ c#6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ d6!2 ~ e6!2 ~ e6!2 ~ e6!2 ~ e6!2 ~",
  Q: "g6!6 a6@6 a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!2 ~ a6!3",
  R: "~ a6!2 ~ a6!2 ~ a6!2 ~ a6 ~@37",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violons" · soft notes
const string_ensemble_1_soft = note("<A@2 B C A D E F B G H ~@5 I J@3 K L M ~@13>".pickRestart({
  A: "~ a3 b3 d4 b4@2 [f#4,d5]@2", B: "~ a3 b3 d4 a4 b4 d5 g5", C: "a5 b5 d6 g6 a6 b6 ~@2", D: "~ a3 b3 d4 d5@4",
  E: "~ a3 b3 d4 a4 c5 d6@2", F: "~ a3 b3 d4 a4 c5 [f#4,d5]@2", G: "~@2 d5@2 e5@2 f#5@2 e5@2 d5@2 e5@3 c#5",
  H: "b4@5 e5 ~@2", I: "~@3 b4 d4 a4 b4 d5", J: "[b4 d5 a5 b5 ~ c4@2 b3@4 c4@4 b3@2 ~@4 d5@2 ~]/3",
  K: "a3 b3 d4 a4 b4 d5 g5 ~",
  L: "d5!2 ~ d5!2 ~ e5!2 ~ e5!2 ~ f#5!2 ~ f#5!2 ~ e5!2 ~ e5!2 ~ d5!2 ~ d5!2 ~ e5!2 ~ e5!2 ~ e5!2 ~ c#5!3 b4!2 ~ b4!2 ~",
  M: "b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ e5!2 ~ e5 ~@20",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violons"
const string_ensemble_1_2 = note("<~@11 A@2 B@2 C ~ D E ~@3 F G H I@2 J K L M N O P Q R>".pickRestart({
  A: "[~@2 b4@2 a4@2 a4@3 ~ f#4 g4 a4@4]/2", B: "[a4@4 a4@3 f#4 [b3,f#4]@16 a3@2 f#4@2 d5@2 c#5@2]/2", C: "b4 ~@7",
  D: "~@4 f#5@2 g5@2 d5@2 d5@3 c5 b4@2", E: "b4!2 d5 f#5@3 ~@2", F: "~@33 b3!2 ~ b3!2 ~ b3!3 ~ b3!2 ~ b3!2",
  G: "~ b3!2 ~ b3 ~ b4!2 ~ b4!2 ~ b4!2 ~ b4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~ a4!2 ~",
  H: "a4!2 ~ a4!2 ~ f#4!2 ~ f#4!2 ~ g4!2 ~ g4!2 ~ a4@12 a4@12 a4@6",
  I: "[a4@2 a4@3 f#4 [b3,f#4]@16 a3@2 f#4@2 d5@2 c#5@2 b4@2]/2", J: "a4 g4@3 ~@3 b3",
  K: "[b3,d4] g4 [d4,b4] [g3,d4] g4 [d4,b4] d5 g4", // Bm G G5 G
  L: "[d4,b4]@6 d5@6 [b4,g5]@6 d5@6 [d4,b4]@12 a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~", // G Em G
  M: "a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5!3 ~ a5!2 ~ a5!2 ~ a5!2 ~ a5 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~", // C
  N: "[g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [g3,e4]!2 ~ [d4,b4]!2 ~ [d4,b4]!2 ~ [d4,b4]!2 ~ [d4,b4]!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~", // C G
  O: "b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~",
  P: "b4!12 c#5!2 ~ c#5!2 ~ c#5!2 ~ c#5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ d5!2 ~ e5!2 ~ e5!2 ~ e5!2 ~ e5!2 ~",
  Q: "g5!6 a5@6 f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5!3",
  R: "~ f#5!2 ~ f#5!2 ~ f#5!2 ~ f#5 ~@37",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violons" · soft notes
const string_ensemble_1_soft_2 = note("<A B C@2 D E F G H I J@2 ~@3 K L M N@3 O P ~@13>".pickRestart({
  A: "d4@2 g4 c4", B: "b3@2 g4 b3", C: "[b3@2 d5@5 f#4]/2", D: "g4@2 g4 c4", E: "b3 c4", F: "b3 g4@2 [d5,f#5]",
  G: "~ d4@2 d4", H: "~@4 g4@3 ~", I: "a3@3 a3", J: "[b3@5 ~@3]/2", K: "~ a4 g4@3 ~@3", L: "b3 d4 a4 g4@4 b4",
  M: "g4 b4 ~@6", N: "[~@36 e5@6 d5@12 d5@18 b4@6 a#4@9 f#4@3 g4@12 g4@12 ~@24 a3!2 ~ a3!2 ~]/3",
  O: "a3!2 ~ a3!2 ~ a3!2 ~ a3!2 ~ a3!2 ~ a3!3 ~ a3!2 ~ a3!2 ~ a3!2 ~ a3 ~ a3!2 ~ a3!2 ~ a3!2 ~ a3!2 ~ b3!2 ~ b3!2 ~",
  P: "b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~ b3!2 ~@16",
})).s("gm_string_ensemble_1").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@5 [~@10 a#3 ~ d#3 ~ a#3 ~] ~@13 [~@2 a4 b4 ~@4] ~@16>")
  .s("gm_pizzicato_strings").gain(0.15)

// bass · string ensemble 1
const bass = note("<~@11 A B C D@2 ~@6 E F G@6 H I J K L M>".pickRestart({
  A: "~ g2 a2 b2", B: "c#3@2 a2 g2 f#2@4", C: "f#2 e2", D: "[g2 e2 a2@3 ~@3]/2",
  E: "~@33 e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~",
  F: "e2!2 ~ e2!2 ~ g2!2 ~ g2!2 ~ g2!2 ~ g2!2 ~ a2!2 ~ a2!2 ~ a2!2 ~ a2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ c#3!2 ~ c#3!2 ~",
  G: "[c#3!2 ~ c#3!2 ~ a2!2 ~ a2!2 ~ g2!2 ~ g2!2 ~ f#2@24 f#2@24 e2@36 g2@12 a2@24 a2@30 ~@12 g2@24 g2@24 g2@24 g2@12 g2@12 b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~]/6",
  H: "b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!3 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~",
  I: "d2!2 ~ d2!3 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ g2!2 ~ g2!2 ~ g2!2 ~ g2!2 ~",
  J: "f#2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!3 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2 ~",
  K: "g2!2 ~ g2!2 ~ g2!2 ~ g2!2 ~ a2!2 ~ a2!2 ~ a2!2 ~ a2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ b2!2 ~ c#3!2 ~ c#3!2 ~ c#3!2 ~ c#3!2 ~",
  L: "a2!2 ~ a2!2 ~ g2!2 ~ g2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!3",
  M: "~ d2!2 ~ d2!2 ~ d2!2 ~ d2 ~@37",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · string ensemble 1 · soft notes
const bass_soft = note("<A@2 B@2 C A@2 D E@2 F@2 ~@3 G@6 H I ~@13>".pickRestart({
  A: "g2@3 d#2", B: "[g2@5 ~@2 d#2]/2", C: "g2 ~", D: "g2@3 c3", E: "d3 d2@2 f#2", F: "[g2 f#2 e2 e2@2 ~@3]/2",
  G: "[~@12 a2@18 ~@12 g2@60 ~@24 d#2@12 g2@24 ~@24 g2@36 d#2@12 g2@36 ~@12 d2!2 ~ d2!2 ~]/6",
  H: "d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ d2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ g2!2 ~ g2!2 ~",
  I: "g2!2 ~ g2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ f#2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~ e2!2 ~@16",
})).s("gm_string_ensemble_1").gain(0.2)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@4 [~@10 a#2 ~ d#2 ~ a#2 ~] ~@13 [~@8 a#2 ~ d#2 ~ a#2 ~@3] ~@17>")
  .s("gm_pizzicato_strings").gain(0.2)

// bass · acoustic bass · "Contrebasse"
const bass_2 = note("<A@2 B@2 A C D A E F G@2 H@3 I@3 J@6 K@7 L M N@2 ~>".pickRestart({
  A: "g2@3 d#2", B: "[g2@7 d#2]/2", C: "g2@8 ~@2 a#2 ~ d#2 ~ a#1 ~", D: "g2@6 ~ d#2", E: "g2", F: "d2@3 f#2",
  G: "[g2 f#2 e2@3 g2 a2 b2]/2", H: "[c#3@2 a2 g2 d2@8 g2@8 a2@4]/3", I: "[a2@5 ~@2 g2@14 d#2@2 ~]/3",
  J: "[d2@2 a2@2 b2@2 ~@2 d#2 ~ a#1 ~ d#2@2 g2@12 d#2@4 g2@16 d2@12 f#2@4 g2@4 f#2@4 e2@12 g2@4 a2@4 b2@4 c#3@2]/6",
  K: "[~@3 d2@8 g2@8 a2@4 a2@5 ~@2 g1@8 g1@8 g1@4 d2@6]/7", L: "f#2 g2 f#2 g2", M: "f#2 e2 g2 a1",
  N: "[b1@2 c#2@2 a1 g1 d1@4 d1@4 ~@2]/2",
})).s("gm_acoustic_bass").gain(0.2)

stack(
  contrabass, string_ensemble_1, string_ensemble_1_soft, string_ensemble_1_2, string_ensemble_1_soft_2,
  pizzicato_strings, bass, bass_soft, pizzicato_strings_2, bass_2
)

More by Giacomo Puccini