Strudelify

Scheherazade Op.35

Nikolai Rimsky-Korsakov

KeyG majorTempo120 bpm
0:00/0:00
// Scheherazade Op.35 — Nikolai Rimsky-Korsakov
// 120 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6071115; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 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/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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.

// chords · piano
const piano = note(`<
  A ~ B ~ C@2 D E D F G H I H J K L K M N O P Q R S T U V W@2 X Y Z AA AB AC AD@2 AE AF AG AH AI@2 AJ AK AL AM AN ~ AO@2
  AP@2 AQ AR AS AT AU AV AW AV AX AY AZ AY BA BB BC BB BD BE BF BG BH BI BH BJ BK BL BM BN BO BP BQ BN BR BS BT BU BV BW
  BX BY BZ ~ CA CB CC CD CE
>`.pickRestart({
  A: "[b2,d#3,f#3,b3,b4,d#5,f#5,b5] ~@7", B: "[b1,f#2,b2,a3,b3,d#4,f#4,b4] ~@7", C: "b3 c4 a3 g#3 a3 g#3 g3 f#3",
  D: "[e2,b2,e4,g4] ~@7", E: "[e2,b2,e4,g4] ~@3 [a2,c#3,e4] ~@3", F: "[e2,b2,e4,g4] ~ [a2,c#3,e4] ~",
  G: "[e2,b2,e4,g4] ~ [c3,e4,a4] ~", H: "[b2,e3,g4,b4] ~ [a2,d#3,f#4,b4] ~", I: "[g2,b2,e4,b4] ~ [c3,e4,a4] ~",
  J: "[g#2,d3,e4,b4] ~ [a2,c3,e4,a4] ~", K: "[c3,e4,a4] ~ [a2,d3,f#4,a4] ~", L: "[c3,e4,a4] ~@3",
  M: "[c3,e4,a4] ~ [d3,f4,a4] ~", N: "[b2,e4,a4] ~ [b2,d3,e4,g#4] ~", O: "[c3,e4,a4] ~ [a2,d3,f4,a4] ~",
  P: "[a2,c3,e4,a4] ~ [g#2,d3,e4,b4] ~", Q: "[a2,c3,e4,c5] ~@3",
  R: "[d#3,f3] ~ e3 ~ [d#3,f3] ~ f4 ~ [d#3,f3] ~ e3 ~ [d#3,f3] ~ f4 ~", S: "[e3,e4] ~@7",
  T: "[d#4,f4]@2 e4 ~ [d#4,f4] ~ f5 ~ [d#4,f4] ~ e4 ~ [d#4,f4] ~ f5 ~", // D#sus2
  U: "e3@2 ~@2 e3 ~ e3 ~ [d#4,f4] ~ e4 ~ [d#4,f4] ~ f5 ~, e5 ~@15", V: "[e3,e5] ~ [d#3,f3] ~ [d#3,f3,e5] ~ [c#3,g3] ~",
  W: "[g#4 e4 g#4 e4 g#4 e4 g#4 e4 g#4 e4 g#4 e4 g#4 e4 g#4 e4, c3@15 ~, e5@15 ~ e5@15 ~]/2", X: "[c#3,e3,a3,e4] ~@3",
  Y: "[g#3,a#3] ~ a3 ~ [g#3,a#3] ~ a#4 ~ [g#3,a#3] ~ a3 ~ [g#3,a#3] ~ a#4 ~", Z: "[a3,a4] ~@7",
  AA: "[g#3,a#3]@2 a3 ~ [g#3,a#3] ~ a#4 ~ [g#3,a#3] ~ a3 ~ [g#3,a#3] ~ a#4 ~", // G#sus2
  AB: "a3@2 ~@2 a3 ~ a3 ~ [g#3,a#3]@2 a3 ~ [g#3,a#3] ~ a#4 ~, a4 ~@15", // G#sus2
  AC: "[a3,a4] ~ [g#3,a#3] ~ [g3,b3,a4] ~ [f#3,c4] ~", // A G#sus2 G F#dim
  AD: "[c#4 a3 c#4 a3 c#4 a3 c#4 a3 c#4 a3 c#4 a3 c#4 a3 c#4 a3, f3@15 ~, a4@15 ~ a4@15 ~]/2", AE: "[f3,a3,d4,a4] ~@3",
  AF: "[f3,a3,d4,a4] ~ [g3,a#3,d4] ~", AG: "[f3,a3,d4] ~ [c#3,g3,a#3] ~", AH: "[d3,f3,a3] ~ [c3,e3] ~",
  AI: "[[b2,d#3,a3]@2 ~@2 [b3,b4]@8 [b3,b4] ~@3]/2", AJ: "[a3,b4]@2 ~@2 b3 ~ g3 ~",
  AK: "e3 ~ c3 ~ e3 ~ g3 ~, [b3,b4]@15 ~", AL: "b3@4 b3 ~ g3 ~", AM: "e3 ~ c3 ~ e3 ~ g3 ~, [b4,b5]@15 ~", AN: "b3 ~@7",
  AO: "[b2 c3 b2 a#2 b2 c3 b2 a#2 b2 c3 b2 a#2 b2 c3 b2 a#2, ~ b3@2 b3]/2",
  AP: "[[b2,b4] c3 b2 a#2 b2 c3 b2 a#2 b2 c3 b2 a#2 b2 c3 b2 a#2, ~ b3@2 b3]/2", AQ: "[b2,b4] c3 c#3 d3 d#3 e3 f3 f#3",
  AR: "g3 g#3 a3 a#3 b3 c4 c#4 d4", AS: "d#4 e4 f4 f#4 g4 g#4 a4 a#4", AT: "b4 c5 b4 a#4 b4 c5 b4 a#4",
  AU: "[e2,b2,g4,b4,e5] ~@3", AV: "[e3,b3,g4,e5] ~ [c#3,e3,a4,e5] ~", AW: "[e3,b3,g4,e5] ~@3",
  AX: "[e3,b3,g4,e5] ~ [c3,e3,e4,a4] ~", AY: "[b2,b3,e4,g4] ~ [a2,b3,d#4,f#4] ~", AZ: "[g2,b3,e4,b4] ~ [c3,e3,e4,a4] ~",
  BA: "[g#2,b3,e4,b4] ~ [a2,e3,c4,c5] ~", BB: "[a3,e4,c5,a5] ~ [f#3,a3,a4,d5,a5] ~", BC: "[a3,e4,c5,a5] ~@3",
  BD: "[a3,e4,c5,a5] ~ [f3,a3,a4,d5] ~", BE: "[e3,a3,a4,e5] ~ [d3,b3,g#4,e5] ~", BF: "[c3,a3,e4,a4] ~ [a2,e3,c4,e4] ~",
  BG: "[g2,e3,b3,e4] ~ [f#2,d#3,a3,f#4] ~", BH: "[e2,b2,g3,g4]@2 [b2,g3] ~@5", BI: "[e2,a2,g3,b3] ~ [c2,a2,a3,e4] ~",
  BJ: "[e2,b2,g3,b3] ~ [c#2,a2,a3,e4] ~", BK: "[e2,b2,g3,g4]@2 ~@2 e5 ~ c5 ~",
  BL: "[c3,e3,a3]@2 f#4 ~ a4 ~ c5 ~, a4 ~@7", BM: "[b2,g3,e4,e5] ~@7", BN: "[b2,d#3,f#3,a3,b3] ~@3",
  BO: "[e2,e3,g3,b3]@2 ~@2 e6@2 c6 ~", BP: "[c3,e3,a3]@2 f#5 ~ a5 ~ c6 ~, a5 ~@7", BQ: "[b2,g3,e5,e6] ~@3",
  BR: "[e2,e3,g3,b3] ~ [e3,g#3,b3,d4,e4] ~", BS: "[e3,a3,c4,e4] ~@3", BT: "[e2,b2,e3,g3] ~ [e2,b2,e3,g#3] ~",
  BU: "[e2,c3,e3,a3] ~@3", BV: "[e2,b2]@4 [d#3,f3] d#3 [d#3,f3] f4, [e3,g3] ~@3",
  BW: "[e3,e4] ~ d#3 f#3 d3 [e3,g#3] [c3,e3] a3", BX: "[g3,b3]@2 ~@2 [a#3,c4] b3 [a#3,c4] c5, [b2,e3] ~@7",
  BY: "[b3,b4] ~ a3 [b3,c#4] g3 [b3,d4] f#3 [a3,d#4]", BZ: "[e3,g3,b3,e4] ~@3", CA: "[e3,b3,e4,g4] ~@3",
  CB: "[e4,g4,b4,e5] ~@3", CC: "[e5,g5,b5] ~@3", CD: "[e3,b3,e4,g4,e5] ~", CE: "[e1,e2,e3] ~@7",
})).s("gm_piano").gain(0.2)

stack(piano)