Strudelify
Turandot SC 91 cover art

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 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 15 ms ahead of the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: 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@8 b3@8 b3@3 b3@2 b3@3 a#3@6 f#3@2", 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@4 g4@4 a4!24",
  Y: "a4!8 ~@24",
})).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: "~@19 e5 f#5!4 g5!4 f#5!4", H: "e5!4 f#5!6 d5!2 [c#5,d5] c#5!7 d5!8 e5!4",
  I: "e5!4 f#5!4 g5!4 ~@4 d5@4 e5@4 f#5@4 e5@4", 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@4 d5@12 ~@8 d5@24 b4@6 d5@2 g5@24 d5@8 b5!8]/3",
  M: "b5!24 ~@4 d6!4", N: "e6!4 f#6!4 e6!4 d6!4 e6!6 c#6!2 b5!8", O: "b5!12 e6!4 f#6!4 g6!4 f#6!4 e6!4",
  P: "f#6!6 d6!2 c#6!8 d6!8 e6!8", Q: "g6!4 a6@4 a6!24", R: "a6!8 ~@24",
})).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!4 e5!4 f#5!4 e5!4 d5!4 e5!6 c#5!2 [b4,c#5] b4!3", M: "b4!16 e5!3 ~@13",
})).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: "~@22 b3!10", G: "b3!4 b4!8 a4!20",
  H: "a4!4 f#4!4 g4!4 a4@8 a4@8 a4@4", 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",
  L: "[d4,b4]@4 d5@4 [b4,g5]@4 d5@4 [d4,b4]@8 a5!8", M: "a5!24 [g3,e4]!8", N: "[g3,e4]!16 [d4,b4]!8 b3!8", O: "b3!32",
  P: "b4!8 c#5!8 d5!8 e5!8", Q: "g5!4 a5@4 f#5!24", R: "f#5!8 ~@24",
})).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: "[~@24 e5@4 d5@8 d5@12 b4@4 a#4@6 f#4@2 g4@8 g4@8 ~@16 a3!4]/3", O: "a3!28 b3!4", P: "b3!22 ~@10",
})).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: "~@22 e2!10",
  F: "e2!4 g2!8 a2!8 b2!8 c#3!4",
  G: "[c#3!4 a2!4 g2!4 f#2@16 f#2@16 e2@24 g2@8 a2@16 a2@20 ~@8 g2@16 g2@16 g2@16 g2@8 g2@8 b2!8]/6", H: "b2!24 d2!8",
  I: "d2!16 f#2!8 g2!8", J: "f#2!8 e2!24", K: "g2!8 a2!8 b2!8 c#3!8", L: "a2!4 g2!4 d2!24", M: "d2!8 ~@24",
})).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: "[~@8 a2@12 ~@8 g2@40 ~@16 d#2@8 g2@16 ~@16 g2@24 d#2@8 g2@24 ~@8 d2!4]/6", H: "d2!20 f#2!8 g2!4",
  I: "g2!4 f#2!8 e2!10 ~@10",
})).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