Strudelify

moulin rouge - el tango de roxanne

Lucie H

KeyB♭ majorTempo120 bpm
0:00/0:00
// moulin rouge - el tango de roxanne — Lucie H
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 3, 4/4 at bar 3, 2/4 at bar 26, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/1972801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 121 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// 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.

// other · string ensemble 1 · "Violins 2"
const string_ensemble_1 = note(`<
  ~@2 A B C D E B F G H I@2 J K I L@2 M N O N O P O N Q R O N Q N S T@2 U V W X U V Y Z W AA AB AC AD AE AB AF AG AH AI
  AJ AK AL AM AK AM AN AO AP AQ AR AO AP AO AP AO AP@2 ~@4 AS AT AU@5 AV@2 AW@4 AX AY AZ BA BB BC AZ BD BE BF BG BH BI
  BJ BK BL BM BN BO BP BQ BR BS BP BQ BR BS BP BQ BR BT BU
>`.pickRestart({
  A: "~@12 bb3 c4 ~ d4 d4@12 bb3@4", B: "bb3@2 bb3@2 ~ bb3!3", C: "bb3@2 bb3!2 c4@3 c4", D: "c4@2 c4@2 ~@3 c4",
  E: "c4@2 c4@2 [bb3,d4]@3 bb3", F: "bb3@2 bb3!2 a3@3 a3", G: "a3@2 a3@2 ~@3 a3", H: "a3!2 [bb3,d4]!2", I: "[bb3,d4]!4",
  J: "[bb3,d4]!2 [c4,d4]!2", K: "[c4,d4]!2 [bb3,d4]!2",
  L: "[[bb3,d4]@8 [bb3,d4]@4 [bb3,d4]@4 [bb3,d4]@32 [bb3,d4]!16]/2", M: "[bb3,d4]!32", N: "bb3@3 bb3 bb3@2 bb3@2",
  O: "~ a3!3 a3@2 a3!2", P: "d4@3 bb3 bb3@2 bb3@2", Q: "~@3 bb3 bb3@2 bb3@2", R: "bb3@3 eb4 eb4@2 eb4@2",
  S: "~ a3!3 a3@2 a3 bb3", T: "bb3/2", U: "~ bb4!7", V: "bb4!8", W: "~ c5!7", X: "c5!8", Y: "~ bb4!3 ~ bb4!3",
  Z: "~ c5!3 ~ eb5!3", AA: "bb4!4 c5!4", AB: "d5!2 eb5!2 d5!2 db5!2 g5!2 a5!2 g5!2 gb5!2",
  AC: "g5!2 gb5!2 f5!2 e5!2 eb5!2 d5!2 db5!2 d5!2", AD: "g5!2 a5!2 g5!2 gb5!2 a5!2 bb5!2 a5!2 g5!2",
  AE: "a5!2 bb5!2 a5!2 ab5!2 g5!2 gb5!2 f5!2 e5 eb5",
  AF: "bb5@2 bb5@2 a5@2 a5@2 ab5!4 g5@2 g5@2 gb5@2 gb5@2 f5@2 f5@2 e5@2 e5@2 eb5@2 eb5@2",
  AG: "eb5!2 f5!2 eb5!2 d5!2 bb5!2 a5!2 g5!2 bb5!2",
  AH: "c6@2 c6@2 bb5@2 bb5@2 a5@2 a5@2 g5!4 f5@2 f5@2 eb5@2 eb5@2 d5@2 d5@2 c5@2 c5@2",
  AI: "d5!4 [d5,eb5] eb5!7 d5!4 [d5,eb5] eb5!7 d5@4 eb5@4", AJ: "c5!4 [c5,d5] d5!7 c5!4 [c5,d5] d5!7 c5@4 d5@4",
  AK: "bb4!4 [bb4,c5] c5!7 bb4!4 [bb4,c5] c5!7 bb4@4 c5@4", AL: "a4!4 [a4,bb4] bb4!7 a4!4 [a4,bb4] bb4!7 a4@4 bb4@4",
  AM: "g4!4 [g4,a4] a4!7 g4!4 [g4,a4] a4!7 g4@4 a4@4", AN: "a4!4 [a4,bb4] bb4!7 a4!4 bb4@8 a4@8, ~@16 a4 ~@15",
  AO: "b3@3 c4 c4@2 b3@2", AP: "~@3 c4 c4@2 b3@2", AQ: "a3@3 a3 a3@2 a3@2", AR: "~@3 a3 a3@2 a3@2", AS: "c4", AT: "e4",
  AU: "[e4@3 a4@4 c5@13, ~@7 gb5 ~@12]/5", AV: "c4!8 c4@4 ~@4 c4!8 c4@4 ~@4", AW: "gb4!8 c4@4 ~@4 gb4!8 gb4@4 ~@4",
  AX: "gb4!8 c4@4 ~@4 gb4!8 gb4@4 gb4@4", AY: "gb4!4",
  AZ: "b4!4 [b4,c5] c5!3 [b4,c5] b4!3 [bb4,b4] bb4!3 [bb4,e5] e5!3 [e5,gb5] gb5!3 [e5,gb5] e5!3 [eb5,e5] eb5!3", // Cmaj7 Bmaj7 Bbdim Esus2 Emaj7
  BA: "[eb5,e5] e5!3 [eb5,e5] eb5!3 [d5,eb5] d5!3 [db5,d5] db5!3 [c5,db5] c5!3 [b4,c5] b4!3 [bb4,b4] bb4!3 [bb4,b4] b4!3", // Emaj7 Ebmaj7 Dmaj7 Dbmaj7 Cmaj7 Bmaj7
  BB: "[b4,e5] e5!3 [e5,gb5] gb5!3 [e5,gb5] e5!3 [eb5,e5] eb5!3 [eb5,gb5] gb5!3 [gb5,g5] g5!3 [gb5,g5] gb5!3 [e5,gb5] e5!3", // E5 Esus2 Emaj7 Ebm Gmaj7 Esus2
  BC: "[e5,gb5] gb5!3 [gb5,g5] g5!3 [gb5,g5] gb5!3 [f5,gb5] f5!3 [e5,f5] e5!3 [eb5,e5] eb5!3 d5!4 db5@2 c5@2", // Esus2 Gmaj7 Gbmaj7 Fmaj7 Emaj7
  BD: "[eb5,g5] g5!3 [gb5,g5] gb5!3 [f5,gb5] f5!3 [e5,f5] e5!3 [eb5,e5] eb5!3 [d5,eb5] d5!3 [db5,d5] db5!3 [c5,db5] c5!3", // Eb Gmaj7 Gbmaj7 Fmaj7 Emaj7 Ebmaj7 Dmaj7 Dbmaj7
  BE: "c5!4 [c5,d5] d5!3 [c5,d5] c5!3 [b4,c5] b4!3 [b4,g5] g5!3 [gb5,g5] gb5!3 [e5,gb5] e5!3 [e5,g5] g5!3", // Csus2 Cmaj7 Em Gmaj7 Esus2 Em
  BF: "[g5,a5] a5!3 [g5,a5] g5!3 [gb5,g5] gb5!3 [e5,gb5] e5!3 [d5,e5] d5!3 [c5,d5] c5!3 [b4,c5] b4!3 [a4,b4] a4!3", // Gsus2 Gmaj7 Esus2 Dsus2 Csus2 Cmaj7 Asus2
  BG: "[a4,d5] d5!3 [d5,eb5] eb5!3 [d5,eb5] d5!3 [db5,d5] db5!3 [db5,g5] g5!3 [g5,a5] a5!3 [g5,a5] g5!3 [gb5,g5] gb5!3", // D5 Ebmaj7 Dmaj7 Dbdim Gsus2 Gmaj7
  BH: "[gb5,g5] g5!3 [gb5,g5] gb5!3 [f5,gb5] f5!3 [e5,f5] e5!3 [eb5,e5] eb5!3 [d5,eb5] d5!3 [db5,d5] db5!3 [db5,d5] d5!3", // Gmaj7 Gbmaj7 Fmaj7 Emaj7 Ebmaj7 Dmaj7
  BI: "[d5,g5] g5!3 [g5,a5] a5!3 [g5,a5] g5!3 [gb5,g5] gb5!3 [gb5,a5] a5!3 [a5,bb5] bb5!3 [a5,bb5] a5!3 [g5,a5] g5!3", // G5 Gsus2 Gmaj7 Gbm Bbmaj7 Gsus2
  BJ: "[g5,a5] a5!3 [a5,bb5] bb5!3 [a5,bb5] a5!3 [ab5,a5] ab5!3 [g5,ab5] g5!3 [gb5,g5] gb5!3 [f5,gb5] f5!3 e5@2 eb5@2, ~@28 f5 ~@3", // Gsus2 Bbmaj7 Amaj7 Abmaj7 Gmaj7 Gbmaj7
  BK: "d5!4 [d5,eb5] eb5!3 [d5,eb5] d5!3 [db5,d5] db5!3 [db5,g5] g5!3 [g5,a5] a5!3 [g5,a5] g5!3 [gb5,g5] gb5!3", // Ebmaj7 Dmaj7 Dbdim Gsus2 Gmaj7
  BL: "[gb5,bb5] bb5!3 [a5,bb5] a5!3 [ab5,a5] ab5!3 [g5,ab5] g5!3 [gb5,g5] gb5!3 [f5,gb5] f5!3 [e5,f5] e5!3 [eb5,e5] eb5!3", // Gb Bbmaj7 Amaj7 Abmaj7 Gmaj7 Gbmaj7 Fmaj7 Emaj7
  BM: "eb5!4 [eb5,f5] f5!3 [eb5,f5] eb5!3 [d5,eb5] d5!3 [d5,bb5] bb5!3 [a5,bb5] a5!3 [g5,a5] g5!3 [g5,bb5] bb5!3", // Ebsus2 Ebmaj7 Gm Bbmaj7 Gsus2 Gm
  BN: "bb5 ~@3 a5!4 [a5,bb5] bb5!3 [bb5,c6] c6!3 [c6,d6] d6!3 [c6,d6] c6!3 [bb5,c6] bb5!3 [a5,bb5] a5!3", // Bbmaj7 Bbsus2 Csus2 Bbsus2 Bbmaj7
  BO: "[g5,a5] g5!31", BP: "f5!16 e5!8 eb5!8", BQ: "d5!16 c5!8 d5!4 [d5,eb5] eb5!3",
  BR: "[d5,eb5] d5!7 c5!8 bb4!8 a4!8", BS: "g4!16 g5!16", BT: "g4!32", BU: "g5 ~@3",
})).s("gm_string_ensemble_1").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D E F G D H F I J K L M J N@2 O P Q R S T U V W T Q P U T X V@2 Y Z AA AB Y Z AC AD AE AF AG AH AI AJ AG AH AK
  AL AM AN AH AO AP AQ AR AS AT AU AV AW AT AU AV AW AT AU@2 ~ AX@2 AY@3 AZ@5 BA@2 BB@2 BC BB@2 BD BE BF BG BH BI BF BJ
  BK AG BL AI AJ AG BL BM BN BO@13 BP
>`.pickRestart({
  A: "~@4 [g2,d3]@3 [g2,d3]", B: "[g2,d3]@2 [g2,d3]@2 [g2,d3]@3 [g2,d3]",
  C: "[g2,d3]@8 [g2,d3]@4 bb2 c3 ~ d3 d3@12 ~@4", D: "~@12 d2 e2 ~ gb2 g2@12 ~@4", E: "~@4 gb2@3 ~",
  F: "~@12 d2 f2 ~ gb2 gb2@12 ~@4", G: "~@12 e2 f2 ~ gb2 g2@12 ~@4", H: "~ g2 gb2 ~", I: "d2@2 gb2@2 g2@3 ~",
  J: "~@3 g2 f2@3 ~", K: "~@3 f2 eb2@3 ~", L: "~@3 eb2 d2@3 ~", M: "~@3 d2 g2@3 ~",
  N: "[~@8 f2@4 g2@4 g2@32 [g2,d3]!16]/2", O: "[g2,d3]", P: "g2@3 ~@4 g2", Q: "f2@3 ~@5", R: "eb2@3 ~@4 eb2",
  S: "d2@3 ~@5", T: "c2@3 ~@4 c2", U: "f2@3 ~@4 f2", V: "g2", W: "g2@6 ~ b2", X: "f2@3 ~@3 f2 g2",
  Y: "g3@12 ~@16 d3 e3 ~ gb3", Z: "g3@3 ~@5", AA: "gb3@12 ~@16 d3 f3 ~ gb3", AB: "gb3@3 ~@3 a3@2", AC: "c3@6 db3 d3",
  AD: "eb3", AE: "d3!4 gb3!4", AF: "bb3!4 c4!4", AG: "g2@6 g2 d2", AH: "g2 a2 bb2 eb3", AI: "c3@6 c3 eb3",
  AJ: "d3 c3 bb2 a2", AK: "c3 g3", AL: "f3 c3", AM: "bb2 c3 d3 f3", AN: "gb3@2 a2 d3", AO: "d3@2 gb2 a2",
  AP: "eb3@2 eb3!2", AQ: "bb2!4", AR: "c3!2", AS: "d3!2", AT: "e3@3 e3 e3@2 e3@2", AU: "~@3 e3 e3@2 e3@2",
  AV: "eb3@3 eb3 eb3@2 eb3@2", AW: "~@3 eb3 eb3@2 eb3@2", AX: "b2/2", AY: "b2", AZ: "[b2@3 b2@4 b2@13]/5", BA: "b2!2",
  BB: "b2!4", BC: "a2!4", BD: "b2!4 d3!4", BE: "e3@6 e3 b2", BF: "e3 gb3 g3 e3", BG: "a2@6 a2 d3", BH: "b2 a2 g2 gb2",
  BI: "e2@6 e2 b2", BJ: "a2 e3", BK: "d3 a2", BL: "g2 a2 bb2 d3", BM: "c3", BN: "f2 c3", BO: "g2!4", BP: "g2 ~@3",
})).s("gm_cello").gain(0.3)

stack(string_ensemble_1, cello)