Strudelify

Fantaisie and Variations on The Carnival of Venice

Jean-Baptiste Arban

KeyE♭ majorTempo90 bpm
0:00/0:00
// Fantaisie and Variations on The Carnival of Venice — Jean-Baptiste Arban
// 90 bpm, 6/8, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5936995; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 40 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 D E F G H I J K L M N O P Q J R L M S T U V W@2 X Y Z AA AB AC AD AE AF AC AG AH AI
>`.pickRestart({
  A: "~@11 bb5", B: "[eb2,eb3,bb5]@2 ~ ab5 bb5 c6 bb5 eb6 g5 bb5 eb5 g5, ~ [g3,bb3,eb4]!2 [eb2,eb3] [g2,g3] [bb2,bb3]",
  C: "[eb2,eb3,bb4]@2 ~ eb5 g5 c6 [eb2,eb3]@2 [g2,g3]@2 ~ bb5, ~ [g3,bb3,eb4]!2 bb5@2 [bb2,bb3]", // Eb5 Eb G Eb Bb
  D: "[bb1,bb2,ab5]@2 ~ g5 f5 g5 ab5 bb5 c6 d6 eb6 f6, ~ [ab3,bb3,d4]!2 [d2,d3] [f2,f3] [bb1,bb2]", // Bb7 D F Bb
  E: "[eb2,eb3,g6]@2 ~ d6 eb6 g5 [eb2,eb3]@2 [g2,g3]@2 ~ eb5, ~ [g3,bb3,eb4]!2 bb5@2 [eb2,eb3]", // Eb G Eb
  F: "[c2,c3,eb5]@2 ~ d5 c5 b4 c5 b4 c5 d5 eb5 g5, ~ [g3,c4,eb4]!2 [c2,c3] [eb2,eb3] [c2,c3]", // Cm C Eb C
  G: "[ab1,ab2,f5]@2 ~ g5 ab5 g5 f5 eb5 d5 c5 bb4 ab4, ~ [ab3,c4,f4]!2 [ab1,ab2] [c2,c3] [ab1,ab2]", // Db Fm Ab C Ab
  H: "[bb1,bb2,g4]@2 ~ bb4 eb5 g5!2 f5 e5 f5 ab5 d5, ~ [g3,bb3,eb4]!2 bb2 [ab3,d4] bb2", // Eb Abdim
  I: "eb3 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, eb5 ~ [eb4,g4]!2 ~ [eb4,g4]", // Eb
  J: "eb3 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, [eb4,g4] ~ [eb4,g4]!2 ~ [eb4,g4]", // Eb
  K: "eb3 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, [eb4,g4] ~ [g4,g5] [c5,c6]@2 [bb4,bb5]", // Eb G C Bb
  L: "d3 ab3 bb3 d4 bb3 ab3 d3 ab3 bb3 d4 bb3 ab3, [bb4,bb5]@11 ~ [ab4,ab5]@11 ~", // Bb Ab
  M: "eb3 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, [g4,g5]@2 [eb4,g4]!2 ~ [eb4,g4]", // G Eb
  N: "ab3 c4 f4 ab3 c4 f4 e3 bb3 c4 e4 c4 bb3, f4 ~ [ab4,c5] [bb4,c5] ~ [bb4,c5]", // Ab Bbsus2
  O: "f3 ab3 c4 f4 c4 ab3 ab2 ab3 c4 f4 c4 ab3, [ab4,c5] ~ [ab4,c5] [ab4,b4] ~ [ab4,b4]", // Ab Abm
  P: "bb2 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, [g4,bb4] ~ [g4,bb4] [eb4,g4,bb4] ~ [eb4,g4,bb4]", // Gm Eb
  Q: "bb2 f3 bb3 d4 bb3 ab3 bb2 ab3 bb3 d4 bb3 g3, [d4,f4] ~ [d4,f4] [d4,ab4] ~ [d4,ab4]", // Dm Ddim
  R: "eb3 g3 bb3 eb4 bb3 g3 eb3 g3 bb3 eb4 bb3 g3, [eb4,g4] ~ [g4,g5] [c5,c6] ~ [bb4,bb5]", // Eb G C Bb
  S: "f2 f3 bb3 d4 bb3 f3 f2 f3 bb3 d4 ab3 f3, [d4,f4] ~ [d4,f4]!2 ~ [d4,f4]", // Dm
  T: "f2 f3 a3 eb4 a3 f3 f2 f3 a3 eb4 a3 f3, [a3,eb4] ~ [c4,eb4] [a3,eb4] ~ [c4,eb4]", // Adim Cm Adim Cm
  U: "~ f5 ab5 c6 eb6 g6 f6 eb6 c6 ab5 f5 eb5, [f3,a3,eb4]@23 ~", V: "[bb3,d4,d5]@11 ~@13",
  W: "f3 ab3 c4 f4 c4 ab3 f3 ab3 c4 f4 c4 ab3, [f4,ab4] ~ [f4,ab4]!2 ~ [f4,ab4]", // Fm
  X: "g2 g3 b3 d4 b3 g3 g2 g3 b3 d4 b3 g3, [f4,g4] ~ [f4,g4]!2 ~ [f4,g4]", // Fsus2
  Y: "c3 eb3 g3 c4 g3 eb3 c3 eb3 g3 c4 g3 eb3, [eb4,g4] ~ [eb4,g4]!2 ~ [eb4,g4]", // Eb
  Z: "ab2 eb3 ab3 c4 ab3 eb3 ab2 eb3 ab3 c4 ab3 eb3, [eb4,gb4] ~ [eb4,gb4]!2 ~ [eb4,gb4]", // Ebm
  AA: "[ab2,ab3,c4,eb4,gb4]@23 ~", AB: "[g2,g3,b3,d4,g4]@23 ~", AC: "~ [ab3,c4,f4]!2 ~ [ab3,c4,f4]!2, ab2@2 ~ ab2@2 ~",
  AD: "~ [g3,bb3,eb4]!2 ~ [g3,bb3,eb4]!2, bb2@2 ~ bb2@2 ~", // Eb
  AE: "~ [bb3,c4,d4,f4]!2 ~ [bb3,c4,d4,f4]!2, bb2@2 ~ bb2@2 ~", // Bb
  AF: "~ [g3,bb3,eb4]!2 ~ [g3,bb3,eb4]!2, eb3@2 ~ eb3@2 ~", // Eb
  AG: "~ [g3,bb3,eb4]!2 bb2 [g3,bb3,eb4]!2, bb2@8 ~@4 [bb4,bb5]@11 ~", AH: "[c5,c6]@11 ~ [d5,d6]@11 ~, [d3,bb3]@23 ~",
  AI: "eb3 g3 bb3 eb4 ~@2, [eb5,g5,eb6]@5 ~@3", // Eb
})).s("gm_piano").gain(0.3)

stack(piano)