Strudelify

The Love for Three Oranges (opera) Op.33

Sergei Prokofiev

KeyC minorTempo96 bpm
0:00/0:00
// The Love for Three Oranges (opera) Op.33 — Sergei Prokofiev
// 96 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/349221; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · french horn · "Horn"
const french_horn = note("<A B ~@6 C D E@4 F@3 G H I J K@3 L M N O P Q R S T U H V J W X Y Z AA AB AC>".pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "~@4 c5!2 ~ c5 bb4@4 ab4@4",
  D: "~ bb4 d4@2", E: "f4 ~ bb3 ~ f4 ~ bb3 ~", F: "c4 ~ f3 ~ c4 ~ f3 ~", G: "c4@2 ~@2 f3@2 ~@2 g3@6 eb4!2",
  H: "eb4 ~ f4 ~ eb4 ~ ab4 ~", I: "b4@2 ~ b4 ab4@12", J: "c5@2 ~ c5 ab4@4 b4@2 ~ b4 ab4@4",
  K: "[eb5@2 ~ eb5 g4@14 ab4 bb4 b4@4 g4@2 ab4 bb4 b4@6 c5 d5 eb5@4 b4@2 c5 d5 eb5@4]/3",
  L: "~@4 eb4!2 ~ eb4 d4@4 c4@4", M: "~@2 d4@2 c4@3 ~", N: "bb3@2 ~ c4 eb3@2 ~ db4 f3@2 ~ eb4 g3@2 ~ f4",
  O: "ab3@2 ~@2 eb4@4 c4@4 d4@2 ~ g3", P: "bb3@2 ~ f4 ab3@2 ~ g4 bb3@2 ~ ab4 c4@2 ~ bb4", Q: "db4 ~ ab4@2 f4@2 g4!2",
  R: "g4@2 c4@2 c4!2 c4@2 db4@2 c4!4 c4@2", S: "db4@2 eb4 f4 g4!2 g4@2 ab4@2 bb4 c5 db5 c5 db5 f4",
  T: "eb4@2 f4@2 f4!2 f4@2 g4@2 f4@2 f4!2 f4@2", U: "g4@2 ab4 bb4 c5!2 c5@2 db5@6 eb4!2",
  V: "b4@2 ~ b4 ab4@4 ab4@2 ~ ab4 bb3@2 ~@2", W: "eb5@2 ~ eb5 g4@4 g4@2 ~@2 d4@2 ~@2", X: "eb4 ~ d4 ~ eb4 ~ d4 ~",
  Y: "b3 ~ bb3 ~ b3 ~ bb3 ~", Z: "c4 a4!2 g4", AA: "a4 b4 c5 gb4", AB: "a4 gb4 g4 ab4", AC: "a4 b4 c5 ~",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft = note("<~@2 A B C D@3 ~@36>".pickRestart({
  A: "eb4 ~ f4 ~ eb4 ~ ab4 ~", B: "b4@2 ~ b4 ab4@12", C: "c5@2 ~ c5 ab4@4 b4@2 ~ b4 ab4@4",
  D: "[eb5@2 ~ eb5 g4@14 ab4 bb4 b4@4 g4@2 ab4 bb4 b4@6 c5 d5 eb5@4 b4@2 c5 d5 eb5@4]/3",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_2 = note(`<
  A B ~@4 C@2 D E F@4 G@3 H I J K L@2 M N O P Q R S T U V W X Y Z AA AB M AC AD AE AF
>`.pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2",
  C: "[~@2 b3@2 ~@2 b3@3 ~ eb4@2 ~@2 eb4@2]/2", D: "~@4 eb4!2 ~ eb4 d4@4 c4@4", E: "~ d4 gb3@2",
  F: "db4 ~ gb3 ~ db4 ~ gb3 ~", G: "ab3 ~ db3 ~ ab3 ~ db3 ~", H: "ab3@2 ~@2 db3@2 ~@2 g3@6 eb3!2",
  I: "eb3 ~ f3 ~ eb3 ~ ab3 ~", J: "b3@2 ~ b3 ab3@12", K: "c4@2 ~ c4 ab3@4 b3@2 ~ b3 ab3@4",
  L: "[eb4@2 ~ eb4 g3@14 ~@2 gb4@2 ~@2 eb4@2 ~@2 gb4@2 ~@2]/2", M: "g4 ~ gb4 ~ g4 ~ gb4 ~", N: "gb4",
  O: "~@2 bb3@2 gb3@3 ~", P: "bb3@2 ~ c4 ab3@2 ~ db4 bb3@2 ~ eb4 c4@2 ~ f4", Q: "db4@2 ~@2 c4@4 ab3@4 bb3@2 ~ g3",
  R: "eb3@2 ~ f3 db3@2 ~ g3 eb3@2 ~ ab3 f3@2 ~ bb3", S: "g3@2 ~@2 f4@4 db4@4 eb4@2 ~ g3",
  T: "f3@3 c4 c4@3 f3 db4@3 c4 c4@3 f3", U: "db4@3 f4 g4@3 c4 ab3@2 bb3 c4 db4 c4 db4 f4",
  V: "eb4@3 f4 f4@3 bb4 g4@3 f4 f4@3 bb4", W: "g4@3 bb3 c4@3 f4 db4@7 eb4", X: "c4 ~ b3 ~ c4 ~ d4 ~",
  Y: "eb4@2 ~@2 d4@4 ab3@2 ~ ab3@3 ~@2", Z: "eb4@2 ~ c4 d4@4 eb4@2 ~ eb4 d4@4",
  AA: "gb4@2 ~ gb4 g4@4 eb4@2 ~@2 bb3@2 ~@2", AB: "bb3 ~ b3 ~ bb3 ~ b3 ~", AC: "a4 f4!2 g4", AD: "a4 b4 c4 d4",
  AE: "e4 eb4 d4 e4", AF: "gb4 g4!2 ~",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn" · soft notes
const french_horn_soft_2 = note("<~@2 A B C D@2 E ~@36>".pickRestart({
  A: "eb3 ~ f3 ~ eb3 ~ ab3 ~", B: "b3@2 ~ b3 ab3@12", C: "c4@2 ~ c4 ab3@4 b3@2 ~ b3 ab3@4",
  D: "[eb4@2 ~ eb4 g3@14 ab3 bb3 ~@4 g3@2 ab3 bb3 ~@4]/2", E: "~@2 c4 d4 ~@4 b3@2 c4 d4 ~@4",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_3 = note(`<
  A B ~@6 C D E@4 F G H I J@3 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG
>`.pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "gb4", D: "c4",
  E: "bb3 ~ e3 ~ bb3 ~ e3 ~", F: "f3 ~@3 f3 ~@3", G: "f3 ~@3 f3 ~ b2 ~", H: "f3 ~ b3 ~ f3 ~ c4 ~",
  I: "f3 ~ b3 ~ g3@2 eb3 ~", J: "eb3 ~ d3 ~ eb3 ~ d3 ~", K: "eb3 ~ g3 ~ g3 ~ g3 ~", L: "bb3 ~ gb3 ~ eb3 ~ gb3 ~",
  M: "g2 ~ eb2 ~ g2 ~ eb2 ~", N: "gb2", O: "~@2 bb3@2 d4@3 ~", P: "bb3@2 ~ c4 eb3@2 ~ db4 f3@2 ~ eb4 g3@2 ~ f4",
  Q: "ab3@2 ~@2 c4@4 ab3@4 bb3@2 ~ g3", R: "bb2@2 ~ f3 ab2@2 ~ g3 bb2@2 ~ ab3 c3@2 ~ bb3", S: "db3 ~ c4@2 db4@2 eb4 g3",
  T: "g3 c4!3 db4 c4!3", U: "db4@2 eb4@2 g4@2 g4@2 ab4@2 bb3 c4 db4 c4 db4@2", V: "eb4 f3!3 g3 f3!3",
  W: "g3 ab3 c4!2 db4@3 eb4", X: "ab3 ~ ab3 ~ ab3 ~ bb3 ~", Y: "b3@2 ~@2 b3@4 ab3@2 ~ ab3@3 ~@2",
  Z: "c4@2 ~ c4 b3@4 b3@2 ~ b3 b3@4", AA: "eb4@2 ~ eb4 d4@4 c4@2 ~@2 g3@2 ~@2", AB: "g3 ~ gb3 ~ g3 ~ gb3 ~",
  AC: "d4 ~ eb4 ~ d4 ~ eb4 ~", AD: "f4 d4 c4 eb4", AE: "e4 ab4 g4 a3", AF: "db4 c4 d4 b3", AG: "a3 b3 c4 ~",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft_3 = note(`<
  ~@2
  [c4 ~ b3 ~ c4 ~ d4 ~]
  [eb4 ~ d4 ~ eb4 ~ d4 ~]!2
  [gb4 ~ d4 ~ eb4 ~ d4 ~]
  [eb4 ~ gb4 ~ eb4 ~ gb4 ~]
  [g4 ~ bb4 ~ g4 ~ bb4 ~]
  ~@36
>`).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_4 = note("<A B ~@6 C D E@4 F@3 G H I@3 J K L M N@2 O@2 P Q R S T U V W X Y Z AA AB AC>".pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "~@4 c4!2 ~ c4 bb3@4 ab3@4",
  D: "~ bb3 d3@2", E: "g3 ~ c3 ~ g3 ~ c3 ~", F: "d3 ~ g2 ~ d3 ~ g2 ~", G: "d3 ~ g2 ~ g2@3 ~", H: "c5 ~ b4 ~ c5 ~ d5 ~",
  I: "eb5 ~ d5 ~ eb5 ~ d5 ~", J: "eb5 ~ d5 ~ bb4 ~ d5 ~", K: "d5 ~ eb5 ~ d5 ~ eb5 ~", L: "~@4 c5!2 ~ c5 bb4@4 ab4@4",
  M: "c4@8 d4@4 c4 b3!2 bb3", N: "bb3@2 ~ bb3 f3@2 ~ f3 bb3@2 ~ bb3 f3@2 ~ f3",
  O: "bb3@2 ~ bb3 eb3@2 ~ eb3 bb3@2 ~ bb3 eb3@2 ~ eb3", P: "bb3@2 ~ bb3 ab3@2 ~ bb3 bb3@2 ~ bb3 c4@2 ~ bb3",
  Q: "db4@2 ~@2 bb3@4 ab3@2 bb3 c4 db4 c4 db4 f4", R: "eb4@2 ~ bb3 db4@2 ~ bb3 eb4@2 ~ bb3 f4@2 ~ bb3",
  S: "g4@2 ~@2 bb3@4 db4@2 db4 bb3 db4@4", T: "eb3 ~ f3 ~ eb3 ~ ab3 ~", U: "b3@2 ~ b3 ab3@4 ab3@2 ~ ab3 bb3@2 ~@2",
  V: "c4@2 ~ c4 b3@4 b3@2 ~ b3 b3@4", W: "eb4@2 ~ eb4 d4@4 c4@2 ~@2 g3@2 ~@2", X: "g3 ~ gb3 ~ g3 ~ gb3 ~",
  Y: "d4 ~ eb4 ~ d4 ~ eb4 ~", Z: "e4 c4 a3 bb3", AA: "c4 eb4 e4 gb3", AB: "a3 ab3 g3 ab3", AC: "gb3 f3 g3 ~",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft_4 = note("<~@2 A B C D@3 ~@36>".pickRestart({
  A: "eb3 ~ f3 ~ eb3 ~ ab3 ~", B: "b3@2 ~ b3 ab3@12", C: "c4@2 ~ c4 ab3@4 b3@2 ~ b3 ab3@4",
  D: "[eb4@2 ~ eb4 g3@14 ab3 bb3 b3@4 g3@2 ab3 bb3 b3@6 c4 d4 eb4@4 b3@2 c4 d4 eb4@4]/3",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_5 = note(`<
  A B ~@6 C D ~ E F G H I J K L M N O P Q R S T@2 U@2 V W X Y Z AA AB AC AD AE AF AG AH AI
>`.pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "gb3", D: "c4 ab3",
  E: "~ c4 e4 gb4 g4@2 g3@2", F: "c4@2 ~ c4 gb3@4 c4@2 ~ c4 f3@4", G: "c4@2 ~ c4 gb3@2 ~@2 c4@8", H: "c5 f4 c5@2",
  I: "d4 g3 b3 db4 d4@2 b3 ~", J: "g4@2 b3 ~ g4@2 c4 ~", K: "g4@4 b3@2 g3!2 g3@6 ~@2", L: "ab4 ~ ab4 ~ ab4 ~ b4 ~",
  M: "b4 ~ b4 ~ c5 ~ b4 ~", N: "c5 ~ b4 ~ b4 ~ b4 ~", O: "bb4 ~ bb4 ~ c5 ~ bb4 ~", P: "bb4 ~ b4 ~ bb4 ~ b4 ~",
  Q: "b4 ~ bb4 ~ b4 ~ bb4 ~", R: "~@4 c4!2 ~ c4 bb3@4 ab3@4", S: "c3@8 d3@4 c4 b3!2 bb3",
  T: "bb3@2 ~ bb3 f3@2 ~ f3 bb3@2 ~ bb3 f3@2 ~ f3", U: "bb3@2 ~ bb3 eb3@2 ~ eb3 bb3@2 ~ bb3 eb3@2 ~ eb3",
  V: "bb3@2 ~ bb3 ab3@2 ~ bb3 bb3@2 ~ bb3 c4@2 ~ bb3", W: "ab3@2 ~@2 bb3@4 eb3@2 bb3 c4 db4 c4 db4@2",
  X: "db4@2 ~ bb3 ab3@2 ~ bb3 bb3@2 ~ bb3 c4@2 ~ bb3", Y: "db4@2 ~@2 bb3@4 ab3 db3 ab3 bb3 g3@4",
  Z: "eb4 ~ f4 ~ eb4 ~ ab4 ~", AA: "b4@2 ~ b4 ab4@4 ab4@2 ~ ab4 bb3@2 ~@2", AB: "c5@2 ~ c5 ab4@4 b4@2 ~ b4 ab4@4",
  AC: "eb5@2 ~ eb5 g4@4 g4@2 ~@2 d4@2 ~@2", AD: "eb4 ~ d4 ~ eb4 ~ d4 ~", AE: "b3 ~ bb3 ~ b3 ~ bb3 ~", AF: "c4 a3 f3 g3",
  AG: "a3 b3 c4 d3", AH: "e3 eb3 d3 e3", AI: "d3!2 e3 ~",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft_5 = note(`<
  ~@2
  [ab3 ~ ab3 ~ ab3 ~ b3 ~]
  [b3 ~ b3 ~ c4 ~ b3 ~]
  [c4 ~ b3 ~ b3 ~ b3 ~]
  [eb4 ~ bb3 ~ c4 ~ bb3 ~]
  [bb3 ~ d4 ~ bb3 ~ d4 ~]
  [bb3 ~ gb4 ~ d4 ~ gb4 ~]
  ~@36
>`).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_6 = note(`<
  A B ~@6 C D ~@3 E F G H I J K@2 L M N C O P@2 Q@2 R S T U V@3 W X N Y Z AA AB
>`.pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "gb3", D: "c3 d3",
  E: "~@10 b4 bb4 a4 ab4 g4 gb4", F: "f4@2 b3 ~ f4 ~ b3 ~", G: "f3 ~ b3 ~ f4 ~ b3 ~",
  H: "g4@2 ~ g4 db4@4 g4@2 ~ g4 c4@4", I: "g4@2 ~ g4 db4@4 g3@4 g3@2 ~@2", J: "eb4 ~ d4 ~ eb4 ~ e4 ~",
  K: "ab4 ~ ab4 ~ ab4 ~ ab4 ~", L: "gb4 ~ g4 ~ g4 ~ g4 ~", M: "g4 ~ b3 ~ bb3 ~ b3 ~", N: "g3 ~ eb3 ~ g3 ~ eb3 ~",
  O: "c3@8 d3@4 c3 b2!2 bb2", P: "bb2@2 ~ bb2 f2@2 ~ f2 bb2@2 ~ bb2 f2@2 ~ f2",
  Q: "bb2@2 ~ bb2 eb2@2 ~ eb2 bb2@2 ~ bb2 eb2@2 ~ eb2", R: "bb2@2 ~ bb2 eb3@2 ~ bb2 f3@2 ~ bb2 g3@2 ~ bb2",
  S: "f3@2 ~@2 bb2@4 c3@4 bb2@3 db3", T: "db3@2 ~ bb2 f3@2 ~ bb2 g3@2 ~ bb2 ab3@2 ~ bb2",
  U: "bb3@2 ~@2 bb2@4 f3 db3 f3 bb2 eb3@4", V: "ab3 ~ e3 ~ ab3 ~ e3 ~", W: "eb3 ~ g3 ~ c3 ~ g3 ~",
  X: "eb3 ~ b2 ~ eb3 ~ b2 ~", Y: "d3!2 b2 a2", Z: "g3 f3 e3 d3", AA: "db3 c3 b2 e3", AB: "a2 f2 c3 ~",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn" · soft notes
const french_horn_soft_6 = note(`<
  ~@2
  [eb3 ~ d3 ~ eb3 ~ d3 ~]!3
  [eb3 ~ d3 ~ g3 ~ d3 ~]
  [g3 ~ gb3 ~ g3 ~ gb3 ~]
  [g3 ~ eb3 ~ g3 ~ eb3 ~]
  ~@36
>`).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn"
const french_horn_7 = note("<A B ~@6 C D ~@3 E F G H I J@3 K L M C N O@2 P@2 Q R S T J@3 K U M V W X Y>".pickRestart({
  A: "~@2 d4!2 d4@2 d4!2 d4@2 d4!6", B: "d4@2 d4!2 d4@2 d4!2 d4@2 d4!2 d4@2 ~@2", C: "gb2", D: "c2 d2",
  E: "~@10 b4 bb4 a4 ab4 g4 gb4", F: "~@2 d4!14", G: "d4 g4 b4 db5 d5@2 d4@2", H: "g3@2 ~ g3 db4@4 g3@2 ~ g3 c4@4",
  I: "g3@2 ~ g3 db4@4 g3@4 g2@2 ~@2", J: "ab2 ~ e2 ~ ab2 ~ e2 ~", K: "eb2 ~ g2 ~ c3 ~ g2 ~", L: "eb3 ~ b2 ~ eb3 ~ b2 ~",
  M: "g2 ~ eb2 ~ g2 ~ eb2 ~", N: "c2@8 d2@4 c2 b1!2 bb1", O: "bb1@2 ~ bb2 f2@2 ~ f2 bb1@2 ~ bb2 f2@2 ~ f2",
  P: "bb1@2 ~ bb2 eb2@2 ~ eb2 bb1@2 ~ bb2 eb2@2 ~ eb2", Q: "bb1@2 ~ bb2 c3@2 ~ bb2 db3@2 ~ bb2 eb3@2 ~ bb2",
  R: "db3 ~ bb2@2 ab2@2 bb2 db2", S: "db2 ~ db3 ~ eb3 ~ f3 ~", T: "g3@2 ~@2 bb2@4 db3@2 db3 bb2 eb2@4",
  U: "eb2 ~ b1 ~ eb2 ~ b1 ~", V: "d2!2 b2 a2", W: "g2 f2 e2 d2", X: "db2 c2 b1 e2", Y: "a2 f2 c2 ~",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn" · soft notes
const french_horn_soft_7 = note(`<
  ~@2
  [ab2 ~ e2 ~ ab2 ~ e2 ~]!3
  [eb2 ~ g2 ~ c3 ~ g2 ~]
  [eb3 ~ b2 ~ eb3 ~ b2 ~]
  [g2 ~ eb2 ~ g2 ~ eb2 ~]
  ~@36
>`).s("gm_french_horn").gain(0.2)

stack(
  french_horn, french_horn_soft, french_horn_2, french_horn_soft_2, french_horn_3, french_horn_soft_3, french_horn_4,
  french_horn_soft_4, french_horn_5, french_horn_soft_5, french_horn_6, french_horn_soft_6, french_horn_7,
  french_horn_soft_7
)